求大侠指点,看看我那程序的毛病,数码管只显示0;
#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;
dul=0;
P0=0xff;
wel=1;
P0=0xfd;
wel=0;
delay(100);
dul=1;
P0=table;
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;
} TR0=0,这句,应该定时器没有启动,
delay(1000),超出uchar的长度了。 究竟用Timer0还是Timer1? 回复【4楼】lcw_swust 小李飞刀
-----------------------------------------------------------------------
回复【3楼】superAFE
-----------------------------------------------------------------------
首先非常感谢啊将TR0=0是不是使得定时器无法启动从而无法进入中断 是吧;再则关于实参范围的限制是应为类型是 unsigned char吧改为unsigned int 就ok了?还有我本想在主函数里调用显示值函数的发现不行 不知道是什么原因 还有在按前辈修改的程序后 发现各位显示很不稳定 是延时的问题吗?回复【3楼】superAFE
-----------------------------------------------------------------------
页:
[1]