51单片机之定时器

时间:2021-01-10 23:31:22

2018/3/25

51单片机

1.CPU时序

1.振荡周期:为单片机实现定时信号的振荡源周期(晶振周期或者外加振荡周期)

计算方法:1.振荡周期

2.状态周期:由两个振荡周期实现

3.机器周期:一个机械周期含12个振荡周期

4.指令周期:以机器周期为单位

2.定时器的操作

1.根据我的理解,对于定时器的操作其实就是对一些特殊寄存器的操作

2.定时器其实就是加一计数器,通过两个寄存器来控制:THx(高四位)和TLx(低四位);

3.TCON计数器:控制定时器T0,T1的开闭;

4.TMOD寄存器:设置定时器的工作方式:

3.关于定时器的操作顺序(包括中断)

1.首先实现TMOD寄存器的工作状态(注意高四位和低四位)

2.实现计数器TH0和TL0的初值(判断实现一次中断的时间)

3.设置TCON(寄存器开关),TCON=1;(打开计时器)

4.注意判断溢出情况(归0);

5.注意中断函数实行的interrupt值

4:注:中断函数的实现和主函数是并行运作的;

5.实现代码

#include<reg52.h>
	typedef unsigned char u8;
	typedef unsigned int u16;

	sbit led=P2^0; //D1

	void Time0init()
	{
		TMOD|=0X01;//设置低四位T0.00000001(门空位为0,设置c/t位为0:定时器,设置十六位定时器)
		//采用|运算符号,防止因拉低电平对后面造成影响
		TH0=0xFC;
		TL0=0X18;
		//定时1ms
		 ET0=1;//打开定时器中断
		 EA=1;//开启中断总开关
		 TR0=1;//开启定时器
	}

		void main()
		{
			Time0init();
			while(1);	
		}
	void Time0()interrupt 1
		{
			static u16 i;
				//重新装载
			 	TH0=0xFC;
				TL0=0X18;
				i++;
				if(i==1000)//定时了5s
				{
					i=0;//溢出时清0
					led=~led;
				}
		}
51单片机之定时器51单片机之定时器51单片机之定时器