Xem mẫu

  1. Bài 6: NGẮT BĐT (TIMER) I>Khái niệm: Vi điều khiển 8051 có 2 BĐT (Timer 0+1) để tạo thời gian cũng như làm bộ đếm (đếm sp) II>Thanh ghi chứa giá trị của BĐT : -Thanh ghi của bộ TIMER0 TH0 TL0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
  2. Bài 6: NGẮT BĐT (TIMER) -Thanh ghi của bộ TIMER1: TH1 TL1 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
  3. Bài 6: NGẮT BĐT (TIMER) - Thanh ghi chế độ của bộ định thời TMOD: (MSB) (MSB) GATE C/T M1 M0 GATE C/T M1 M0 Timer1 Timer0
  4. Bài 6: NGẮT BĐT (TIMER) M1 M0 Chế Chế độ hoạt động độ 0 0 0 Chế độ bộ định thời 13 bit. Bộ định thời/bộ đếm 8 bit, định tỷ lệ trước 5 bit. 0 1 1 Chế độ bộ định thời 16 bit, không định tỷ lệ trước. 1 0 2 Chế độ 8 bit tự nạp lại. THx lưu giá trị sẽ tự nạp vào TLx mỗi khi tràn. 1 1 3 Chế độ bộ định thời chia tách Ví dụ : để sử dụng Timer0 ở chế độ 16bit và Timer1 ở chế độ 8 bit ta khởi tạo TMOD = 0x21
  5. Bài 6: NGẮT BĐT (TIMER) II>Thanh ghi cho phép và Điều khiển BĐT: 1.Thanh Ghi Cho Phép Ngắt IE (interrupt enable) EA -- ET2 ES ET1 EX1 ET0 EX0 EA (IE.7 bit) là bit cho phép ngắt toàn bộ. Tức là nếu bạn sử dụng một trong 5 ngắt kể trên của vđk thì bạn phải set bit này lên với giá trị 1. Ngược lại khi bit EA =0 thì toàn bộ các ngắt của vđk sẽ bị cấm.
  6. Bài 6: NGẮT BĐT (TIMER) ET2 ( IE.5 bit) là bit cho phép ngắt của timer 2 ( chỉ ở họ 52 ). Khi bit này = 1 thì ngắt định thời 2 sẽ được cho phép và ngược lại. ET1, ET0 ( IE.3, IE.1 bit ) là bit cho phép ngắt định thời 1, 0 của vđk 8051. Khi các bit này =1 thì ngắt của hai bộ định thời này được cho phép và ngược lại. ES ( IE.4 bit ) là bit cho phép ngắt truyền thông nối tiếp. EX1, EX0 (IE.0 và IE.2 bit) là hai bit cho phép của hai ngắt ngoài của vđk
  7. Bài 6: NGẮT BĐT (TIMER) TF1 TR1 TF1 TR0 IE1 IT1 IE0 IT0 TF1 ( TCON.7) cờ tràn của Timer1 TR1 ( TCON.6) bit Đk hoạt động của Timer1 TF0 ( TCON.5) cờ tràn của Timer0 TR0 ( TCON.4) bit Đk hoạt động của Timer0
  8. Bài 6: NGẮT BĐT (TIMER) IE1 ( TCON.3) Cờ ngắt ngoài kích theo sườn ; được CPU thiết lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU xoá khi ngắt được xư lý IT1 ( TCON.2) bit Đk kiểu ngắt INT1 được thiết lập và xoá bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp IE0 ( TCON.1) Cờ ngắt ngoài kích theo sườn ; được CPU thiết lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU xoá khi ngắt được xư lý IT0 ( TCON.0) bit Đk kiểu ngắt INT0 được thiết lập và xoá bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp
  9. Bài 6: NGẮT BĐT (TIMER) Các Bước Để Sư Dụng BĐT Như Sau Start Các Lệnh tiền xử lý Hàm khởi tạo ngát Hàm phục vụ ngát Hàm main
  10. Bài 6: NGẮT BĐT (TIMER) Nhiệm vụ của hàm Khởi tạo : • Cho phép BĐT hoạt động bằng việc tác động vào thanh ghi IE. • Chọn chế độ cho BĐT cần dùng , từ đó xác định giá trị nạp cho thanh ghi TMOD. • Tính toán giá trị ban đầu nạp cho TH và TL từ thời gian mong muốn. • Khởi động BĐT.
  11. Bài 6: NGẮT BĐT (TIMER) Nhiệm vụ của hàm Ngắt BĐT : • Dừng BĐT , xóa cờ ngắt TF tương ứng . • Nạp lại giá trị cho TH và TL (nếu cần ) để tạo thời gian cho lần định thời sau . • Sử lý những công việc định trước . • Khởi động lại BĐT
  12. Bài 6: NGẮT BĐT (TIMER) Như vậy để khởi tạo dùng BĐT Timer0 ở chế độ 8 bit ta cần làm như sau : void Khoi_tao(void) { EA = 1; //cho phép ngắt toàn cục ET0 = 1; //cho phép ngắt Timer0 TMOD = 0x02 ; //Timer0 chế độ 8 bit TH0 = ?x?? ; // giá trị cần đưa vào TL0 = ?x??; TR0 = 1 ; //khởi động Timer0 }
  13. Bài 6: NGẮT BĐT (TIMER) Chương trình ngắt BĐT : Void Name (void) interrupt x ( x là số thứ thực của ngắt ) { TRx = 0; //tắt BĐT x TFx = 0 ; // xóa cờ ngắt THx = 0x??; TL0 = 0x?? ; { //chương trình cần sử lý } TRx = 1 //khởi động lại BĐT }
  14. Bài 6: NGẮT BĐT (TIMER) B1 :Dùng BĐT 0 ở chế độ 8 bit để nháy Led ,với giá trị TH0 = 0x00 và TL0 = 0x00, vì hàm ngắt định thời sẽ được gọi sau 256 chu kỳ nên tần số nháy Led sẽ rất lớn ta ko thể quan sát được , vì vậy trong hàm ngắt ta se gọi ham delay(20000) để quan tạo trễ cho quá trình nháy Led
  15. Bài 6: NGẮT BĐT (TIMER) B2 :Vẫn yêu cầu như bài 1 nhưng ta sẽ ko dùng hàm delay() nữa mà tạo thời gian trễ hoàn toàn bằng BĐT
  16. Bài 6: NGẮT BĐT (TIMER) B3 :Dùng 2 BĐT 0 và 1 để nháy so le 2 Led (mỗi BĐT đk một con )
  17. Bài 6: NGẮT BĐT (TIMER) B4 :Dùng BĐT 0 or 1 để nháy Led :cứ sau đúng 1s sẽ đảo trạng thái Led (bài toán này sẽ chỉ cho các bạn tạo thời gian một cách chính xác)
  18. Bài 6: NGẮT BĐT (TIMER) B5 :Dùng BĐT 0 và 1 viết chương trình điều khiển đèn giao thông (phần cứng các bạn tự thiết kế theo đúng các modul trong thực tế , bao gồm : 4 hàng Led theo 4 hướng đường , mỗi hàng là 3 Led xanh , đỏ , vàng ; các Led 7 thanh để hiển thị thời gian chờ , nếu có thể thì thêm cả phần nút bấm để thiết lập thời gian chờ)
  19. Bài 6: NGẮT BĐT (TIMER) B6 :Kết hợp kiến thức bài 4 và bài 3 của bài Ngắt ngoài để viết chương trình cho đồng hồ điện tử ( phần cứng có thể dùng ngay Kit tại trung tâm)
nguon tai.lieu . vn