📄 dzz.c
字号:
#include "reg51.h"
#include "stdio.h"
#define uint unsigned int
#define uchar unsigned char
uchar data second=0,minute=0,hour=0;
uchar data disbuf[6]={0};
//uchar data second_0,second_1,minute_0,minute_1,hour_0,hour_1;
uchar bdata FLAG=0;
sbit H_M=FLAG^1;
sbit P1_0=P1^0;
sbit P3_2=P3^2;
uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar data count=0;
//定时器0的中断服务程序
void timer0(void) interrupt 1 using 1
{TH0=-50000/256;
TL0=-50000%256;
count++;
if(count==20)
{count=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;}
}
}
}
return;
}
void dlms(void)
{uchar i;
for(i=2000;i>0;i--){}
}
//外部中断0的中断服务程序
void int0(void) interrupt 0 using 2
{while(!P3_2)
{ dlms();
}
dlms();
if(P3_2)
H_M=!H_M;
}
//显示程序
void disp(void)
{uchar i,j;
uchar bdata sel;
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[2]=minute%10;
disbuf[3]=minute/10;
disbuf[4]=hour%10;
disbuf[5]=hour/10;
P2=0XFF;
sel=0x01;
for(i=0;i<6;i++)
{j=disbuf[i];
P2=(sel^0xff);
P0=table[j];
dlms();
P2=0XFF;
sel=sel<<1;
}
}
void increa(void)
{if(H_M)
{hour++;
if(hour==24)
{hour=0;
disbuf[4]=0;
disbuf[5]=0;
}
}
else
{minute++;
if(minute==60)
{minute=0;
disbuf[2]=0;
disbuf[3]=0;
}
}
}
main( )
{TCON=0x01;
TMOD=0x01;
TH0=-50000/256;
TL0=-50000%256;
EA=1;
ET0=1;
EX0=1;
TR0=1;
while(1)
{disp();
if(!P1_0)
{while(!P1_0)
dlms();
if(P1_0)
increa();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -