main.c
来自「keilc51 Digital_Clock_C」· C语言 代码 · 共 105 行
C
105 行
#include"main.h"
unsigned int tcnt;
unsigned char i,j;
unsigned char hour;
unsigned char minite;
unsigned char second;
unsigned char dispbuf[6];
unsigned char dipcod[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
void t0() interrupt 1 using 0 //定时器T0中断服务函数
{
tcnt++;
if(tcnt==3701) //定时1S
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++; //分钟加一
if(minite==60)
{
minite=0;
hour++; //时钟加一
if(hour==24)
{
hour=0;
}
}
}
dispbuf[5]=dipcod[second%10];
dispbuf[4]=dipcod[(second/10)];
dispbuf[3]=dipcod[(minite%10)];
dispbuf[2]=dipcod[(minite/10)];
dispbuf[1]=dipcod[(hour%10)];
dispbuf[0]=dipcod[(hour/10)];
lcd_moveto(8);
for(i=0;i<6;i++)
{lcd_wrdata(dispbuf[i]);
if((i==1)|(i==3))
{lcd_string(":");}
}
}
}
void main(void)
{
P1=0xef;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
DisplayLCD();
while(1)
{if(k0==0) //判断分钟调整键是非按下
{
for(i=125;i>0;i--)
for(j=248;j>0;j--);
if(k0==0)
{
minite++;
if(minite==60)
{
minite=0;
}
//存储分钟值
dispbuf[3]=dipcod[minite%10];
dispbuf[2]=dipcod[minite/10];
while(k0==0);
}
}
if(k1==0) //判断时钟调整键是非按下
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(k1==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[1]=dipcod[hour%10];
dispbuf[0]=dipcod[hour/10];
while(k1==0);
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?