while(1)
{
if(t==10) //定时器
{
t=0;
temp++;
if(temp==9999)
temp=0;
}
display(temp) ; //显示任意4位数
}
这个程序中display函数写在if循环外面,能够正常执行,
但是如果下载if里面,就会出错,它将显示个位从1-9,
然后高位一直闪烁。不能像写在外面那样定住,非常疑惑,
因为,其他程序根本没有变化,但是这一句变化却会有这样的改变,不知道为什么。
希望有人解惑,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
//显示任意4位数,1-9999动态显示,定时器0设置0.5s一走,
//延时程序设置让其一直显示
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar code tableduan[]=
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0xff ,0x6f
};
uchar code tablewei[]=
{
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
void yanshi(uint);
void display(uint);
uchar qian,bai,shi,ge;
uint t=0,temp;
void main()
{
TMOD=1;
TH0=15536/256;
TL0=15536%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(t==1)
{
t=0;
temp++;
if(temp==9999)
temp=0;
}
display(temp) ; //显示任意4位数
}
}
void yanshi(uint z)
{
uint a,b;
for (a=z;a>0;a--)
for(b=120;b>0;b--);
}
void display(uint z) //任意4位
{
uint tms;
tms=5;
qian=z/1000;
bai=z%1000/100;
shi=z%1000%100/10;
ge=z%10;
wei=1;
P0=tablewei[0];
wei=0;
duan=1;
P0=tableduan[qian];
duan=0;
yanshi(tms);
wei=1;
P0=tablewei[1];
wei=0;
duan=1;
P0=tableduan[bai];
duan=0;
yanshi(tms);
wei=1;
P0=tablewei[2];
wei=0;
duan=1;
P0=tableduan[shi];
duan=0;
yanshi(tms);
wei=1;
P0=tablewei[3];
wei=0;
duan=1;
P0=tableduan[ge];
duan=0;
yanshi(tms);
}
void time0() interrupt 1
{
TH0=15536/256;
TL0=15536%256;
t++;
}
一周热门 更多>