Hướng dẫn sử dụng Keil

Chia sẻ: Nguyen Tuyen | Ngày: | Loại File: DOC | Số trang:17

0
571
lượt xem
302
download

Hướng dẫn sử dụng Keil

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đây là tài liệu hướng dẫn sử dụng phần mềm Keil gửi đến các bạn độc giả tham khảo. ����� ����� �����

Chủ đề:
Lưu

Nội dung Text: Hướng dẫn sử dụng Keil

  1. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Cài đặt chương trình Keil: Nhấn vào file cài đặt và cứ nhấn Next là được sau đó là Crack nó để dùng miễn phí. Crack như sau: Chạy File: Keil_lic-v3.2_2.exe Chọn như trên hình rồi nhấn Generate, sau đó copy hết kí tự trong ô LIC0. Vào Start/Programs/Keil uVision3. Chọn như trên hình ta được : 1
  2. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Paste các kí tự lúc nãy vào ô New License ID Code rồi nhấn Add LIC thế là xong. Lập trình với Keil: Đầu tiên tạo 1 Project mới: Project/New Project. Đặt cho nó 1 cái tên: vidu nhấn Enter. Chọn chip cần dùng: Atmel/AT89S52 2
  3. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Nhấn Ok, nhấn Yes. Ta được: Để tạo được File .hex cần làm như sau: 3
  4. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Tạo File nguồn mới: File/New. Nhấn Save đặt cho nó 1 cái tên nhớ sau cái tên phải có .c, ví dụ như: bai1.c Sau đó bắt đầu như sau: Rồi nhấn Add xong thì tắt hộp thoại đi. Phần chuẩn bị đã xong. Bắt đầu lập trình. Sau khi lập trình xong nhấn F7 để biên dịch. Nếu có lỗi thì chương trình sẽ thông báo ở dưới: 4
  5. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Chương trình báo là đã tạo File hex, 0 lỗi, 0 cảnh báo. Vậy là tốt, đôi khi có 1 vài Warning như ko có lỗi cũng ko sao vẫn ok(warning và có thể khai báo biến mà ko dùng, có chương trình con chưa được gọi… tùy vào từng cảnh báo). Cấu trúc chương trình như sau: #include //đây là dòng thông báo thư viện chip AT89, X là chung cho họ S và C Void ten_chương _trình_con() { Các câu lệnh viết ở đây. } 5
  6. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Void ngat() interrupt x { Chương trình phục vụ ngắt viết ở đây. } //chương trình chính. Chữ main là bắt buộc. Main() { Các câu lệnh viết ở đây. } Sau khi viết chương trình có thể chạy từng câu lệnh để tìm lỗi bằng cách nhấn vào biểu tượng sau. Có thể vào đây để xem trạng thái các Port: 6
  7. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Nhấn F10 hoặc F11 để bắt đầu chạy các câu lệnh (nhấn 1 cái chạy 1 câu lệnh) Muốn xem các biến thay đổi như thế nào thì: 7
  8. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 8
  9. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Click chuột vào rồi nhấn F2 sau đó ghi tên biến cần theo dõi vào đây, ô value sẽ hiển thị giá trị của biến. Bảng giá trị các kiểu giá trị: Giá trị Tên Char -128 -> 127 Usigned char 0 -> 255 Int -32768 -> 32767 Unsigned int 0 -> 65535 Long -2147483648 -> 2147483647 Unsigned long 0 -> 4294967295 Float 3.4E-38 -> 3.4E+38 Double 1.7E-308 -> 1.7E+308 Long double 3.4E-4932 -> 1.1E4932 Ví dụ: cho các led sáng dồn nhau: #include //chương trình tạo thời gian trễ loop ms void delay(unsigned char loop) { //khai báo biến x,y thuộc kiểu usigned char unsigned char x,y; //lặp lại cho đến khi x=loop for(x=0;x
  10. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 { //nhảy tại chỗ for(y=0;y
  11. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Các phép so sánh: Ví dụ Phép toán Ý nghĩa So sánh lớn hơn > a>b So sánh bằng (2 dấu =) == a=b Bé hơn < a= a>=b Bé hơn hoặc bằng
  12. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Chú ý: && hoặc || là phép logic tức nó chỉ trả về giá trị 1 hoặ 0, còn khi chỉ &hoặc | lại là phép toán AND hoặc OR trên các bit của biến. Các phép toán đặc biệt: Ví dụ Phép toán Ý nghĩa a>>3( tức là sẽ dịch các bít Dịch trái n lần >> n của a qua trái 3 lần) Dịch phải n lần
  13. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 While (điều kiện) • { Các câu lệnh //thực hiện các câu lệnh liên tục cho đến khi “điều kiện” ko còn đúng } nữa Ví dụ: While (x
  14. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Switch (P3) { //nếu P3=1 thực hiện các câu lệnh cho đến break Case 1: P1=0; P2=1; Break; Case 2:P1=1; //nếu P3=2 thì thực hiện các câu lệnh cho đến break P2=2; Break; } Cú pháp chương trình: Chương trình con: Void ten_chươngtrinhcon(các đối số) //nếu chương trình con không cần nhập giá trị bên ngoài vào thì không cần đối số { //khai báo biến và gán giá trị ban đầu cho Unsigned char x=0,y=0; nó Int z=0; Các câu lệnh viết ở đây } Để gọi chương trình con thì chỉ cần ten_chươngtrinhcon(giá trị nếu có) với điều kiện chương trình con phải được khai báo hoặc được viết phía trên câu gọi chương trình con. Ngắt: Void ten_chươngtrinhphucvungat(void) interrupt x { Chương trình phục vụ ngắt 14
  15. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 } Ngắt Tên bit đại diện X Ngắt ngoài 0 0 EX0 1 Timer 0 ET0 Ngắt ngoài 1 2 EX1 3 Timer 1 ET1 Ngắt Port nối tiếp 4 ES Chương trình phục vụ ngắt thì không cần gọi nó. Nó sẽ được thực hiện khi xảy ra ngắt. Nhưng cần phải cho phép ngắt ở chương trình chính như sau: Main() { Bit đại diện=1; ITx=1; //cho phép ngắt xảy ra ở cạnh xuống khi dùng ngắt ngoài (x=0 hoặc 1 tùy vào sử dụng ngắt ngoài nào) EA=1; //bit cho phép ngắt toàn cục While(1) { } } Xem thêm các ví dụ trong đĩa để hiểu rõ hơn. Ví dụ: viết chương trình giải mã ma trận phím: kết nối P0.0 -> P0.3 với chân cắm BCD-7SEG /* Khi dùng ic giải mã 74247 thì khi gán cho P0, 1 giá trị bất kì từ 0->9 thì ic tự chuyển sang mã của 7 đoạn để hiển thị Nối P2 với chân cắm 7SEG_CONTROL */ 15
  16. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 #include //mãng chứa 5 chữ số đã nhập vào chương trình disp unsigned char di_num[5]={0,0,0,0,0}; //chương trình tạo thời gian trễ “time” us để hiển thị void delay(unsigned char time) { unsigned char x,y; for(x=0;x
  17. Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 } //vòng lặp quét led //do chỉ cần hiển thị 5 led -> chỉ cần lặp 5 vòng for(temp=0;temp
Đồng bộ tài khoản