📄 clock.c
字号:
//24时时钟
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code constantcode[8]={0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00};
uchar data table[8]={0,0,0,0,0,0,0,0};
uchar data curled=0;
uchar data timearrive=0;
uchar data timelength=20;
uchar data sl=0;
uchar data sh=0;
uchar data ml=0;
uchar data mh=0;
uchar data hl=0;
uchar data hh=0;
void init(void);
void inittable(uchar*,uchar);
void buildtable(uchar*);
void OnTimer0Event(void) interrupt 1
{
if(curled<7)
{
curled++;
}
else
{
curled=0;
}
P0=table[curled];
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
}
void OnTimer1Event(void) interrupt 3
{
if(--timelength<=0)
{
timelength=20;
timearrive=1;
}
if(timearrive)
{
if(sl==9)
{
sl=0;
if(sh<5)
{
sh++;
}
else
{
sh=0;
if(ml==9)
{
ml=0;
if(mh<5)
{
mh++;
}
else
{
mh=0;
if(hh<=1)
{
if(hl==9)
{
hh++;
hl=0;
}
else
{
hl++;
}
}
else
{
if(hl==3)
{
hl=0;
hh=0;
}
else
{
hl++;
}
}
}
}
else
{
ml++;
}
}
}
else
{
sl++;
}
timearrive=0;
buildtable(table);
}
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
}
void main(void)
{
init();
while(1);
}
void init(void)
{
TMOD=0x11;
TCON=0;
IE=0x8A;
IP=0x02;
TH0=(65536-1000)/256;
TL0=(65535-1000)%256;
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
inittable(table,8);
TR0=1;
TR1=1;
}
void buildtable(uchar *p)
{
*p=constantcode[0];
*(p+1)=constantcode[1];
*(p+2)=constantcode[2]+hh;
*(p+3)=constantcode[3]+hl;
*(p+4)=constantcode[4]+mh;
*(p+5)=constantcode[5]+ml;
*(p+6)=constantcode[6]+sh;
*(p+7)=constantcode[7]+sl;
}
void inittable(uchar *p,uchar len)
{
uchar data i=0;
do{
*(p+i)=*(p+i)+constantcode[i];
}while(++i<len);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -