如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
6.1定时和计数的基本概念6.2MCS-51单片机定时/计数器的结构和工作原理6.3定时/计数器工作模式及其应用6.4综合应用举例从一个生活中的例子来理解计数的基本概念:假设你希望知道一个碗里可以装多少豆子?你可以采用什么办法呢?你肯定会说把碗里的豆子数一下就行了,不错,正是如此。从这个常见的计数例子可以看出,如果想计数,必须必备三要素:但是生活中常见的事情如何用单片机去实现呢?单片机是无法认识豆子等我们人可以通过眼睛认识的事物。单片机可以识别的只能是电脉冲信号,如果想利用单片机完成计数功能,则与生活中的计数相对应,需要以下三要素:◆计数脉冲:单片机的某个IO引脚可以识别脉冲信号◆单片机CPU:单片机CPU内部集成这样的硬件功能,即IO引脚每来一个脉冲,寄存器的值增加1,计数一次。◆计数容量:计数容量和寄存器的位数有关,如果利用8位寄存器则只能计数到255,超过255则必须告诉CPU已经溢出,停止计数还是从生活中的定时例子来说明定时的基本概念。一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了3600圈,如果需要你设计一个这样的定时装置,你该怎么办呢?同时想定时,必须必备三要素:同样对于单片机而言如何实现现实生活中需要的定时功能呢?如果想利用单片机完成定时功能,则与生活中的定时相对应,需要以下三要素:◆定时基准:单片机中的晶振提供一个精确的定时基准。由单片机的晶振经过12分频后获得的一个脉冲源,即采用机器周期作为定时基准,如果晶振为12M,则定时基准为1us。◆计数功能:与计数功能相同,单片机CPU内部集成这样的硬件功能,即每一个机器周期,寄存器的值增加1,计数一次。◆计数容量:当达到用户定义的时间后,则申请中断,在中断程序中实现报警功能。6.2.1定时/计数器概述图6-2定时/计数器控制逻辑6.2.2单片机定时/计数器的工作方式计数方式具体工作过程图6-3对输入脉冲宽度的要求TMOD用于控制T0和T1的工作模式。TMOD不能位寻址,只能用字节设置定时器的工作模式,低半字节设置T0,高半字节设置T1。8051系统复位时,TMOD的所有位被清0。TMOD各位的定义格式如图所示M1和M0—操作模式控制位。两位可形成四种编码,对应于四种模式。GATE—门控位。GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或INT1)的电平是高还是低。GATE=1,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。TCON除可字节寻址外,各位还可位寻址。8051系统复位时,TCON的所有位被清0。TCON各位的定义格式如图所示。6.3定时/计数器工作模式及其应用6.3.1工作模式0及其应用1逻辑结构例6.4用T0定时,选择工作模式0,由单片机P1.0输出占空比为50%、周期为2ms的方波,晶振频率为12M。6.3.2工作模式1及其应用1模式1的逻辑电路结构4模式1的应用举例6.3.3工作模式2及其应用1模式2的逻辑电路结构4模式2的应用举例6.4综合应用举例例6-11试选择定时/计数器T0测试INT0(P3.2)引脚上输入的被测脉冲宽度,已经晶振频率=12M例6-11源程序如下:ORG0000HLJMPMAINORG000BHLJMPINT_TIME0ORG0030HMAIN:MOVR2,#00H;如果被测脉冲宽度太长,则累计溢出次数MOVTMOD,#09H;设置T0为模式1,门控方式MOVTL0,#00H;设置初值MOVTH0,#00HSETBEA;开放T0中断SETBET0SETBTR0;INT0引脚高电平到来才会启动T0JNBP3.2,$;等待高电平到来JBP3.2,$;高电平到来,启动T0开始测量CLRTR0MOVR0,TH0;P3.2低电平,测量结束,保存结果MOVR1,TL0LJMP$INT_TIME0:INCR2MOVTL0,#00HMOVTH0,#00HRETI例6-12:电路如图6-12所示,P1.0引脚外接发光二极管D0,要求D0以1s的间隔闪烁。已经晶振频率=12M例6-12源程序代码:ORG0000HLJMPMAINORG000BHLJMPINT_TIME0ORG0030HMAIN:MOVP1,#0FFH;关所有灯MOV30H,#00H;软件计数器预清0MOVTMOD,#01H;定时/计数器0工作于方式1MOVTH0,#3CHMOVTL0,#0B0H;即数15536SETBEA;开总中断允许SETBET0;开定时/计数器0允许SETBTR0;定时/