Bài giảng chương 4: Giao tiếp với các thiết bị đơn giản

Để giúp cho người sử dụng có thể giao tiếp với máy móc thiết bị điều khiển, ta cần phải có một màn hình hiển thị số và chữ cái.Trong các hệ thống cần hiển thị một lượng lớn thông tin dữ liệu thường dùng CRT (màn hình) để hiển thị còn khi chỉ cần hiển thị một lượng nhỏ thông tin thì sẽ dùng các thiết bị hiển thị số đơn giản do giá rẻ và dễ điều khiển. Có nhiều loại màn hình hiển thị như CRT, LCD, LED, Ta chỉ xét thiết bị hiển thị đơn giản là LED. Hiển thị số và chữ dùng LED có 3 loại chính.Với các ứng dụng hiển thị dùng để chỉ thị thì dùng LED đơn, để hiện số và chữ số thì dùng Led 7 đoạn hay Led 18 đoạn, để hiển thị ký tự bất kỳ thì dùng ma trận Led.

pdf18 trang | Chia sẻ: haohao89 | Lượt xem: 2579 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Bài giảng chương 4: Giao tiếp với các thiết bị đơn giản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 109 CHƯƠNG 4: GIAO TIẾP VỚI CÁC THIẾT BỊ ĐƠN GIẢN 1. Giao tiếp LED (Light Emitting Diode) Để giúp cho người sử dụng có thể giao tiếp với máy móc thiết bị điều khiển, ta cần phải có một màn hình hiển thị số và chữ cái.Trong các hệ thống cần hiển thị một lượng lớn thông tin dữ liệu thường dùng CRT (màn hình) để hiển thị còn khi chỉ cần hiển thị một lượng nhỏ thông tin thì sẽ dùng các thiết bị hiển thị số đơn giản do giá rẻ và dễ điều khiển. Có nhiều loại màn hình hiển thị như CRT, LCD, LED, … Ta chỉ xét thiết bị hiển thị đơn giản là LED. Hiển thị số và chữ dùng LED có 3 loại chính.Với các ứng dụng hiển thị dùng để chỉ thị thì dùng LED đơn, để hiện số và chữ số thì dùng Led 7 đoạn hay Led 18 đoạn, để hiển thị ký tự bất kỳ thì dùng ma trận Led. 1.1. Giao tiếp LED đơn Hình 4.1 - Mô tả LED và biểu diễn trong mạch Khi LED sáng, dòng qua LED khoảng 10 – 40 mA và điện áp rơi trên LED vào khoảng 1.8V – 2V. Khi đó, ta có mạch điện điều khiển LED như sau: Hình 4.2 – Sơ đồ kết nối LED đơn Giả sử mạch kết nối với 8255A có điện áp ứng với mức logic 0 từ 0 – 0.4V và mức logic 1 từ 4.6V – 5V. Chọn dòng qua LED là 20 mA và điện áp rơi trên LED là 2V. Xét hình a: LED sáng khi mức logic tại chân IN là mức 0, ứng với điện áp 0.4V nên giá trị điện trở R1 là: R1 = Ω=−−=−− − 13010x20 4.025 I 4.0VVcc 3 LED LED Æ chọn R1 = 150 Ω D1 LED R1 RESISTOR IN Hình a Hình b D1 LED R1 RESISTOR VCC IN Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 110 8255 34 33 32 31 30 29 28 27 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 5 36 9 8 35 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 RD WR A0 A1 RESET CS 1 2 1 2 R1 D5 LED R2 D7 LED R8R7R3 R5 1 2 1 2 D4 LED D1 LED VCC 1 2 D2 LED R4 1 2 7404 1 2 D3 LED D8 LED 1 2 R6 D6 LED Xét hình b: LED sáng khi mức logic tại chân IN là mức 1, ứng với điện áp 4.6V nên giá trị điện trở R1 là: R1 = Ω=−=− − 13010x20 26.4 I VV 3 LED LEDIN Æ chọn R1 = 150 Ω Tuy nhiên khi thiết kế mạch như hình b thì lưu ý rằng dòng tại chân IN phải đáp ứng được giá trị 20 mA. Đối với 8255A, dòng ngõ ra vào khoảng 2.5 mA nên không đáp ứng đủ dòng để sáng LED nên phải dùng thêm mạch khuếch đại. Thông thường khi thiết kế giao tiếp với 8255A, ta sử dụng mạch hình a nhưng lưu ý là đối với cách thiết kế như trên thì dòng sẽ đi trực tiếp vào cổng vào/ra của 8255A nên ta có thể dùng thêm các cổng đệm hay đảo để tránh làm hư cổng. Hình 4.3 – Sơ đồ kết nối LED đơn dùng cổng đảo Xét sơ đồ kết nối giữa LED đơn và 8255 như sau: Hình 4.4 - Kết nối giữa LED đơn và 8255 D1 LED R1 RESISTOR VCC IN 1 2 U1A 74LS04 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 111 Chương trình hợp ngữ quét LED từ trái sang phải như sau (giả sử địa chỉ Port A, Port B, Port C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h): .MODEL SMALL .STACK 100h .DATA Led_data DB 01h,02h,04h,08h,10h,20h,40h,80h .CODE Main PROC MOV AX,@DATA MOV DS, AX ; Gán địa chỉ cho Data segment MOV AL,80h ; Định cấu hình cho 8255 MOV DX,303h ; Port A: xuất, Port B: xuất OUT DX,AL ; Port C: xuất MOV BX,0 Lap: MOV AL,Led_data[BX] MOV DX,300h ; Địa chỉ LED OUT DX,AL MOV CX,0FFh Delay: ; Tạo thời gian trễ PUSH CX MOV CX,0FFFFh LOOP $ POP CX LOOP delay INC BX CMP BX,8 ; LED có 8 trạng thái JNE lap MOV AH,4Ch ; Kết thúc chương trình INT 21h Main ENDP END Main 1.2. Giao tiếp ma trận LED Ma trận LED bao gồm nhiều LED cùng nằm trong một vỏ chia thành nhiều cột và hàng, mỗi giao điểm giữa hàng và cột có thể có 1 LED (ma trận LED một màu) hay nhiều LED (2 LED tại một vị trí tạo thành ma trận LED 3 màu). Để LED tại một vị trí nào đó sáng thì phải cấp điện áp dương tại Anode và điện áp âm tại Cathode (nghĩa là cấp mức logic 1 tại hàng và logic 0 tại cột ứng với ma trận LED có kết nối như hình 4.5). Trên cơ sở cấu trúc như hình vẽ 4.5, ta có thể mở rộng hàng và cột của ma trận LED để tạo thành các bảng quang báo. Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 112 Hình 4.5 – Cấu trúc và hình dạng của ma trận LED 5x8 Hình 4.6 – Sáng chữ ‘A’ trên ma trận LED 5x8 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 113 Xét sơ đồ kết nối ma trận LED với 8255 như hình 4.7 trong đó Port A điều khiển hàng thông qua các transistor và Port B điều khiển cột (địa chỉ Port A, B, C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h). Hình 4.7 – Kết nối ma trận LED với 8255 Tính toán cho mạch: Transistor Q1 hoạt động ở chế độ bão hoà với dòng Ic là dòng qua LED nên chọn Q1 có β = 50, VCE = 0,2V , VBE = 0,7V R2 = LED OL 7404 CE LED Vcc V V V I −− − − = 5 2 0,4 0,2 0,01 − − − = 240 Ω, chọn R2 = 220 Ω R1 = OH 8255 BE LED OL 7404 B V V V V I − −− − − = 4,6 0,7 2 0,4 0,01/ 50 − − − = 7.5 KΩ, chọn R1 = 8.2 KΩ R1x8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 U10 8255 34 33 32 31 30 29 28 27 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 5 36 9 8 35 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 RD WR A0 A1 RESET CS R2x8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 Q1x8 7404x5 1 2 VCC Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 114 Để hiển thị một ký tự trên ma trận LED, ta sẽ cho sáng các LED tương ứng. Ví dụ như để sáng chữ ‘A’ trên ma trận LED, ta cho tương ứng LED sáng như hình 4.6. Tuy nhiên, ta không thể cho sáng đồng thời 2 LED tại 2 vị trí hàng và cột khác nhau vì sẽ ảnh hưởng đến các LED còn lại. Ví dụ như khi sáng LED tại hàng 1, cột 2 (PA0 = 1, PB1 = 1) và hàng 2, cột 1 (PA1 = 1, PB0 = 1) thì do PA0 = 1, PB0 = 1; PA1 = 1, PB1 = 1 nên LED tại hàng 1, cột 1 và hàng 2, cột 2 cũng sáng. Như vậy để sáng ký tự ‘A’ trên ma trận LED thì phải dùng phương pháp quét khi hiển thị dữ liệu trên ma trận LED. Quá trình quét có thể thực hiện quét dòng hay cột. Khi thực hiện quét cột, tại mỗi thời điểm chỉ có một cột sáng. Dữ liệu cho Port B và Port B của 8255A như sau: - Cột 1: sáng 7 LED PB0 = 1, PB1 – 4 = 0: PB = xxx0 0001b (01h) PA0 = 0, PA1 – 7 = 1: PA = 1111 1110b (0FEh) - Cột 2: sáng 2 LED PB0 = 0, PB2 – 4 = 0, PB1 = 1: PB = xxx0 0010b (02h) PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0: PA = 0001 0001b (11h) - Cột 3: giống cột 2 PB0 - 1 = 0, PB3 – 4 = 0, PB2 = 1: PB = xxx0 0100b (04h) PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0: PA = 0001 0001b (11h) - Cột 4: giống cột 2 PB0 - 2 = 0, PB4 = 0, PB3 = 1: PB = xxx0 1000b (08h) PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0: PA = 0001 0001b (11h) - Cột 5: giống cột 1 PB0 - 3 = 0, PB4 = 1: PB = xxx1 0000b (10h) PA0 = 0, PA1 – 7 = 1: PA = 1111 1110b (0FEh) Chương trình hiển thị cho ma trận LED như sau: .MODEL SMALL .STACK 100h .DATA pa DB 0FEh,11h,11h,11h,0FEh pb DB 01h,02h,04h,08h,10h .CODE Main PROC MOV AX,@DATA MOV DS, AX ; Gán địa chỉ cho Data segment MOV AL,80h ; Định cấu hình cho 8255 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 115 MOV DX,303h ; Port A: xuất, Port B: xuất OUT DX,AL ; Port C: xuất Start: MOV AH,0Bh ; Kiểm tra phím nhấn INT 21h CMP AL,0 ; Nếu có phím nhấn JNE Exit ; thì kết thúc chương trình MOV BX,0 Lap: MOV AL,pa[BX] MOV DX,300h ; Xuất ra hàng OUT DX,AL MOV AL,pb[BX] MOV DX,301h ; Xuất ra cột OUT DX,AL PUSH CX ; Tạo thời gian trễ MOV CX,0FFFFh LOOP $ POP CX INC BX CMP BX,5 ; Quét 5 cột JNE lap JMP Start Exit: MOV AH,4Ch ; Kết thúc chương trình INT 21h Main ENDP END Main 2. Giao tiếp bàn phím 2.1. Giao tiếp phím đơn Hình 4.8 – Sơ đồ kết nối phím nhấn (2 chân) với vi xử lý R VCC SW To uP R SW To uP VCC a/ b/ Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 116 Hình 4.9 – Sơ đồ kết nối phím nhấn (3 chân) với vi xử lý Các phím đơn dùng để điều khiển khi hệ thống vi xử lý không đòi hỏi nhiều giá trị nhập (chẳng như chỉ cần các điều khiển đóng mở thiết bị). Sơ đồ kết nối phím đơn mô tả như hình 4.8 hay 4.9. Khi thực hiện kiểm tra phím nhấn, vấn đề cần thiết là phải thực hiện chống dội. Hiện tượng dội khi nhấn phím có thể mô tả như hình 4.10 (giả sử khi nhấn phím thì ngõ ra ở mức logic 1 và nhả phím thì ngõ ra ở mức logic 0 – hình 4.8b). Quá trình chống dội có thể thực hiện bằng phần mềm hay phần cứng. Hình 4.10 – Hiện tượng dội khi nhấn phím ™ Phần mềm: Do thời gian dội của phím vào khoảng 20ms nên quá trình chống dội bằng phần mềm đơn giản là tạo một thời gian trễ đủ lớn để chương trình bỏ qua ảnh hưởng khi dội. ™ Phần cứng: Khi thực hiện chống dội bằng phần cứng, ta có thể thực hiện bằng cách sử dụng các cổng NAND hay thực hiện bằng mạch RC. Hình 4.11 – Chống dội phím nhấn bằng phần cứng R VCC To uP SW R VCC CSW To uP 1 2 3 7400 4 5 6 7400 To uP VCC R1 SW R2 a/ b/ Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 117 Tuy nhiên khi thực hiện thiết kế phần cứng, thông thường ta sẽ chống dội bằng phần mềm để đơn giản mạch phần cứng. Xét sơ đồ phần cứng thiết kế như hình 4.12 (giả sử địa chỉ Port A, B, C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h). Hình 4.12 – Kết nối phím nhấn với 8255 Chương trình hợp ngữ kiểm tra các phím SW1, SW2, SW3, SW4 và hiển thị trạng thái phím nhấn lên màn hình: .MODEL SMALL .STACK 100h .DATA Msg DB ‘Da nhan phim: SW‘ sw DB ?,13,10,’$’ .CODE Main PROC MOV AX,@DATA MOV DS,AX MOV AL,81h ; Định cấu hình cho 8255 MOV DX,303h ; PA, PB, PC (high): xuất OUT DX,AL ; PC (low): nhập Start: MOV AH,0Bh ; Kiểm tra phím nhấn INT 21h CMP AL,0 ; Nếu có phím nhấn JNE Exit ; thì kết thúc chương trình MOV DX,302h ; Đọc từ Port C để kiểm tra IN AL,DX ; phím nhấn D034 D133 D2 32 D331 D4 30 D529 D6 28 D7 27 PA0 4 PA1 3 PA2 2 PA3 1 PA4 40 PA5 39 PA6 38 PA7 37 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 PC0 14 PC1 15 PC2 16 PC3 17 PC4 13 PC5 12 PC6 11 PC7 10 RD 5 WR 36 A0 9 A18 RESET35 CS6 U16 8255 R9 VCC SW1 R10 VCC SW2 R11 VCC SW3 R12 VCC SW4 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 118 AND AL,0Fh ; Xoá 4 bit cao CMP AL,00001110b ; Nếu nhấn SW1 thì PC0 = 0 JE Sw1 CMP AL,00001101b ; Nếu nhấn SW2 thì PC1 = 0 JE Sw2 CMP AL,00001011b ; Nếu nhấn SW3 thì PC2 = 0 JE Sw3 CMP AL,00000111b ; Nếu nhấn SW4 thì PC3 = 0 JE Sw4 JMP Start Sw1: CALL Delay MOV sw,’1’ MOV AH,09h LEA DX,Msg INT 21h JMP Start Sw2: CALL Delay MOV sw,’2’ MOV AH,09h LEA DX,Msg INT 21h JMP Start Sw3: CALL Delay MOV sw,’3’ MOV AH,09h LEA DX,Msg INT 21h JMP Start Sw4: CALL Delay MOV sw,’4’ MOV AH,09h LEA DX,Msg INT 21h JMP Start Exit: MOV AH,4Ch ; Kết thúc chương trình INT 21h Main ENDP ;------------- Delay PROC PUSH CX MOV CX,0FFFFh LOOP $ Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 119 POP CX RET Delay ENDP ;------------- END Main 2.2. Giao tiếp bàn phím Hex Bàn phím Hex là bàn phím xây dựng theo cấu trúc ma trận gồm 16 phím chia thành 4 hàng và 4 cột (hình 4.13). Hình 4.13 – Cấu trúc bàn phím Hex Lưu ý rằng khi không nhấn phím thì hàng của bàn phím Hex nối với Vcc thông qua điện trở R nên có mức logic 1. Để phân biệt được trạng thái của phím nhấn thì mức logic khi nhấn phím phải là mức logic 0. Mà khi nhấn một phím nào đó thì tương ứng hàng và cột của bàn phím Hex sẽ kết nối với nhau. Do đó, để thực hiện kiểm tra một phím thì ta phải cho trước cột chứa phím tương ứng ở mức logic 0, sau đó kiểm tra hàng của phím, nếu hàng = 0 thì có nhấn phím còn hàng = 1 thì không nhấn phím. Ví dụ như muốn kiểm tra phím 4 thì ta cho cột chứa phím 4 ở mức logic 0 (chân 5 của J1, các cột khác = 1, nghĩa là dữ liệu tại J1 là 1000xxxxb), sau đó thực hiện kiểm tra chân 2 của J1 (hàng của phím 4), nếu chân này = 0 thì phím 4 được nhấn. Xét sơ đồ kết nối của bàn phím Hex với 8255 như hình 4.14 (giả sử địa chỉ Port A, B, C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h). Ở đây ta thực hiện kết nối với Port C của 8255 do Port C có thể chia thành 2 phần: 4 bit cao và 4 bit thấp có thể xuất nhập độc lập trong khi đó Port A và Port B chỉ có thể đồng thời xuất hay nhập 0 1 2 3 4 5 6 7 8 9 A B C D E F R R R R VCC 1 2 3 4 5 6 7 8 J1 CON8 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 120 còn để xác định có phím nhấn trên bàn phím Hex hay không thì phải xuất dữ liệu điều khiển cột và đọc dữ liệu từ hàng của bàn phím. Hình 4.14 – Sơ đồ kết nối bàn phím Hex với 8255 Chương trình hợp ngữ kiểm tra bàn phím như sau: .MODEL SMALL .STACK 100h .DATA .CODE Main PROC MOV AX,@DATA MOV DS,AX MOV AL,81h ; Định cấu hình cho 8255 MOV DX,303h ; PA, PB, PC (high): xuất OUT DX,AL ; PC (low): nhập Start: MOV AH,0Bh ; Kiểm tra phím nhấn INT 21h CMP AL,0 ; Nếu có phím nhấn JE Next JMP Exit ; thì kết thúc chương trình Next: MOV DX,302h ; Địa chỉ Port C MOV AL,11100000b ; Cho PC4 = 0 ứng với các 0 1 2 3 4 5 6 7 8 9 A B C D E F R R R R VCC D034 D1 33 D232 D331 D430 D529 D628 D7 27 PA0 4 PA1 3 PA2 2 PA3 1 PA4 40 PA5 39 PA6 38 PA7 37 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 PC0 14 PC1 15 PC2 16 PC3 17 PC4 13 PC5 12 PC6 11 PC7 10 RD 5 WR 36 A09 A18 RESET35 CS6 U17 8255 Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 121 OUT DX,AL ; phím 0,4,8,C IN AL,DX ; Đọc về kiểm tra hàng AND AL,0Fh ; Xoá 4 bit cao CMP AL,00001110b ; Nếu nhấn phím 0 thì PC0 = 0 JNE Not0 CALL Sw0 Not0: CMP AL,00001101b ; Nếu nhấn phím 4 thì PC1 = 0 JNE Not4 CALL Sw4 Not4: CMP AL,00001011b ; Nếu nhấn phím 8 thì PC2 = 0 JNE Not8 CALL Sw8 Not8: CMP AL,00000111b ; Nếu nhấn phím C thì PC3 = 0 JNE NotC CALL SwC NotC: MOV DX,302h ; Địa chỉ Port C MOV AL,11010000b ; Cho PC5 = 0 ứng với các OUT DX,AL ; phím 1,5,9,D IN AL,DX ; Đọc về kiểm tra hàng AND AL,0Fh ; Xoá 4 bit cao CMP AL,00001110b ; Nếu nhấn phím 1 thì PC0 = 0 JNE Not1 CALL Sw1 Not1: CMP AL,00001101b ; Nếu nhấn phím 5 thì PC1 = 0 JNE Not5 CALL Sw5 Not5: CMP AL,00001011b ; Nếu nhấn phím 9 thì PC2 = 0 JNE Not9 CALL Sw9 Not9: CMP AL,00000111b ; Nếu nhấn phím D thì PC3 = 0 JNE NotD CALL SwD NotD: MOV DX,302h ; Địa chỉ Port C Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 122 MOV AL,10110000b ; Cho PC6 = 0 ứng với các OUT DX,AL ; phím 2,6,A,E IN AL,DX ; Đọc về kiểm tra hàng AND AL,0Fh ; Xoá 4 bit cao CMP AL,00001110b ; Nếu nhấn phím 2 thì PC0 = 0 JNE Not2 CALL Sw2 Not2: CMP AL,00001101b ; Nếu nhấn phím 6 thì PC1 = 0 JNE Not6 CALL Sw6 Not6: CMP AL,00001011b ; Nếu nhấn phím A thì PC2 = 0 JNE NotA CALL SwA NotA: CMP AL,00000111b ; Nếu nhấn phím E thì PC3 = 0 JNE NotE CALL SwE NotE: MOV DX,302h ; Địa chỉ Port C MOV AL,01110000b ; Cho PC7 = 0 ứng với các OUT DX,AL ; phím 3,7,B,F IN AL,DX ; Đọc về kiểm tra hàng AND AL,0Fh ; Xoá 4 bit cao CMP AL,00001110b ; Nếu nhấn phím 3 thì PC0 = 0 JNE Not3 CALL Sw3 Not3: CMP AL,00001101b ; Nếu nhấn phím 7 thì PC1 = 0 JNE Not7 CALL Sw7 Not7: CMP AL,00001011b ; Nếu nhấn phím B thì PC2 = 0 JNE NotB CALL SwB NotB: CMP AL,00000111b ; Nếu nhấn phím F thì PC3 = 0 JNE NotF CALL SwF NotF: Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 123 JMP Start Exit: MOV AH,4Ch ; Kết thúc chương trình INT 21h Main ENDP ;----------- Sw0 PROC ; Chương trình cho phím 0 RET Sw0 ENDP ;----------- Sw1 PROC ; Chương trình cho phím 1 RET Sw1 ENDP ;----------- Sw2 PROC ; Chương trình cho phím 2 RET Sw2 ENDP ;----------- Sw3 PROC ; Chương trình cho phím 3 RET Sw3 ENDP ;----------- Sw4 PROC ; Chương trình cho phím 4 RET Sw4 ENDP ;----------- Sw5 PROC ; Chương trình cho phím 5 RET Sw5 ENDP ;----------- Sw6 PROC ; Chương trình cho phím 6 RET Sw6 ENDP ;----------- Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 124 Sw7 PROC ; Chương trình cho phím 7 RET Sw7 ENDP ;----------- Sw8 PROC ; Chương trình cho phím 8 RET Sw8 ENDP ;----------- Sw9 PROC ; Chương trình cho phím 9 RET Sw9 ENDP ;----------- SwA PROC ; Chương trình cho phím A RET SwA ENDP ;----------- SwB PROC ; Chương trình cho phím B RET SwB ENDP ;----------- SwC PROC ; Chương trình cho phím C RET SwC ENDP ;----------- SwD PROC ; Chương trình cho phím D RET SwD ENDP ;----------- SwE PROC ; Chương trình cho phím E RET SwE ENDP ;----------- SwF PROC Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 125 ; Chương trình cho phím F RET SwF ENDP ;----------- Delay PROC PUSH CX MOV CX,0FFFFh LOOP $ POP CX RET Delay ENDP END Main Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản Phạm Hùng Kim Khánh Trang 126 BÀI TẬP CHƯƠNG 4 1. Giả sử Port A của 8255 kết nối như hình 4.4, Port C kết nối với 2 công tắc SW1, SW2 tương ứng tại PC7, PC6 tương tự như hình 4.12. Viết chương trình hợp ngữ điều khiển công tắc sao cho: - Nhấn SW1: LED sáng tuần tự từ trong ra ngoài, mỗi lần sáng tương ứng 2 LED. - Nhấn SW2: tắt các LED và kết thúc chương trình 2. Giả sử Port A và Port B của 8255 kết nối với ma trận LED 5x8 như hình 4.7 còn Port C kết nối với bàn phím Hex như hình 4.14. Viết chương trình hợp ngữ điều khiển bàn phím Hex sao cho: - Nhấn phím 2: sáng số ‘2’ trên ma trận LED - Nhấn phím D: sáng chữ ‘D’ trên ma trận LED 2 1A3 IOR 106W 1985ADC0804 679247453+IN -INVREF/2 DB765432CLKR IN NTR S RDWESET 0 8255 8PAC
Tài liệu liên quan