#include<reg52.h>
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/*数码管段编码*/
int tt;
void delay(int);
void main()
{
int i;
TMOD=0x01;/*设置定时器0为工作方式1*/
TH0=(65536-50000)/256;/*赋初值*/
TL0=(65536-50000)%256;
EA=1;/*开总中断*/
ET0=1;/*开T0断*/
TR0=1;/*启动T0*/
P1=0x01;/*位选数码管*/
while(1)
{
if(tt==20)/*延时20次50ms,即1秒*/
{
tt=0;
if(i==10)
{i=0;} // 依次显示数码管0到9
P0=table[i];
i++;
delay(500);
}
}
}
void delay(int z)
{
int x,y;
for(x=200;x>0;x--)
for(y=z;y>0;y--);
}
void exter0() interrupt 1
{
TH0=(65536-50000)/256;/*重装初值*/
TL0=(65536-50000)%256;
tt++;
}
为什么有“delay(500);”时数码管一直显示0,而删去 “delay(500);”则程序正常?