标题:
单片机可调电子时钟表程序;修正bug
[打印本页]
作者:
daniu
时间:
2014-12-25 13:14
标题:
单片机可调电子时钟表程序;修正bug
#include<reg51.h>
unsigned int tt;
sbit qd=P3^3;
sbit zy=P2^1;
sbit yy=P2^2;
sbit ja=P2^3;
sbit jn=P2^0;
unsigned char code tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,0X80,0X90,0xff};
void delay(unsigned char z)
{
unsigned char x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
unsigned char zhi[6];
unsigned char i,b,k;
SCON=0;
TMOD=0x02;
EA=1;
TR0=1;
ET0=1;
TH0=18;
TL0=18;
while(1)
{
if(qd==0)
{
delay(5);
if(qd==0)
{
while(qd==0);
TR0=0;k=1;b=0;while(k)
{
if(zy==0){delay(5);if(zy==0){while(zy==0);if(b==0)b=6;b--;}}
if(yy==0){delay(5);if(yy==0){while(yy==0);b++;if(b==6)b=0;}}
if(ja==0){delay(5);if(ja==0){while(ja==0);zhi[b]++;
if(b==0&&zhi[b]==3) zhi[b]=0;
if(b==1&&zhi[b]==10) zhi[b]=0;
if(b==2&&zhi[b]==6) zhi[b]=0;
if(b==3&&zhi[b]==10) zhi[b]=0;
if(b==4&&zhi[b]==6) zhi[b]=0;
if(b==5&&zhi[b]==10) zhi[b]=0; }}
if(jn==0){delay(5);if(jn==0){while(jn==0);
if(b==0&&zhi[b]==0) zhi[b]=3;
if(b==1&&zhi[b]==0) zhi[b]=10;
if(b==2&&zhi[b]==0) zhi[b]=6;
if(b==3&&zhi[b]==0) zhi[b]=10;
if(b==4&&zhi[b]==0) zhi[b]=6;
if(b==5&&zhi[b]==0) zhi[b]=10;
zhi[b]--;}}
if(zhi[0]==2&&zhi[1]==4) zhi[1]=0;
if(zhi[0]==2&&zhi[1]==9) zhi[1]=3;
if(qd==0){delay(5);if(qd==0){while(qd==0);k=0; }}
for(i=0;i<6;i++)
{
if(b==i){ SBUF=tab[10];while(!TI);TI=0;}
else
{
SBUF=tab[zhi[ i]];
while(!TI);
TI=0;
} }
delay(100);
for(i=0;i<6;i++)
{
SBUF=tab[zhi[ i]];
while(!TI);
TI=0;
}
delay(100);
}
}
}
TR0=1;
if(tt==4000)
{
tt=0;
for(i=0;i<6;i++)
{
SBUF=tab[zhi[ i]];
while(!TI);
TI=0;
}
zhi[5]++;
if(zhi[5]==10){zhi[5]=0;zhi[4]++;
if(zhi[4]==6){zhi[4]=0;zhi[3]++;
if(zhi[3]==10){zhi[3]=0;zhi[2]++;
if(zhi[2]==6){zhi[2]=0;zhi[1]++;
if(zhi[1]==10){zhi[1]=0;zhi[0]++;}}}}}
if(zhi[0]==2&&zhi[1]==4)
{zhi[0]=0;zhi[1]=0;zhi[2]=0;zhi[3]=0;zhi[4]=0;zhi[5]=0;}
}
}
}
void timer0(void) interrupt 1 //定时器0中断服务函数
{
TH0=18;
TL0=18; //重赋定时初值
tt++; //用于记中断次数
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1