|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
05-07-2012, 11:58 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Feb 2012
Bài gửi: 5
: |
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 ! |
|
|