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 ;
}


  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值