找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 1431 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-5-6 16:21

正文摘要:

#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; & ...

回复

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 单片机教程网

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