hauceuit
20-04-2013, 09:14 PM
Mình muốn dùng interrupt timer0 để tạo delay 1 giây , sau 1 giây thì sẽ đảo port RB1,nhưng mình gặp vấn đề ở chỗ dường như nó không ngắt sau 1 giây, mình cũng ko hiểu code mình sai ở đâu nữa , mong các bạn xem giúp
#include<htc.h>
__CONFIG(XT & WDTDIS & PWRTEN & UNPROTECT & LVPDIS & DEBUGDIS);
#define _XTAL_FREQ 4000000
void init_port()
{
//ANSEL=0;
//ANSELH=0;
TRISB1=0;
RB1=0;
}
void init_timer()
{
T0CS=0;
PSA=0;
PS2=1;
PS1=1;
PS0=1;
TMR0=0;
}
void main()
{
init_port();
init_timer();
GIE=1;
T0IF=0;
T0IE=1;
while(1){}
}
void interrupt isr()
{
int unsigned count=0;
if(T0IF)
{
++count;
if(count>=15)
{RB1^=1;count=0;}
T0IF=0;
TMR0=0;
}
}
nếu không dùng biến count thì có thể ngắt được, nhưng mình muốn nó thực hiện sau 1 giây , và các bạn cho mình hỏi lun tại sao mình dùng dùng 2 thanh ghi ANSEL và ANSELH thì nó báo lỗi undefine zay
#include<htc.h>
__CONFIG(XT & WDTDIS & PWRTEN & UNPROTECT & LVPDIS & DEBUGDIS);
#define _XTAL_FREQ 4000000
void init_port()
{
//ANSEL=0;
//ANSELH=0;
TRISB1=0;
RB1=0;
}
void init_timer()
{
T0CS=0;
PSA=0;
PS2=1;
PS1=1;
PS0=1;
TMR0=0;
}
void main()
{
init_port();
init_timer();
GIE=1;
T0IF=0;
T0IE=1;
while(1){}
}
void interrupt isr()
{
int unsigned count=0;
if(T0IF)
{
++count;
if(count>=15)
{RB1^=1;count=0;}
T0IF=0;
TMR0=0;
}
}
nếu không dùng biến count thì có thể ngắt được, nhưng mình muốn nó thực hiện sau 1 giây , và các bạn cho mình hỏi lun tại sao mình dùng dùng 2 thanh ghi ANSEL và ANSELH thì nó báo lỗi undefine zay