AT89C51电子时钟按键问题
2012年12月06日 17:14 发布者:loveqloveq
实现电子时钟的功能,并可以通过按键调时间#include
unsigned char i=20,led0=0,led1=0,led2=0,led3=0,led4=0,led5=0,sec=0,min=0,min1=0,min2=0,hour1=0,hour2,hour=0;unsigned char display={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};
void delay(unsigned char x) //延时函数程序
{
unsigned char k;
while(x--)
for(k=0;k<125;k++)
{}
}
void button()
{
switch(P0) //BUTTON
{
case 0xfe:P2=0xfc; P1=led2; delay(1); //led2 min1
min1++;
if(min1==10)
{
min1=0;
}
led2=display; break;
case 0xfd: P2=0xfb; P1=led3; delay(1); //led3 min2
min2++;
if(min2==10)
{
min2=0;
}
led3=display; break;
case 0xfb: P2=0xf9; P1=led4; delay(1); //led4 hour1
hour1++;
if(hour1==2)
{
hour1=0;
}
led4=display; break;
case 0xf7: P2=0xf8; P1=led5; delay(1); //led5 hour2
hour2++;
if(hour2==10)
{
hour2=0;
}
led5=display; break;
} }
void main( ) //主函数
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
while(1) //74LS138选址
{
button();
P2=0xff; P1=led0; delay(1);
P2=0xfe; P1=led1; delay(1);
P2=0xfc; P1=led2; delay(1);
P2=0xfb; P1=led3; delay(1);
P2=0xf9; P1=led4; delay(1);
P2=0xf8; P1=led5; delay(1);
}
}
void T0_int(void) interrupt 1 //中断程序{
TH0=0x3c;
TL0=0xb0;
i--;
if(i<=0)
{
sec++;
if(sec==60)
{
sec=0;
min++;
}
led0=display;
led1=display;
if(min==60)
{
min=0;
hour++;
}
led2=display;
led3=display;
if(hour==24)
{
hour=0;
}
led4=display;
led5=display;
i=20;
}}
网友评论
terrysun 2012年12月10日
大部分时间在执行延时程序。
大部分时间在执行延时程序。
loveqloveq 2012年12月11日
terrysun 发表于 2012-12-10 21:52 static/image/common/back.gif
大部分时间在执行延时程序。
恩恩额,现在搞定了,谢啦!!
terrysun 发表于 2012-12-10 21:52 static/image/common/back.gif
大部分时间在执行延时程序。
恩恩额,现在搞定了,谢啦!!
learn_435 2012年12月25日
又学了一点。谢谢了。
又学了一点。谢谢了。
wuweimang 2012年12月27日
学习了,谢谢
学习了,谢谢
loveqloveq 2012年12月27日
wuweimang 发表于 2012-12-27 08:47 static/image/common/back.gif
学习了,谢谢
好好努力噢噢噢噢噢噢
wuweimang 发表于 2012-12-27 08:47 static/image/common/back.gif
学习了,谢谢
好好努力噢噢噢噢噢噢
可以正常的运行,但就是按键不了,求解答