18-04-2009, 11:43 AM | #1 |
Đệ tử 7 túi
Tham gia ngày: Aug 2007
Bài gửi: 213
: |
Giúp em về timer0 với.
Em sử dụng code của anh nhh,với mục đích là "led ở chân RB0 sáng, sau 1s sẽ dịch sang trái, nghĩa là led 1 trên chân RB1 sáng , lần lượt như vậy cho các led trên portB và lặp lại mãi mãi."
Đây là đoạn code: Code:
#include <16F887.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #byte PORTB = 0x06 int16 count; int8 a; //Chuong trinh ngat TMR0 #int_timer0 void interrupt_timer0() { set_timer0(6); ++count; if(count == 2000) // 2000*500us = 1000000us = 1s { count=0; rotate_left(&a,1); } } //Chuong trinh chinh void main(void) { set_tris_b(0); enable_interrupts(int_timer0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); enable_interrupts(global); set_timer0(6);// T_dinhthi =delay= 2*(256 - 6)*1us = 500us //INitTIMER0=6;prescaler=2(do RTCC_div_2 a = 0x01; while(true) { PORTB = a; } } Trong chương trình đã tính đựoc thời gian định thì =500us.Cái này có ý nghĩa như thế nào vậy? TRong chương trình ngắt của timer0 cũng lại gặp dòng lệnh này nữa.DÒng lệnh trong chương trình ngắt này có ý nghĩa gì không?Có bắt buộc là set_timer0(6); giống như trong chuơng trình main()? Đang rất rối,hy vọng được giúp đỡ.Rất cảm ơn.HIc |
|
|