第1个回答 2010-04-23
#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int //通过定时器实现一秒定时,软件延时太麻烦(已做过实验),共阳数码管,
uchar miao,shi,ge,shu;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};//数码管段码
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1 //50ms定时器中断,进二十次就是一秒
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shu++;
if(shu==20)//进二十次就是一秒
{ shu=0;
miao++;
ge=miao%10;//转换数
shi=miao/10;//转换数
if(ge==10)
{
ge=0;
}
if(shi==6)
{
shi=0;
}
}
}
void display(uchar shi ,uchar ge)//显示子程序
{
P3=0x7f;
P0=table[ge];
delay(5);
P3=0xbf;
P0=table[shi];
delay(5);
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;//初始化定时器
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display(shi,ge);
delay(5);
}
}