lucky 发表于 2012-8-20 15:34:21

关于定时器中断的问题

初学pic,采用p18f45k20单片机,中间用到了定时器0定时中断,中断开启由开关决定,但是按了开关之后RE0始终为零。请各位帮忙看看有关程序有没有错。
void timer0_init(void)
{
RCONbits.IPEN=1;
INTCONbits.GIE=0;
                                          
T0CON=0x01;               
TMR0H=(65536-sound_tab)/256;
TMR0L=(65536-sound_tab)%256;
INTCONbits.TMR0IF=0;
INTCONbits.TMR0IE=1;
INTCONbits.GIE=1;         
}
/*************中断入口**************/
#pragma code high_vector=0x08
void high_vector(void)
{
            

_asm
   goto timer0
_endasm

}
#pragma code
#pragma interrupt timer0
void timer0(void)
{ if(INTCONbits.TMR0IF==1)
{
INTCONbits.TMR0IF=0;         
RE0=~RE0;            
TMR0H=(65536-sound_tab)/256;
TMR0L=(65536-sound_tab)%256;
}
}

void main(void)
{
TRISB=0xFF;                                             
TRISC=0x00;   
PORTC=0x00;            
TRISD=0x00;         
PORTD=0x3f;            
ANSEL=0x00;         
TRISEbits.TRISE0=0;
RE0=1;
while(1)
{
k=keyscan();
timer0_init();
if(k == 0)
T0CONbits.TMR0ON=0;
else
T0CONbits.TMR0ON=1;
PORTD=led_code;
delay(10);
}                           
}
页: [1]
查看完整版本: 关于定时器中断的问题