6.5. Lập trình điều khiển cổng làm chức năng vào – ra
6.5.2. Lập trình cho các cổng của vi điều khiển làm chức năng đầu ra
- Để chọn các cổng hoặc bit một chân nào đó của VĐK ta chỉ việc xác định địa chỉ cần xuất dữ liệu và mức tích cực của đối tượng điều khiển đó.
- Với góc độ học tập ở đây sẽ trình bày các dạng yêu cầu lập trình cho VĐK xuất dữ liệu ra cổng để điều khiển led đơn. Mỗi đầu ra tích cực mức cao và được nối với một led đơn.
Ví dụ1: Viết chương trình cho VĐK 89C51 điều khiển 8 led đơn nối với cổng P2 chớp tắt, cho đầu ra tích cực ở mức cao, tần số thạch anh sử dụng là 12 MHZ.
+ Chú ý đối với chương trình con tạo trễ
Ta đã biết phạm vi tần số hoạt động của vi điều khiển từ (0 – 24) MHZ Một chu kỳ máy tương ứng với 12 dao động
Thời gian tối thiểu số lệnh trong 1 chu kỳ máy =
121 fthạch anh
Với tần số thạch anh ta sử dụng loại 12 MHZ ta sẽ có:
1s =121 .12 MHZ =
121 .12.106 = 106 chu kỳ máy
Với mỗi chu kỳ máy tương đương với một lệnh thì trong 1 giây vi điều khiển có thể thực hiện được 1 triệu lệnh. Vì vậy để tạo ra được thời gian trễ 1 giây cần thực hiện
được số đếm tương ứng là 1 triệu Bước 1: Vẽ sơ đồ nguyên lý.
- Dùng phần mềm Proteus để vẽ sơ đồ sau:
Hình 6.5 Sơ đồ nguyên lý mạch điều khiển 8 Led đơn
XTAL2 18
XTAL1 19
30 ALE 31 EA 29 PSEN
9 RST
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
1 P1.0 2 P1.1 3 P1.2 4 P1.3 5 P1.4 6 P1.5 7 P1.6 8 P1.7
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/W RP3.5/T1 1615 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
U1
AT89C51
D1 R3100
D2 R4100
D3 R5100
D4 R6100
D5 R7100
D6 R8100
D7 R9100
D8 R10100
12MHZ
R1100
R210k
C11u +5V
Reset
+5V
20 40
+5V
1 2 12
Tmáy
Bước 2: Vẽ lưu đồ giải thuật ( nếu chương trình tương đối phức tạp ).
- Lưu đồ giả thuật có thể tham khảo như sau:
Chương trình chính Chương trình con tạo trễ
Hình 6.6 Lưu đồ giải thuật điều khiển led chớp tắt Bước 3: Soạn thảo chương trình trên trình biên dịch:
- Có nhiều phần mềm lập trình hợp ngữ cho VĐK 8051 ở đây ta sử dụng phần mềm Pinnacle.
- Khởi động phần mềm, mở bài mới và soạn thảo vào chương trình tham khảo như sau:
;chuong trinh dieu khien 8 led don noi voi P2 chop tat lien tuc
;--- org 0 ;dia chi bat dau t chuong trinh
start:
mov p2,#00000000b ;tat cac led call tao_tre
mov p2,#11111111b ;sang cac led call tao_tre
jmp start ;lap lai tu dau
;--- tao_tre:
mov r6,#255 lap:
mov r7,#255 djnz r7,$
djnz r6,lap ret end
Tắt 8 led
Tạo trễ Sáng 8 led
Tạo trễ
KÕt thóc Bắt đầu
Đặt biến thứ 1
Giảm biến 2 Biến 2 > 0 Biến 2 = 0 Bắt đầu
Đặt biến thứ 2
Biến 1 > 0
Biến 1 = 0 KÕt thóc
Bước 4: Biên dịch, sửa lỗi nếu mắc phải.
- Sau khi soạn thảo song ta lưu lại bài viết rồi tiến hành biên dịch để chuyển file nguồn vừa soạn thảo sang mã máy bằng cách chọn: CTRL + F2.
- Nếu máy tính báo lỗi tức là chương trình ta vừa viết mắc phải lỗi cú pháp. Nguyên nhân gây ra lỗi này chủ yếu là do đánh máy, viết câu lệnh, nhãn, chú thích.. không
đúng. Để sửa lỗi này ta nháy đúp vào thông báo lỗi đó để sửa với nguyên tắc sửa từ lỗi từ trên xuống. Khi máy tính không còn thông báo lỗi nữa thì lúc đó chương trình mới có thể chạy ( vì có thể mắc phải lỗi giải thuật - lỗi này máy tính không biết được ) Bước 5: Mô phỏng hoạt động của chương trình vừa viết.
- Để mô phỏng chương trình vừa viết ta có thể mô phỏng ngay trên Pinnacle hoặc phần mÒm Proteus.
Lưu ý: Trình tự các bước trên được áp dụng cho một dự án, một bài thực hành hay quá
trình tự luyện tập.
Ví dụ 2: Viết chương trình cho VĐK điều khiển 8 led đơn nối với Port 2 có một điểm sáng chạy
Bước 1: Vẽ sơ đồ nguyên lý.
- Dùng phần mềm Proteus để vẽ sơ nguyên lý như ví dụ 1.
Bước 2: Vẽ lưu đồ giải thuật.
- Lưu đồ giả thuật có thể tham khảo như sau:
Hình 6.7 Lưu đồ giải thuật
điều khiển led sáng chạy
Bắt đầu
- Tắt các led đầu ra - Xoá thanh ghi A - Đặt cờ C lên 1
KiÓm tra cê C
KÕt thóc - Xoay thanh ghi A qua cê C
- §a A ra Port - Gọi trễ
C=0
C=1
Bước 3: Soạn thảo chương trình trên trình biên dịch:
;chuong trinh dieu khien 8 led don noi voi P2 co mot diem sang chay
;--- org 0 ;dia chi bat dau viet chuong trinh
start:
mov p2,#00000000b ;tat cac led clr A ;xoa thanh ghi A
setb C ;dat co C=1 Lap_xoay:
rlc a ;xoay trai A qua co C mov p2,a ;dua A ra P2 call tao_tre
jnc Lap_xoay ;nhay den lap xoay neu co C=0 jmp start ;lap lai tu dau
;---
;cac chuong trinh con tao_tre:
mov r6,#255 lap:
mov r7,#255
djnz r7,$ ;$ la nhan cua chinh no djnz r6,lap
ret
end ;ket thuc ct hop ngu Bước 4: Biên dịch, sửa lỗi nếu mắc phải.
Sau khi soạn thảo song ta lưu lại bài viết rồi tiến hành biên dịch để chuyển file nguồn vừa soạn thảo sang mã máy bằng cách chọn: CTRL + F2.
Bước 5: Mô phỏng hoạt động của chương trình vừa viết.