|
#include<reg51.h>
#define uchar unsigned char
uchar code tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,
0X80,0X90,0xff};
sbit qd=P3^3;
sbit zy=P2^1;
sbit yy=P2^2;
sbit ja=P2^3;
sbit jn=P2^0;
sbit dd=P1^1;
uchar k=0,kk=0;tt=0,b=0,i=0,tem=25,tem1=5,tem2;
uchar z[6];
void delay(uchar x) //毫秒級延時函數
{
uchar y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar temp,uchar temp1,uchar temp2) //顯示函數
{
uchar i;
uchar z[6];
z[0]=temp/10;
z[1]=temp%10;
z[2]=temp1/10;
z[3]=temp1%10;
z[4]=temp2/10;
z[5]=temp2%10;
for(i=0;i<6;i++)
{
SBUF=tab[z[ i]]; // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
while(!TI); //判斷串口數據發送是否完畢
TI=0; //串口數據發送完畢標志清0
}
}
void main() //主函數
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;
P0=0x79;
P2=0x7f;
tem2=25;
while(1)
{
if(qd==0)
{
delay(5);
if(qd==0)
{
while(qd==0);
TR0=0;kk=1; dd=0;P0=0x6d,P2=0xdf;while(kk)
{
if(zy==0){delay(5);if(zy==0){while(zy==0);if(b==0)b=2;b--;}}
if(yy==0){delay(5);if(yy==0){while(yy==0);b++;if(b==2)b=0;}}
if(ja==0){delay(5);if(ja==0){while(ja==0);if(b==0){tem++; if(tem==100)tem=2;}
if(b==1){tem1++;if(tem1==100)tem1=1;}
}}
if(jn==0){delay(5);if(jn==0){while(jn==0);if(b==0){if(tem==2)tem=100;tem--;}
if(b==1){if(tem1==1)tem1=100;tem1--;}
}}
if(b==0)
{
z[0]=10;
z[1]=10;
z[2]=tem1/10;
z[3]=tem1%10;
z[4]=tem2/10;
z[5]=tem2%10;
for(i=0;i<6;i++)
{
SBUF=tab[z[ i]]; // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
while(!TI); //判斷串口數據發送是否完畢
TI=0; //串口數據發送完畢標志清0
}
delay(200);
display(tem,tem1,tem2);
delay(200);
}
if(b==1)
{
z[0]=tem/10;
z[1]=tem%10;
z[2]=10;
z[3]=10;
z[4]=tem2/10;
z[5]=tem2%10;
for(i=0;i<6;i++)
{
SBUF=tab[z[ i]]; // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
while(!TI); //判斷串口數據發送是否完畢
TI=0; //串口數據發送完畢標志清0
}
delay(200);
display(tem,tem1,tem2);
delay(200);
}
if(tem<tem2||tem1<tem2)tem2=2;
if(qd==0){delay(5);if(qd==0){while(qd==0);kk=0;delay(100);dd=1; }}
}
}
}
TR0=1;
if(tt==20)
{
tt=0;tem2--;
if(tem2==0&&k==0){tem2=tem1;k=1;P0=0x34;P2=0xbf;}
if(tem2==0&&k==1){tem2=tem; k=2;P0=0xcf;P2=0xcf;}
if(tem2==0&&k==2){tem2=tem1;k=3;P0=0xa6;P2=0x9f;}
if(tem2==0&&k==3){tem2=tem; k=0;P0=0x79;P2=0x7f;}
if(tem2<6){dd=0;delay(88);dd=1;delay(190);}
}
display(tem,tem1,tem2);
delay(200);
}
}
void timer0(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0;
tt++;
}
|
|