找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3870|回复: 2
打印 上一主题 下一主题
收起左侧

新人求解,关于数码管倒计时问题

[复制链接]
跳转到指定楼层
楼主
程序是可以实现倒计时的,而且倒计时也基本正确,但是在复位后发现第一秒由9999到9998的时候,过了大约2s的时间,其他的都没问题,P0段选,P2位选。求各位大神解决#include <reg52.h>
unsigned char code shumaguan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned char  chushi[]={0x90,0x90,0x90,0x90};
unsigned int cnt=0;
unsigned char m=0;


void main()
{
      unsigned int i,j=10000;

     TMOD=0x01;
           TH0=0xEC;
           TL0=0x78;
           EA=1;
           ET0=1;
           TR0=1;
          
           while (1)
           {
              if (cnt==200)
                  {
                      cnt=0;
                            j--;
                            chushi[0]=shumaguan[j/1000%10];
                            chushi[1]=shumaguan[j/100%10];
                                  chushi[2]=shumaguan[j/10%10];
                                  chushi[3]=shumaguan[j%10];
                  
                  }
          
           }
}

void Tnterruptime0()interrupt 1
{
     cnt++;
     TH0=0xEC;
           TL0=0x78;
         switch(m)
         {
            case 0:P0=chushi[0];P2=~0x01;m++;break;
                  case 1:P0=chushi[1];P2=~0x02;m++;break;
                  case 2:P0=chushi[2];P2=~0x04;m++;break;
                  case 3: P0=chushi [3];P2=~0x08;m=0;break;

         }
         

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2016-6-18 08:06 | 只看该作者
本帖最后由 zl2168 于 2016-6-18 08:14 编辑

实例96  能预置初值的倒计时秒表


Proteus仿真一下,确认有效。

实例96 能设置初值的倒计时秒表.rar (40 KB, 下载次数: 7)



以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版

书中电路和程序设计有详细说明,程序语句条条有注解。



回复

使用道具 举报

板凳
ID:111634 发表于 2016-6-18 08:15 | 只看该作者
若需99.99秒,硬件电路增加一位595。软件程序增加0.01s(10ms)计数器,并修改相应计数显示程序。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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