英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3194|回复: 0
打印 上一主题 下一主题

关于定时器中断的问题

[复制链接]
跳转到指定楼层
1#
发表于 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[k])/256;
TMR0L=(65536-sound_tab[k])%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[k])/256;
TMR0L=(65536-sound_tab[k])%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[k];
  delay(10);
}                             
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 01:14 , Processed in 0.051399 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表