📄 main.c
字号:
#include <reg51.h>
extern void InitT0(void);
extern unsigned char DispBuf[6];
extern bit xTim,xKey;
sbit Voice=P2^4;
extern void KeyPro(void);
extern unsigned char KeySts;
extern unsigned char sec1,min1,hour1;
extern unsigned char Alarm;
extern unsigned char Alarmsec,Alarmmin,Alarmhour;
extern bit p1,p2;
unsigned char sec,min,hour;
unsigned char code table[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //显示
void TimUpdate(void) //时间走时函数
{
if(++sec==60)
{
sec = 0;
if(++min==60)
{
min = 0;
if(++hour == 24) hour = 0;
}
}
}
void DisplayTim()
{
DispBuf[0] = table[sec%10];
DispBuf[1] = table[sec/10];
DispBuf[2] = table[min%10]&0x7f;
DispBuf[3] = table[min/10];
if((p1==0)||(hour<=12)||(p2==0)||(p2==1)) //按下DOWN或不按键时走24时制
{
DispBuf[4] = table[hour%10]&0x7f;
DispBuf[5] = table[hour/10];
}
if((p1==1)&&(hour>12)) //按下UP且时间大于12时走12时制
{
DispBuf[4] = table[(hour-12)%10]&0x7f;
DispBuf[5] = table[(hour-12)/10];
}
}
void main(void)
{
unsigned char i,x;
x=1;
for (i=0;i<6;i++)
DispBuf[i] = 0xFF; //全灭
p1=p2=0;
Alarm=0;
sec = 0;
min = 0;
hour = 0;
InitT0();
KeySts = 0;
Alarmsec =0;
Alarmmin = 0;
Alarmhour = 0; // 初始状态
while(1)
{
if(xTim==1)
{
if((KeySts>7)||(KeySts==0)) //设置闹钟时走时,设置时钟时不走时
{
xTim = 0;
TimUpdate();
if(KeySts==0)
{DisplayTim();
P1 = ~x; //流水灯 与秒同步
x <<= 1;
if (x==0) x = 1;}
if((sec<6)&&(min==0)) //整点报时(嘀嘀响6次)
{
Voice=0;
}
}
}
if(xKey)
{
xKey = 0;
KeyPro(); //调用按键
}
if(Alarm==1) //闹钟响铃(长响10秒)
{
if((sec-sec1<10)&&(min==min1)&&(hour==hour1))
{
Voice=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -