第3个回答 2012-04-06
/*时钟显示0~24*/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
uchar code table[]=
{
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
};
uint a,num,num1=59,num2=23;
void delay(uint z);
void display();
void keyscan();
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1)
{
display();
}
}
void display()
{
P0=table[num%10];
P2=7;
delay(10);
P0=table[num/10];
P2=6;
delay(10);
P0=table[num1%10];
P2=4;
delay(10);
P0=table[num1/10];
P2=3;
delay(10);
P0=table[num2%10];
P2=1;
delay(10);
P0=table[num2/10];
P2=0;
delay(10);
P0=0x40;
P2=2;
delay(10);
P0=0x40;
P2=5;
delay(10);
}
void dingshi() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
a++;
if(a==20)
{
a=0;
num++;
}
if(num==60)
{
num=0;
num1++;
}
if(num1==60)
{
num1=0;
num2++;
}
if(num2==24)
{
num2=0;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;z>0;z--)
for(y=10;y>0;y--);
} 把延时加长点试试,共同学习哦,。本回答被网友采纳