Em mới làm quen với PIC và CCS, em viết thử 1 đoạn chương trình nhỏ với timer0 và cho mô phỏng trong proteus thì thấy kết quả không như mong muốn.
Ở đây em tạo chế độ bật tắt chân A4 sau 0,5s nhưng khi mô phỏng thì thấy thời gian này không chính xác, bị kéo dài hơn.
Không biết em làm sai chỗ nào, rất mong được mọi người chỉ giúp.
Code:
#include <16F1938.h>
#use delay(crystal=32000000)
int8 t_check;
int16 tcount;
#INT_TIMER0
//Fosc=32.000.000
//Fcy=Foso/4=8.000.000
//TCy=1/(Fcy/8)=1us
void TIMER0_isr(void)
{
set_timer0(205);//(255-205)*1=50us overflow
tcount++;
IF ( tcount >= 10000)//500ms
{
tcount = 0;
output_toggle(PIN_A4);
}
t_check=get_timer0(); //206
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8|RTCC_8_bit); //256,0 us overflow
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
while(TRUE)
{
//TODO: User Code
}
}