51单片机定时器
定时器介绍51单片机定时器属于单片机内部设备定时器的运转全部都在单片机内部。定时器作用① 精确延时/定时到点了触发中断执行操作。② 可以代替长时间的delay,可以边等边做其他事情。软件延时定时器原理CPU 空循环数数硬件自动计数CPU 不参与CPU 占用全程占用干不了别的零占用CPU 可以做别的事能不能同时干活不能能定时器的三部分时钟提供计数脉冲计数单元时针计数中断系统产生中断执行定时任务。时钟脉冲源→ 计数单元累加溢出→ 中断系统触发响应↑ ↑ ↑ 提供动力 干活的 响应的定时器一共有四种工作模式其中模式一是最常用的下图就是工作模式一框图圈中三部分就代表着时钟计数单元中断系统。左边时钟负责传递脉冲如何设定脉冲1.可以通过SYSclk系统时钟为计时器模式2.通过T0Pin外部引脚控制为计数器模式系统时钟晶振周期为12MHS第一个岔路进行分频第二个岔路进行设定脉冲的选择。中间的计数单元是16位计数器最大能记65535每接收时钟传来的脉冲就会加1当到65535时就会发生溢出随后进入中断系统申请中断。中断系统CPU在干一件事时外界紧急事件请求会中断原本的运行而去干紧急事件完成之后继续完成原来的事。中断源请求 CPU 中断的来源CST89C52 有6个INT0/T0/INT1/T1/串口/T2。优先级多个中断源同时请求时CPU 按轻重缓急排队先响应优先级最高的。中断嵌套CPU 正在处理低级中断时更高级中断来了 → 暂停低级 → 处理高级 → 回来继续低级。有嵌套多级中断系统无嵌套单级。剩下就是根据定时器与中断系统的结构进行寄存器的配置即可。步骤寄存器作用1TMOD设置工作模式16位定时器2TF0清除溢出标志3TR0启动定时器4TH0/TL0装入定时初值决定定时多久5ET0允许定时器中断6EA开总中断7PT0设置中断优先级中断函数代码1.interrupt 151 单片机中断号1代表定时器 0 溢出中断服务函数。2.TR0就是定时器开关打开后会自己数到65535溢出时会自动跳转到中断函数。可以通过设置定时器来设置每隔多长时间进入中断函数主要是设定初值12MHz晶振 → 1机器周期 1us → 每次计数 1us 定时时间 (65536 - 初值) × 1us 初值 65536 - (定时时间(us) / 1)但是最多定时65.536ms65536 × 1us假如想每1s中断一次需要多次中断累加。下面就是利用设置TL0和TH0来设置初值每个过程1ms累计1000次就是1s。定时器代码就在中断为1s的基础上增添3个if语句使时钟改变。main函数代码定义3个变量LCD_Init使初始化使允许中断。其他就是在液晶屏的显示。