Hướng dẫn sử dụng Kit 89 Bài 4 : Ngắt Timer Mụ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. 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. | Hướng dẫn sử dụng Kit 89 Bài 4 Ngắt Timer Mụ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. 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 1 0x02 TMOD 0x01 setup mode for timer 0 TMOD 1 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 - 38 Hướng dẫn sử dụng Kit 89 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 và . File đặc tả các hàm của module này còn file sẽ hiện thực các hàm đó. Các hàm trong 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 ms 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ắt timer1 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ình sẽ chạy sai. void init_timer1 IE 0x08 enable timer 1 IE 1 0x08 TMOD 0x10 setup mode for timer 1 TMOD 1 0x10 TH1 -1000 256 1 ms TL1 -1000 256 TR1 1 start timer1 Hàm start_timer1 void start_timer1 TR1 1 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 - 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