找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么实现不了单片机倒计时呢,是哪里错了,还是思路就错了吗?求指点

[复制链接]
跳转到指定楼层
楼主

#include <reg52.h>
LED_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
disbuf[]={0x01,0x02};
unsigned char m;
void delay(unsigned char time)
{
  unsigned char i;
  int j=0;
  for(i=time;i>0;i--)
   for(j=0;j<125;j++);
}
break_() interrupt 3
{
        delay(1);
        m=m-1;
}
void main()
{
        int j=0;
        TMOD=0x20;
        EA=1;
        ET1=1;
        TR1=1;
        TH1=0x1a;
        TL1=0x1a;
        m=99;
        while(1)
{
        if(j==0)
        {
                P1=disbuf[j];
                P2=LED_[m%10];
                delay(10);
                j=1;
        }
        else
        {
                P1=disbuf[j];
                P2=LED_[m/10];
                delay(10);
                j=0;
        }
}               
}


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

使用道具 举报

沙发
ID:213173 发表于 2019-5-6 21:25 | 只看该作者
1.位码错误     2.中断函数计数变量m计量单位只有250us,要换算成秒来显示。int j=0;数据类型使用的不恰当





  1. #include <reg52.h>
  2. LED_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. disbuf[]={0xfe,0xfd};
  4. char m;
  5. unsigned int n;
  6. void delay(unsigned char time)
  7. {
  8.         unsigned char i;
  9.         int j=0;
  10.         for(i=time;i>0;i--)
  11.                 for(j=0;j<125;j++);
  12. }
  13. break_() interrupt 3
  14. {
  15. //        delay(1);
  16.         n++;
  17.         if(n>=4000)
  18.         {
  19.                 n=0;
  20.                 m--;
  21.                 if(m<0)
  22.                 m=99;
  23.         }
  24. }
  25. void main()
  26. {
  27.         int j=0;
  28.         TMOD=0x20;
  29.         EA=1;
  30.         ET1=1;
  31.         TR1=1;
  32.         TH1=0x1a;
  33.         TL1=0x1a;
  34.         m=99;
  35.         while(1)
  36.         {
  37.                 if(j==0)
  38.                 {
  39.                         P1=disbuf[j];
  40.                         P2=LED_[m%10];
  41.                         delay(10);
  42.                         j=1;
  43.                 }
  44.                 else
  45.                 {
  46.                         P1=disbuf[j];
  47.                         P2=LED_[m/10];
  48.                         delay(10);
  49.                         j=0;
  50.                 }
  51.         }               
  52. }
复制代码



回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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