Danh mục

Hướng dẫn sử dụng Kit 89 - Bài 4

Số trang: 3      Loại file: pdf      Dung lượng: 264.73 KB      Lượt xem: 11      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: miễn phí Tải xuống file đầy đủ (3 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Hướng dẫn sử dụng Kit 89Bài 4 :Ngắt TimerMục đích: Tìm hiểu ngắt timer của 89V51 Xây dựng module dành cho timer của 89V51 có thể dùng lại được. Yêu cầu: Viết chương trình hiển thị từ 0, sau 1 giây tăng lên 1, khi tăng đến 9 thì chuyển sang hiển thị ở led kế tiếp, hiển thị bắt đầu lại từ 0.4.1 Khai báo ngắt timerTrình tự là cho phép ngắt toàn cục, cho phép ngắt timer và thiết lập chế độ hoạt động cho timer: IE = 0x80; //enable global interrupt IE &= ~(0x02);// enable timer 0...
Nội dung trích xuất từ tài liệu:
Hướng dẫn sử dụng Kit 89 - Bài 4 Hướng dẫn sử dụng Kit 89Bài 4 : Ngắt TimerMục đích: Tìm hiểu ngắt timer của 89V51 Xây dựng module dành cho timer của 89V51 có thể dùng lại được.Yêu cầu: Viết chương trình hiển thị từ 0, sau 1 giây tăng lên 1, khi tăng đến 9 thì chuyểnsang hiển thị ở led kế tiếp, hiển thị bắt đầu lại từ 0.4.1 Khai báo ngắt timer Trình tự là cho phép ngắt toàn cục, cho phép ngắt timer và thiết lập chế độ hoạtđộng cho timer: IE = 0x80; //enable global interrupt IE &= ~(0x02);// enable timer 0 IE |= 0x02; TMOD &= ~(0x01);// setup mode for timer 0 TMOD |= 0x01; TH0 = (-10000/256); //10 ms TL0 = (-10000%256); TR0 = 1;//start timer0 Hàm phục vụ ngắt sẽ được khai báo như sau: void timer0_isr() interrupt 1 { TR0 = 0;//stop timer 0 // reinitialize TH0 = (-10000/256); TL0 = (-10000%256); //Add your code here TR0 = 1;//start timer 0 }BKIT HARDWARE CLUB – www.bkit4u.com 38 Hướng dẫn sử dụng Kit 894.2 Viết chương trình Vì mục đích là tạo ra module Timer có khả năng dùng lại, nên chương trình sẽgồm group TIMER có 2 file timer.h và timer.c. File timer.h đặc tả các hàm của modulenày còn file timer.c sẽ hiện thực các hàm đó. Các hàm trong timer.h bao gồm: void init_timer0(); //init timer 0, interrupt after 10ms void init_timer1(); //init timer 1, interrupt after 1ms void start_timer0(); void start_timer1(); void stop_timer0(); void stop_timer1(); void delay_ms(unsigned int duration);//using timer1 to delay in ms4.2.1 Hàm init_timer1() Hàm này làm nhiệm vụ khởi tạo ngắt timer1 sau mỗi 1ms, khi khởi tạo ngắttimer1 xong, ta phải hiện thực hàm phục vụ ngắt quãng cho nó, nếu không chương trìnhsẽ chạy sai. void init_timer1() { IE &= ~(0x08);// enable timer 1 IE |= 0x08; TMOD &= ~(0x10);// setup mode for timer 1 TMOD |= 0x10; TH1 = (-1000/256); //1 ms TL1 = (-1000%256); TR1 = 1; //start timer1 }4.2.2 Hàm start_timer1() void start_timer1() { TR1 = 1; }4.2.3 Hàm timer1_isr() Đây là hàm phục vụ ngắt quãng của timer1, được khai báo và định nghĩa như sau:BKIT HARDWARE CLUB – www.bkit4u.com 39 Hướng dẫn sử dụng Kit 89 void timer1_isr() interrupt 3 { TR1 = 0;//stop timer 1 // reinitialize TH1 = (-1000/256); TL1 = (-1000%256); //Add your code here if(counter1!= 0) { counter1--; } //End your code TR1 = 1;//start timer 1 }4.2.4 Hàm delay_ms(unsigned int duration) Hàm này chỉ cần cài đặt giá trị cho biến counter1, giá trị này sẽ tự động giảm nhờđoạn code trong hàm phục vụ ngắt quãng của timer1. Vòng lặp while để chờ cho đến khicounter1 bằng 0. void delay_ms(unsigned int duration) { counter1 = duration; while(counter1 !=0) { } }4.2.5 Hàm stop_timer1() void stop_timer1() { TR1 = 0; } Phần hiện thực các bạn xem trong project Bai 4 để biết thêm chi tiết.BKIT HARDWARE CLUB – www.bkit4u.com 40

Tài liệu được xem nhiều: