求大神幫忙看看 沒法實現
#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();
}
}
|