Tài liệu Vi xử lý - Chương 4: Tổ chức nhập/xuất - Phạm Hùng Kim Khánh

2.1.2.Thiết bị ngoại vi và bộ nhớ có chung không gian địa chỉ
Trong kiểu giao tiếp này, thiết bị ngoại vi sẽ chiếm một vùng nào đó trong
không gian địa chỉ 1 MB và ta chỉ dùng lệnh MOV để thực hiện trao đổi dữ liệu.
2.2. Giải mã địa chỉ cho thiết bị vào / ra
Việc giải mã địa chỉ cho thiết bị ngoại vi cũng tương tự với việc giải mã địa chỉ
cho bộ nhớ. Thông thường, các cổng có địa chỉ 8 bit A0 – A7. Tuy nhiên, trong một số
hệ vi xử lý, các cổng sẽ có địa chỉ 16 bit.
Ta có thể dùng mạch NAND để tạo tín hiệu chọn cổng nhưng mạch này chỉ có
thể giải mã cho 1 cổng. Trong trường hợp cần nhiều tín hiệu chọn cổng, ta có thể dùng
bộ giải mã 74LS138 để giải mã cho 8 cổng khác nhau
pdf 30 trang thamphan 27/12/2022 3160
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Vi xử lý - Chương 4: Tổ chức nhập/xuất - Phạm Hùng Kim Khánh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdftai_lieu_vi_xu_ly_chuong_4_to_chuc_nhapxuat_pham_hung_kim_kh.pdf

Nội dung text: Tài liệu Vi xử lý - Chương 4: Tổ chức nhập/xuất - Phạm Hùng Kim Khánh

  1. Tài liệu vi xử lý Tổ chức nhập / xuất CHƯƠNG 4: TỔ CHỨC NHẬP / XUẤT 1. Các mạch phụ trợ 8284 và 8288 1.1. Mạch tạo xung nhịp 8284 Mạch tạo xung nhịp dùng để cung cấp xung nhịp cho µP. 1 18 2 CSYNC VCC 17 PCLK X1 3 16 4 AEN1 X2 15 5 RDY1 ASYNC 14 6 READY EFI 13 7 RD2 F/C 12 8 AEN2 OSC 11 9 CLK RES 10 GND RESET 8284 Hình 4.1 – Mạch tạo xung nhịp 8284 CSYNC (Clock Synchronisation): ngõ vào xung đồng bộ chung khi hệ thống có các 8284 dùng dao động ngoài tại chân EFI. Khi dùng mạch dao động trong thì phải nối đất. PCLK (Peripheral Clock): xung nhịp f = fX/6 (fX là tần số thạch anh) AEN1, AEN2 (Address Enable): cho phép chọn các chân RDY1, RDY2 báo hiệu trạng thái sẵn sàng của bộ nhớ hay thiết bị ngoại vi 18 1 17 VCC CSYNC 2 16 X1 PCLK 3 15 X2 AEN1 4 14 ASYNC RDY1 5 13 EFI READY 6 12 F/C RD2 7 11 OSC AEN2 8 10 RES CLK 9 RESET GND 8284 Vcc + Hình 4.2 – Mạch khởi động cho 8284 RDY1, RDY2 (Bus ready): tạo các chu kỳ đợi ở CPU Phạm Hùng Kim Khánh Trang 74
  2. Tài liệu vi xử lý Tổ chức nhập / xuất DT/ R (Data Transmit/Receive): µP truyền (1) hay nhận (0) dữ liệu. ALE (Address Latch Enable): tín hiệu cho phép chốt địa chỉ AEN (Address Enable): chờ thời gian trễ khoảng 150 ns sẽ tạo các tín hiệu điều khiển ở đầu ra của 8288 để đảm bảo rằng địa chỉ sử dụng đã hợp lệ. MRDC(Memory Read Command): điều khiển đọc bộ nhớ MWTC(Memory Write Command): điều khiển ghi bộ nhớ AMWC (Advanced MWTC),: giống như MWTC nhưng hoạt động sớm hơn một chút dùng cho các bộ nhớ chậm đáp ứng kịp tốc độ µP. IOWC(I/O Write Command): điều khiển ghi ngoại vi AIOWC (Advanced IOWC),: giống như IOWC nhưng hoạt động sớm hơn một chút dùng cho các ngoại vi chậm đáp ứng kịp tốc độ µP. IORC(I/O Read Command): điều khiển đọc ngoại vi INTA (Interrupt Acknowledge): ngõ ra thông báo µP chấp nhận yêu cầu ngắt của thiết bị ngoại vi CEN (Command Enable): cho phép đưa ra các tín hiệu của 8288. DEN (Data Enable): tín hiệu điều khiển bus dữ liệu thành bus cục bộ hay bus hệ thống. MCE / PDEN (Master Cascade Enable / Peripheral Data Enable): định chế độ làm việc cho mạch điều khiển ngắt PIC 8259. 2. Giao tiếp với thiết bị ngoại vi 2.1. Các kiểu giao tiếp vào / ra 2.1.1. Thiết bị ngoại vi có địa chỉ tách rời với bộ nhớ Trong cách giao tiếp này, bộ nhớ dùng toàn bộ không gian 1 MB. Các thiết bị ngoại vi sẽ có một không gian 64 KB cho mỗi loại cổng. Trong kiểu giao tiếp này, ta phải dùng tín hiệu IO/ M và các lệnh trao đổi dữ liệu thích hợp. Bộ nhớ: IO/ M = 0, dùng lệnh MOV Ngoại vi: IO/ M = 1, dùng lệnh IN (nhập) hay OUT (xuất) 2.1.2. Thiết bị ngoại vi và bộ nhớ có chung không gian địa chỉ Trong kiểu giao tiếp này, thiết bị ngoại vi sẽ chiếm một vùng nào đó trong không gian địa chỉ 1 MB và ta chỉ dùng lệnh MOV để thực hiện trao đổi dữ liệu. 2.2. Giải mã địa chỉ cho thiết bị vào / ra Việc giải mã địa chỉ cho thiết bị ngoại vi cũng tương tự với việc giải mã địa chỉ cho bộ nhớ. Thông thường, các cổng có địa chỉ 8 bit A0 – A7. Tuy nhiên, trong một số hệ vi xử lý, các cổng sẽ có địa chỉ 16 bit. Ta có thể dùng mạch NAND để tạo tín hiệu chọn cổng nhưng mạch này chỉ có thể giải mã cho 1 cổng. Trong trường hợp cần nhiều tín hiệu chọn cổng, ta có thể dùng bộ giải mã 74LS138 để giải mã cho 8 cổng khác nhau. Phạm Hùng Kim Khánh Trang 76
  3. Tài liệu vi xử lý Tổ chức nhập / xuất 34 4 D7 – D0: bus dữ liệu 33 D0 PA0 3 32 D1 PA1 2 PA7 – PA0: Port A 31 D2 PA2 1 PB7 – PB0: Port B 30 D3 PA3 40 29 D4 PA4 39 PC7 – PC0: Port C 28 D5 PA5 38 27 D6 PA6 37 A1, A0: giải mã D7 PA7 5 18 RESET: ngõ vào Reset 36 RD 8255 PB0 19 9 WR PB1 20 CS : Chip Select 8 A0 PB2 21 35 A1 PB3 22 RD : Read 6 RESET PB4 23 CS PB5 24 PB6 25 WR : Write PB7 14 VCC: +5V PC0 15 GND: 0V PC1 16 PC2 17 PC3 13 PC4 12 PC5 11 PC6 10 PC7 Hình 4.5 – Sơ đồ chân của 8255A 2.4.2. Sơ đồ khối Nhóm A: PA7 ÷PA0 Điều khiển - PA (8) nhóm A - PCH (4) PC7 ÷PC4 D7 ÷D0 Bộ đệm dữ liệu RD Nhóm B: PB7 ÷PB0 WR - PB (8) Logic điều khiển Điều khiển - PCL (4) A1 nhóm B A0 PC3 ÷PC0 CS Hình 4.6 – Sơ đồ khối của 8255A Logic điều khiển của 8255A gồm có 6 đường: - RD (Read): cho phép ĐỌC. Khi chân này ở mức THẤP thì cho phép đọc dữ liệu từ Port I/O đã chọn. Phạm Hùng Kim Khánh Trang 78
  4. Tài liệu vi xử lý Tổ chức nhập / xuất 34 4 33 D0 PA0 3 32 D1 PA1 2 31 D2 PA2 1 30 D3 PA3 40 29 D4 PA4 39 28 D5 PA5 38 27 D6 PA6 37 D7 PA7 5 18 IOR 36 RD PB0 19 IOW 9 WR PB1 20 A0 8 A0 PB2 21 A1 35 A1 8255 PB3 22 A7 RESET 6 RESET PB4 23 A6 1 CS PB5 24 A5 3 PB6 25 A4 2 PB7 A3 14 A2 PC0 15 PC1 16 PC2 17 PC3 13 PC4 12 PC5 11 PC6 10 PC7 Hình 4.8 – Logic chọn chip 8255A Mà CS = 0 khi A7 = A6 = A5 = A4 = A3 = A2 = 1. Từ đó ta được địa chỉ Port I/O như sau: Bảng 4.3: A1 A0 CS Port Địa chỉ hex A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 1 1 0 0 A FCh 0 1 B FDh 1 0 C FEh 1 1 CR FFh ™ Thanh ghi điều khiển: Như đã biết, 8255A có 2 chế độ hoạt động và các Port của nó có thể có các chức năng I/O khác nhau. Để xác định chức năng của các Port, 8255A có một thanh ghi điều khiển (CR: Control Register). Nội dung của thanh ghi này gọi là từ điều khiển (CW: Control Word). Thanh ghi điều khiển sẽ được truy xuất khi A1 = A0 = 1. Chú ý rằng ta không thể thực hiện tác vụ Đọc đối với thanh ghi này. Nếu bit D7 = 0, Port C làm việc ở chế độ BSR nhưng từ điều khiển BSR không ảnh hưởng đến chức năng các Port A, B. Phạm Hùng Kim Khánh Trang 80
  5. Tài li Ph Ví dụ: Xét sơ đồ kết nối 8255A như sau: ạ ệ m Hùng Kim Khánhm Hùng Kim VCC x u vi 1 2 A15 74LS245 34 4 2 18 ử 33 D0 T PA0 3 3 A1 B1 17 lý 1 2 32 D1 PA1 2 4 A2 B2 16 A14 31 D2 PA2 1 5 A3 B3 15 30 D3 PA3 40 6 A4 B4 14 29 D4 PA4 39 7 A5 B5 13 1 2 28 D5 PA5 38 8 A6 B6 12 A13 27 D6 PA6 37 9 A7 B7 11 D7 PA7 A8 B8 5 18 19 1 2 IOR 36 RD PB0 19 VCC 1 G A12 IOW 9 WR PB1 20 DIR A0 8 A0 PB2 21 VCC A1 35 A1 8255 PB3 22 1 2 RESET 6 RESET PB4 23 A11 CS PB5 24 U?A PB6 25 74LS245 1 PB7 1 2 3 14 2 18 A10 2 PC0 15 3 A1 B1 17 PC1 16 4 A2 B2 16 PC2 17 5 A3 B3 15 7400 A9 PC3 13 6 A4 B4 14 PC4 12 7 A5 B5 13 A8 PC5 11 8 A6 B6 12 PC6 10 9 A7 B7 11 1 2 PC7 A8 B8 A7 19 1 G S1 VCC DIR 1 2 A6 S2 1 2 A5 S3 1 2 S4 A4 1 2 A3 ổ 1 2 ch A2 ứ Hình 4.10 – Giao tiếp các port 8255A ở mode 0 c nh ậ Trang 82 p /xu ấ t
  6. Tài liệu vi xử lý Tổ chức nhập / xuất - Lưu đồ giải thuật: Begin Khởi động 8255A Y Sáng 4 Led ở 4 bit thấp Nhấn SW1? của Port A N Y Sáng 4 Led ở 4 bit cao Nhấn SW2? của Port A N Y Sáng 4 Led ở 4 bit cao Nhấn SW3? của Port C N Y Sáng 4 Led ở 4 bit thấp Nhấn SW4? của Port C N - Chương trình: .MODEL SMALL .STACK 100h .CODE main PROC ; Định cấu hình cho 8255 MOV AL,82h ; Từ điều khiển (CW) là 82h MOV DX,303h ; Địa chỉ thanh ghi điều khiển (CR) OUT DX,AL ; Ghi CW vào CR cont: MOV DX,301h ; Địa chỉ Port B IN AL,DX ; Đọc dữ liệu từ Port B (công tắc) AND AL,0F0h ; Che 4 bit thấp MOV AH,AL CMP AH,01110000b ; Kiểm tra công tắc 1 JNE notSW1 ; Nếu không nhấn MOV AL,0Fh ; Nếu nhấn công tắc 1 thì MOV DX,300h ; xuất ra Port A OUT DX,AL ; để sáng 4 Led ở 4 bit thấp (Port A) notSW1: CMP AH,10110000b ; Kiểm tra công tắc 2 JNE notSW2 ; Nếu không nhấn Phạm Hùng Kim Khánh Trang 84
  7. Tài liệu vi xử lý Tổ chức nhập / xuất D7 D6 D5 D4 D3 D2 D1 D0 Đặt bit PC0 = 1 0 0 0 0 0 0 0 1 = 01h Xoá bit PC0 = 0 0 0 0 0 0 0 0 0 = 00h - Địa chỉ thanh ghi điều khiển (bảng 4.4): 303h - Chương trình con: bsr: MOV AL,01h ; Từ điều khiển BSR MOV DX,303h ; Địa chỉ thanh ghi điều khiển (CR) OUT DX,AL ; Đặt PC0 = 1 CALL DELAY1 ; Chờ MOV AL,00h ; Từ điều khiển BSR OUT DX,AL ; Xóa PC0 = 0 CALL DELAY2 ; Chờ JMP bsr Khi sử dụng ở mode BSR, cần chú ý các điều sau: - Để đặt hay xoá các bit ở Port C, từ điều khiển được ghi vào thanh ghi điều khiển chứ không ghi vào Port C. - Một từ điều khiển BSR chỉ ảnh hưởng đến một bit của Port C. - Từ điều khiển BSR không ảnh hưởng đến I/O mode. 2.4.5. Mode 1: Nhập / xuất với bắt tay (handshake) Trong mode 1, các tín hiệu bắt tay được trao đổi giữa µP và thiết bị ngoại vi trước khi truyền dữ liệu. Các đặc tính ở chế độ này là: - Hai Port A, B làm việc như các Port I/O 8 bit. - Mỗi Port sử dụng 3 đường từ Port C làm các tín hiệu bắt tay. Hai đường còn lại có thể dùng cho các chức năng I/O đơn giản. - Dữ liệu nhập / xuất được chốt. - Hỗ trợ ngắt. Phạm Hùng Kim Khánh Trang 86
  8. Tài liệu vi xử lý Tổ chức nhập / xuất STB IBF INTR RD Data input Hình 4.12 – Dạng sóng định thì cho ngõ vào có strobe ™ Các từ điều khiển và trạng thái: - Từ điều khiển: để xác định từ điều khiển, ta sử dụng hình 3.4.5 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1/0 1 1 X I/O mode PA: Mode 1 PA: nhập PC6,7 PB: Mode 1 PB: nhập 1: nhập 0: xuất - Từ trạng thái: sẽ được đặt trong thanh ghi tích luỹ nếu đọc Port C. D7 D6 D5 D4 D3 D2 D1 D0 I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB Phạm Hùng Kim Khánh Trang 88
  9. Tài liệu vi xử lý Tổ chức nhập / xuất WR OBF INTR ACK Output Hình 4.14 – Dạng sóng cho xuất strobe (có lấy mãu) (với bắt tay) ™ Từ điều khiển và trạng thái: - Từ điều khiển: D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 1/0 1 0 X I/O PA: Mode 1 PA: xuấtPC4,5 PB: PB: xuất mode 1: nhập mode 1 0: xuất - Từ trạng thái: D7 D6 D5 D4 D3 D2 D1 D0 OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB 2.4.6. Mode 2: Truyền dữ liệu song hướng Mode nay dùng chủ yếu trong các ứng dụng như truyền dữ liệu giữa hai máy tính hay giao tiếp bộ điều khiển đĩa mềm. Trong mode này, Port A dùng làm Port song hướng và Port B làm việc ở Mode 0 hay 1. Port A sử dụng 5 tín hiệu tại Port C làm các tín hiệu điều khiển để truyền dữ liệu. Ba tín hiệu còn lại của Port C được dùng làm I/O đơn giản hay bắt tay cho Port B. Phạm Hùng Kim Khánh Trang 90
  10. Tài liệu vi xử lý Tổ chức nhập / xuất Xét sơ đồ mạch có logic chọn chip giống như hình 4.10. Tầm địa chỉ Port từ 300h ÷ 303h. - Từ điều khiển mode 0: Port A: nhập Pot B: không sử dụng Port Clow: port xuất dùng để điều khiển 2 ngõ RD , WR của ADC0804 Port Chigh: port nhập dùng để đọc trạng thái ở chân INTR của ADC0804 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 1 0 0 0 0 = 90h I/O PA: mode 0 PA: nhập PCH: xuất PB: không sử dụng PCL: xuất - Từ điều khiển BSR: D7 D6 D5 D4 D3 D2 D1 D0 Đặt PC0 0 0 0 0 0 0 0 1 = 01h Xoá PC0 0 0 0 0 0 0 0 0 = 00h Đặt PC3 0 0 0 0 0 1 1 1 = 07h Xoá PC3 0 0 0 0 0 1 1 0 = 06h Phạm Hùng Kim Khánh Trang 92
  11. Tài liệu vi xử lý Tổ chức nhập / xuất - Mô tả chương trình: ¾ Khởi động 8255A bằng cách đặt từ điều khiển mode 0 vào thanh ghi điều khiển. ¾ Cấp một xung vào chân RD của 8255A. ¾ Đọc trạng thái của ADC0804 từ chân INTR . ¾ Nếu INTR = 0 thì cấp một xung vào chân WR của ADC0804 để xuất dữ liệu. ¾ Đọc dữ liệu từ ADC0804 vào thông qua Port A. - Đoạn chương trình thực hiện: adc: MOV DX,303h ; Địa chỉ thanh ghi điều khiển (CR) MOV AL,90h ; Từ điều khiển (CW) OUT DX,AL ;Ghi CW vào CR MOV AL,01h ; Từ điều khiển BSR để PC0 = 1 ( RD = 1) OUT DX,AL ; Xuất ra CR MOV AL,07h ; Từ điều khiển BSR để PC3 = 1 OUT DX,AL ; Xuất ra CR MOV AL,06h ; Từ điều khiển BSR để PC3 = 0, tạo xung WR OUT DX,AL ; Xuất ra CR CALL DELAY ; Chờ quá trình chuyển đổi thực hiện xong MOV AL,07h ; Từ điều khiển BSR để PC3 = 1 OUT DX,AL ; Xuất ra CR MOV DX,300h ; Địa chỉ Port A IN AL,DX ; Đọc dữ liệu đã chuyển đổi từ ADC0804 MOV AL,01h ; Từ điều khiển BSR để PC0 = 1 ( RD = 1) OUT DX,AL ; Xuất ra CR RET ; vào từ Port A của 8255A 2.4.7.2. Giao tiếp với máy in trong chế độ bắt tay (Mode 1) Xét mạch giao tiếp 8255A ở mode 1 với Port A được dùng làm Port nhập từ bàn phím với I/O interrupt và Port B được thiết kế làm Port xuất tới máy in với I/O kiểm tra trạng thái. Ta cần thực hiện các công việc sau: - Xác định địa chỉ Port. - Xác định từ điều khiển để Port A nhập và Port B xuất ở Mode 1. - Xác định từ điều khiển BSR cho phép ngắt (INTEA). - Xác định các byte mặt nạ để kiểm tra các đường OBFB trong I/O kiểm tra trạng thái. - Viết các lệnh khởi động và chương trình con in các ký tự chứa trong bộ nhớ. Giả sử logic chọn chip như hình 4.10, địa chỉ Port cho trong bảng 4.4: PA: FCh PB: FDh PC: FEh CR: FFh Phạm Hùng Kim Khánh Trang 94
  12. Tài liệu vi xử lý Tổ chức nhập / xuất ™ Chương trình con PRINT: print: LEA DX,msg ; Chỉ đến vị trí chứa các ký tự MOV SI, DX ADD SI,2 next: LODSB ; Lấy ký tự từ bộ nhớ CMP AL,0 ; Nếu không còn ký tự nào JNE cont ; thì kết thúc JMP exit cont: MOV AH,AL ; Lưu ký tự vừa đọc MOV DX,0FEh status: IN AL,DX ; Đọc vào từ Port C AND AL,02h ; Chỉ nhận PC1 JE status ; Nếu máy in không sẵn sàng thì chờ MOV AL,AH MOV DX,0FDh ; Xuất ký tự đã nhận ra OUT DX,AL ; máy in (Port B) JMP next ; Xử lý ký tự kế tiếp exit: RET ™ Mô tả chương trình: - Ta sử dụng 8255A trong phần thiết kế này cho phép 2 hoạt động: xuất ra máy in và lấy dữ liệu vào từ bàn phím. Giao tiếp với máy in dùng kiểm tra trạng thái và giao tiếp bàn phím dùng ngắt. - Trong chương trình con PRINT, ký tự được đặt trong thanh ghi tích luỹ A và trạng thái đọc từ Port C. Ban đầu Port B trống, bit PC1 (OBFB ) ở mức cao. Ta thực hiện lệnh OUT gởi dữ liệu ra Port B. Tín hiệu OBFB sẽ xuống mức thấp do tác động cạnh lên của tín hiệu WR , xác định rằng dữ liệu đã gởi ra máy in. Sau khi nhận byte dữ liệu, máy in gởi trở lại tín hiệu ACK xác định đã nhận. Tín hiệu ACK làm cho OBFB ở mức cao xác định máy in sẵn sàng nhận ký tự kế tiếp và chương trình con PRINT tiếp tục thực hiện cho đến khi không còn ký tự nào trong vùng nhớ. - Nếu một phím được nhấn khi chương trình con PRINT đang thực thi, byte dữ liệu truyền tới Port A và STBA xuống mức thấp, đặt IBFA lên mức cao. Khi STB A trở lại mức cao thì sẽ tạo ra INTRA. Tín hiệu này tạo ngắt đến µP và điều khiển được chuyển đến chương trình phục vụ ngắt. Chương trình này sẽ đọc nội dung Port A, cho phép ngắt và quay về chương trình con PRINT. Phạm Hùng Kim Khánh Trang 96
  13. Tài liệu vi xử lý Tổ chức nhập / xuất 3. µP tớ kiểm tra tín hiệu OBF (từ µP chủ) để xác định tính sẵn sàng của dữ liệu. Đây là chức năng nhập đối với µP tớ. 4. µP tớ đọc dữ liệu từ Port A và báo cho biết đã nhận được bằng cách đưa tín hiệu ACK xuống mức thấp . Đây là chức năng nhập đối với µP tớ. ™ Truyền dữ liệu từ µP tớ dến µp chủ: 1. µP tớ kiểm tra tín hiệu bắt tay IBF để xem port A có sẵn sàng truyền dữ liệu hay không để truyền 1 byte . Đây là chức năng nhập đối với µP tớ . 2. µP đặt byte dữ liệu lên data bus và báo cho 8225A biết rằng sẵn sàng gởi dữ liệu bằng cách dùng tín hiệu STB . Đây là chức năng xuất đối vói µP tớ. 3. 8225A đưa IBF lên mức cao, µP chủ đọc tín hiệu này để xác định dữ liệu sẵn sàng chưa . Đây là chức năng nhập đối với µP chủ . 4. µP chủ đọc byte dữ liệu . Đây là chức năng nhập đối với µP chủ. ™ Kết nối phần cứng: Hình 4.19 cho thấy sơ đồ kết nối các port cần thiết và logic chọn chip cho 8255A. µP chủ thực hiện giải mã chọn 8255A dùng cổng NAND 8 ngõ vào nên 8255A được chọn khi tất cả các ngõ vào của cổng NAND đều ở mức 1. Từ đó, ta có các địa chỉ Port của 8255A đối với µP chủ là: PA: FCh PB: FDh PC: FEh CR: FFh Phạm Hùng Kim Khánh Trang 98
  14. Tài liệu vi xử lý Tổ chức nhập / xuất Port A được sử dụng ở Mode 2 dùng 4 tín hiệu từ Port C. µP chủ kiểm tra các tín hiệu ACK và STB bằng cách đọc các bit trạng thái OBF và IBF ở Port C. Hai tín hiệu bắt tay khác - OBF và IBF – được nối tương ứng với các bit D7 và D0 của data bus của µP tớ thông qua bộ đệm 3 trạng thái 74LS365. Logic giải mã cho các đường tín hiệu tại Port C chính là bộ giải mã 3 sang 8 74LS138. Giả sử các đường logic không sử dụng (A3 và A4) ở mức 0, 8 đường ra của bộ giải mã sẽ cho phép vùng địa chỉ 80h ÷ 87h (Bảng 4.6). Hai đường ra của bộ giải mã được kết hợp với tín hiệu điều khiển IOR để tạo ra 2 xung chọn thiết bị nhận (85h và 87h). Xung chọn thiết bị nhập 87h được dùng để đọc trạng thái ở các đường dữ liệu D7 và D0. Đường giải mã có địa chỉ 80h được kết hợp với IOW để tạo tín hiệu STB . Bảng 4.6: A7 A6 A5 A4 A3 A2 A1 A0 Chân giải mã Địa chỉ hex 1 0 0 0 0 0 0 0 Y0 80h 0 0 1 Y1 81h 0 1 0 Y2 82h 0 1 1 Y3 83h 1 0 0 Y4 84h 1 0 1 Y5 85h 1 1 0 Y6 86h 1 1 1 Y7 87h ™ Từ điều khiển mode 2: D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 0 0 0 0 0 = C0h I/O Mode 2 Không sử dụng ™ Từ trạng thái mode 2: Trạng thái của hoạt động I/O ở Mode 2 có thể kiểm rta bằng cách đọc nội dung Port C. D7 D6 D5 D4 D3 D2 D1 D0 OBFA INTE1 IBFA INTE2 INTRA X X X Trạng thái của tín hiệu OBF được kiểm tra bằng cách đọc bit D7 và trang thái của IBF kiểm tra bằng bit D0. ™ Các tác vụ Đọc và Ghi của µP tớ: Một byte dữ liệu có thể được đọc bởi µP tớ từ Port A bằng cách gởi một xung chọn thiết bị tác động mức thấp đến tín hiệu ACK , không cần xây dựng Port nhập. Tương tự, một byte dữ liệu có thể được ghi vào µP bằng cách đưa tín hiệu STB xuống thấp. Phạm Hùng Kim Khánh Trang 100
  15. Tài liệu vi xử lý Tổ chức nhập / xuất next: MOV DX,0FEh ; Địa chỉ Port C wait: IN AL,DX ; Đọc vào từ Port C AND AL,80h ; Kiểm tra OBF JNE wait ; Chờ đến khi OBF = 0 LODSB ; Đọc byte MOV DX,0FCh ; Xuất byte vừa đọc OUT DX,AL ; ra Port A LOOP next ; Nếu còn byte truyền thì tiếp tục END ¾ Đoạn chương trình tớ: (Slave program) MOV ES,stack2 MOV DI,slave ; Địa chỉ các byte sẽ lưu MOV CX,byte_no ; Số byte cần nhận next: MOV DX,87h wait: IN AL,DX ; Đọc OBF AND AL,80h ; Kiểm tra OBF JE wait ; Chờ đến khi OBF = 1 MOV DX,85h IN AL,DX ; Đọc dữ liệu STOSB ; Cất vào ô nhớ LOOP next ; Nếu còn byte truyền thì tiếp tục END - Ta thấy rằng cả hai chương trình sẽ kiểm tra trạng thái OBF. Chương trình chủ đợi cho đến khi OBF lên mức cao sẽ ghi một byte vào Port A. Ngược lại, chương trình tớ đợi cho đến khi OBF xuống mức thấp thì sẽ đọc dữ liệu. - Khi µP chủ ghi một byte dữ liệu, nó sẽ chốt tại Port A và byte dữ liệu được đặt trên data bus của µP tớ khi ACK xuống mức thấp. - Hai chương trình trên chỉ cho phép truyền một khối dữ liệu từ µP chủ đến µP tớ nhưng không thể truyền ngược lại. Để chuyển một khối dữ liệu từ µP tớ đến µP chủ, cần phải đọc tín hiệu IBF. µP chủ đợi cho đến khi IBF = 1 thì sẽ đọc một byte dữ liệu còn µP tớ đợi cho đến khi IBF = 0 thì ghi một byte dữ liệu. - Giản đồ thời gian ở hình 3.4.16 cho thấy tín hiệu INTR dùng để truyền dữ liệu bằng ngắt. Trong ví dụ này, ta không sử dụng ngắt. Phạm Hùng Kim Khánh Trang 102