21-11-2011, 10:10 AM | #5 |
Đệ tử 5 túi
|
bạn setup timer0 sai rồi,ở đây dùng timer ở chế độ định thì,không phải là chế độ counter
nên bạn phải set T0CS = 0 ,thì mới dùng được Fosc/4.chương trình của bạn là lại set T0SE,tức là xung ngoài vào nên timer không chạy. còn ct dưới bạn dùng ccs thì nó đã set up timer0 giùm bạn rồi!! mình sửa lại ct cho bạn Code:
// MCU : 16f877a // XTAL : 4MHz // Connection: A led is connected to RD0. // Desctiption: Timer0 has overflowed: the led will blink after every 1 second. #include <htc.h> __CONFIG(XT & WDTDIS & LVPDIS & DEBUGDIS); #define _XTAL_FREQ 4000000 unsigned char count=0; //Ham main ******************************* void main(void) { ANSEL=0x00; ANSELH=0x00; TRISD=0x00; PORTD=0x00; T0CS=0; //USE INTERNAL CLOCK không phải T0SE PSA=0; //USE PRESCALER PS2=0; PS1=1; PS0=1; //1:16 T0IF=0; //Clear int flag T0IE=1; //Enable tmr0 int GIE=1; //Enable glb int TMR0=0x06; //TMR0 init while(1){}; //Waiting for int, so we dont do anything } void interrupt isr(){ if(T0IE && T0IF){ //Check if int flag is set ++count; if(count==250){ //250*1us*(256-6)*16=1s RD0^=1; //Blink the led count=0; } T0IF=0; TMR0=0x06; } }
__________________
Chỉ sợ thiếu tiền...... |
|
|