C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。

/*****************************************************
*任务要求
*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 ;
}


发布了19 篇原创文章 · 获赞 17 · 访问量 4083

猜你喜欢

转载自blog.csdn.net/qq_43605009/article/details/105156787