/*****************************************************
*任务要求
*1、时钟12MHz,使用定时器T1的方式1定时20mS;
*2、对20mS计数50次产生1S;
*3、做一个时分秒的电子钟。
*
*作者:刘子琰
*时间:2020年3月28日10:13:41
******************************************************/
#include < reg51.h >
#include <intrins.h>
typedef unsigned char u8;
u8 hour=0,minute=0,second=0;
void Display(u8 H,u8 M,u8 S);
/*********************************************************
主函数
**********************************************************/
void main()
{
TMOD=0x10; //定时/计数器1工作于方式1
TH1=(65536-20000)/256;
TL1=(65536-20000)%256; //20ms定时常数
EA=1; //开总中断
ET1=1; //允许定时/计数器1中断
TR1=1; //启动定时/计数器1中断
while(1){
Display(hour,minute,second);
}
}
/*********************************************************
作用:定时器1中断服务函数
形参:无
返回值:无
**********************************************************/
void Time1(void) interrupt 3 // using 0
{
static u8 Timer_Count=0;
TH1=(65536-20000)/256;
TL1=(65536-20000)%256; //20ms定时常数
Timer_Count++;
if(Timer_Count>=20){
Timer_Count=0;
second++;
if(second>=60){
second=0;
minute++;
if(minute>=60){
minute=0;
hour++;
if(hour>=24){
hour=0;
}
}
}
}
}
/*********************************************************
作用:时钟显示模块(这里只是一个说明,到时候自己可以写一个数码管)
形参:u8 hour,u8 minute,u8 second
返回值:无
**********************************************************/
void Display(u8 H,u8 M,u8 S){
return ;
}
C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。
猜你喜欢
转载自blog.csdn.net/qq_43605009/article/details/105156787
今日推荐
周排行