使用定时器和数码管实现秒表倒计时数字没有变化是什么问题?

2019-07-15 07:31发布

#include<reg52.h>
void Inittimer0(void);

unsigned int code LedChar[]={
     0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
     0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
};


void main()
{
     unsigned int sec = 0;
     while(1)
     {
         if(sec<=16)
         {
         P0=LedChar[sec];
         InitTimer0();
         sec++;
         }
         else
         {
         sec=0;
         }
     }
}


void InitTimer0(void)
{
     TMOD = 0x01;
     TH0 = 0x0FC;
     TL0 = 0x18;
     TR0 = 1;
}

为什么我的数码管一直都是停在8这个数字上没有变动?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
hucc
1楼-- · 2019-07-15 19:48

可以说的具体点吗,我个人认为应该是void InitTimer0(void)函数定义的时候漏了什么,但是就是不知道漏了什么东西,这个函数我是用单片机小精灵弄出来的。

阿信509
2楼-- · 2019-07-15 22:59
你确定时间在走?多长时间走一次嫩
7545wfs
3楼-- · 2019-07-16 01:32
没有开定时器中断和总中断
7545wfs
4楼-- · 2019-07-16 03:13
 精彩回答 2  元偷偷看……
hucc
5楼-- · 2019-07-16 05:17
如果您是问SEC在哪加一的话,SEC不是已经在一开始就初始化为0了吗,那肯定是从0开始加1
unsigned int sec = 0
如果您是问TH0在哪加一的话,TH0在0X0FC加一
TH0 = 0x0FC;

TL0 = 0x18;
这样子有什么问题吗?至于为什么没有中断那是因为我还没学到中断,现在只学到如何使用定时器而已;另外你说的"初始化函数不用调用多次",我不是很懂,能说具体的吗?拜托了!
注:我这个是单个数码管静态显示,要求使用定时器每个数延时一秒显示。
7545wfs
6楼-- · 2019-07-16 09:29
主程序改一下
void main()
{
     unsigned int sec = 0;
InitTimer0();
     while(1)
     {
         if(sec<=16)
         {
         P0=LedChar[sec];
         
         sec++;
         }
         else
         {
         sec=0;
         }
     }
}

一周热门 更多>