麻烦大家帮忙看看,有没有哪里搞错了。
最大值应该是999才对啊,怎么到200就清零了?
程序如下:
/*以0.01s计数,在数码管上显示,最大测量值999*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//显示段码//
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20};//位编码//
delay(uchar);
display(uchar);
uchar a,b,c,d,n;
void main()//主函数
{
EA=1;//10ms定时
ET0=1;
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
n=0;
while(n<1000) //最大计数999
{
display(n);
}
}
void ds() interrupt 1 using 1//定时子函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
n++;
}
display(uchar n)//显示子函数
{
P3=0x00; //个位显示
P2=table[n%10];
P3=wei[5];
delay(50);
d=n/10; //求高两位
P3=0x00; //十位显示
P2=table[d%10];
P3=wei[4];
delay(50);
P3=0x00; //百位显示
P2=table[d/10];
P3=wei[3];
delay(50);
}
delay(uchar c) //延时子函数
{
for(a=c;a>0;a--)
for(b=100;b>0;b--);
} |