采用中断扩展方式实现1 s定时。将内存单元30H、31H、32H分别作为时、分、秒单元,每当定时1 s到时,秒单元内容加1,同时秒指示灯闪;满60 s,则分单元加1,同时分指示灯闪;满60 min,则时单元加1,同时,时指示灯闪;满24 h后将时单元清“0”,同时熄灭所有指示灯。
#include<reg52.h>
sbit P1_0=P1^0;
sbit P1_3=P1^3;
sbit P1_7=P1^7;
int i,y,a,b,o;
void delayms (unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
{
for(j=0;j<123;j++);
}
}
void timer0_() interrupt 1
{
TH0=0x3C;
TL0=0xB0;
i++;
if(i==10)
{
P1_0=~P1_0;
i=0;
y++;
if(y==60)
{
P1_3=~P1_3;
delayms(200);
P1_3=0;
y=0;
a++;
if(a==60)
{
P1_7=~P1_7;
delayms(200);
P1_7=0;
a=0;
b++;
if(b==24)
{
P1=0xFF;
}
}
}
}
}
void main()
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
TR0=1;
ET0=1;
EA=1;
i=0;
y=0;
a=0;
o=0;
b=0;
while(1);
}
版权声明:本文为qq_52679261原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。