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;
}
}