Tải bản đầy đủ (.pdf) (34 trang)

Tài liệu Lập trình I/O port pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (391.55 KB, 34 trang )

1
NỘI DUNG
1. Giới thiệu
2. Sơ đồ khối và chân
3. Tổ chức bộ nhớ
4. Các thanh ghi chức năng đặc biệt
5. Dao động và hoạt động reset
6. Tập lệnh
7. Các mode định địa chỉ
8.
8.
8.
L
L
L



p tr
p tr
p tr
ì
ì
ì
nh IO
nh IO
nh IO
9. Tạo trễ
10. Lập trình Timer/Counter
11. Giao tiếp nối tiếp
12. Lập trình ngắt


13. Lập trình hợp ngữ
8. Lập trình I/O Port
I/O Port Programming
3
Port 1 được ký hiệu P1
Æ Các chân: P1.0-P1.7
Ta sử dụng P1 trong các ví dụ sau đây để chỉ ra hoạt động
của chúng
ÆP1 là cổng ra (ghi dữ liệu CPU ra chân bên ngoài)
ÆP1 là cổng vào (đọc dữ liệu từ chân vào CPU bus)
Port 1 (chân 1-8)
8-1. Port 1
4
8051 IC
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.x
P1.x
TB1
TB2
Cấu trúc phần cứng của chân P1.x
Tải
Bus nội
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
15
Đọc bộ chốt
MOV P1,#55H; P1=01010101
ORL P1,#0F0H; P1=11110101
¾ “Read DFF” kích hoạt TB2 và chuyển dữ liệu từ Q của
DFF vào CPU Æ đọc được P1.7 = 0
¾ CPU thực hiện OR dữ liệu này với bit 1 Æ được 1
¾ D của DFF bị thay đổi thành 1
¾ Ghi KQ ra chân Æ P1.7 = 1
16
DQ
Clk Q
Vcc
Read DFF
Read pin
Write to DFF
M1
P1.7
P1.7
8051 IC
4. P1.7 = 1

2. CPU tính (P1.7 OR 1 )
0
0
1. Read pin = 0
Read DFF = 1
Write to DFF = 0 (ban đầu P1.7=0)
1
TB1
TB2
3. Ghi KQ vào DFF
Read pin=0
Read DFF=0
Write to DFF=1
1
0
1
Bus nội
Tải
Đọc bộ chốt
17
Đọc-Sửa đổi-Ghi
Đặc điểm này bao gồm 3 hành động trong 1 lệnh đơn:
1. CPU đọc bộ chốt
2. CPU thực hiện tính toán Æ sửa đổi bộ chốt
3. Ghi ra chân
Chú ý: 8 chân của P1 làm việc độc lập nhau
18
Ví dụ
Lệnh
SETB P1.4SETB PX.Y

CLR P1.3CLR PX.Y
MOV P1.2,CMOV PX.Y,C
DJNZ P1,TARGETDJNZ PX, TARGET
INC P1INC
CPL P1.2CPL
JBC P1.1, TARGETJBC PX.Y, TARGET
XRL P1,AXRL
ORL P1,AORL
ANL P1,AANL
DEC P1DEC
Các lệnh có đặc điểm Đọc-Sửa đổi-Ghi
19
Tóm lại
• 1 chân là output thì có thể ghi dữ liệu trực tiếp ra chân đó
• 1 chân là output thì đọc trạng thái của nó nghĩa là đọc bộ
chốt
• 1 chân là input thì phải set chân đó lên “1” trước khi thao
tác với nó
• 1 chân là input thì đọc trạng thái trực tiếp từ chân
20
? Lập trình I/O
¾ Cách ghi dữ liệu ra chân?
¾ Cách đọc dữ liệu từ chân?
9Đọc giá trị từ chân bên ngoài
•Tại sao phải set chân trước khi tiến hành đọc?
9Đọc giá trị từ bộ chốt
•Lệnh như thế nào gọi là có tính chất Đọc-Sửa đổi-Ghi?
21
8-2. Các port còn lại
¾ P1, P2, P3 có điện trở tải nội

¾ P0 không có điện trở tải nội
¾ Phía người lập trình: không có sự khác biệt nào giữa các
cổng
¾ Tất cả các cổng là output khi Reset
22
1 chân của P0
8051 IC
DQ
Clk Q
Read DFF
Read pin
Write to DFF
M1
P0.X
P1.X
TB1
TB2
Bus nội
23
Port 0
Khi P0 được dùng để xuất hay nhập dữ liệu, phải có các điện
trở kéo lên bên ngoài (10K)
Và với các điện trở kéo lên bên ngoài này, khi reset hay khi
bật nguồn, P0 mặc định là output.
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5

P0.6
P0.7
8051
Vcc
10 K
Port
0
24
Vai trò kép của P0
•Khi nối 8051/8031 tới bộ nhớ ngoài thì nó sử dụng
các port để gửi địa chỉ và đọc các lệnh
– 8031 có khả năng truy xuất 64K bytes bộ nhớ ngoài
– Địa chỉ 16-bit: P0 cung cấp các đường địa chỉ A0-A7, P2
cung cấp A8-A15
– Đồng thời, P0 cung cấp các đường dữ liệu D0-D7
•Khi P0 được sử dụng đa hợp địa chỉ/dữ liệu, nó được
kết nối tới 74LS373 để chốt địa chỉ
– Khi này không cần các điện trở kéo lên bên ngoài
25
74LS373
D
74LS373
ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7

P2.0
P2.7
A8
A15
OE
OC
EA
G
8051
ROM

×