Tại sao phải có cổng I/O
• Các bộ điều khiển cần nhận các tín hiệu vào từ bên ngoài và xuất các tín hiệu ra bên ngoài
– Cổng I/O phục vụ yêu cầu đó
• 8051 có 4 cổng I/O • Có quá nhiều cổng sẽ làm tăng số chân và giá thành. Nếu quá í thì sẽ không đảm bảo á à ế á ít ì ô ả ả cho các ứng dụng điều khiển phức tạp
Cấu trúc bên trong của các cổng I/O
• 32 chân được chia thành 4 cổng 8 bit
– P0, P1, P2, P3
• Khi bật nguồn...
Tại sao phải có cổng I/O
• Các bộ điều khiển cần nhận các tín hiệu
vào từ bên ngoài và xuất các tín hiệu ra
bên ngoài
– Cổng I/O phục vụ yêu cầu đó
• 8051 có 4 cổng I/O
• Có quá nhiều cổng sẽ làm tăng số chân và
giá thành. Nếu quá í thì sẽ không đảm bảo
á à ế á ít ì ô ả ả
cho các ứng dụng điều khiển phức tạp
Cấu trúc bên trong của các cổng
I/O
• 32 chân được chia thành 4 cổng 8 bit
– P0, P1, P2, P3
• Khi bật nguồn tất cả các cổng được mặc
định là cổng ra.
• Để định cấu hình cho một cổng bất kỳ là
ể ấ ổ ấ
cổng vào thì ghi 1(0xFF) tới cổng đó
Cổng I/O của 8051
• Các cổng có thể được đọc và ghi giống như các
thanh ghi thông thường
mov A, #55H ; can use A
mov P0, A ; write A to P0
mov P1, A
mov P2, #0AAH ; can use immediate mode
xlr P1, #0FFH ; read-modify-write (ex-or)
mov P0, #0FFH ; configure P0 for input
mov A, P0 ; read from P0
• Các cổng có thể được thực thi theo từng bit (có
thể địa chỉ hoá theo từng bit) sử dụng lệnh cpl
hoạc setb
cpl P1.2 ; complement bit 2 of Port1
setb P1.3 ; set bit 3 for Port1 to 1
clr P0.0 ; clear bit 0 of Port0
Chân dồn kênh
• Các chân của cổng được dồn với các tín hiệu khác
g ợ ệ
– P0: cũng mang A0:A7 và D0:D7
– P1: chuyên dụng
– P2: mang A8:A15
– P3: mang tín hiệu I/O nối tiếp (TxD, RxD), dầu vào
các bộ định thời (T0, T1), Các ngắt bên ngoài (INT0,
INT1) và tín hiệu đọc, ghi (RD, WR)
• Đối với 8051 hoặc DS5000 mà không có bộ nhớ ngoài
thì P0, P1, P2 được dành sẵn
P0 P1 sẵn.
• Để tăng số lượng cổng, sử dụng chip giao tiếp cổng
song song giống như 8255
Các thông số phần cứng
• P0 là cực máng hở
ự g
– Phải có điện trở kéo 10KΩ bên ngoài
– Không cần thiết nếu P0 được sử dụng làm các đường
địa chỉ
• P1, P2, P3 có các điện trở kéo bên trong
• Hệ số đầu ra của cổng bị giới hạn (số các thiết bị
nó có thể điề khiể )
ó ó điều khiển).
– Sử dụng các bộ đệm để tăng khả năng điều khiển
(74LS244, 74LS245 …)
– Hệ số đầu ra của P0 phụ thuộc vào giá trị của điện trở
ố ầ
kéo, bị giới hạn bởi dòng lớn nhất mà nó có thể bị suy
giảm trên các đầu ra
Chuyển mạch trên các cổng IO
• Trường hợp 1
g ợp
– Có mức lôgic 0 khi
chuyển mạch đóng
– Dòng địên là 0,5ma
khi chuyển mạch đóng
• Trường hợp 2:
– Có mức lôgic 1 khi
chuyển mạch đóng
– Dòng lớn khi chuyển
mạch đóng
• Trường hợp 3:
– Có thể làm hỏng cổng
nếu ở đầ ra có mức 0
ế đầu ó ứ
Các công tắc DIP trên cổng IO
• Các công tắc DIP
thường có 8 công
tắc
• Sử dụng trường
hợp 1 ở trang trước
• Có thể sử dụng một
băng trở thay cho
các điện trở rời rạc
LED trên cổng IO
• Trường hợp 1
– LED bật khi đầu ra =0 0
– Hầu hết điện áp rơi trên các LED
từ 1,7 tới 2,5V và cần dòng
khoảng 10ma
– Dòng điện là (5-2)/470
(5 2)/470
• Trường hợp 2
– Dòng quá lớn
– Gây hỏng cổng hoặc LED
• Trường hợp 3
– Không dủ để điều khiển (1ma)
– LED quá tối
• Các LED 7 đoạn
– Anôt/Catôt chung
– Đưa vào CA
– Trường hợp 1 các LED có thể có
độ sáng khác nhau
8051 giao tiếp với 8255
• Thường được sử dụng làm chip điều khiển vào /
g ợ ụ g p
ra
– 40 chân
– Có 3 cổng 8 bit PA, PB và PC
PA
– Cổng PC có thể được sử dụng như 2 cổng 4 bit PCL
và PCU
– Các cổng có khả năng bắt tay
– 2 đường địa chỉ A0, A1 và 1 đường CS
• Không gian địa chỉ 4 byte
• 00b chọn cổng A
• 01b chọn cổng B
• 10b chọn cổng C
• 11b chọn thanh ghi điều khiển
Sơ đồ chức năng của 8255
• CS được sử dụng để giao
g g
tiếp với 8051
• Nếu CS được tạo từ các
đường đại chỉ A15:A12 như
sau: A15-A12 = 1000
• Địa chỉ cơ sở của 8255 là:
– 1000 xxxx xxxx xx00b
– 8000H
• Đại chỉ của thanh ghi là
– PA = 8000H
– PB = 8001H
– PC = 8002H
– CR = 8003H
Các chế độ làm việc của 8255
• Mode 0: Vào ra đơn giản
g
– Bất kỳ cổng A, B, CL và CU có thể đựơc lập trình thành cổng vào
hoặc cổng ra
• Mode 1: Vào ra với khả năng bắt tay
g y
– A, B có thể được sử dụng làm cổng I/O
– C cung cấp các tín hiệu bắt tay
• Mode 2: Vào ra 2 chiều với khả năng bắt tay
– A là cổng vào ra 2 chiều với các tín hiệu bắt tay trên cổng C
– B là cổng I/O đơn giản (mode 0) hoặc I/O với khả năng bắt tay
(mode 1)
• Chế độ lập xoá bit BSR (Bit Set Reset)
– Có thể lập trình cho từng bit trên cổng C
Cấu hình của 8255
• Định cấu hình bằng cách ghi từ điều khiển vào thanh ghi điều
khiển CR
• CR xác định
Tõ ®iÒu khiÓn
D7 D6 D5 D4 D3 D2 D1 D0
Nh A
ãm
Nhãm B
1=ChÕ ®é I/O
0 ChÕ
0=ChÕ ®é BSR Nöa thÊp cæn
1= Input
1 I t
Chän chÕ ®é 0= Output
00=ChÕ ®é 0
01 ChÕ ®é
= 1 Cæng B
1X=ChÕ ®é 2 1= Input
0= Output
Cæng A
1= Input Chän chÕ ®é
0= Output 0=ChÕ ®é 0
1= ChÕ ®é1
Nöa cao cæng C
1= Input
1 I
0= Output
Sử dụng 8051: Ví dụ đơn giản
• 8255 quản lý bộ nhớ của 8051 từ địa chỉ cơ sở 8000H
• Từ điều khiển để tất cả các cổng là cổng ra ở chế độ 0
• Đoạn mã
test: mov A, #80H ; control word
mov DPTR, #8003H ; address of CR
movx @DPTR, A
@ , ; write control word
mov A, #55h ; will try to write 55 and AA alternatively
repeat: mov DPTR, #8000H ; address of PA
movx @DPTR, A ; write 55H to PA
inc DPTR ; now DPTR points to PB
movx @DPTR, A ; write 55H to PB
inc DPTR ; now DPTR points to PC
movx @DPTR A
@DPTR, ; write 55H t PC
it to
cpl A ; toggle A (55 -> AA, AA ->55)
acall MY_DELAY ; small delay subroutine
sjmp repeat ; for (1)
Chuẩn bị thí nghiệm
• Bài 1: Lập trình cho 8051 hiển thị 1234
trên LED 7 đoạn.
• Bài 2: Dùng 8051 xây dựng bộ điều khiển
đèn giao thông có đồng hồ đếm lùi thời
gian sáng của đèn xanh đèn đỏ
xanh, đỏ.