单片机时钟程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<at89x52.h>
sbit LED_0=P1^3;
sbit LED_1=P1^2;
sbit LED_2=P1^1;
sbit LED_3=P1^0;
sbit sound=P3^4;
void delay(void);
void delay1(void);
void change(void);
void change1(void);
unsigned char a,b,c,d,e,f,i,j,k,l,m;
void display(unsigned char a,unsigned char b,unsigned char c,unsigned char d);
unsigned char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82}; void changetimer(void) interrupt 3
{
TL1=0xf0;
TH1=0xd8;
if(b!=1)
display(m,l,k,i);
else
display(c,d,e,f);
}
void timer(void) interrupt 1
{
TH0=0xee;
j++;
if(j==200)
{
j=0;
i++;
if(i==10)
{
i=0;
k++;
if(k==6)
{
k=0;
l++;
if(l==10)
{
l=0;
m++;
if(m==6)
{
m=0;
}
}
}
}
}
if(b!=1)
{
display(m,l,k,i);
if(c==m&&d==l&&e==k&&i==f)
{
sound=0;
delay();
sound=1;
}
}
}
void main()
{
TMOD=0x11;
TL0=0x78;
TH0=0xec;
TL1=0xf0;
TH1=0xd8;
EA=1;
ET0=1;
ET1=1;
TR0=1;
c=3;
d=0;
while(1)
{
if(P2==0xfe)
{
change();
a=0;
}
}
}
void display(unsigned char a,unsigned char b,unsigned char c,unsigned char d) {
P0=num[a];
LED_3=0; delay();
LED_3=1;
P0=num[b]; LED_2=0; delay();
LED_2=1;
P0=num[c]; LED_1=0; delay();
LED_1=1;
P0=num[d]; LED_0=0; delay();
LED_0=1;
}
void change(void) {
TR0=0;
TR1=1;
while(1)
{
if(P2==0xfd)
{
i++;
if(i==10)
{
k++;
i=0;
if(k==6)
{
k=0;
}
}
}
if(P2==0xfb)
{
l++;
if(l==10)
{
m++;
l=0;
if(m==6)
{
m=0;
}
}
}
delay1();
if(P2==0xf7)
break;
}
change1();
b=0;
TR0=1;
TR1=0;
}
void change1(void) {
b=1;
TR0=0;
TR1=1;
while(1)
{
if(P2==0xfd)
{
f++;
if(f==10)
{
e++;
f=0;
if(e==6)
{
e=0;
}
}
}
if(P2==0xfb)
{
d++;
if(d==10)
{
c++;
d=0;
if(c==6)
{
c=0;
}
}
}
delay1();
if(P2==0xf7)
break;
}
TR0=1;
TR1=0;
}
void delay(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--); }
void delay1(void)
{
unsigned char a,b,c;
for(c=2;c>0;c--)
for(b=95;b>0;b--)
for(a=209;a>0;a--); }