打印

初学求教。显示中断计数

[复制链接]
1644|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdjmlj|  楼主 | 2011-3-8 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
计算中断脉冲不准确,且显示的数值会自动回零。望高手指教。
void int0_a(void)interrupt 0
{
EX0=0;
b++;
EX0=1;
}
void disp(void)
{
  for(c=2;c>=0;c--)
    {
  SBUF=TAB[sz[c]];
  while(!TI);
  TI=0;
}
}
void t1in(void)interrupt 3
{

     TH1=0Xfd;
     TL1=0Xe8;
   bw=sz[0]=b/100;
  sw=sz[1]=b/10%10;
  gw=sz[2]=b%10;
      disp();
}

相关帖子

沙发
心静自然凉| | 2011-3-9 08:55 | 只看该作者
像你这样的小程序,尽量不要用到多中断
涉及到多中断,要注意到优先级的问题,你觉得这里到底是“记脉冲”比较重要呢还是“算脉冲”比较重要?不难想到,“记脉冲”也就是你的中断0比较重要,要设置成高优先级。另外,你中断3里面做的事情太多,假设还没退出中断程序时来了脉冲,无法进入中断0,怎么,“记脉冲”?disp()最好放在主程序。
技术为零有可能是你的变量b的数据类型为unsigned char型,只能记256个。

使用特权

评论回复
板凳
gdjmlj|  楼主 | 2011-3-9 21:02 | 只看该作者
外中断0本来就是最高优先级,还要设置吗?变量B是整型,它计数不管多少停一会都会清0。
请教2楼:不用中断计数用什么更好。

使用特权

评论回复
地板
gdjmlj|  楼主 | 2011-3-9 22:25 | 只看该作者
多谢2楼的指点。设置优先级后计数不会出错了,清0的问题原来是狗的问题,现已解决。

使用特权

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

本版积分规则

13

主题

49

帖子

0

粉丝