网上购物网站大全,建站之星模板制作,一级a做爰片免费网站冫,化妆品网站设计系统需求的策划书文 | 阿飞 写于2020-1-25 今天我们开始讲解定时/计数器的基础知识。 从名称上就可以看出来#xff0c;这部分内容有两个主要功能模式#xff1a;定时模式和计数模式。 工作在定时模式时#xff0c;每经过一个机械周期#xff0c;内部的16位计数寄存器数值就会加1#xff0… 文 | 阿飞 写于2020-1-25 今天我们开始讲解定时/计数器的基础知识。 从名称上就可以看出来这部分内容有两个主要功能模式定时模式和计数模式。 工作在定时模式时每经过一个机械周期内部的16位计数寄存器数值就会加1寄存器装满时就会溢出对应的标志位就会被置高计时会从我们存放的初值开始计时一直到16位的寄存器存满时产生溢出因此在最大计时范围内我们只要计算出需要存放的初值就可以准确的产生任意时间的定时。 工作在计数模式时对应的计数器输入引脚每产生一个脉冲计数寄存器就会加1。 使用定时/计数器步骤主要分为以下几步 启动定时/计数器(通过TCON寄存器控制)设置定时/计数器工作模式(通过TMOD寄存器控制)查询定时/计数器是否溢出(查看TCON中TF标志位) 这节课我们主要讲解一下定时器的基础知识 我们先来看TCON寄存器高四位的使用以定时器0为例图中可以看到TR0是定时器0的运行控制位在TOMD.3 0的情况下(这也是我们常用的)当TR0 1时定时器0会开始计时TR0 0时定时器0会禁止计时因此在启用定时器时需要将TR0置高“TR0 1”。TF0是定时器0的溢出标志图中也可以看到定时器0计满时此标志位会被置高在打开了定时器0中断的情况下标志位会在响应中断后被硬件清0也可以在程序的循环扫描中通过程序查询标志位并清0。(定时器1也是类似的) 再来看一下TMOD寄存器的使用 从图中可以看到TMOD寄存器是不可位寻址的因此在使用时只能对此寄存器进行整体赋值(例TMOD 0x01;)图中的高四位(4~7)是定时器1的控制位低四位(0~3)是定时器0的控制位以下介绍仍然以定时器0为例(定时器1也是类似的) GATE(TMOD.3)控制定时器0的打开方式(前边讲过的这里我们一般配置为0不做太多讲解) C/T(TMOD.2)用来控制定时/计数器是工作在定时模式还是计数模式(当TMOD.2 1时工作在计数模式TMOD.2 0时工作在定时模式) M1(TMOD.1)与M0(TMOD.0)共同控制定时器0的定时模式共有4种工作模式(0、1、2、3)这里我们常用的是模式1(M1 0、M0 1时)此时定时器的高8位与低8位全用溢出值为65535因此当使用定时器0时TMOD寄存器应配置为“TMOD 0x01; ”。(其它三个模式如果用到了会再讲大家也可以去问一下百度) 现在就只剩下了最后一步存放定时器初值因为51单片机定时器默认为12分频的因此单片机的机械频率 晶振频率 / 12机械周期 12 / 晶振频率外接的晶振是11.0592MHz的频率因此可计算出机械周期 12 / 11.0592 1.085(us)。也就是说每隔1.085us计数值会加1我们只要用目标时间除以1.085us就是需要计数多少次再用溢出值(65535)减去计数次数就得到了我们的需要存放的初值我举个栗子假设计时5ms 5ms / 1.085us 4608 65535 - 4608 60927这个60927就是我们需要存放的初值把高8位存放到TH0中低8位存放到TL0中就可以啦因此TH0 0xed; TL0 0x14; 每次计时结束后进行下次计时时初值会被清零因此我们需要在查询TF标志位时重装初值。 好的现在用程序来实现以下以上讲到的内容(led间隔500ms闪烁假设LED直接由P1端口控制) 接下来我们把定时器与中断配合起来使用(依然以定时器0为例) 结合这两张图与上次讲的内容我们知道打开定时器0中断时需要配置“ EA 1; ET0 1; ” 配置好以后每次定时器计满溢出时程序会响应对应的中断前边讲的当打开了定时器对应的中断时每次定时满响应了溢出中断以后溢出标志位TF会被硬件清零因此我们就不需要在程序中编写 “扫描TF状态” 与 “清零TF标志” 的操作。 编写中断服务函数时需要在函数名后边加上中断编号interrupt 1(定时器0)别忘了在中断服务函数中重放初值哦 在这里要强调一点在中断服务函数里边不要放延时函数和死循环也很好理解的假如说我定时2ms定时时间到了以后会执行中断服务函数同时定时器会重新计时当这里有延时函数与死循环时很容易造成这次中断服务函数还没有执行完下一次又该开始了程序很容易会跑飞的因此加了松手检测与按键消抖的按键扫描函数一定不能放里边 好的接下来我们用程序来实现一下(与上一程序功能相同的) 小练习 (1)使用定时器控制数码管任意一位显示数值0~9(每隔1秒数值加1)。 (2)把我们将机械按键时写的那个用延时函数实现的秒表程序改为定时器计时。 ▼ 更多蓝桥杯文章 ▼ 蓝桥杯·单片机竞赛备赛之外部中断 蓝桥杯·单片机竞赛备赛之机械按键 扫码入群 扫码添加管理员微信 加入“电子产品世界”粉丝交流群 ↓↓↓↓点击查看更多新闻