5
Mỗi chân của cổng I/O:
a. Bus nội: giao tiếp với CPU
b. Bộ chốt dữ liệu DFF: lưu trữ giá trị của chân. Khi
“Write to DFF” = 1: ghi dữ liệu vào DFF
c. Hai bộ đệm 3 trạng thái (tri-state buffers):
- TB1: điều khiển bởi “Read pin”. Khi “Read pin” = 1:
đọc giá trị tại chân ngoài
- TB2: điều khiển bởi “Read DFF”. Khi “Read DFF” =
1: đọc giá trị từ DFF nội
d. Transistor M1
6
0
1
0
1
1
1
Bộ đệm 3 trạng thái (Tri-state Buffer)
Output Input
Tri-state control
(kích hoạt
mức cao)
0
Trở kháng cao
(hở mạch)
7
P1 là output (ghi ra cổng)
Vd:
MOV A,#55H
BACK: MOV P1,A
ACALL DELAY
CPL A
SJMP BACK
8
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.x
2. Chân ra là
Vcc
P1.x
8051 IC
1. ghi 1
1
0
output 1
TB1
TB2
Ghi “1” ra chân output P1.x
Bus nội
Tải
9
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.X
P1.x
8051 IC
1. ghi 0
0
1
output 0
TB1
TB2
Bus nội
Ghi “0” ra chân output P1.x
Tải
2. Chân ra
nối đất
10
Đọc từ chân input & bộ chốt
Khi đọc chân, có hai khả năng sau:
¾Đọc trạng thái của chân input (bên ngoài)
MOV A,Px
JNB P2.1,Label
JB P2.1,Label
¾Đọc dữ liệu bộ chốt của chân output (bên trong)
ANL P1,A
ORL P1,A
INC P1
Đọc-Sửa đổi-Ghi
11
Cổng 1 là input (đọc từ cổng)
Để P1 là input, P1 phải được lập trình bằng cách ghi “1”
vào tất cả các bit của P1
MOV A,#0FFH ;A=11111111B
MOV P1,A ;Æ P1 là input
BACK: MOV A,P1
MOV P2,A
SJMP BACK
tương tự cho P0, P2, P3
12
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.x
P1.x
8051 IC
2. MOV A,P1
Chân ngoài=“1”
1. ghi 1
MOV P1,#0FFH
1
0
3. Read pin=1
Read DFF=0
Write to DFF=1
1
TB1
TB2
Bus nội
Tải
Đọc “1” tại chân input
13
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.x
P1.x
8051 IC
2. MOV A,P1
Chân ngoài=“0”
1. Ghi 1
MOV P1,#0FFH
1
0
3. Read pin=1
Read DFF=0
Write to DFF=1
0
TB1
TB2
Bus nội
Tải
Đọc “0” tại chân input
14
Lệnh Ví dụ Mô tả
MOV A,PX MOV A,P2 Đọc P2 vào A
JNB PX.Y, JNB P2.1,TARGET Nhảy nếu P2.1 = 0
JB PX.Y, JB P1.3,TARGET Nhảy nếu P1.3 = 1
MOV C,PX.Y MOV C,P2.4
Copy trạng thái chân P2.4
vào CY
Các lệnh đọc chân input
Không có nhận xét nào:
Đăng nhận xét