Thông báo

Collapse
No announcement yet.

Cách khắc phục timer chạy không đúng thời gian tính toán ?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cách khắc phục timer chạy không đúng thời gian tính toán ?

    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 !

Về tác giả

Collapse

friendly_boy Tìm hiểu thêm về friendly_boy

Bài viết mới nhất

Collapse

Đang tải...
X