Mình muốn tạo thời gian trễ dùng timer1 trong pic 30f4011 dùng mplab c30.
Đoạn code mình viết như sau:
#include <p30f4011.h>
_FOSC(CSW_FSCM_OFF & FRC_PLL4); //Clock = 32 MHz
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
void init_port(){
TRISB = 0x00;
//PORTB = 0xF0;
}
void init_timer1(){
PR1 = 0xff;
TMR1 = 0;
T1CONbits.TCKPS = 1;
T1CONbits.TON = 1;
}
int main(){
init_port();
init_timer1();
while(1){
_LATB1 = 1;
while (!T1CONbits.TSIDL);
T1CONbits.TSIDL = 0;
_LATB1 = 0;
while (!T1CONbits.TSIDL);
T1CONbits.TSIDL = 0;
}
}
Khi nạp vào pic thì không chạy được như ý: thay vì đèn ở pinb1 chớp tắt liên tục thì nó lại luôn sáng. Mình không hiểu tại sao. Mong các bạn chỉ giúp.
Đoạn code mình viết như sau:
#include <p30f4011.h>
_FOSC(CSW_FSCM_OFF & FRC_PLL4); //Clock = 32 MHz
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
void init_port(){
TRISB = 0x00;
//PORTB = 0xF0;
}
void init_timer1(){
PR1 = 0xff;
TMR1 = 0;
T1CONbits.TCKPS = 1;
T1CONbits.TON = 1;
}
int main(){
init_port();
init_timer1();
while(1){
_LATB1 = 1;
while (!T1CONbits.TSIDL);
T1CONbits.TSIDL = 0;
_LATB1 = 0;
while (!T1CONbits.TSIDL);
T1CONbits.TSIDL = 0;
}
}
Khi nạp vào pic thì không chạy được như ý: thay vì đèn ở pinb1 chớp tắt liên tục thì nó lại luôn sáng. Mình không hiểu tại sao. Mong các bạn chỉ giúp.
Comment