sbit P3_5 =P3^5
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00}
unsigned char second
unsigned char keycnt
unsigned int tcnt
void main(void)
{
unsigned char i,j
TMOD=0x02
ET0=1
EA=1
second=0
P1=dispcode[second/10]
P2=dispcode[second%10]
while(1)
{
if(P3_5==0)
{
for(i=20i>0i--)
for(j=248j>0j--)
if(P3_5==0)
{
keycnt++
switch(keycnt)
{
case 1:
TH0=0x06
TL0=0x06
TR0=1
break
case 2:
TR0=0
break
case 3:
keycnt=0
second=0
P1=dispcode[second/10]
P2=dispcode[second%10]
break
}
while(P3_5==0)
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++
if(tcnt==4000)
{
tcnt=0
second++
if(second==100)
{
second=0
}
P1=dispcode[second/10]
P2=dispcode[second%10]
}
}
1、定义计时器变量,包括小时、分钟和秒钟三个变量,初始值均为0。2、在程序中设置一个定时器,每隔1秒钟触发一次中断。
3、在中断服务程序中,将秒钟变量加1,如果秒钟变量达到60,则将秒钟变量清零,并将分钟变量加1;如果分钟变量达到60,则将分钟变量清零,并将小时变量加1;如果小时变量达到12,则将小时变量清零。
4、在程序中可以通过LCD显示屏等外设显示当前的计时器数值。不同的单片机型号和开发环境会有所不同,具体实现方法需要根据具体情况进行调整。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)