intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương I: TỔNG QUAN VỀ CHÍP BỔ TRỢ PPI – 8255A

Chia sẻ: Vo Duy Dung | Ngày: | Loại File: DOC | Số trang:25

1.001
lượt xem
145
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

PPI 8255A là vi mạch ghép nối ngoại vi lập trình được ( Programmable periferal interface), thường được gọi là mạch ghép nối vào ra song song lập trình được. Do khả năng mềm dẻo trong các ứng dụng thực tế, nó là mạch ghép nối được dùng rất phổ biến trong các hệ vi xử lý 8 bit, 16 bit và 32 bit.

Chủ đề:
Lưu

Nội dung Text: Chương I: TỔNG QUAN VỀ CHÍP BỔ TRỢ PPI – 8255A

  1. Chương I:           TỔNG QUAN VỀ CHÍP BỔ TRỢ                         PPI – 8255A PPI 8255A là vi mạch ghép nối ngoại vi lập trình được ( Programmable periferal interface), thường được gọi là mạch ghép nối vào ra song song lập trình được. Do khả năng mềm dẻo trong các ứng dụng thực tế, nó là mạch ghép nối được dùng rất phổ biến trong các hệ vi xử lý 8 bit, 16 bit và 32 bit. 1.1­ Sơ đồ chân:
  2. Vi mạch gồm 40 chân trong đó. Gồm: PA0 ÷ PA7 , PB0 ÷ PB7 , PC0 ÷ PC7, D0 ÷ D7, A0, A1 , , , CS, Reset, Vcc và GND. Có 24 đường dẫn lối vào/ra xếp thành 3 cổng song song ( portA, portB, portC). Một nửa cổng C ( PC4 … PC7) thuộc nhóm A gọi là PCH, còn nửa kia thuộc nhóm B, gọi là PCL Chân Reset phải được nối với tín hiệu Reset chung của toàn hệ thống (khi Reset các cổng được định nghĩa là cổng vào để không gây ra sự cố cho các mạch điều khiển). Tín hiệu CS được nối với mạch tạo xung chọn thiết bị để đặt mạch 8255 vào một địa chỉ cơ sở nào đó. Các tín hiệu địa chỉ A0, A1 sẽ chọn ra 4 thanh ghi bên trong 8255: một thanh ghi để ghi từ điều khiển (CWR – control word register) cho hoạt động của 8255 và 3 thanh ghi khác ứng với các cổng là PA, PB, PC để ghi đọc dữ liệu theo bảng: A1 A0 Lệnh Hướng chuyển số liệu với VXL (của VXL) 0 0 0 0 1 Đọc PortA PortA →D0 ÷ D7 0 1 0 0 1 Đọc portB PortB →D0 ÷ D7 1 0 0 0 1 Đọc portC PortC →D0 ÷ D7 1 1 0 0 1 Không có giá trị 0 0 0 1 0 Ghi PortA D0 ÷ D7→ PortA 0 1 0 1 0 Ghi PortB D0 ÷ D7→ PortB 1 0 0 1 0 Ghi PortC D0 ÷ D7→ PortC 1 1 0 1 0 Ghi thanh ghi D0 ÷ D7→ thanh điều khiển ghi điều khiển x x 1 x x Vi mạch ở Không có trao trạng thái trở
  3. kháng cao đổi số liệu Tính linh hoạt của vi mạch này thể hiện ở khả năng lập trình. Ta có thể đặt các mode hoạt động thông qua thanh ghi điều khiển. Các chân D0 đến D7 tạo nên kênh dữ liệu 2 hướng có độ rộng 8 bit. Tất cả dữ liệu khi truy nhập ghi hoặc đọc được dẫn qua kênh dữ liệu này. Trạng thái logic ghi/đọc được nhận biết qua các tín hiệu điều khiển , . Trao đổi thông tin với 8255 chỉ có thể được tiến hành khi CS = 0. Khi RD= 0 dữ liệu của cổng được chọn được đưa ra kênh dữ liệu và có thể được sử dụng bởi các vi mạch khác. Khi WR = 0, thì moi việc xảy ra ngược lại. Các bit địa chỉ A0 và A1 cùng với các tín hiệu ghi đọc báo cho biết sẽ truy nhập lên cổng nào. Sơ đồ khối mô tả chức năng của 8255:
  4. 1.2- Các chế độ làm việc của 8255: Để xác lập chế độ làm việc cho 8255 ta ghi từ điều khiển vào thanh ghi từ điều khiển CWR ( Control Word Register ). Có 2 loại từ điều khiển cho 8255: - Từ điều khiển định nghĩa cấu hình cho các cổng PA, PB, PC. - Từ điều khiển lập/xoá từng bit ở đầu ra của PC.
  5. - Tuỳ theo từ lệnh được ghi vào thanh ghi điều khiển khi khởi động của vi mạch mà ta có các PortA,B,C hoạt động ở: + Các chế độ 0, 1, 2 khác nhau. + Chiều trao đổi dữ liệu khác nhau, tức PortA, B, C là cổng ra hay vào. 1.2.1- Từ điều khiển định nghĩa cấu hình cho các cổng: 1.2.2- Thanh ghi từ điều khiển việc thiết lập/ xóa bit ra PCi:
  6. 1.2.3- Các chế độ làm việc: Chip 8255A có 3 chế độ làm việc: • Chế độ 0: Vào ra cơ sở (còn gọi là vào ra đơn giản). Trong chế độ 0, 8255 cho một khả năng xuất và nhập dữ liệu đơn giản qua 3 cổng A,B,C. PA, PB, PC được sử dụng độc lập với nhau, 3 đường dây đều được dùng để trao đổi số liệu hoặc thông tin về điều khiển và trạng thái một cách bình đẳng với nhau và tuỳ ý lựa chọn. Chế độ 1: Trong chế độ này các cổng A và B có thể được dùng như các cổng đầu vào hoặc đầu ra với các khả năng bắt tay. Tín hiệu bắt tay được cấp bởi các bit của cổng C.
  7. - Xuất dữ liệu ra trong mode 1 Cổng PA, PB có tín hiệu đối thoại tương tự nhau. Tín hiệu , báo rằng bộ đệm ra đã đầy cho ngoại vi biết CPU đã ghi dữ liệu vào cổng để chuẩn bị đưa ra. Tín hiệu này thường nối với tín hiệu của thiết bị nhận. Tín hiệu , là tín hiệu của ngoại vi cho biết nó đã nhận được dữ liệu từ các cổng PA, PB. Tín hiệu INTRA, INTRB là tín hiệu yêu cầu ngắt từ PA, PB. INTEA, INTEB là tín hiệu của một mạch lật bên trong 8255 để cho phép hoặc cấm yêu cầu ngắt INTRA hoặc INTRB của PA hoặc PB. INTEA được lập/xoá thông qua bit PC6. INTEB được lập/xoá thông qua bit PC2. Khi làm việc ở chế độ xuất thông tin mode 1, thanh ghi trạng thái của 8255 cung cấp các thông tin phản ánh trạng thái hiện hành của mình. Sơ đồ ghép nối của 8255 ở mode 1:
  8. (Output Bufer A full): Báo hiệu bộ đệm cổng ra A đã đầy (Output Bufer B full): Báo hiệu bộ đệm cổng ra B đã đầy INTEA ( Interrupt Enable For PortA): cho phép PA chạy ở chế độ ngắt. INTEB ( Interrupt Enable For PortB): cho phép PB chạy ở chế độ ngắt. INTRA ( Interrupt PortA ): PA ngắt INTRB ( Interrupt PortB ): PB ngắt Nội dung thanh ghi trạng thái của 8255 ở mode 1 cho huớng ra: - Nhận dữ liệu vào trong mode 1
  9. Khi nhận dữ liệu vào trong mode 1 các cổng PA, PB có tín hiệu đối thoại tương tự nhau: STB ( cho phép chốt dữ liệu). Khi dữ liệu đã sẵn sàng trên kênh PA, PB ngoại vi phải dùng STB để báo cho 8255 biết để chốt dữ liệu vào cổng PA hoặc PB. Sau khi 8255 chốt được dữ liệu do thiết bị ngoại vi đưa đến, nó đưa ra tín hiệu IBF (In Buffer full) để báo cho ngoại vi biết. Nội dung thanh ghi trạng thái của 8255 ở mode 1 cho hướng vào: • Chế độ 2: Vào/ra 2 chiều. Trong chế độ này chỉ riêng cổng PA có thể được định nghĩa thành cổng vào ra 2 chiều với các tín hiệu bắt tay do các bit của cổng PC đảm nhiệm. Lúc này cổng PB có thể làm việc ở chế độ 0 hoặc 1. Chế độ này chỉ dùng cho cổng PA với vào/ra 2 chiều và các bit PC3 ÷ PC7 dùng làm tín hiệu giao tiếp. Mạch logic của 8255 ở mode 2 và các tín hiệu giao tiếp:
  10. Cổng PB có thể làm việc ở mode 1 hoặc mode 0 tuỳ theo bit điều khiển trong thanh ghi CWR. INTRA: yêu cầu ngắt cho dữ liệu 2 chiều vào/ra. INTE 1, INTE 2: là 2 tín hiệu của 2 mạch lật bên trong 8255 để cho phép hoặc cấm yêu cầu ngắt của PA, các bit này được lập xoá bởi PC6 và PC4. Khi dùng 8255 trong chế độ bus 2 chiều để trao đổi dữ liệu theo cách thăm dò, phải kiểm tra xem bit IBFA có bằng 0 (đệm vào rỗng) hay không trước khi dùng lệnh IN để nhận dữ liệu từ cổng PA. Khi làm việc ở chế độ truyền thông tin 2 chiều của mode 2, thanh ghi trạng thái của 8255 cung cấp các thông tin phản ánh trạng thái hiện hành của mình. Nội dung thanh ghi trạng thái:
  11. Chương II: GHÉP NỐI 8255 VỚI VI XỬ LÝ 2.1-Ghép nối với 8086: VD: Thiết kế sơ đồ ghép nối 8255 với 8086 và viết chương trình đọc từ cổng PA, đưa ra PB, rồi cộng thêm 5 và đưa ra PC Giải:
  12. Địa chỉ cơ sở của 8255 ở sơ đồ trên là F00h Địa chỉ các thanh ghi PA: F00h PB: F01h PC: F02h CWR: F03h Chương trình như sau: include void main() { Long a; Outport (0xF03, 0x90); a= import(0xF00); outport (0xF01,a); a=a+5;
  13. outport(0xF02,a); } 2.2- Ghép nối với 8051: 8255 được lập trình một trong ba chế độ vừa trình bày ở trên bằng cách gửi một từ điều khiển tới thanh ghi từ điều khiển của 8255. Trước hết chúng ta phải tìm ra các địa chỉ cổng được gán cho mỗi cổng A, B, C và thanh ghi điều khiển. Theo sơ đồ trên, địa chỉ cơ sở của 8255 là 4000h tương đương với địa chỉ của thanh ghi PA là 4000h, PB là 4001h, PC là 4002h và CWR là 4003h. Xét những ví dụ sau: VD1: Hãy tìm từ điều khiển của 8255 cho các cấu hình sau: a, Tất cả các cổng A, B và C đều là các cổng đầu ra (chế độ 0). b, PA là đầu vào, PB là đầu ra, PCL là đầu vào và PCH là đầu ra. Giải:
  14. a, Để các cổng A, B, C đều là các cổng đầu ra, ta phải nạp vào thanh ghi từ điều khiển giá trị 1000 0000 = 80h. b, PA, PCL là đầu vào, PB, PCH là đầu ra phải nạp vào thanh ghi từ giá trị: 1001 0000h = 90h VD2: Viết một chương trình để gửi 55H và AAH đến cổng liên tục. MOV A, #80H ; Nạp giá trị từ điển khiển MOV DPTR, # 4003H ; Nạp địa chỉ cổng của thanh ghi từ điều khiển MOVX @DPTR, A ; Xuất từ điển khiển MOV A, # 55H ; Gán A = 55 AGAIN: MOV DPTR, # 4000H ; Địa chỉ cổng PA MOVX @DPTR, A ; Lấy các bit cổng PA INC DPTR ; Địa chỉ cổng PB MOVX @DPTR, A ; Lấy các bít cổng PB INC DPTR ; Địa chỉ cổng PC MOVX @DPTR, A ; Lấy các bít cổng PC CPL A ; Lấy các bít thanh ghi A ACALL DELAY ; Chờ SJMP AGAIN ; Tiếp tục VD3: Điều khiển LED đơn: • Sơ đồ nguyên lý: • Chương trình: #include
  15. #include int j; unsigned char x,y,k,a; xdata unsigned char PA _at_ 0x00; xdata unsigned char PC _at_ 0x02; xdata unsigned char CREG _at_ 0x03; void delay() { unsigned long int i; for(i=0;i
  16. for(j=0;j>1; } x=0x01; for(j=0;j
  17. } if(a==3) { x=0;y=0; PA=(x|y);delay(); for(k=8;k>0;k--) { x=0x80; for(j=0;j>=1; } y
  18. 3.1- Ghép nối với LCD: ; Ghi các lệnh và dữ liệu tới LCD không có kiểm tra cờ bận. ; Giả sử PA của 8255 được nối tới D0 - D7 của LCD và ; IB - RS, PB1 = R/W, PB2 = E để nối các chân điều khiển LCD MOV A, #80H ; Đặt tất cả các cổng 8255 là đầu ra MOV R0, #CNTPORT ; Nạp địa chỉ thanh ghi điều khiển MOVX @R0, A ; Xuất từ điều khiển MOV A, #38H ; Cấu hình LCD có hai dòng và ma trận 5x7 ACALL CMDWRT ; Ghi lệnh ra LCD ACALL DELAY ; Chờ đến lần xuất kế tiếp (2ms) MOV A, # 0EH ; Bật con trỏ cho LCD ACALL CMDWRT ; Ghi lệnh này ra LCD ACALL DELAY ; Chờ lần xuất kế tiếp
  19. MOV A, # 01H ; Xoá LCD ACALL CMDWRT ; Ghi lệnh này ra LCD ACALL DELAY ; Dịch con trỏ sang phải MOV A, # 06 ; Ghi lệnh này ra LCD ACALL CMDWRT ; Chờ lần xuất sau ACALL DELAY ; Ghi lệnh này ra LCD ... ; v.v... cho tất cả mọi lệnh LCD MOV A, # 'N' ; Hiển thị dữ liệu ra (chữ N) ACALL DATAWRT ; Gửi dữ liệu ra LCD để hiển thị ACALL DELAY ; Chờ lần xuất sau MOV A, # '0' ; Hiển thị chữ "0" ACALL DATAWRT ; Gửi ra LCD để hiển thị ACALL DELAY ; Chờ lần xuất sau ... ; v.v... cho các dữ liệu khác ; Chương trình con ghi lệnh CMDWRT ra LCD CMDWRT: MOV R0, # APORT ; Nạp địa chỉ cổng A MOVX @R0, A ; Xuất thông tin tới chân dữ liệu của LCD MOV R0, # BPORT ; Nạp địa chỉ cổng B MOV A, # 00000100B ; RS=0, R/W=1, E=1 cho xung cao xuống thấp MOVX @R0, A ; Kích hoạt các chânRS, R/W, E của LCD NOP ; Tạo độ xung cho chân E
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2