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

单片机与接口技术 专栏收录该内容
5 篇文章 0 订阅
/*****************************************************
*任务要求
*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 ;
}


  • 5
    点赞
  • 0
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值