51单片机 定时器时钟

本章博客实现在LCD1602上展示定时器时钟部分

 1.main.c

注:Sec,Min,Hour可不进行赋值

#include 
#include "Delay.h"
#include "LCD1602.h"
#include "Timer0.h"

unsigned char Sec=55,Min=59,Hour=23;

void main()
{
	LCD_Init();
	Timer0Init();
	
	
	LCD_ShowString(1,1,"Clock:");
	LCD_ShowString(2,1,"  :  :");

	while(1)
	{
				LCD_ShowNum(2,1,Hour,2);
				LCD_ShowNum(2,4,Min,2);
				LCD_ShowNum(2,7,Sec,2); 

	}
	
}


 
void Timer0_Routine() interrupt 1  //中断函数
{
//	TH0=64535/256;		 
//	TL0=64535%256;//重新赋初值

	static unsigned int  T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count>=1000)
	{
		T0Count=0;
		Sec++;
		if(Sec>=60)
		{
			Sec=0;
			Min++;
			if(Min>=60)
			{
				Min=0;
				Hour++;
				if(Hour>=24)
				{
					Hour=0;
				}
			}
		}
	}
	
}

2.定时器Timer0部分

#include 



/**
	  *@brief   定时器0初始化,1毫秒@12.000MHz
		*@param   无
		*@retval   无
		*/

void Timer0Init(void)		//1毫秒@12.000MHz
{
//	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=  1;
	EA=1;
	PT0=0;
}

你可能感兴趣的:(51单片机,51单片机,单片机)