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