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

Bài giảng Vi điều khiển: Chapter 7 - Ngô Như Khoa

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:24

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

Chapter 7 của bài giảng Vi điều khiển cung cấp đến người học những kiến thức về 8051 I/O và 8051 Interrupts. Chương này gồm có các nội dung chính như: Hiển thị bằng quét các LED 7 đoạn, giao tiếp với bàn phím, giao tiếp với LCD, các ngắt của 8051. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Vi điều khiển: Chapter 7 - Ngô Như Khoa

  1. 8051 I/O and 8051 Interrupts Microcontroller Chapter 7 Ngo Nhu Khoa Department of Computer Engineering DCE ThaiNguyen University of Technology
  2. Những vấn đề chính z Giao tiếp vào/ra 8051 với – Mạch hiển thị bằng LED theo cơ chế quét – Mạch hiển thị LCD – Bàn phím z Các ngắt của 8051 – IVT, ISR – Cho phép ngắt và ưu tiên ngắt – Các ngắt ngoài 10/1/2005 2 DCE
  3. 1. Hiển thị bằng quét các LED 7 đoạn z Đặc trưng của hiển thị LED –power-hungry (10ma per LED) –Pin-hungry (8 pins per 7-seg display) z Cơ chế quét trong hiển thị – Chỉ 1 ma trận LED 7 đoạn được kích hoạt tại 1 thời điểm – Các đầu vào a-h được nối tách biệt với nhau z Tổng số các chân cần có là: – 8 + số ký tự (số ma trận) – 8 + 4 cho ví dụ ở hình bên 10/1/2005 3 DCE
  4. 1. Hiển thị bằng quét các LED 7 đoạn … start: disable [D3:D0] z Giải thuật để hiển thị 1 again: enable D3 giá trị có 4 ký tự. [a:h] D pattern for Digit3 delay z Tần số quét phải đủ lớn disable D3. Enable D2 để tránh hiện tượng [a:h] D pattern for Digit2 nháy đối với thị giác delay disable D2. Enable D1 – Tối thiểu là 30HZ [a:h] D pattern for Digit1 – Thời gian sáng của mỗi ký delay tự là 1/30 seconds disable D1. Enable D0 [a:h] D pattern for Digit0 – Giá trị tần số này càng lớn delay càng làm giảm độ nhấp disable D0 nháy (60Hz) Goto again 10/1/2005 4 DCE
  5. 2. Giao tiếp với bàn phím z 16 phím được sắp xếp thành 1 ma trận 4x4 z Giải thuật: – Đưa ra mức “0” trên 1 hàng – Đọc tất cả các cột – Nếu 1 phím nào đó được bấm, thì cột của nó sẽbằng “0”, nếu không bấm thì là 1 – Duy trì vòng quét 1 cách liên tục ở các hàng kế tiếp z Ví dụ: – Phím 4 được bấm R1D 0, C1:C4 = 1111 R2D 0, C1:C4 = 0111 – Phím 2 được bấm R1 D 0, C1:C4 = 1101 10/1/2005 5 DCE
  6. 3. Giao tiếp với LCD z LCDs rẻ và là cách dễ thực hiện đối với mục đích hiển thị các ký tự trong các hệ thống nhúng – Có nhiều cấu hình khác nhau (1x20 đến 8x80), giá tối thiểu khoảng $5 – Các LCDs có khả năng đồ hoạ cũng khá phổ biến z Các LCDs thông minh có sẵn các bộ giải mã ASCII, bộ tạo ký tự và mạch điều khiển LCD z Một số còn có khả năng tạo ký tự theo yêu cầu cá nhân – Người dùng định nghĩa ký tự trong RAM – Chương trình RAM này chứa các mẫu ký tự – Sau đó nó được sử dụng như các ký tự ASCII chuẩn – Thường MSB quyết định việc hiển thị giữa bộ ký tự chuẩn hay bộ ký tự cá nhân hoá 10/1/2005 6 DCE
  7. Giao tiếp với LCD loại ký tự z Chân ra – 8 data pins D7:D0 – RS: Data or Command Select – RW: Read or Write – E: Enable (Latch data) – Vee : contrast control z RS=0 D Command, z RS=1 D Data z RW=0 D Write z RW=1 D Read z E=1 D Enable (H-L pulse) z LCD Command Codes – Mfrs. Data sheet – Clear screen, move cursor, – shift display 10/1/2005 7 DCE
  8. Giải thuật điều khiển LCD loại ký tự z Algorithm Command and Data Write Routines mov A, command cmd: mov P1, A ;A has the cmd word call cmd clr P3.3 ;RS=0 for cmd delay clr P3.4 ;RW=0 for write mov A, another_cmd setb P3.5 ;H->L pulse on E call cmd clr P3.5 delay ret mov A, #’A’ data: mov P1, A ;A is ascii data call data setb P3.3 ;RS=1 data delay mov A, #’B’ clr P3.4 ;RW=0 for write call data setb P3.5 ;H->L pulse on E delay clr P3.5 …. ret 10/1/2005 8 DCE
  9. Giải thuật điều khiển LCD loại ký tự z Kiểm tra trạng thái bận: Sau 1 lệnh đọc từ LCD, bit D7 sẽ chứa cờ báo bận. Kiểm tra bit này trước khi gửi thêm 1 lệnh mới đến LCD, hay sử dụng 1 khoảng trễ đủ lớn. ready: setb P1.7 ;D7 as input clr P3.3 ;RS=0 cmd setb P3.4 ;RW=1 for read again: setb P3.5 ;H->L pulse on E clr P3.5 jb P1.7, again ret 10/1/2005 9 DCE
  10. 4. Các ngắt của 8051 z Ngắt là gì ? – Một cách để dừng vi xử lý khỏi bất kỳ công việc gì mà nó đang thực hiện và buộc nó làm 1 việc khác z Tại sao và ở những ứng dụng nào cần đến ngắt? – Phục vụ cho nhiều thiết bị giao tiếp – Các hệ thống đa nhiệm z Các ngắt trong 8051 – 2 ngắt ngoài, hai ngắt cho bộ định thời và 1 ngắt cho cổng nối tiếp 10/1/2005 10 DCE
  11. Hỏi vòng và ngắt z Hỏi vòng - Polling: – CPU giám sát tất cả các thiết bị được phục vụ 1 cách liên tục, chờ đợi 1 “cờ hiệu yêu cầu được phục vụ - service request flag” – Bất cứ khi nào nó thấy 1 yêu cầu, nó sẽ phục vụ thiết bị đó và sau đó tiếp tục duy trì việc hỏi vòng – CPU luôn “bận - busy” với việc hỏi vòng, với vòng lặp để thực hiện việc “có yêu cầu nào không nhỉ” z Ngắt - Interrupts – Nếu và khi 1 thiết bị sẵn sàng và cần được chú ý, nó sẽ báo cho CPU biết – CPU ngừng bất kỳ việc gì mà nó đang thi hành và phục vụ thiết bị và sau đó trở lại công việc trước đó của mình. – CPU luôn “rỗi - free”, khi nó không phục vụ ngắt 10/1/2005 11 DCE
  12. Thường trình phục vụ ngắt z CPUs có 1 số lượng ngắt là cố định z Mỗi ngắt phải được liên kết với 1 đoạn mã, được gọi là “Interrupt Service Routine -ISR”. – Nếu CPU nhận được ngắt-x, thì ISR-x được thi hành z Kiến trúc CPU định nghĩa 1 vùng riêng biệt “code address” cho mỗi ISR, là nơi mà chúng được lưu giữ,“Interrupt vector Table (IVT)” z ISRs cơ bản là “subroutines”, nhưng chúng phải được kết thúc với lệnh RETI, lệnh thay cho RET z Khi 1 ngắt xảy ra, CPU sẽ lấy mã ISR của nó từ IVT và cho thi hành. 10/1/2005 12 DCE
  13. Sự thi hành ngắt 1. CPU kết thúc lệnh nó đang thi hành và lưu con trỏ lệnh PC vào ngăn xếp 2. CPU lưu trạng thái hiện thời của tất cả các ngắt trong 3. Lấy địa chỉ của ISR cho ngắt từ IVT và nhảy đến địa chỉ đó 4. Thực hiện ISR đến khi nó nhận được lệnh RETI 5. Với lệnh RETI, CPU lấy ra từ ngăn xếp nội dung của PC trước đó và tiếp tục với nơi nó đã đang thực hiện trước khi ngắt xảy ra 10/1/2005 13 DCE
  14. Các ngắt của 8051 z Nhà cung cấp đảm bảo 8051 có 6 ngắt cứng. Một trong chúng là reset. Do đó, thực tế 8051 chỉ có 5 ngắt cứng. Tuy nhiên, các dòng khác nhau có thể có số lượng ngắt khác nhau. z Hai ngắt ngoài – INT0 và INT1, hai ngắt thời gian – TF0 và TF1 và một ngắt của cổng nối tiếp – S0 z Các ngắt có thể được kích hoạt hay loại bỏ 1 cách độc lập. Điều này được thực hiện trong thanh ghi IE (Interrupt Enable Register) z Các ngắt ngoài (INT0 và INT1) có thể được cấu hình để được kích hoạt theo mức hay theo sườn. 10/1/2005 14 DCE
  15. Bảng véc tơ ngắt - IVT của 8051 z Mỗi ngắt có 8 bytes cho ISR của nó. z Nếu ISR lớn hơn 8bytes, thì phải dngf 1 lệnh ljmp ORG 0 Interrupt ROM Location Pin rom_start: LJMP main_code Reset 0000H 9 ORG 13H INT0 0003H P3.2 int1_vec: LJMP int1_isr TF0 000BH ORG 30H INT1 0013H P3.3 main_code: ;bla bla TF1 001BH ; …. int1_isr: ;bla bla S0 0023H 10/1/2005 15 DCE
  16. Thanh ghi IE z EA = 0, vô hiệu hoá tất cả các ngắt EA -- ET2 ES ET1 EX1 ET0 EX0 z Các bit khác, nếu lập bằng 1, có ý nghĩa là cho phép một ngắt tương ứng, nếu lập bằng 0 là vô hiệu hoá nó. z EX0 = enable INT0 z ET0 = enable Timer0 z EX1 = enable INT1 z ET1 = enable Timer1 z ES = enable serial port interrupt z ET2 = (for 8052 clones only) enable Timer2 10/1/2005 16 DCE
  17. Ví dụ đơn giản z Chân INT1 được nối với 1 SW và ở trạng thái thường cao. Khi nó xuống mức thấp, 1 LED phải được bật. LED được nối với chân P1.3 và thường ngắt org 0H ljmp MAIN org 13H ;INT1 ISR INT1_ISR: setb P1.3 ;turn on LED mov r3, #255 BACK: djnz r3, BACK ;keep the led ON for a while clr P1.3 ;turn OFF the LED RETI ;use RETI, ***NOT RET*** org 30H MAIN: mov IE, #1000 0100B ;enable INT1, EA=1, EX1=1 HERE: sjmp HERE ;stay here until interrupted end 10/1/2005 17 DCE
  18. Các ngắt ngoài z INT0 và INT1 – Kích hoạt theo mức : 1 mức thấp trên chân này sẽ gây ra ngắt - Default mode (chế độ ngầm định) – Kích hoạt theo sườn : ứng với sườn xuống (chuyển từ trạng thái cao - thấp) trên chân này sẽ gây ra ngắt z Cấu hình trong thanhg ghi TCON – (IT1) TCON.2 = 1 D INT1 kích hoạt theo sườn xung – (IT0) TCON.0 = 1 D INT0 kích hoạt theo sườn xung z IE0 (TCON.1) và IE1 (TCON.3) – Trong chế độ kích hoạt theo sườn, nếu ngắt INTx xảy ra, CPU sẽ lập bit IEx, nó chỉ được xoá sau khi 1 lệnh RETI được thi hành – Chặn ngắt trong khi đang phục vụ ngắt z Thiết lập và thời gian duy trì đối với ngắt ngoài tác động theo sườn thường là 1 trong 1 chu kỳ máy 10/1/2005 18 DCE
  19. Mức ưu tiên của các ngắt z Mức ưu tiên ngầm định – INT0 > TF0 > INT1 > TF1 > S0 z ISR của 1 ngắt có thể bị ngắt bởi 1 ngắt có mức ưu tiên cao hơn. z Mức ưu tiên ngầm định có thể bị thay đổi bằng lập trình lại trong thanh ghi IP -- -- PT2 PS PT1 PX1 PT0 PX0 z Để lập đặt ưu tiên cho 1 ngắt cao hơn, lập bit của nó trong thanh ghi IP bằng 1 z Nếu nhiều hơn 1 bit trong IP được lập, thứ tự ưu tiên ngầm định được sử dụng cho tất cả các ngắt mà có bit ưu tiên đã lập bằng 1 trong IP 10/1/2005 19 DCE
  20. Các bộ định thời trong 8051 z Hai bộ định thời 16-bit, T0 và T1 – Bộ định thời – tính toán thời gian, thời điểm … – Đếm sự kiện – Đếm sự xuất hiện của 1 sự kiện z T0 = TH0:TL0 z T1 = TH1:TL1 z Chế độ bộ định thời được điều khrn bởi thanh ghi TMOD: Gate, C/T, M0, M1 z Các bộ định thời được điều khiển bởi thanh ghi TCON (4 bits cao): TR0, TR1, TF0, TF1 10/1/2005 20 DCE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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