《单片机第六章.ppt》由会员分享,可在线阅读,更多相关《单片机第六章.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章 MCS-51MCS-51的定时器的定时器/计数器计数器第六章 MCS-51MCS-51的定时器的定时器/计数器计数器 第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.1 定时/计数器概述定时器可以实现的功能:定时器可以实现的功能:定时操作:产生定时中断,实现定时采样输入信号,定时操作:产生定时中断,实现定时采样输入信号,定时扫描键盘、显示器等定时操作。定时扫描键盘、显示器等定时操作。测量外部输入信号:对输入信号累加统计或测量输入测量外部输入信号:对输入信号累加统计或测量输入信号的周期参数。信号的周期参数。定时输出:定时触发输出引脚的电平,使输出脉冲的定时输出:定时触发
2、输出引脚的电平,使输出脉冲的宽度、占空比、周期达到预定值。宽度、占空比、周期达到预定值。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器 在单片机的内部结构中,有在单片机的内部结构中,有两个两个1616位位可编程的定时可编程的定时/计数计数器,各器,各有有2 2种工作模式:种工作模式:(1)计数器工作模式)计数器工作模式对外来脉冲(外部事件)进行计数,外部脉冲由对外来脉冲(外部事件)进行计数,外部脉冲由T0(P3.4)和和T1(P3.5)的两个输入引脚输入到单片机内部。每输入一)的两个输入引脚输入到单片机内部。每输入一个脉冲,计数器加个脉冲,计数器加1(2)定时器工作模式)定时器
3、工作模式也是通过计数来实现的,计数脉冲来自单片机的工作时钟。也是通过计数来实现的,计数脉冲来自单片机的工作时钟。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器T1T1由由由由TH1TH1、TL1TL1构成,字构成,字构成,字构成,字节地址为节地址为节地址为节地址为8DH8DH、8BH8BHT0T0由由由由TH0TH0、TL0TL0构成,字构成,字构成,字构成,字节地址为节地址为节地址为节地址为8CH8CH、8AH8AHTCON则用于控制定时计数器则用于控制定时计数器T0和和T1的启动和停止计数,同时管理定的启动和停止计数,同时管理定时器时器T0和和T1的溢出标志等。的溢出标志等
4、。特殊功能寄存器特殊功能寄存器TMOD控控制定时计数器的工作方式制定时计数器的工作方式6.2 6.2 定时定时/计数器的结构和工作原理计数器的结构和工作原理一、逻辑框图一、逻辑框图第六章 MCS-51MCS-51的定时器的定时器/计数器计数器二、工作原理二、工作原理1、加加1计数器计数器2、定时、定时/计数器的工作状态计数器的工作状态3、定时、定时/计数器的计数速率计数器的计数速率4、计数器的容量、计数器的容量5、溢出、溢出第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6 6.3 .3 定时定时/计数器计数器的控制的控制定时器控制寄存器定时器控制寄存器(可以按位操作)(可以按位
5、操作)TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0位地址位地址8FH8EH8DH8CH8BH8AH89H88HT1字段字段T0字段字段外部中断控制字段外部中断控制字段TF0、TF1分别是定时、计数器分别是定时、计数器T0、T1的溢出标志位。的溢出标志位。TR0定定时时/计计数数器器0运运行行控控制制位位。=0停停止止,=1开开始始工工作,软件置位,软件复位。作,软件置位,软件复位。TR1定时定时/计数器计数器1运行控制位。(用法与运行控制位。(用法与TR0类似)类似)第六章 MCS-51MCS-51的定时器的定时器/计数器计数器工作方式控制寄存器工作
6、方式控制寄存器 (不可以按位操作)(不可以按位操作)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0T1方式字段方式字段T0方式字段方式字段GATE:门控位门控位.GATE=0启动不受启动不受/INT0或或/INT1的控制;的控制;GATE=1启动受启动受/INT0或或/INT1的控制。的控制。C/T:外部计数器外部计数器/定时器方式选择位定时器方式选择位C/T=0定时方式;定时方式;C/T=1计数计数方式方式M1M0:工作模式选择位(编程可决定四种工作模式)工作模式选择位(编程可决定四种工作模式)。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器00
7、13位定时位定时/计数器计数器方式方式00116位定时位定时/计数器计数器方式方式1108位自动重装定时位自动重装定时/计数器计数器方式方式2211TL08位定时位定时/计数器计数器方式方式33TH08位定时器位定时器4T1停止计数停止计数第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.4 6.4 定时器定时器/计数器的计数器的4 4种工作方式种工作方式 6.4.1方式方式0M1、M0为为00,定时器,定时器/计数器的框图:计数器的框图:第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.4.2方式方式1M1、M0=01,16位的计数器。位的计数器。6.4.3方
8、式方式2计数满后自动装入计数初值。计数满后自动装入计数初值。M1、M0=10,等效框图如下:,等效框图如下:第六章 MCS-51MCS-51的定时器的定时器/计数器计数器TLX作作为为常常数数缓缓冲冲器器,当当TLX计计数数溢溢出出时时,在在置置“1”溢溢出出标标志志TFX的的同同时时,还还自自动动的的将将THX中中的的初初值值送送至至TLX,使使TLX从初值开始重新计数。从初值开始重新计数。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.4.4方式方式3增加一个附加的增加一个附加的8位定时器位定时器/计数器,从而具有计数器,从而具有3个定时器个定时器/计数计数器。器。只适用
9、于定时器只适用于定时器/计数器计数器T0。T1不能工作在方式不能工作在方式3T1方式方式3时相当于时相当于TR1=0,停止计数(此时停止计数(此时T1可用来作串行可用来作串行口波特率产生器)。口波特率产生器)。1工作方式工作方式3下的下的T0T0分为两个独立的分为两个独立的8位计数器位计数器:TL0和和TH0。TL0使用使用T0的的状态控制位状态控制位C/T*、GATE、TR0、,而、,而TH0被固定为一个被固定为一个8位定时器(不能作外部计数模式),并使用定时器位定时器(不能作外部计数模式),并使用定时器T1的状的状态控制位态控制位TR1和和TF1,同时占用定时器同时占用定时器T1的中断请求
10、源的中断请求源TF1。各引脚与各引脚与T0的逻辑关系如图所示:的逻辑关系如图所示:第六章 MCS-51MCS-51的定时器的定时器/计数器计数器第六章 MCS-51MCS-51的定时器的定时器/计数器计数器2T0工作在方式工作在方式3下下T1的各种工作方式的各种工作方式当当T1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T0才工作在方式才工作在方式3。T0处于方式处于方式3时,时,T1可定为方式可定为方式0、方式、方式1和方式和方式2,用来作为,用来作为串行口的波特率发生器,或不需要中断的场合。串行口的波特率发生器,或不需要中断的场合。(1)T1工作在方式工作在方式0第六章 MCS
11、-51MCS-51的定时器的定时器/计数器计数器(2)T1工作在方式工作在方式1(3)T1工作在方式工作在方式2第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.5定时器定时器/计数器对输入信号的要求计数器对输入信号的要求1、定时器模式、定时器模式计数脉冲为内部时钟脉冲,即每个机器周期计数器增计数脉冲为内部时钟脉冲,即每个机器周期计数器增1,因此,因此定时定时/计数器的输入脉冲周期与机器周期一样,为振荡频率的计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。2、计数模式、计数模式计数脉冲来自外部输入引脚计数脉冲来自外部输入引脚T0或或T1。单片机需要。单片机需要2个机器
12、周个机器周期确认期确认1次负跳变。因此外部计数脉冲的最高频率为系统振荡次负跳变。因此外部计数脉冲的最高频率为系统振荡器频率的器频率的1/24,例如选用,例如选用12MHz频率的晶体,则可输入频率的晶体,则可输入500KHz的外部脉冲。的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。输入信号的高、低电平至少要保持一个机器周期。如图如图6-10所示,图中所示,图中Tcy为机器周期。为机器周期。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.6定时器定时器/计数器的编程和应用计数器的编程和应用 对定时对定时/计数器的编程包括以下几个步骤计数器的编程包括以下几个步骤1、确定工
13、作方式,对、确定工作方式,对TMOD寄存器进行赋值。寄存器进行赋值。2、计算计数初值,并写入寄存器、计算计数初值,并写入寄存器TH0、TL0或或TH1、TL1。3、根据需要,置位、根据需要,置位ETx允许中断允许中断4、置位、置位EA允许总中断。允许总中断。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器5、置位、置位TRx启动计数。启动计数。计数初值的计算:计数初值的计算:(1)定时模式)定时模式假设定时时间为假设定时时间为T,机器周期为,机器周期为Tp,则需要的计数脉冲则需要的计数脉冲个数为个数为T/Tp,应装入定时,应装入定时/计数器的初值为计数器的初值为X=2n-T/Tp
14、(n为计数器的位数)为计数器的位数)(2)计数模式)计数模式假设计数值为假设计数值为N,则计数初值为,则计数初值为X=2n-N4种工作方式中,方式种工作方式中,方式0与方式与方式1基本相同,由于方式基本相同,由于方式0是是为兼容为兼容MCS-48而设,初值计算复杂,在实际应用中,一而设,初值计算复杂,在实际应用中,一般不用方式般不用方式0,而采用方式,而采用方式1。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.6.1方式方式1应用应用例例1假设系统时钟频率采用假设系统时钟频率采用6MHz,要在要在P1.0上输出频率为上输出频率为50Hz、占空比为、占空比为50%的方波信号。
15、的方波信号。方波的周期用方波的周期用T0来确定,让来确定,让T0每隔每隔10ms计数溢出计数溢出1次,既次,既T0每隔每隔10ms产生一次中断,产生一次中断,CPU相应中断后,在中断服务程序相应中断后,在中断服务程序中对中对P1.0取反。取反。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(1)计算初值计算初值X设初值为设初值为X,则有则有:(216-X)210-6=110-2216-X=5000X=60536X化为化为16进制,即进制,即X=EC78H。所以,所以,T0的初值为:的初值为:TH0=0ECHTL0=78H(2)初始化程序设计初始化程序设计主要是对寄存器主要是对寄
16、存器IP、IE、TCON、TMOD的相应位进行正确的相应位进行正确设置,将计数初值送入定时器中。设置,将计数初值送入定时器中。(3)中断服务程序设计中断服务程序设计 中断服务程序除了完成要求的产生方波这一工作之外,还要注中断服务程序除了完成要求的产生方波这一工作之外,还要注意将计数初值重新装入定时器中,为下一次产生中断作准备意将计数初值重新装入定时器中,为下一次产生中断作准备。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器参考程序:参考程序:ORG0000HRESET:AJMPMAIN;转主程序转主程序ORG000BH;T0的中断入口的中断入口AJMPITOP;转;转T0中断处
17、理程序中断处理程序IT0PORG0100HMAIN:MOVSP,#60H;设堆栈指针设堆栈指针MOVTMOD,#01H;设置设置T0为方式为方式1MOVTL0,#78H;T0置初值置初值MOVTH0,#0ECHSETBTR0;启动启动T0SETBET0;允许允许T0中断中断SETBEA;CPU开中断开中断HERE:AJMPHERE第六章 MCS-51MCS-51的定时器的定时器/计数器计数器ITOP:MOVTL0,#78H;T0中断服务子程序,中断服务子程序,T0置初值置初值MOVTH0,#0ECHCPLP1.0;P1.0的状态取反的状态取反RETI第六章 MCS-51MCS-51的定时器的定
18、时器/计数器计数器例例2假设系统时钟频率采用假设系统时钟频率采用6MHz,要在要在P1.0上输出频率为上输出频率为50Hz、占空比为、占空比为25%的方波信号。的方波信号。一个周期中,高电平时间一个周期中,高电平时间5ms,低电平时间,低电平时间15msX1=65536-5000/2=F63CHX2=65536-15000/2=E2B4HORG0000HLJMPSTARTORG0100HSTART:MOVSP,#30HMOVTMOD,#01HSETBTR0LOOP:SETBP1.0MOVTH0,#0F6HMOVTL0,#3CH第六章 MCS-51MCS-51的定时器的定时器/计数器计数器JNB
19、TF0,$CLRTF0CLRP1.0MOVTH0,#0E2HMOVTL0,#0B4HJNBTF0,$CLRTF0SJMPLOOPEND第六章 MCS-51MCS-51的定时器的定时器/计数器计数器例例3假设系统时钟频率采用假设系统时钟频率采用6MHz,编写程序实现与,编写程序实现与P1口相口相连的连的8个个LED灯间隔灯间隔1s闪烁。闪烁。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(1)T0工作方式的确定工作方式的确定因定时时间较长,采用哪一种工作方式?因定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出:方式方式0最长可定时最
20、长可定时16.384ms;方式方式1最长可定时最长可定时131.072ms;方式方式2最长可定时最长可定时512 s。选方式选方式1,每隔,每隔100ms中断一次,中断中断一次,中断10次为次为1s。(2)计算计数初值)计算计数初值因为:因为:(216-X)210-6=10-1所以:所以:X=15536=3CB0H因此:因此:TH0=3CH,TL0=B0H第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(4)程序设计)程序设计参考程序参考程序:ORG0000HRESET:LJMPMAIN;上电,转主程序入口上电,转主程序入口MAINORG000BH;T0的中断入口的中断入口LJM
21、PT0INTORG0100HMAIN:MOVSP,#30H;设堆栈指针设堆栈指针CLRAMOVP1,AMOVR0,#0AH;设循环次数设循环次数10次次MOVTMOD,#01H;设;设T0工作在方式工作在方式1MOVTL0,#0B0H;给;给T0设初值设初值MOVTH0,#3CH第六章 MCS-51MCS-51的定时器的定时器/计数器计数器SETBEASETBET0SETBTR0LOOP:SJMPLOOPT0INT:MOVTL0,#0B0HMOVTH0,#3CHDJNZR0,NEXTMOVR0,#0AHCPLAMOVP1,ANEXT:RETIEND第六章 MCS-51MCS-51的定时器的定时
22、器/计数器计数器6.6.2方式方式2的应用的应用例例1利用利用T1的方式的方式2对外部信号计数,要求每计满对外部信号计数,要求每计满100个数,个数,将将P1.0取反。取反。本例是方式本例是方式2计数模式的应用。计数模式的应用。(1)选择工作方式)选择工作方式外部信号由外部信号由T1(P3.5)脚输入脚输入,每发生一次负跳变计数器加每发生一次负跳变计数器加1,每输,每输入入100个脉冲,计数器产生溢出中断,在中断服务程序中将个脉冲,计数器产生溢出中断,在中断服务程序中将P1.0取反一次。取反一次。T1方式方式2的控制字为的控制字为TMOD=60H。不使用。不使用T0时,时,TMOD的低的低4位
23、位可任取,但不能使可任取,但不能使T0进入方式进入方式3,这里取全,这里取全0。(2)计算)计算T1的初值的初值X=28-100=156=9CH因此,因此,TL1的初值为的初值为9CH,重装初值寄存器,重装初值寄存器TH1=9CH第六章 MCS-51MCS-51的定时器的定时器/计数器计数器ORG0000HLJMPMAINORG001BH;T1中断服务程序入口中断服务程序入口 CPLP1.0;P1.0位取反位取反RETIORG0100HMAIN:MOVTMOD,#60H;设;设T1为方式为方式2计数计数MOVTL0,#9CH;T0置初值置初值MOVTH0,#9CHSETBET1SETBEASE
24、TBTR1;启动启动T1HERE:AJMPHERE第六章 MCS-51MCS-51的定时器的定时器/计数器计数器例例2当当T0(P3.4)引脚上发生负跳变时,从引脚上发生负跳变时,从P1.0引脚上输出一引脚上输出一个周期为个周期为1ms的方波的方波,如图所示。(系统时钟为如图所示。(系统时钟为6MHz)第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(1)工作方式选择)工作方式选择T0为方式为方式1计数,初值计数,初值0FFFFH,即外部计数输入端即外部计数输入端T0(P3.4)发生一次负跳变时,发生一次负跳变时,T0加加1且溢出,溢出标志且溢出,溢出标志TF0置置“1”,发中断
25、请求。,发中断请求。T1定义为方式定义为方式2定时定时,在进入在进入T0中断程序中断程序后,启动后,启动T1每每500 s产生一次中断,在产生一次中断,在T1中断服务程序中对中断服务程序中对P1.0求反,使求反,使P1.0产生周期产生周期1ms的方波。的方波。(2)计算)计算T1初值初值设设T1的初值为的初值为X:则则(28-X)210-6=510-4X=28-250=6=06H第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(3)程序设计程序设计ORG0000HRESET:LJMPMAIN;复位入口转主程序复位入口转主程序ORG000BH LJMPIT0P;转;转T0中断服务程
26、序中断服务程序ORG001BHLJMPIT1P;转转T1中断服务程序中断服务程序ORG0100HMAIN:MOVSP,#60HMOVTMOD,#25H;初始化,;初始化,T1为方式为方式2定定;时,;时,T0为方式为方式1计数计数MOVTL0,#0FFH;T0置初值置初值MOVTH0,#0FFH第六章 MCS-51MCS-51的定时器的定时器/计数器计数器SETBTR0;启动启动T0SETBET0;允许允许T0中断中断MOVTL1,#06H;T1置初值置初值MOVTH1,#06HSETBEAHERE:AJMPHEREIT0P:CLRTR0;T0中断服务程序,停止中断服务程序,停止T0计数计数S
27、ETBTR1;启动;启动T1SETBET1;允许;允许T1中断中断RETIIT1P:CPLP1.0;T1中断服务,中断服务,P1.0位取反位取反RETI第六章 MCS-51MCS-51的定时器的定时器/计数器计数器例例2利用定时器利用定时器T0扩展外部中断扩展外部中断要求:将外部中断请求信号连接到要求:将外部中断请求信号连接到P3.4脚上;定时器脚上;定时器T0设置为设置为计数模式;计数模式;T0工作在方式工作在方式2,初值设为,初值设为FFH。MOVTMOD,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEA注意:扩展的外部中断入口地址为注意:扩
28、展的外部中断入口地址为000BH。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.4.3方式方式3的应用的应用T0方式方式3时,时,TL0和和TH0被分成两个独立的被分成两个独立的8位定时器位定时器/计数器。计数器。其中,其中,TL0:8位定时器位定时器/计数器;计数器;TH0:8位定时器。位定时器。T0设设置为方式置为方式3,T1作串行口波特率发生器作串行口波特率发生器例例1:假设晶振频率为:假设晶振频率为6MHz,T0工作于方式工作于方式3,TL0和和TH0作为作为2个独立的个独立的8位定时器,要求位定时器,要求TL0使使P1.1产生周期为产生周期为500 s的方的方波,
29、波,TH0使使P1.2产生周期为产生周期为1000 s的方波。的方波。TL0时间常数为:时间常数为:28-250/2=83HTH0时间常数为:时间常数为:28-500/2=6H第六章 MCS-51MCS-51的定时器的定时器/计数器计数器ORG0000HLJMPSTARTORG000BHLJMPTLINTORG001BHLJMPTHINTORG0100HSTART:MOVSP,#30HMOVTMOD,#03HMOVTL0,#83HMOVTH0,#06HSETBEASETBET0SETBET1第六章 MCS-51MCS-51的定时器的定时器/计数器计数器SETBTR0SETBTR1SJMP$TL
30、INT:MOVTL0,#83HCPLP1.1RETITHINT:MOVTH0,#06HCPLP1.1RETI第六章 MCS-51MCS-51的定时器的定时器/计数器计数器例例2假设某假设某MCS-51应用系统的两个外中断源已被占用,设置应用系统的两个外中断源已被占用,设置T1工作在方式工作在方式2,作波特率发生器用。现要求增加一个外部中断,作波特率发生器用。现要求增加一个外部中断源,并控制源,并控制P1.0引脚输出一个引脚输出一个5kHz的方波。设系统时钟为的方波。设系统时钟为12MHz。(1)选择工作方式)选择工作方式TL0为方式为方式3计数,把计数,把T0引脚(引脚(P3.4)作附加的外中
31、断输入端,作附加的外中断输入端,TL0初值设为初值设为0FFH,当检测到当检测到T0引脚电平出现负跳变时,引脚电平出现负跳变时,TL0溢出,申请中断,这相当于跳沿触发的外部中断源。溢出,申请中断,这相当于跳沿触发的外部中断源。TH0为为8位方式位方式3定时,控制定时,控制P1.0输出输出5kHz的方波信号。如图所的方波信号。如图所示。示。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(2)初值计算)初值计算TL0的初值设为的初值设为0FFH。5kHz的方波的周期为的方波的周期为200 s,TH0的定时时间为的定时时间为100 s。TH0初初值值X计算如下:计算如下:(28-X)
32、110-6=110-4X=28-100=156=9CH第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(3)程序设计)程序设计 ORG0000HLJMPMAINORG000BH;T0中断入口中断入口LJMPTL0INT;跳;跳T0中断服务程序中断服务程序ORG001BH;在;在T1方式方式3时,时,TH0占用占用T1的中断的中断LJMPTH0INT;跳;跳TH0中断服务程序中断服务程序ORG0100HMAIN:MOVTMOD,#27H;T0方式方式3计数,计数,T1方式方式2定时定时MOVTL0,#0FFH;置;置TL0初值初值MOVTH0,#9CH;置;置TH0初值初值MOVT
33、L1,#dataL;data为波特率常数为波特率常数第六章 MCS-51MCS-51的定时器的定时器/计数器计数器MOVTH1,#dataHMOVTCON,#15H;允许允许T0中断中断MOVIE,#9FH TL0INT:MOVTL0,#0FFH;TL0中断服务程序,中断服务程序,TL0重新装入初值重新装入初值SETBTR1RETITH0INT:MOVTH0,#9C;TH0中断服务程序,中断服务程序,TH0重重新装入初值新装入初值CPLP1.0;P1.0位取反输出位取反输出RETI第六章 MCS-51MCS-51的定时器的定时器/计数器计数器6.4.4门控制位门控制位GATE的应用的应用测量脉
34、冲宽度测量脉冲宽度GATE1可使定时器可使定时器/计数器计数器T1的启动计数受的启动计数受INT1*的控制,可的控制,可测量引脚测量引脚INT1*(P3.3)上正脉冲的宽度(机器周期数)。上正脉冲的宽度(机器周期数)。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器参考程序:参考程序:ORG0000HRESET:AJMPMAIN;复位入口转主程序复位入口转主程序ORG0100HMAIN:MOVSP,#60HMOVTMOD,#90H;T1为方式为方式1定时控制字定时控制字MOVTL1,#00HMOVTH1,#00HLOOP:JBP3.3,LOOP;等待等待INT1*低低LOOP1:
35、JNBP3.3,LOOP1;等待等待INT1*升高升高SETBTR1LOOP2:JBP3.3,LOOP2;等待等待INT1*降低降低第六章 MCS-51MCS-51的定时器的定时器/计数器计数器CLRTR1;停止停止T1计数计数MOV20H,TL0MOV21H,TH0SJMP$执行程序,使执行程序,使INT1*引脚上出现的正脉冲宽度以机器周期数的引脚上出现的正脉冲宽度以机器周期数的形式被存储在形式被存储在20H和和21H单元。单元。6.4.5实时时钟的设计实时时钟的设计1实时时钟实现的基本思想实时时钟实现的基本思想第六章 MCS-51MCS-51的定时器的定时器/计数器计数器如何获得如何获得1
36、秒的定时,可把定时时间定为秒的定时,可把定时时间定为100ms,采用中断方式采用中断方式进行溢出次数的累计,计满进行溢出次数的累计,计满10次,即得到秒计时。次,即得到秒计时。片内片内RAM中规定中规定3个单元作为秒、分、时单元,具体安排如个单元作为秒、分、时单元,具体安排如下:下:42H:“秒秒”单元单元;41H:“分分”单元;单元;40H:“时时”单元单元从秒到分,从分到时是通过软件累加并进行比较的方法来实现从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。的。2程序设计程序设计(1)主程序的设计)主程序的设计流程如图所示。流程如图所示。第六章 MCS-51MCS-51的定时器的定
37、时器/计数器计数器第六章 MCS-51MCS-51的定时器的定时器/计数器计数器(2)中断服务程序的设计)中断服务程序的设计中断服务程序的主要功能是实现秒、中断服务程序的主要功能是实现秒、分、时的计时处理。分、时的计时处理。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器ORG0000HLJMPMAINORG001BHLJMPIT0PORG1000HMAIN:MOVTMOD,#01HMOV20H,#0AHCLRAMOV40H,AMOV41H,AMOV42H,ASETBET0SETBEAMOVTH0,#3CHMOVTL0,#0B0HSETBTR0HALT:SJMPHALT第六章 M
38、CS-51MCS-51的定时器的定时器/计数器计数器MOV41H,ACJNEA,#60H,RETURNMOV41H,#0MOVA,#01HADDA,40HINCADAAMOV40H,ACJNEA,#24H,RETURNMOV40H,#0RETURN:POPPSWPOPACCRETIEND IT0P:PUSHACCPUSHPSWMOVTH0,#3CHMOVTL0,#0B0HDJNZ20H,RETURNMOV20H,#0AHMOVA,#01H ADDA,42HDAAMOV42H,ACJNEA,#60H,RETURNMOV42H,#0MOVA,#01HADDA,41HDAA第六章 MCS-51MCS
39、-51的定时器的定时器/计数器计数器6.4.6运行中读定时器运行中读定时器/计数器计数器在读取运行中的定时器在读取运行中的定时器/计数器时,需注意:若恰好出现计数器时,需注意:若恰好出现TLX溢溢出向出向THX进位的情况,则读得的(进位的情况,则读得的(TLX)值就完全不对。同值就完全不对。同样,先读(样,先读(THX)再读(再读(TLX)也可能出错。也可能出错。方法:先读(方法:先读(THX),),后读(后读(TLX),),再读(再读(THX)。)。若两次若两次读得(读得(THX)相同,则读的内容正确。若前后两次读的相同,则读的内容正确。若前后两次读的(THX)有变化,则再重复上述过程,这次
40、重复读得的内容就有变化,则再重复上述过程,这次重复读得的内容就应是正确的。下面是有关的程序,读得的(应是正确的。下面是有关的程序,读得的(TH0)和(和(TL0)放置在放置在R1和和R0内。内。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器RDTIME:MOVA,TH0;读(读(TH0)MOVR0,TL0;读(读(TL0)CJNEA,TH0,RDTIME;比较比较2次读得的(次读得的(TH0);不相等则重复读;不相等则重复读MOVR1,A;(;(TH0)送入送入R1中中RET第六章 MCS-51MCS-51的定时器的定时器/计数器计数器作业:作业:1、已知单片机系统振荡频率、已
41、知单片机系统振荡频率fosc=6MHz,若要求定时值,若要求定时值分别为分别为0.1ms,1ms和和10ms,定时器定时器T0工作在方式工作在方式0,方式,方式1和方式和方式2时,定时器对应的初值各是多少?时,定时器对应的初值各是多少?2、已知、已知8051单片机的单片机的fosc=12MHz,用,用T1定时,工作在定时,工作在方式方式1。试编程由。试编程由P1.0脚输出周期为脚输出周期为200ms的方波。的方波。3、假设晶振频率为、假设晶振频率为6MHz,T0工作于方式工作于方式3,TL0和和TH0作为作为2个独立的个独立的8位定时器,要求位定时器,要求TL0使使P1.0产生产生400 s的
42、方波,的方波,TH0使使P1.1产生产生800 s的方波。的方波。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器1定时定时/计数器计数器T0在在GATE=1时运行的条件有(时运行的条件有(AC)。)。A.P3.2=1B.设置好定时初值设置好定时初值C.TR0=1D.T0开启中开启中2.与定时工作方式与定时工作方式0和和1相比较,定时工作方式相比较,定时工作方式2不具不具备的特点是:备的特点是:(A)计数溢出后能自动恢复计数初值计数溢出后能自动恢复计数初值(B)增加计数器的位数增加计数器的位数(C)提高了定时的精度提高了定时的精度(D)适于循环定时和循环计数适于循环定时和循环计数
43、3.判断下列说法是否正确?判断下列说法是否正确?(A)特殊功能寄存器特殊功能寄存器SCON,与定时器,与定时器/计数器的控制无关。计数器的控制无关。(B)特殊功能寄存器特殊功能寄存器TCON,与定时器,与定时器/计数器的控制无关。计数器的控制无关。(C)特殊功能寄存器特殊功能寄存器IE,与定时器,与定时器/计数器的控制无关。计数器的控制无关。(D)特殊功能寄存器特殊功能寄存器TMOD,与定时器,与定时器/计数器的控制无关。计数器的控制无关。第六章 MCS-51MCS-51的定时器的定时器/计数器计数器4.单片机定时器可用于单片机定时器可用于(ABCD)。)。A.定时定时B.外部事件计数外部事件
44、计数C.串行口的波特率制定串行口的波特率制定D.扩展外部中断源扩展外部中断源5、定时器、定时器/计数器用作定时器时,其计数脉冲由谁提供?定计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?时时间与哪些因素有关?内部晶振;晶振频率,计数初值内部晶振;晶振频率,计数初值6、定时器、定时器/计数器作计数器模式使用时,对外界计数频率有计数器作计数器模式使用时,对外界计数频率有何限制?何限制?不能超过不能超过1/247、定时器、定时器/计数器的工作方式计数器的工作方式2有什么特点?适用于什么应有什么特点?适用于什么应用场合?用场合?自动装入初值,比较精确自动装入初值,比较精确第六章 MCS-51MCS-51的定时器的定时器/计数器计数器编程实现:要求采用定时器编程实现:要求采用定时器/计数器计数器T0对外部脉冲进行计对外部脉冲进行计数,每计数数,每计数100个脉冲后,个脉冲后,T0转为定时工作方式。定时转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为单片机的晶体振荡器的频率为6MHz,请使用方式,请使用方式1实实现,编写出程序。现,编写出程序。