一个简单的一秒加一显示在数码管上的程序 我有定时器写的但时是显示始终是0000;

2019-07-15 12:52发布

变量好像么有用处。请问问题出现哪里
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void display(uint);
void delay(uint);
void num();
uint count;
void main()
{
        TMOD = 0x01;
        TH0 = (65535-46080)/256;//50ms
        TL0 = (65535-46080)%256;
        TR0 = 1;
        while(1)
        {
        num();
        display(count);
        }

}
void display(uint count)
{
        P1 = 0xfe;
        P0 = table[count/1000];
        delay(5);
        P1 = 0xff;
        delay(5);
       
        P1 = 0xfd;
        P0 = table[count/100%10];
        delay(5);
        P1 = 0xff;
        delay(5);
       
        P1 = 0xfb;
        P0 = table[count/10%10];
        delay(5);
        P0 = 0xff;
        delay(5);
       
        P1 = 0xf7;
        P0 = table[count%10];
        delay(5);
        P1 = 0xff;
        delay(5);
}
void num()
{
        uint i;
        if(TF0 == 1)
        {
                TF0 = 0;
                TH0 = (65535-46080)/256;//50ms
                TL0 = (65535-46080)%256;
                i++;
                if(i == 20)
                        {
                                i = 0;
                                count++;       
                        }
        }
}
void delay(uint z)
{
        uint x,y;
        for(x = z;x>0;x--)
                for(y = 110;y>0;y--);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
@曲终人散@
1楼-- · 2019-07-15 14:58
 精彩回答 2  元偷偷看……
HARRY007
2楼-- · 2019-07-15 17:43
定时器驱动代码不完整,少了一些配置
v'
3楼-- · 2019-07-15 23:00
你那个count 值有没有返回回去?
sunzewen
4楼-- · 2019-07-16 01:35
void display(uint count)  count你换一个名字 比如 Num ,Num = Count ,试试
sunzewen
5楼-- · 2019-07-16 03:29
void num()
{
        uint i;
        if(TF0 == 1)
        i 前面加 static  或者 改成全局 变量 这样就不会 每次进入 都初始化 为0  后面的根本就加不到20 count也不会加
in2004
6楼-- · 2019-07-16 04:13
 精彩回答 2  元偷偷看……

一周热门 更多>