📄 clock.c
字号:
/* 名称: 时钟
作者: 松彬
创建时间:07-2-19
*/
#include "reg51.h"
#include "math.h"
#define uchar unsigned char
#define uint unsigned int
// 0 1 2 3 4 5 6 7 8 9
uchar code Dispnum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
// 个位 十位 百位 千位
uchar code numwei[]={0xf7,0xfb,0xfd,0xfe};//显示的位数
sbit hourbutton=P3^3;//调时按钮
sbit minbutton=P3^4;//调分按钮
sbit bebutton=P3^5;//开始按钮
sbit point=P0^7;
bit secmark=0;
uchar DispBuf[4];
uchar sec=0,min=0,hour=0x0c;
void mDelay(uint Delay) //毫秒延时
{
uint i;
for(;Delay>0;Delay--)
{
for(i=0;i<124;i++)
{;}
}
}
void Timer0() interrupt 1 //定时器0中断
{
static uint num=0;
num++;
if(num>3600) //1s时间到
{
num=0;
sec++;
secmark=~secmark;
if(sec>59)//秒溢出
{
min++;
sec=0;
if(min>59)//分溢出
{
hour++;
min=0;
if(hour>23)//时溢出
hour=0;
}
}
}
}
void Init() //初始化定时器0
{
TMOD=0x02;
TH0=0;
TL0=0;
ET0=1;
EA=1;
TR0=1;
}
void InitBuf()
{
DispBuf[0]=min%10;
DispBuf[1]=min/10;
DispBuf[2]=hour%10;
DispBuf[3]=hour/10;
}
void main()
{
static uchar wei;
while(1)
{
InitBuf();
P2=0xff;
P0=Dispnum[DispBuf[wei]];
if(wei==2)
point=0;
P2=numwei[wei];
wei++;
if(wei>3)
wei=0;
if(hourbutton==0)
{
mDelay(200);
hour++;
if(hour>23)
hour=0;
continue;
}
if(minbutton==0)
{
mDelay(200);
min++;
if(min>59)
min=0;
continue;
}
if(bebutton==0)
break;
}
Init();
while(1)
{
InitBuf();
P2=0xff;
P0=Dispnum[DispBuf[wei]];
if(secmark==1&&wei==2)
point=0;
P2=numwei[wei];
wei++;
if(wei>3)
wei=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -