Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
297 KB
Nội dung
Bài6:NGẮTBĐ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 D15 D14 D13 D12 D11 D10 D9 D8 TH0 D7 D6 D5 D4 D3 D2 D1 D0 TL0 Bài6:NGẮTBĐT(TIMER) -Thanh ghi của bộ TIMER1: D15 D14 D13 D12 D11 D10 D9 D8 TH1 D7 D6 D5 D4 D3 D2 D1 D0 TL1 Bài6:NGẮTBĐT(TIMER) - Thanh ghi chế độ của bộ định thời TMOD: (MSB) GATE C/T M1 M0 Timer1 GATE C/T M1 M0 Timer0 (MSB) Bài6:NGẮTBĐ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 Bài6:NGẮTBĐ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. 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 Bài6:NGẮTBĐ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 Bài6:NGẮTBĐ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ý 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ý 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 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 Bài6:NGẮTBĐT(TIMER)Bài6:NGẮTBĐ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 Bài6:NGẮTBĐ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. [...]... trong hàm ngắt ta se gọi ham delay(20000) để quan tạo trễ cho quá trình nháy Led Bài6:NGẮTBĐ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ĐTBài6:NGẮTBĐ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 ) Bài6:NGẮTBĐ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... 1 ; } //khởi động Timer0 Bài6:NGẮTBĐT(TIMER) Chương trình ngắtBĐ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 } Bài6:NGẮTBĐ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.. .Bài 6:NGẮTBĐT(TIMER) Nhiệm vụ của hàm NgắtBĐ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ĐTBài6:NGẮTBĐ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. .. xác) Bài6:NGẮTBĐ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ờ) Bài6:NGẮTBĐT(TIMER) B6 :Kết hợp kiến thức bài 4 và bài. .. 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ờ) Bài6:NGẮTBĐT(TIMER) B6 :Kết hợp kiến thức bài 4 và bài 3 của bàiNgắ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) . hoàn toàn bằng BĐT 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 ) Bài 6: NGẮT BĐT (TIMER) B4 :Dùng BĐT 0 or 1 để. 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) Bài 6: NGẮT BĐT (TIMER) Bài 6: NGẮT BĐT (TIMER) B5 :Dùng BĐT 0 và 1 viết