em đang tập lập trình cho pic 16f887, khi em thử lập trình timer1 với code như sau thì thấy thời gian chạy không đúng với tính toán:
#include <htc.h>
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
__CONFIG(BOR4V_BOR21V); //2st config. Word
#define _XTAL_FREQ 4000000 //Crystal frequency
//******************************
int i1=10;
//******************************
void port_init()
{
ANSEL=0;
ANSELH=0;
TRISC=0;
PORTC=0x00;
}
//*******************************
void interrupt isr()
{
if(TMR1IE&&TMR1IF)
{ i1--;
if(i1==0)
{
RC1^=1;
i1=10;
}
TMR1IF=0;
}
}
//*******************************
void timer1_init()
{
GIE=1;
PEIE=1;
TMR1IE=1;
TMR1IF=0;
TMR1CS=0;
TMR1H=0;
TMR1L=0;
T1CKPS1=0;
T1CKPS0=0;
T1SYNC =1;
TMR1ON=1;
}
//*******************************
void main()
{
port_init();
timer1_init();
while(1);
}
--------------------------------------
nếu theo như code em viết thì TMR1 đếm khoàng 65000 rồi nhân với 10 lần là khoảng 650 000 us , nhưng khi chạy thực tế trên phần cứng lại khoảng 12 s. Em không hiểu tại sao lại như vậy nữa ? Mong các anh chị nào biết giải thích giúp em! em xin cảm ơn !
#include <htc.h>
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
__CONFIG(BOR4V_BOR21V); //2st config. Word
#define _XTAL_FREQ 4000000 //Crystal frequency
//******************************
int i1=10;
//******************************
void port_init()
{
ANSEL=0;
ANSELH=0;
TRISC=0;
PORTC=0x00;
}
//*******************************
void interrupt isr()
{
if(TMR1IE&&TMR1IF)
{ i1--;
if(i1==0)
{
RC1^=1;
i1=10;
}
TMR1IF=0;
}
}
//*******************************
void timer1_init()
{
GIE=1;
PEIE=1;
TMR1IE=1;
TMR1IF=0;
TMR1CS=0;
TMR1H=0;
TMR1L=0;
T1CKPS1=0;
T1CKPS0=0;
T1SYNC =1;
TMR1ON=1;
}
//*******************************
void main()
{
port_init();
timer1_init();
while(1);
}
--------------------------------------
nếu theo như code em viết thì TMR1 đếm khoàng 65000 rồi nhân với 10 lần là khoảng 650 000 us , nhưng khi chạy thực tế trên phần cứng lại khoảng 12 s. Em không hiểu tại sao lại như vậy nữa ? Mong các anh chị nào biết giải thích giúp em! em xin cảm ơn !