5. Giáo vieđn hướng dăn : Th.S TÁ COĐNG ĐỨC
3.5.3. Giao tiêp giữa Vi đieău khieơn với các IC chôt 74HC573 đeơ mở
roơng port
Múc tieđu thiêt kê
Viêt chương trình đĩc lieđn túc dữ lieơu ở Port B xuât ra port A và đĩc dữ lieơu ở Port D xuât ra port C.
Kêt nôi phaăn cứng
IC chôt dữ lieơu 74HC573 được đieău khieơn thođng qua 2 đường OE và LE. Với cách kêt nôi như tređn, sử dúng port 0 làm các đường xuât nhaơp dữ lieơu chung cho 4 IC chôt và sử dúng các bit ở port 2 đeơ đieău khieơn hốt đoơng cụa IC chôt, ta đã mở roơng ra 2 port xuât (Port A và Port C) và 2 port nhaơp (Port B và Port C). Đieău khieơn chôt dữ lieơu ở port A, port C được đieău khieơn bởi đường LE0 và LE2 được kêt nôi tái bit P2.7, P2.5 cụa vi đieău khieơn. Đieău khieơn đĩc dữ lieơu ở port B và port D được thực hieơn tređn 2 đường OE1 và OE3. Đường đieău khieơn OE0_2 được đaịt xuông mức logic [0] bởi phaăn meăm đeơ cho phép xuât dữ lieơu ở port A và port B.
Khi chađn OE cụa IC chôt ở mức khođng tích cực (mức [1]) thì các ngõ ra ở tráng thái toơng trở cao, do đó khođng làm ạnh hưởng đên tín hieơu tređn Bus dùng chung.
Các đieơn trở kéo leđn beđn ngoài được caăn đên do port 0 khođng có đieơn trở kéo leđn beđn trong khi nó làm chức naíng xuât nhaơp thođng thường.
Viêt chương trình
Chương trình được thực hieơn qua các bước sau
1. Đưa dữ lieơu caăn thiêt đaịt ban đaău ra port A, port B 2. Đĩc dữ lieơu ở port B.
3. Xuât dữ lieơu đĩc được ra port A. 4. Đĩc dữ lieơu ở port D.
5. Xuât dữ lieơu đĩc được ra port C. 6. Quay veă bước 2.
Chương trình thực hieơn yeđu caău tređn được viêt như sau:
LE0 Bit P2.7 ;Khai báo các từ gợi nhớ.
OE1 Bit P2.6 ;sử dúng trong ch. trình.
LE2 Bit P2.5
OE3 Bit P2.4
OE0_2 Bit P2.3
Org 000h
Mov P0,#0FFh ;Đưa dữ lieơu 0FFh leđn Bus
Clr LE0
Clr LE2
Clr OE0_2 ;Xuât ra Port A và Port C
Setb LE0
Clr LE0 ;Chôt dữ lieơu ở Port A
Setb LE2
Clr LE2 ;Chôt dữ lieơu ở Port C
Lcall OutPortA ;xuât ra Port A
Lcall InPortD ;Đĩc dữ lieơu tái Port D
Lcall OutPortC ;xuât ra Port C
Sjmp Loop ;Quay veă thực hieơn tiêp.
;====================================================== ;OutPortA : Xuât dữ lieơu 8 bit trong thanh ghi A ra port A.
;====================================================== OutPortA: Mov P0,A ;Đưa dữ lieơu leđn bus
Setb LE0 ;Cho dữ lieơu xuât ra Port A
Clr LE0 ;Chôt lái.
RET
;====================================================== ;OutPortC : Xuât dữ lieơu 8 bit trong thanh ghi A ra port C.
;====================================================== OutPortC: Mov P0,A ;Đưa dữ lieơu leđn bus
Setb LE2 ;Cho dữ lieơu xuât ra Port C
Clr LE2
RET
;====================================================== ;InPortB: Đĩc dữ lieơu 8 bit từ port B vào thanh ghi A.
;====================================================== InPortB: Mov P0,#0FFh ;Chuaơn bị đĩc dữ lieơu.
Clr OE1 ;Cho dữ lieơu ở PortB leđn bus
Mov A,P0 ;Đĩc dữ lieơu vào.
Setb OE1 ;Cách ly Port B khỏi bus.
RET
;====================================================== ;InPortD: Đĩc dữ lieơu 8 bit từ port D vào thanh ghi A.
;====================================================== InPortD: Mov P0,#0FFh ;Chuaơn bị đĩc dữ lieơu.
Clr OE3 ;Cho dữ lieơu ở Port D leđn bus
Mov A,P0 ;Đĩc dữ lieơu vào.
Setb OE3 ;Cách ly Port D khỏi bus.
RET
END