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. 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.
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 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 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 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 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<AT89X52.h> //đâ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 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. } Main() //chương trình chính. Chữ main là bắt buộc. { 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 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 Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 8 Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 Click chuột vào<type F2 to edit> 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ị: Tên Giá trị 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<AT89X52.h> void delay(unsigned char loop) //chương trình tạo thời gian trễ loop ms { unsigned char x,y; //khai báo biến x,y thuộc kiểu usigned char for(x=0;x<loop;x++) //lặp lại cho đến khi x=loop 9 Tranpic www.trannghiaelec.sg.tf diễn đàn www.08tdt.com 0902.902.287 { for(y=0;y<33;y++); //nhảy tại chỗ } } main() { unsigned char dem=0; P2=255; while(1) { P2=~(++dem); //đếm tăng lên1, P2 bằng giá trị bù của đếm sau khi tăng. //nếu viết là dem++ thì P2=bù dem rồi dem mới tăng 1. delay(200); //delay 200 ms } } Nhấn vào biểu tượng chạy debug hoặc nhấn Ctrl+F5 để chạy từng câu lệnh và sửa lỗi cho chương trình. Mở Port 2 lên để xem trạng thái của các chân Port 2. 10 . 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. //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