Proteus学习 定时器

您所在的位置:网站首页 小兔乐乐绘本教案 Proteus学习 定时器

Proteus学习 定时器

2023-12-26 23:50| 来源: 网络整理| 查看: 265

本文章仅仅用来学习记录,内容有待参考

学习课本《单片机原理及应用》第三版 林立 张俊亮编注

第112页【实例1】

问题简述:已知单片机型号AT80C52 内部晶振时钟12MHz 采用定时器T1使P2.0引脚输出周期在2ms的方波

例题分析

该题目主要考察对51单片机定时器系统的使用,利用该单片机内部的T1定时器,可以控制P2.0引脚按规律输出高低电平。

拓展 该题目书上给了两种办法,一种为查询方式,另一种为采用中断方式

知识点 

定时器在51单片机里主要是T1 T0这两个,其中定时器的工作方式如图,对于如何调用定时器,我决得可以从下面的图示找到答案。

定时器由单片机内部的12MHz晶振产生脉冲,经历12分频,1第一个开关设置为0;2一般设置门控GATE=0,CONTROL由TR控制;3设置好调用那种定时方式(跟TH TL寄存器)有关。

综上我们可知,定时器的启用需要TMOD TCON特殊功能寄存器

1 寄存器字节地址为89H,可以按名称TMOD寻址,也可以按地址89H寻址,但不能按位寻址(结尾不是8)

2 该寄存器高4为为控制T1的,低四位是控制T0的。其中

GATE 为门控位 GATE=0->CONTROL被TR控制

                          GATE=1>CONTROL被外部中断与TR一起控制 

C/T非 =1启动计数器   

          =0启动定时器    

M1 M0 有00 01 10 11 四种工作方式,与加1计数器的配置有关。

TCON

该寄存器字节地址为88H,可以按位寻址,也可以按名称和按地址寻址。

TR 启停控制位,跟GATE门控位配合使用。

例题实现

我们知道,题干采用定时器T1,所以该框图为

相应的代码为

TMOD=0x01; TR1=1;

现在定时器的配置我们已经搞好了,接下来要思考的是如何符合题干输出周期为2ms的方波

周期为2ms,即每过1ms电平翻转一次,那么就需要定时器每隔1ms重置。即需要定义加1计时器的初始值

该计算公式为 t=(65535-a)* fsc/12 

带入t=1ms可知 a=0xfx18

即TH1=0xfx;

   TL1=0x18;

现在所有的问题都解决了,正式进入编程阶段,

#include void main(void) { TMOD=0x10; TR1=1; //配置定时器 for(;;) { TH1=0xfc; TL1=0x18; //装载初始值 while(TF==0); //等待是否溢出,是继续执行,否,进入循环 p2_0=~P2_0; //每隔1ms反转电平 TF1=0; //标志位清0,为下次溢出做准备 } }

至此查询的方法就此完成,后面我会继续补充中断的方法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3