找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5022|回复: 21
收起左侧

新手,求指导,这是一个单片机倒计时程序,但是只减一下就不动了

  [复制链接]
ID:208500 发表于 2017-6-6 18:20 | 显示全部楼层 |阅读模式
#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;}
              }        
}

回复

使用道具 举报

ID:208510 发表于 2017-6-6 18:33 | 显示全部楼层
      if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }   
把这个写到主函数 大循环中试试
回复

使用道具 举报

ID:208500 发表于 2017-6-6 20:58 | 显示全部楼层
965659478 发表于 2017-6-6 18:33
if(icount==10)
              {
              count--;

不行,我也不知道为什么
回复

使用道具 举报

ID:146949 发表于 2017-6-7 01:04 来自手机 | 显示全部楼层
    TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)               {   icount=0;            count--;               if(count==0)               {count=9999;}               }   
回复

使用道具 举报

ID:47286 发表于 2017-6-7 09:07 | 显示全部楼层
icount++;
      if(icount==10)

你这么写逻辑不对 icount停不住 自加到10 然后count减 循环完了 下一个中断进来 icount继续加就是11 不满足==10的条件 count就不会减了 当然只执行一次 只有一次满足==10这个条件了
回复

使用道具 举报

ID:7485 发表于 2017-6-7 09:30 | 显示全部楼层
“sbit wei=P3^0;”怎么wei就一个呢?就一个数码管?就让他先是一位?
回复

使用道具 举报

ID:111634 发表于 2017-6-7 09:41 | 显示全部楼层
本帖最后由 zl2168 于 2017-6-7 21:04 编辑

给你介绍一个能操作演示的案例
实例96  能预置初值的倒计时秒表
Proteus仿真一下,确认有效。
实例96 能设置初值的倒计时秒表.rar (40 KB, 下载次数: 5)
回复

使用道具 举报

ID:208689 发表于 2017-6-7 09:44 | 显示全部楼层
所有单片机程序都必须是死循环
回复

使用道具 举报

ID:7485 发表于 2017-6-7 10:08 | 显示全部楼层
if(icount==10)
              {
                icount=0; //加上这一句,否则无限止往上加。
              count--;
              if(count==0)
              {count=9999;}
回复

使用道具 举报

ID:7485 发表于 2017-6-7 10:12 | 显示全部楼层
icount无限止往上加,就不会有icount==10,count就不会变化。
回复

使用道具 举报

ID:154074 发表于 2017-6-7 11:26 | 显示全部楼层
icount到10之后没有归零
回复

使用道具 举报

ID:154074 发表于 2017-6-7 11:27 | 显示全部楼层
而且你这是每40秒才减一吧?
回复

使用道具 举报

ID:208500 发表于 2017-6-7 17:19 | 显示全部楼层
dzbj 发表于 2017-6-7 09:07
icount++;
      if(icount==10)

非常感谢
回复

使用道具 举报

ID:208500 发表于 2017-6-7 17:20 | 显示全部楼层
宫本无三四 发表于 2017-6-7 11:27
而且你这是每40秒才减一吧?

我是随便设的一个数
回复

使用道具 举报

ID:208500 发表于 2017-6-7 17:21 | 显示全部楼层
wosiyabo 发表于 2017-6-7 01:04
TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)         ...

非常感谢
回复

使用道具 举报

ID:208500 发表于 2017-6-7 18:20 | 显示全部楼层
ahshmj 发表于 2017-6-7 09:30
“sbit wei=P3^0;”怎么wei就一个呢?就一个数码管?就让他先是一位?

有锁存器
回复

使用道具 举报

ID:208962 发表于 2017-6-7 20:49 | 显示全部楼层
是不是没有归零
回复

使用道具 举报

ID:208970 发表于 2017-6-7 20:59 | 显示全部楼层
好难呀  555555
回复

使用道具 举报

ID:7485 发表于 2017-6-8 09:41 | 显示全部楼层

有锁存器你也要送出位选码呀,你不能一直不变吧?
回复

使用道具 举报

ID:182522 发表于 2017-6-8 10:26 | 显示全部楼层
程序逻辑问题,还有最好不要出现while(i--);这样的语句~
回复

使用道具 举报

ID:159139 发表于 2017-6-8 14:18 来自手机 | 显示全部楼层
计数时应加上 icount=0;否定只会一直往上加。
回复

使用道具 举报

ID:209236 发表于 2017-6-8 15:40 | 显示全部楼层
加油!!!!!·~~~
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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