打印

LCD与中断冲突问题

[复制链接]
2415|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyuejian|  楼主 | 2013-1-3 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Display(int m_int)
{
char fuck[7];
itoa(&fuck,m_int,10);
Display_char(1,4,&fuck);
}

main(void)
{
Time2Inital();
INTIntial();
i=0;
TRISA7=0;RA7=0;

temp=122;
  LCD_init();
Display(temp);
while(1)
{
  Display(temp);
}
}
void interrupt Timer(void)
{  
if(TMR2IF==1)
{
  TMR2IE=0;
  TMR2IF=0;
  i++;
  if(i>=45)
  {
   i=0;
   RA7=!RA7;//256分频定时3秒
   temp++;
  }
  TMR2IE=1;
}
}
执行结果:
LCD在启动时刻可以显示122,但是一到定时时间,LCD就停止工作了,定时器能正常工作。试了各种中断源,TIMR0,TIMR1,TIMR2,INT都一样。我用的是PIC16F628A单片机。劳烦大家指点!



沙发
chenyuejian|  楼主 | 2013-1-3 17:13 | 只看该作者
LCD用的是Nokia5110

使用特权

评论回复
板凳
程序会不会| | 2013-1-3 18:52 | 只看该作者
RA7=!RA7;//256分频定时3秒,,感觉应该是这句的问题,好好检查这句

使用特权

评论回复
地板
chenyuejian|  楼主 | 2013-1-3 19:49 | 只看该作者
程序会不会 发表于 2013-1-3 18:52
RA7=!RA7;//256分频定时3秒,,感觉应该是这句的问题,好好检查这句

真的是这句的问题,我先好好检查看是什么原因。感谢高手神人!

使用特权

评论回复
5
yewuyi| | 2013-1-4 09:53 | 只看该作者
中断函数有一些不妥当的地方:
void interrupt Timer(void)
{  
if(TMR2IF==1)//建议写成:if(TMR2IF&&TMR2IE)
{
  TMR2IE=0;//不建议做这个操作
  TMR2IF=0;
  i++;
  if(i>=45)
  {
   i=0;
   RA7=!RA7;//256分频定时3秒          //如果想取反尽量写成RA7=~RA7;
   temp++;
  }
  TMR2IE=1;//不建议做这些操作
}
}


其他代码就不看了。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
chenyuejian + 1 赞一个!
6
chenyuejian|  楼主 | 2013-1-4 11:44 | 只看该作者
yewuyi 发表于 2013-1-4 09:53
中断函数有一些不妥当的地方:
void interrupt Timer(void)
{  

非常感谢!:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

45

帖子

1

粉丝