#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dul=P2^6;
sbit wel=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uchar ms);
void display(uchar shi,uchar ge);
uchar num,shi,ge;
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=0;
while(1)
{
P1=0xff;
delay(1000);
P1=0x00;
delay(1000);
shi=num/10;
ge=num%10;
dul=1;
P0=table[shi];
dul=0;
P0=0xff;
wel=1;
P0=0xfd;
wel=0;
delay(100);
dul=1;
P0=table[ge];
dul=0;
P0=0xff;
wel=1;
P0=0xfe;
wel=0;
delay(100);
}
}
void delay(uchar ms)
{
uchar i,j;
for (i=ms;i>0;i--)
for (j=110;j>0;j--);
}
void time1() interrupt 1
{
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
num++;
if(num==99) num=0;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
delay(1000),超出uchar的长度了。
问题2:在main调用 delay(1000)中的实参不能大于255
问题3:定时器0的中断服务函数装初值的语句写错了。
-----------------------------------------------------------------------
回复【3楼】wctmdgcd
-----------------------------------------------------------------------
首先非常感谢啊 将TR0=0是不是使得 定时器无法启动 从而无法进入中断 是吧;再则关于实参范围的限制是应为类型是 unsigned char吧 改为unsigned int 就ok了? 还有我本想在主函数里 调用显示值函数的发现不行 不知道是什么原因 还有在按前辈修改的程序后 发现各位显示很不稳定 是延时的问题吗?回复【3楼】wctmdgcd
-----------------------------------------------------------------------
一周热门 更多>