📄 main.c
字号:
#include <reg51.h>
#include <intrins.h>
typedef unsigned char BYTE;
#define TICK 10000
#define T100us 256-100
BYTE LEDBUF[6];
BYTE HOUR;
BYTE MINUTE;
BYTE SECOND;
BYTE C100us[2]; //计数值
BYTE code LEDMAP[]={0x3F,0x06,0x5B,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,
0x39,0x5E,0x79,0x71};
void DELAY(BYTE in)
{
BYTE i=0xFF;
do
{
do
{}while(--i);
}while(--in);
}
void DISPLAYLED()
{
BYTE data *point=LEDBUF;
BYTE num=6;
BYTE scan=0x7F;
do
{
P0=0x00;
P0=*point;
P3=scan;
DELAY(1);
scan=_cror_(scan,1);
point++;
}while(--num);
}
void T0INT() interrupt 1
{
if(C100us[1]==0) C100us[0]--;
C100us[1]--;
if(C100us[0]|C100us[1])
{
return;
}
else
{
C100us[0]=TICK/256;
C100us[1]=TICK%256;
SECOND++;
if(SECOND==60)
{
SECOND=0x00;
MINUTE++;
if(MINUTE==60)
{
MINUTE=0x00;
HOUR++;
if(HOUR==24)
{
HOUR=0x00;
}
}
}
}
}
main()
{
TMOD=0x02;
TH0=T100us;
TL0=T100us;
IE=0x82;
HOUR=0;
MINUTE=0;
SECOND=0;
C100us[0]=TICK/256;
C100us[1]=TICK%256;
TR0=1;
while(1)
{
LEDBUF[0]=LEDMAP[HOUR/10];
LEDBUF[1]=LEDMAP[HOUR%10]|0x80;
LEDBUF[2]=LEDMAP[MINUTE/10];
LEDBUF[3]=LEDMAP[MINUTE%10]|0x80;
LEDBUF[4]=LEDMAP[SECOND/10];
LEDBUF[5]=LEDMAP[SECOND%10]|0x80;
DISPLAYLED();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -