
单片机程序
lowry-21天习惯
2023年3月19日发(作者:博努奇)--
可修编-
#include
#include
sbitP32=P3^2;
sbitP23=P2^3;
sbitP22=P2^2;
sbitP21=P2^1;
sbitP20=P2^0;
unsignedcharx;
unsignedcharDisBuf[8]={0,0,0,0,0,0,0,0};
unsignedcharDisBuf1[8]={0,0,0,0,0,0,0,0};
codeunsignedcharTab[10]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09};
unsignedchartimer0_count1=0,t1=0;
//unsignedchartimer0_count3=0,t3=0;
unsignedchartimer0_count2=0;
unsignedcharSecond=0,Minute=0;
unsignedintYear=17;
unsignedintMonth=01;
unsignedintDay=02;
unsignedintHour=14;
unsignedchara1=0;
unsignedintmond=1;//显示模式
unsignedinta=9;//倒计时初试时间
unsignedintb=60;
voidmDelay(unsignedintdelay)
{
unsignedchari;
for(;delay>0;delay--)
{
for(i=0;i<124;i++)
{
_nop_();
_nop_();
_nop_();
}
}
}
voidtimer0(void)interrupt1
{
TH0=0xfc;TL0=0x66;
timer0_count2++;
if(timer0_count2>1000)
{
P32=!P32;
--
可修编-
timer0_count2=0;
if(mond==4)
{
b--;
if(b<1)
{
b=60;
a--;
}
if(a==0&b==0)
{
mond=5;
}
}
Second++;
if(Second>59)
{
Second=0;
Minute++;
if(Minute>59)
{
Minute=0;
Hour++;
if(Hour>24)
{
Hour=0;
Day++;
if(Day>30)
{
Day=0;
Month++;
if(Month>12)
{
Month=0;
Year++;
}
}
}
}
}
DisBuf[0]=Minute/10;
DisBuf[1]=Minute%10;
DisBuf[2]=Second/10;
DisBuf[3]=Second%10;
--
可修编-
DisBuf[4]=Day/10;
DisBuf[5]=Day%10;
DisBuf[6]=Hour/10;
DisBuf[7]=Hour%10;
DisBuf1[0]=Year/10;
DisBuf1[1]=Year%10;
DisBuf1[2]=Month/10;
DisBuf1[3]=Month%10;
DisBuf1[4]=a/10;
DisBuf1[5]=a%10;
DisBuf1[6]=b/10;
DisBuf1[7]=b%10;
}
if(mond==1)//分秒显示
{
timer0_count1++;
if(timer0_count1>5)
{
timer0_count1=0;
t1++;
if(t1>3)t1=0;
switch(t1)
{
case0:P0=Tab[DisBuf[0]];
P2=P2|0x80;P2=P2&0x8f;
break;
case1:P0=Tab[DisBuf[1]];
P2=P2|0x40;P2=P2&0x4f;
break;
case2:P0=Tab[DisBuf[2]];
P2=P2|0x20;P2=P2&0x2f;
break;
case3:P0=Tab[DisBuf[3]];
P2=P2|0x10;P2=P2&0x1f;
break;
default:break;
}
}
}
else
{
if(mond==2)//天时显示
--
可修编-
{
timer0_count1++;
if(timer0_count1>5)
{
timer0_count1=0;
t1++;
if(t1>3)t1=0;
switch(t1)
{
case0:P0=Tab[DisBuf[4]];
P2=P2|0x80;P2=P2&0x8f;
break;
case1:P0=Tab[DisBuf[5]];
P2=P2|0x40;P2=P2&0x4f;
break;
case2:P0=Tab[DisBuf[6]];
P2=P2|0x20;P2=P2&0x2f;
break;
case3:P0=Tab[DisBuf[7]];
P2=P2|0x10;P2=P2&0x1f;
break;
default:break;
}
}
}
else
{
if(mond==3)//年月显示
{
timer0_count1++;
if(timer0_count1>5)
{
timer0_count1=0;
t1++;
if(t1>3)t1=0;
switch(t1)
{
case0:P0=Tab[DisBuf1[0]];
P2=P2|0x80;P2=P2&0x8f;
break;
case1:P0=Tab[DisBuf1[1]];
P2=P2|0x40;P2=P2&0x4f;
break;
case2:P0=Tab[DisBuf1[2]];
--
可修编-
P2=P2|0x20;P2=P2&0x2f;
break;
case3:P0=Tab[DisBuf1[3]];
P2=P2|0x10;P2=P2&0x1f;
break;
default:break;
}
}
}
else
{
if(mond==4)//倒计时
{
timer0_count1++;
if(timer0_count1>5)
{
timer0_count1=0;
t1++;
if(t1>3)t1=0;
switch(t1)
{
case0:P0=Tab[DisBuf1[4]];
P2=P2|0x80;P2=P2&0x8f;
break;
case1:P0=Tab[DisBuf1[5]];
P2=P2|0x40;P2=P2&0x4f;
break;
case2:P0=Tab[DisBuf1[6]];
P2=P2|0x20;P2=P2&0x2f;
break;
case3:P0=Tab[DisBuf1[7]];
P2=P2|0x10;P2=P2&0x1f;
break;
default:break;
}
}
}
}
}
}
}
voidmain()
{
unsignedcharKeynumber=0,Keytemp=0;
--
可修编-
TMOD=0x01;
TH0=0xfc;TL0=0x66;
TR0=1;
IE=0x82;
while(1)
{
P1&=0x0f;
if((P2&0x0f)!=0x0f)//有键按下
{
mDelay(5);
if(!P23)
{
P1&=0x7f;P1|=0x70;
if(!P23)Keynumber=1;
else
{
P1&=0xbf;P1|=0xb0;
if(!P23)Keynumber=2;
else
{
P1&=0xdf;P1|=0xd0;
if(!P23)Keynumber=3;
else
{
P1&=0xef;P1|=0xe0;
if(!P23)Keynumber=4;
elseKeynumber=20;
}
}
}
}
elseif(!P22)
{
P1&=0x7f;P1|=0x70;
if(!P22)Keynumber=5;
else
{
P1&=0xbf;P1|=0xb0;
if(!P22)Keynumber=6;
--
可修编-
else
{
P1&=0xdf;P1|=0xd0;
if(!P22)Keynumber=7;
else
{
P1&=0xef;P1|=0xe0;
if(!P22)Keynumber=8;
elseKeynumber=20;
}
}
}
}
elseif(!P21)
{
P1&=0x7f;P1|=0x70;
if(!P21)Keynumber=9;
else
{
P1&=0xbf;P1|=0xb0;
if(!P21)Keynumber=10;
else
{
P1&=0xdf;P1|=0xd0;
if(!P21)Keynumber=11;
else
{
P1&=0xef;P1|=0xe0;
if(!P21)Keynumber=12;
elseKeynumber=20;
}
}
}
}
elseif(!P20)
{
P1&=0x7f;P1|=0x70;
if(!P20)Keynumber=13;
else
{
--
可修编-
P1&=0xbf;P1|=0xb0;
if(!P20)Keynumber=14;
else
{
P1&=0xdf;P1|=0xd0;
if(!P20)Keynumber=15;
else
{
P1&=0xef;P1|=0xe0;
if(!P20)Keynumber=16;
elseKeynumber=0;
}
}
}
}
elseKeynumber=0;
}
else{Keynumber=Keytemp;}//无键按下
if(Keynumber!=Keytemp)
{
Keytemp=Keynumber;
switch(Keynumber)
{
}
}
}
}