打印

单片机倒计时程序,减一下不动了

[复制链接]
650|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanglli|  楼主 | 2021-4-6 20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

单片机倒计时程序
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit wei=P3^0;
void delay(u16 i)
{
        while(i--);        
}
u16 icount,count;
u8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
               0x88,0x83,0xc6,0xa1,0x86,0x8e};
void main ()
{
      icount=0;
      count=9876;
      TMOD=0x01;
      TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      EA=1;
      ET0=1;
      TR0=1;
      P1=0x00;

        while (1)
        {
                wei=1;
                P1=0x08;
                wei=0;
                P1=table[count%10];
                delay(1000);
                wei=1;
                P1=0x04;
                wei=0;
                P1=table[count/10%10];
                delay(1000);
                wei=1;
                P1=0x02;
                wei=0;
                P1=table[count/100%10];
                delay(1000);
                wei=1;
                P1=0x01;
                wei=0;
                P1=table[count/1000];
                delay(1000);        
        }
}
void inter0()interrupt 1           
{
         TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      icount++;
      if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }        
}

使用特权

评论回复
沙发
langgq| | 2021-4-6 20:43 | 只看该作者

if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }   
把这个写到主函数 大循环中试试

使用特权

评论回复
板凳
wangzsa| | 2021-4-6 20:46 | 只看该作者

TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)               {   icount=0;            count--;               if(count==0)               {count=9999;}               }   

使用特权

评论回复
地板
zhuww| | 2021-4-6 20:48 | 只看该作者
你这么写逻辑不对 icount停不住 自加到10 然后count减 循环完了 下一个中断进来 icount继续加就是11 不满足==10的条件 count就不会减了 当然只执行一次 只有一次满足==10这个条件了

使用特权

评论回复
5
lium| | 2021-4-6 20:50 | 只看该作者
“sbit wei=P3^0;”怎么wei就一个呢?

使用特权

评论回复
6
guoyt| | 2021-4-6 20:53 | 只看该作者

if(icount==10)
              {
                icount=0; //加上这一句,否则无限止往上加。
              count--;
              if(count==0)
              {count=9999;}

使用特权

评论回复
7
hanwe| | 2021-4-6 20:54 | 只看该作者
icount无限止往上加,就不会有icount==10,count就不会变化。

使用特权

评论回复
8
pengf| | 2021-4-6 20:57 | 只看该作者
icount到10之后没有归零

使用特权

评论回复
9
yufe| | 2021-4-6 20:59 | 只看该作者
就一个数码管?是不是没有归零?

使用特权

评论回复
10
wangzsa| | 2021-4-6 21:01 | 只看该作者
程序逻辑问题,还有最好不要出现while(i--);这样的语句~

使用特权

评论回复
11
zhanglli|  楼主 | 2021-4-6 21:05 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

1016

主题

9386

帖子

1

粉丝