求大神帮忙看看 没法实现
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^7;
sbit k2=P3^6;
sbit k3=P3^5;
sbit k4=P3^4;
sbit k=P3^3;
uchar code table[]={0x82,0xdb,0x2a,0x26,0x47,0x17,0x12,0xa7,0x02,0x06};
uint miao=0; //秒
uint fen=0; //分
uint shi=0; //时
uint n=0; //计数
uint date[4]={0,0,0,0}; //定义一个有4个地址的数组,分别存分,秒的个位和十位。
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=50;y>0;y--);
}
void shu(uint n)
{
P2=table[n];
}
void display()
{
shu(date[3]);
P2=0xff;
k1=0;
delay(1);
shu(date[2]);
P2=0xff;
k2=0;
delay(1);
shu(date[1]);
P2=0xff;
k3=0;
delay(1);
shu(date[0]);
P2=0xff;
k4=0;
delay(1);
}
void time() //定时器初始化函数
{
TMOD=0x02; //选择方式2
TH0=156; //重装初值为156
TL0=156; //运行值为156
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //开定时器0
}
void timer() //定时器0中断
{
n++;
if(n==10000) //当n=10000时,表示1s到了
{
n=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==12)
{
shi=0;
}
}
}
date[0]=miao%10;
date[1]=miao/10;
date[2]=fen%10;
date[3]=fen/10;
date[4]=shi%10;
date[5]=shi/10;
}
}
main()
{
time();
while(1)
{
display();
}
}
|