电子秒表程序仿真时到59秒后,它会闪过60再到00,为什么?

2019-07-15 16:52发布

程序仿真时到59秒后,它会闪过60再到00,为什么不是直接59然后00?谢谢!
电子秒表显示器.rar 下载积分: 积分 -1 分
40.51 KB, 下载次数: 37, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
single凌风
2019-07-16 15:42
#include<REG51.h>
unsigned char count=0;           //定义变量count
unsigned char i=0;                   //定义秒计数变量i
unsigned char highi=0;           //定义秒计数高位变量highi
unsigned led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};          //LED显示字模
void main()                        //主函数
{
  P0=0x3f;                        //数码管显示初始化
  P2=0x3f;
  TMOD=0x01;                //T0定时器方式1
  TH0=0x3c;                        //装载初值
  TL0=0xb0;
  TR0=1;                         //启动定时器
  ET0=1;                         
  EA=1;                                 //开中断
  while(1);                         //原地循环
  
}
void time0()interrupt 1           //中断函数
{
  count++;                                   //中断计数器加1
  if(count==20)                           //当中断计数器到20,即1s后,计数器清0
  {
    count=0;       
        i++;                                  //秒计数器加1
        if(i==10)                          //如果个位计数到10,十位加1,个位清0
        {
         i=0;                          
         highi++;
       
        }                                 
        if(highi==6&i==0)           //当秒表计数到60时,秒表清0
  {
           highi=0;
           i=0;          
  }
    P2=led_mod[i];                        //数码管显示低位计数值
P0=led_mod[highi];                //数码管显示高位计数值
       
  }
  TH0=0x3c;                                        //T0重载初值
  TL0=0xb0;  
}
我重新修改成这样子就可以了

一周热门 更多>