GIỚI THIỆU VỀ VI MẠCH 8255A: Để vi xử lý giao tiếp với những thiết bị bên ngoài, người ta thường dùng vi mạch giao tiếp 8255A, vi mạch này có khả năng giao tiếp rất rộng, vừa có thể xu
Trang 1GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
VI MẠCH 8255
I GIỚI THIỆU VỀ VI MẠCH 8255A:
Để vi xử lý giao tiếp với những thiết bị bên ngoài, người ta thường dùng
vi mạch giao tiếp 8255A, vi mạch này có khả năng giao tiếp rất rộng, vừa có thể xuất dữ liệu, vừa có thể nhận dữ liệu tùy theo người lập trình điều khiển bằng cách thay đổi t`ông số của thanh ghi điều khiển
II SƠ ĐỒ CHÂN, SƠ ĐỒ LOGIC, CHỨC NĂNG CÁC CHÂN CỦA VI MẠCH 8255A
Sơ đồ chân và sơ đồ logic của vi mạch 8255A được thể hiện qua hình vẽ:
Hình 6.1 : Sơ đồ chân và sơ đồ logic của vi mạch 8255A
Trong đó:
Chân 1 4, 37 40 (PA 0 – PA 7 ): là các đường xuất nhập có tên là cổng A Chân 18 25 (PB 0 – PB 7 ): là các đường nhập xuất có tên cổng B
Chân 10 13, 14 17 (PB 0 – PB 7 ): là các đường nhập xuất có tên cổng C Chân 27 34 (D 0 – D 7 ): là các đường dữ liệu (data) hoạt động hai chiều,
dẫn tín hiệu điều khiển từ vi xử lý ra các thiết bị bên ngoài đồng thời nhận các dữ liệu từ các thiết bị điều khiển bên ngoài vào vi xử lý
Chân 35 (Reset input): ngõ vào xóa, chân reset phải được nối với tín hiệu
reset out của vi xử lý để không làm ảnh hướng đến mạch điều khiển Khi reset, các cổng
PA 3
PA2
PA 1
PA0
RD\
CS\
GND
A 1
A 0
PC 7
PC 6
PC 5
PC 4
PC 0
PC 1
PC2
PC 3
PB0
PB 1
PB 2
PA 4
PA5
PA 6
PA7 WR\
RESET
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
V cc
PB7
PB 6
PB5
PB 4
PB 3
1
40
D0 – D7
PA0 – PA7
PB0 – PB7
PC0 – PC7
RD\
WR\
RESET
A0
A1
CS\
8255A
8255A
.
Trang 2GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
của 8255A là các ngõ vào, đồng thời tất cả các dữ liệu trên thanh ghi bên trong 8255A đều bị xóa, 8255A trở về trạng thái ban đầu săn sàng làm việc
Chân 6 (CS\): tín hiệu ngõ vào chip select (CS\) được điều khiển bởi vi xử
lý, dùng để lựa chọn 8255A làm việc khi vi xử lý giao tiếp với nhiều thiết bị
Chân 5 (RD\): ngõ vào đọc dữ liệu (Read Input)
Chân 36 (WR\) : ngõ vào ghi dữ liệu (Write Input)
Chân 8,9 (A 1 , A 0 ): ngõ vào địa chỉ (Address Input), dùng nhận địa chỉ vào
để lựa chọn thanh ghi và các cổng
Bảng địa chỉ lựa chọn thanh ghi và các cổng:
A1 A0 Cổng và thanh ghi
1 1 Thanh ghi điều khiển
Chân 26 (V cc ) : nguồn 5 VDC
Chân 7 (GND) : GND 0 VDC
III CẤU TRÚC BÊN TRONG VÀ HOẠT ĐỘNG CỦA VI MẠCH 8255A
1 Sơ đồ khối cấu trúc bên trong của vi mạch 8255A
Port A
Port C
(4 bit cao)
Nhóm A
Port C
(4 bit thấp)
Port B
Nhóm B
Điều khiển nhóm A
Điều khiển nhóm B
Đệm bus dữ liệu
Logic điều khiển ghi/đọc
RD\
WR\
CS\
A0
A1
D7 – D0
PA7 – PA0
PC7 – PC4
PC3 – PC0
PB7 – PC0
.
Trang 3GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
Hình 6.2: Sơ đồ khối cấu trúc bên trong của 8255A
2 Hoạt động của vi mạch 8255A:
Từ sơ đồ khối cấu trúc bên trong của vi mạch 8255A ta thấy các cổng của 8255A được chia thành 2 nhóm:
Nhóm A gồm cổng A và 4 bit cao của cổng C
Nhóm B gồm cổng B và 4 bit thấp của cổng C
Cấu hình làm việc của 2 nhóm sẽ do nội dung của thanh ghi điều khiển quyết định
Vi mạch 8255 giao tiếp với vi xử lý thông qua các đường sau :
- Đường dữ liệu: gồm 8 đường dữ liệu (D0 - D7) Mã lệnh, các dữ liệu đều được truyền đi trên đường này
- Đường địa chỉ: gồm 2 đường (A0 – A1) dùng để lựa chọn cổng hoặc thanh ghi điều khiển như đã trình bày ở phần trước
- Đường điều khiển: gồm các đường RD\, WR\, CS\, Reset dùng để điều khiển
việc hoạt động của 8255A
Để sử dụng các cổng làm công cụ giao tiếp, người sử dụng phải gửi từ điều khiển
ra thanh ghi điều khiển để 8255A định cấu hình làm việc cho các cổng đúng như yêu cầu của người lập trình
3 Từ điều khiển:
Từ điều khiển là dữ liệu được gởi tới thanh ghi điều khiển Giá trị của từ điều khiển sẽ xác định cấu hình làm việc cho các cổng của 8255A, đó là việc lựa chọn chức năng nhập hay xuất của các cổng
a Cấu trúc của từ điều khiển:
Do các cổng của 8255A được chia làm hai nhóm nên từ điều khiển cũng được chia làm hai nhóm điều khiển tương ứng
Các bit D3, D4, D5, D6 dùng để xác định cấu hình cho nhóm A:
- Bit D3 dùng để thiết lập 4 bit cao của cổng C
D3 = 0 cổng C là cổng xuất dữ liệu
D3 = 1 cổng C là cổng nhập dữ liệu
- Bit D4 dùng để thiết lập cổng A
D4 = 0 cổng A là cổng xuất dữ liệu
D4 = 1 cổng A là cổng nhập dữ liệu
- Bit D5 và D6 dùng thiếp lập mode điều khiển của nhóm A
.
Trang 4GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
D6D5 = 00 : nhóm A hoạt động ở mode 0
D6D5 = 01 : nhóm A hoạt động ở mode 1
D6D5 = 1x : nhóm A hoạt động ở mode 2
Các bit D0, D1, D2 dùng để xác định cấu hình cho nhóm B
- Bit D0 dùng để thiết lập 4 bit thấp của cổng C
D0 = 0 cổng C là cổng xuất dữ liệu
D0 = 1 cổng C là cổng nhập dữ liệu
- Bit D1 dùng để thiết lập cổng B
D1 = 0 cổng B là cổng xuất dữ liệu
D1 = 1 cổng B là cổng nhập dữ liệu
- Bit D2 dùng thiếp lập mode điều khiển của nhóm B
D2 = 0 : nhóm B hoạt động ở mode 0
D2 = 1 : nhóm B hoạt động ở mode 1
D7 D6 D5 D4 D3 D2 D1 D0
Đặt trạng thái cờ
1 = Active
Nhóm B
Nhóm A
Cổng C (4 bit thấp)
1 = Input
0 = Output Cổng B
1 = Input
0 = Output Mode select
1 = mode 0
0 = mode 1
Cổng C (4 bit cao)
1 = Input
0 = Output Cổng A
1 = Input
0 = Output Mode select
00 = mode 0
01 = mode 1 1x = mode 2 .
Trang 5GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
Hình 6.3 : Cấu trúc từ điều khiển của vi mạch 8255A
.
Trang 6GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
b Cơ chế hoạt động các cổng của 8255A ở các trạng thái
* Nhóm A và Nhóm B cấu hình ở mode 0
Khi được định ơ cấu hình này, các cổng của hai nhóm hoạt động xuất hoặc nhập dữ liệu độc lập với nhau
Từ điều khiển:
Với D0, D1 D3, D4 tùy chọn theo yêu cầu của người sử dụng
* Nhóm A được cấu hình ở mode 1
Ở mode 1, các cổng làm việc có chốt (Strobed I/O), thiết bị giao tiếp muốn 8255A nhận dữ liệu thì thiết bị đó phải tạo ra một tín hiệu yêu cầu 8255A nhận dữ liệu và ngược lại, 8255A muốn gởi dữ liệu cho một thiết bị khác thì nó phải gởi 1 tín hiệu yêu cầu thiết bị đó nhận dữ liệu, tín hiệu đó gọi là tín hiệu chốt
+ Khi cổng A được cấu hình là cổng nhập dữ liệu, chức năng các đường tín hiệu
được trình bày như hình vẽ:
Từ điều khiển :
Hình 6.4 : Chức năng các đường tín hiệu khi cổng A là cổng nhập dữ liệu
Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A
Trong đó :
Bit INTE A (Interrupt Enable) được thiết lập mức logic dưới sự điều khiểf của phần
mềm dùng cấu trúc Set/Reset của 8255A
Bit PC 4 trở thành bit STBA (Strobed Input, tác động mức thấp), được dùng để chốt các dữ liệu ở các ngõ vào PA0 – PA7 vào mạch chốt bên trong
RD\
PC4
PC5
PC3
PC6,7
PA0–PA7 INTE
IBFA
INTRA
I/O
.
Trang 7GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
Bit PC 5 trở thành bit IBFA (Input Buffer Full, tác động mức cao), dùng để báo cho bên ngoài biết dữ liệu đã được chốt bên trong
Bit PC 3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic 1 khi bit STRA = 1, bit IBFA = 1 và bit INTEA = 1 Thông thường bit này dùng để tác động vào ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết : dữ liệu mới đã xuất hiện ở ngõ vào
Các bit PC 6 , PC 7 của cổng C là các bit xuất/ nhập bình thường tùy thuộc vào từ
điều khiển trong thanh ghi điều khiển Còn cổng B được điều khiển bằng các bit D0 – D2
trong thanh ghi điều khiển (nếu cổng B hoạt động ở mode 1 thì các bit PC0 – PC2 là các bit điều khiển)
+ Cổng A được cấu hình là cổng xuất dữ liệu
Chức năng các đường tín hiệu được trình bày ở hình vẽ:
Từ điều khiển :
Hình 6.5 : Chức năng các đường tín hiệu khi cổng A là cổng xuất dữ liệu
Bit PC 7 trở thành bit OBFA (Output Buffer Full, tác động mức thấp), khi có dữ liệu từ vi xử lý gởi ra cổng A, tín hiểu OBF sẽ yêu cầu thiết bị bên ngoài nhận dữ liệu
Bit PC 6 trở thành bit ACKA (Acknowledge Input, tác động mức thấp), thiết bị nhận dữ liệu dùng tín hiệu này để báo cho 8255A biết dữ liệu đã được nhận và sẵn sàng nhận dữ liệu mới
Bit PC 3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic bằng 1 khi bit OBFA = 1, ACKA = 1 và bit INTEA = 1 Tín hiệu INTRA tác động đến ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết thiết bị bên ngoài đã nhận dữ liệu từ cổng A
Các bit PC 4 , PC 5 vẫn là bit nhập/ xuất dữ liệu bình thường tùy thuộc vào từ điều
khiển Các bit D0 – D2 trong thanh ghi điều khiển dùng để thiết lập cấu hình cho cổng B
* Nhóm B được cấu hình ở mode 1
WR\
PC7
PC6
PC3
PC4,5
PA0–PA7 INTE
ACKA\
INTRA
I/O
.
Trang 8GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
+ Cổng B được cấu hình là cổng nhập dữ liệu
Chức năng các đường tín hiệu được trình bày như hình vẽ:
.
Trang 9GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
WR\
PC1
PC2
PC0
PB0–PB7 INTE
ACKB\
INTRB
Từ điều khiển :
Hình 6.6 : Chức năng các đường tín hiệu khi cổng B là cổng nhập dữ liệu
Chức năng của các bit điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng nhập dữ liệu
+ Cổng B đươçc cấu hình là cổng xuất dữ liệu
Chức năng các đường tín hiệu được trình bày như hình vẽ :
Từ điều khiển:
Hình 6.7 : Chức năng các đường tín hiệu khi cổng B là cổng xuất dữ liệu
Chức năng của các từ điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng xuất dữ liệu
* Nhóm A được cấu hình ở mode 2
Mode 2 là kiểu hoạt động strobed bi-directional IO : có hai chức năng nhập xuất dữ liệu
Từ điều khiển khi nhóm A được cấu hình ở mode 2 và chức năng của các đường tín hiệu được trình bày ở hình vẽ:
RD\
PC2
PC1
PC0
PB0–PB7 INTE
IBFB
INTRB
.
Trang 10GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
Từ điều khiển :
Hình 6.8: Chức năng các đường tín hiệu khi nhóm A hoạt động ở mode 2
Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A
Bit PC 7 trở thành bit OBFA, PC6 trở thành bit ACKA, PC4 trở thành bit STBA, PC5
trở thành bit IBFA và bit PC3 trở thành bit INTRA, chức năng của các bit điều khiển giống như ở mode 1, chỉ khác tín hiệu INTRA = 1 khi OBFA = 1 và INTE1 = 1 hoặc IBFA = 1 và INTE2 = 1
Các bit PC 0 – PC 2 là các bit nhập xuất dữ liệu bình thường tùy thuộc vào từ điều
khiển trong thanh ghi điều khiển
Một chú ý cần thiết là khi nhóm A được cấu hình ở mode 2 thì nhóm B chỉ được cấu hình ở mode 0
IV GIAO TIẾP GIỮA VI XỬ LÝ VỚI 8255A:
Vi mạch 8255A có thể giao tiếp với vi xử lý theo 2 kiểu: kiểu nhập/xuất (kiểu I/O) và kiểu bộ nhớ
Khi vi xử lý giao tiếp với 8255A theo kiểu I/O nó chỉ dùng được 8 đường địa chỉ từ
A0 – A7 mà thôi còn khi giao tiếp kiểu bộ nhớ, nó dùng được cả 16 đường địa chỉ, vì vậy dung lượng giao tiếp kiểu I/O thấp hơn dung lượng giao tiếp kiểu bộ nhớ
1 Giao tiếp kiểu I/O
Khi thiết kế vi xử lý giao tiếp với 8255A theo kiểu I/O thì dữ liệu sẽ được truy xuất
bằng 2 lệnh : IN addr-port và OUT addr-port Dữ liệu giao tiếp luôn chứa trong thanh
ghi A Địa chỉ cổng (addr-port) có độ dài là 8 bit
Cũng giống như bộ nhớ, vi xử lý có thể giao tiếp với nhiều vi mạch 8255, với 8
WR\
PA0–PA7
OBFA\ ACKA\
PC3
PC7
PC6
PC4
PC5
STBA\ IBFA
RD\
INTE 1
INTE 2
INTE A
.
Trang 11GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
đường địa chỉ thì có tất cả 256 địa chỉ, mà mỗi vi mạch chiếm 4 địa chỉ (3 cổng và thanh ghi điều khiển) nên số vi mạch 8255 tối đa có thể giao tiếp của vi xử lý là 256/4 = 64 vi mạch
Khi kết nối giữa vi xử lý với vi mạch 8255A thì đường địa chỉ A0 và A1 dùng để lựa chọn các cổng và thanh ghi điều khiển, còn các đường địa chỉ còn lại từ A2 – A7 dùng để lựa chọn vi mạch hoạt động, thông thường các đường địa chỉ này được đưa vào vi mạch giải mã rồi các ngõ ra của vi mạch giải mã sẽ đưa đến CS\ của các vi mạch 8255A
Một ví dụ khi thiết kế vi xử lý giao tiếp với 4 vi mạch 8255A:
Sơ đồ kết nối như hình vẽ : (vi mạch 74139)
Hình 6.9: Sơ đồ kết nối vi xử lý với vi mạch 8255A
Trong đó, đường A0 và A1 được nối với 8255A như đã trình bày ở trên, đường A2,
A3 được đưa vào vi mạch giải mã 2 đường thành 4 đường để lựa chọn vi mạch 8255A
Từ đó, ta có bảng địa chỉ của các vi mạch 8255A như sau :
IC A7 A6 A5 A4 A3 A2 A1 A0 Hex 8255A-1 0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
00
03 8255A-2 0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
04
07 8255A-3 0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
1
08 0B 8255A-4 0
0
0
0
0
0
0
0
1
1
1
1
0
1
0
1
0C 0F
2 Giao tiếp kiểu bộ nhớ
Khi thiết kế 8255A giao tiếp với vi xử lý theo kiểu bộ nhớ thì chức năng của 8255A không thay đổi, chỉ thay đổi kiểu truy xuất Với kiểu I/O thì địa chỉ của các cổng và thanh ghi điều khiển là 8 bit thì ở kiểu bộ nhớ, địa chỉ của các cổng và thanh ghi điều khiển là 16 bit, khi đó cách kết nối cũng tương tự như kết nối vi xử lý với bộ nhớ thông thường, và mỗi vi mạch 8255A cũng được coi như là bộ nhớ với 4 ô nhớ: 3 cổng và thanh ghi điều khiển, truy xuất dữ liệu bằng cách dùng các lệnh truy xuất dữ liệu của bộ nhớ
DECODER
2 TO 4 LINE
đến CS\ của 8255A -1 đến CS\ của 8255A -2 đến CS\ của 8255A -3 đến CS\ của 8255A -4
A2
A3
.
Trang 12GVHD: Nguyễn Đình Phú SVTH: Nguyễn Trung Dũng
Cách kết nối tương tự như khi vi xử lý kết nối với bộ nhớ nên ở đây không cần trình bày lại
.