资源预览内容
第1页 / 共71页
第2页 / 共71页
第3页 / 共71页
第4页 / 共71页
第5页 / 共71页
第6页 / 共71页
第7页 / 共71页
第8页 / 共71页
第9页 / 共71页
第10页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
电气工程学院电气工程学院Electrical Engineering Institute of NEDU第六章第六章 定时定时/ /计数器计数器2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 6.1 定时器定时器/计数器结构计数器结构 6.2 定时器定时器/计数器的四种工作方式计数器的四种工作方式 6.3 定时器定时器/计数器对输入信号的要求计数器对输入信号的要求 6.4 定时器定时器/计数器编程和应用计数器编程和应用教学内容教学内容2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.1.1 6.1.1 定时定时/ /计数器的结构与原理计数器的结构与原理 重点:定时的实质,定时与计数的关系重点:定时的实质,定时与计数的关系6 6.1.2 .1.2 定时定时/ /计数器方式寄存器计数器方式寄存器TMODTMOD6.1.3 6.1.3 定时定时/ /计数器控制计数器控制寄存器寄存器TCONTCON6 6.1.4 .1.4 定时定时/ /计数器的初始化计数器的初始化返回本章首页6.1 6.1 定时定时/ /计数器结构计数器结构2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.1.1 6.1.1 定时定时/ /计数器结构与原理计数器结构与原理 定定时时器器/计计数数器器简简称称定定时时器器,8051单单片片机机内内部部有有2个个16位位的的可可编编程程定定时时/计计数数器器:定定时时器器0(T0)和和定定时时器器1(T1)。可可编编程程是是指指其其功功能能(如如工工作作方方式式、定时时间、启动方式等)可以由定时时间、启动方式等)可以由指令指令来确定和改变。来确定和改变。 在在定定时时器器/计计数数器器中中除除了了有有两两个个16位位的的计计数数器器之之外外,还还有有2个个特特殊殊功功能能寄寄存存器器(控控制制寄寄存存器器TCON和和方方式式寄存器寄存器TMOD)。)。 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU这些寄存器之间是通这些寄存器之间是通过内部总线和控制逻过内部总线和控制逻辑电路连接起来的。辑电路连接起来的。定时器定时器/ /计数器的结构计数器的结构2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 从结构图可以看出从结构图可以看出: 16位的定时器位的定时器/计数器分别由两个专用寄存器计数器分别由两个专用寄存器组成,即组成,即T0由由TH0和和TL0构成;构成;T1由由TH1和和TL1构成。这些寄存器由于构成。这些寄存器由于存放定时和计数初值存放定时和计数初值。此。此外,内部还有一个外,内部还有一个8位的位的TMOD和一个和一个8位的位的TCON。TMOD 主要用于选定定时器的主要用于选定定时器的工作方工作方式式;TCON主要用于主要用于控制控制定时器的定时器的启动与停止。启动与停止。定时器定时器/计数器的结构计数器的结构2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU定时器定时器/ /计数器的原理计数器的原理 1616位的定时器位的定时器/ /计数器的实质上是一个加计数器的实质上是一个加1 1的计的计数器数器, ,其控制电路受软件控制、切换。其控制电路受软件控制、切换。 计数的次数和时间之间是相关的计数的次数和时间之间是相关的。 只要计数脉冲的只要计数脉冲的间隔相等,计数间隔相等,计数值就代表时间的值就代表时间的流逝流逝2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 当定时器当定时器/计数器为定时工作方式时,加计数器为定时工作方式时,加1信号由信号由振荡器的振荡器的12分频产生,分频产生,即每过一个机器周期,计数值即每过一个机器周期,计数值增增1,直至计满溢出为止。显然,定时器的定时时间,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。由于一个机器周期等于与系统的振荡频率有关。由于一个机器周期等于12个个振荡周期,所以振荡周期,所以 计数频率计数频率 fcount=1/12fosc 例:晶振为例:晶振为12MHZ ,则计数周期为则计数周期为 T=1/(12*106)Hz*1/12 =1微秒微秒最短的定时最短的定时周期周期2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 当定时器当定时器/ /计数器为计数工作方式时,通过引计数器为计数工作方式时,通过引脚脚T0T0和和T1T1对外部信号计数,外部脉冲的对外部信号计数,外部脉冲的下降沿下降沿触发触发计数计数 采样过程:采样过程: 在每个机器周期的在每个机器周期的S5P2期间采样引脚期间采样引脚当输入脉冲信号从当输入脉冲信号从1 1到到0 0的负跳变时,计数器就自的负跳变时,计数器就自动加动加1 1。 由于检测一个由由于检测一个由1 1到到0 0的跳变需要两个机的跳变需要两个机器周期,所以器周期,所以 计数的最高频率为振荡频率的计数的最高频率为振荡频率的1/241/24。为了确保给定电平在变化前至少被采样一次,外为了确保给定电平在变化前至少被采样一次,外部计数脉冲的部计数脉冲的高低电平高低电平均需保持均需保持一个机器周期一个机器周期以以上。(占空比没有限制)上。(占空比没有限制)2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 单片机中的定时器和计数器是一个部件,单片机中的定时器和计数器是一个部件,只不过计数器用来记录外界发生的事情,而定时只不过计数器用来记录外界发生的事情,而定时器则是由单片机提供的一个非常稳定的计数源。器则是由单片机提供的一个非常稳定的计数源。结论结论2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 综上所述,我们已知定时器综上所述,我们已知定时器/计数器是一种可编计数器是一种可编程部件,所以在其开始工作之前,程部件,所以在其开始工作之前,CPU必须将一些必须将一些命令(控制字)写入定时器命令(控制字)写入定时器/计数器。这个过程称计数器。这个过程称为定时器为定时器/计数器的初始化。计数器的初始化。 当当CPU用软件给定时器设置了某种工作方式之后,用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计数溢出,才可能中的操作时间,除非定时器计数溢出,才可能中断断CPU当前操作。当前操作。结论结论2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 6.1.2 6.1.2 定时器定时器定时器定时器/ /计数器方式寄存器计数器方式寄存器计数器方式寄存器计数器方式寄存器TMODTMODGATEGATEC/TC/T M M1 10 0M MGATEGATE C/TC/T1 1M M0 0M M控控 制制 T T 1 1控控 制制 T T 0 08989H H和和T T 类同类同0 01 1M M0 0M M0 00 00 10 11 01 01 11 1方方 式式方式方式0 0 1313位位方式方式1 161 16位位方式方式2 2 自动重装自动重装方式方式3 3 适用适用T0T00 01 1定时器模式定时器模式计数器模式计数器模式0 01 1与与INT INT 无关无关0 00 0与与INT INT 有关有关 定时器工作模式寄存器TMODM1M0:方式选择位方式选择位C/T:功能选择位功能选择位GATE: 门控位门控位2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUGATE=1GATE=1时时 若若TRTR1 1=1=1,并且,并且 INTINT1 1=1,=1,允许允许T0T0计数,计数, 若若TRTR1 1=0=0,或,或INTINT1 1=0,=0,禁止禁止T0T0计数计数 GATE=0,GATE=0,若若TRTR1 1=1,=1,允许计数允许计数 若若TRTR1 1=0=0,禁止计数禁止计数 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 由于在不同方式下计数器位数不同,因而最大计由于在不同方式下计数器位数不同,因而最大计数值(量程)也不同。数值(量程)也不同。 方式方式0:M=213=8192 方式方式1:M=216=65536 方式方式2:M=28=256 方式方式3:定时器分成两个:定时器分成两个8位计数器,两个位计数器,两个M均均2562024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUTR1(0):运行控制位运行控制位6.1.3 定时器定时器/计数器控制寄存器计数器控制寄存器TCON(88H)定时器工作模式寄存器定时器工作模式寄存器TCONTCON TF1(0): 溢出标志溢出标志2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.1.4 6.1.4 定时器定时器/ /计数器的初始化计数器的初始化初始化的步骤如下:初始化的步骤如下:确定工作方式确定工作方式-对对TMOD赋值赋值置定时或计数的初值置定时或计数的初值-可直接写入可直接写入TH0(1),TL0(1)根据需要开放定时器根据需要开放定时器/计数器的中断计数器的中断启动定时器启动定时器/计数器。计数器。 当实现了启动要求之后,定时器就按规定的工作当实现了启动要求之后,定时器就按规定的工作方式和初值开始计数或定时。方式和初值开始计数或定时。2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 因为定时器因为定时器/计数器是作计数器是作“加加1”计数,并在计满溢计数,并在计满溢出时产生中断,初值出时产生中断,初值X可以这样计算:可以这样计算: X = M - 计数值计数值(计数次数)计数次数) 例:在例:在6MHZ主频下,要求产生主频下,要求产生1ms的定时的定时,计算初值计算初值 分析:因为定时器每分析:因为定时器每“加加1”一次所需的时间为一次所需的时间为2s,如果如果要产生要产生1ms的定时,需加的定时,需加500次,次,500即为计数值。方即为计数值。方式式1下工作。下工作。 初值初值 X =M-计数值计数值=65536-500=FE0CH2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.2 6.2 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式 由上节可知,通过对由上节可知,通过对TMOD中的中的M1、M0的设的设置置,可以选择四种工作方式。也就是每个定时器可可以选择四种工作方式。也就是每个定时器可构成构成4种电路结构模式。种电路结构模式。 在模式在模式0、1和和2,T0和和T1的工作方式相同,在模的工作方式相同,在模式式3,两个定时器的方式不同。下面以,两个定时器的方式不同。下面以T1为例,分为例,分述各种工作方式的特点和用法。述各种工作方式的特点和用法。2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU方式方式016位寄存器中只用位寄存器中只用13位,其中位,其中TL1的高的高三位未用。三位未用。2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU16位寄存器全用位寄存器全用方式方式12024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU这种工作方式可省去用户软件中重装常数的程这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。序,并可产生相当精度的定时时间。方式方式22024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU该方式只适用于定时器该方式只适用于定时器T0T0,T0T0被拆成两个独立的被拆成两个独立的8 8位计数器位计数器TH0TH0和和TL0TL0。方式方式3 3下的下的T0T0方式方式 32024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU T0T0工作在方式工作在方式3 3时时,T1,T1可定为方式可定为方式0 0、方式、方式1 1和方式和方式2,2,用来作为串行口的波特率发生器用来作为串行口的波特率发生器, ,或不需要中断的或不需要中断的场合场合. .T1T1工作在方式工作在方式0 02024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUT0T0工作在方式工作在方式3 3时时T1T1为方式为方式1 1的工作示意图的工作示意图T1T1工作方式工作方式1 12024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUT0T0工作在方式工作在方式3 3时时T1T1为方式为方式2 2的工作示意图的工作示意图 T1 T1工作方式工作方式2 22024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUT1T1的控制字的控制字M1M0=11M1M0=11时时,T1,T1停止计数停止计数 注注意意: :在在T0T0为为方方式式3 3时时,T1,T1运运行行的的控控制制条条件件只只有有2 2个个, ,即即C/TC/T和和M1,M0M1,M0。T1T1工作方式工作方式3 32024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.3 6.3 定时器定时器/ /计数器对输入信号的要求计数器对输入信号的要求当当T0或或T1被选定为定时工作模式时被选定为定时工作模式时, 定时器定时器/计数器的计数器的输入脉冲的周期与机器周期一样输入脉冲的周期与机器周期一样,为时钟振荡频率的为时钟振荡频率的1/12。若。若 f振荡振荡=12MHz,则计数速率为则计数速率为1MHz。当当T0或或T1用作计数器时用作计数器时,计数脉冲来自相应的外部输计数脉冲来自相应的外部输入引脚入引脚.一次负跳变要花一次负跳变要花2个机器周期个机器周期,即即24个振荡周期个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡频率因此外部输入的计数脉冲的最高频率为系统振荡频率的的1/24.如如:f振荡振荡=12MHz,则可输入的最高频率为则可输入的最高频率为500KHz。 注注:外部输入信号脉冲宽度至少保持外部输入信号脉冲宽度至少保持1个机器周期个机器周期.返回本章首页2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU6.4 6.4 定时定时/ /计数器及中断系统综合应用计数器及中断系统综合应用【例例6.1】设设MCS-51单单片片机机系系统统时时钟钟频频率率CLK为为6MHZ,要要在在P1.0引引脚脚上上输输出出1个个周周期期为为1毫毫秒秒的的方方波,占空比为波,占空比为50%的方波信号的方波信号.如下图如下图: P1.01ms1msT=2ms2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU解解:(1)计算初值计算初值: 机器周期机器周期=2s=2*10-6s (216-X)*2*10-6=1*10-3, 即即(216-X)=500,X=65036 则则TH0=0FEH,TL0=0CH2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU(2)初始化程序初始化程序: 对定时器初始化和中断初始化对定时器初始化和中断初始化 即对即对IP,IE,TCON,TMOD的相应位设置的相应位设置,并将计并将计 数初值装入定时器数初值装入定时器.如如: TMOD=01H, 定时方式定时方式1 IP=00H,IE=92H,TCON=10H即即ET0=1,EA=1, TR0=12024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 0000H RESET : AJMP MAIN ORG 000BH AJMP IT0P ORG 0100H MAIN : MOV SP , #60H MOV TMOD,#01H方法一:中断方式方法一:中断方式2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ACALL PT0M0 HERE : AJMP HEREPT0M0 : MOV TL0 , #0CH MOV TH0 , #0FEH SETB TR0 SETB ET0 SETB EA SJMP $IT0P : MOV TL0 , #0CH MOV TH0 , #0FEH CPL P1.0 RETI 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 0000H MOV TMOD,#01H LOOP: MOV TH0,#0FE MOV TL0,#0CH SETBTR0LOOP1: JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP方法二:软件查询方法二:软件查询2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 【例例6.2】设设MCS-51单单片片机机系系统统时时钟钟频频率率CLK为为6MHZ,请请编编出出利利用用定定时时/计计数数器器T0在在P1.0引引脚脚上上产产生生周周期期为为2秒,占空比为秒,占空比为50%的方波信号的程序的方波信号的程序(1)主程序)主程序任务:任务: 1)T0工作方式的设定:工作方式的设定: 选择方式选择方式1(16位方式)(最大定时位方式)(最大定时131ms) 2)定时常数的设定:定时常数的设定: TC=216-100ms/2s =15536=3CB0H 每隔每隔100ms中断一次中断一次,中断中断10次为次为1s2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU即:即:TH0应装应装3CH,TL0应装应装B0H。3)中断管理:中断管理: 允许允许T0中断,开放总中断中断,开放总中断 即:即:IE应装应装10000010B4)启动定时器启动定时器T0: SETBTR05)设置软件计数器初值:(如使用设置软件计数器初值:(如使用R7) 即即R7应装应装0AH6)动态停机:动态停机:SJMP $2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUMAIN: MOV TMOD,#01H ;设定设定T0为方式为方式1MOV TH0 ,#3CH ;装入定时常数高装入定时常数高8位位MOV TL0 ,#0B0H ;装入定时常数低装入定时常数低8位位MOVIE ,#82H ;开放开放T0中断中断SETBTR0 ;启动启动T0MOVR7 ,#0AH ;设置软件计数器设置软件计数器SJMP $主程序主程序2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU任务:任务:1 1)恢复恢复T0T0常数;常数;2 2)软件计数器减软件计数器减1 1; 3 3)判判断断软软件件计计数数器器是是否否为为0 0。为为0 0时时,改改变变P1.0P1.0状状态态,并并恢恢复复软软件件计计数数器器初初值值;不不为为0 0时时中中断断返回。返回。(2 2)中断服务程序)中断服务程序2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUTOINT:MOVTL0,#0B0H ;恢复定时常数恢复定时常数MOVTH0,#3CHDJNZR7, NEXTCPL P1.0 MOVR7,#0AHNEXT:RETI中断服务程序中断服务程序2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUORG 0000H MOV TH0,#3CH AJMP MAIN MOV TL0,#0B0HORG 000BH MOV IE,#82H AJMP TOINT SETB TR0ORG 0030H MOVR7,#0AH MAIN:MOV TMOD,#01H完整程序完整程序2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU SJMP$TOINT: MOV TL0,#0B0H MOV TH0,#3CH DJNZ R7,NEXT CPL P1.0 MOV R7,#0AHNEXT: RETI END2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU【例【例6.3】把把T0(P3.4)作为外部中断请求输入线即)作为外部中断请求输入线即T0引脚发生负跳变时,向引脚发生负跳变时,向CPU请求中断。下面程请求中断。下面程序序T0定义方式定义方式1计数,即计数输入端计数,即计数输入端T0发生一次发生一次负跳变,计数器加负跳变,计数器加1即产生溢出标志,向即产生溢出标志,向CPU发中发中断,程序在断,程序在T0产生一次负跳变后,使产生一次负跳变后,使P1.0产生周产生周期为期为1ms的方波,其中定时器的方波,其中定时器T1用于方式用于方式2产生产生0.5ms定时。定时。方式方式2 2的应用的应用2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU0.5ms0.5msT=1sT0(P3.4)P1.0T1T1为方式为方式2 2定时定时T0为方式为方式1计数计数2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUT0的计数初值的计数初值: TH0=0FFH,TL0=0FFHT1的定时初值的定时初值: (28-X)*2*10-6=5*10-4 ,X=06H2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 0000HRESET: AJMP MAIN ;复位入口转主程序;复位入口转主程序 ORG 000BH LJMP IT0P ;转;转T0中断服务程序中断服务程序 ORG 001BH LJMP IT1P ;转;转T1中断服务程序中断服务程序 方法一:(中断方式)方法一:(中断方式)2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 0100HMAIN: MOV SP, #60H ACALL PT0M2 ;对;对T0、T1初始化初始化LOOP: MOV C, F0;T0产生中断了吗产生中断了吗,产生过产生过,则则F0=1 JNC LOOP SETB TR1 ;启动;启动T1 SETB ET1 ;允许;允许T1中断中断HERE: AJMP HERE 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUPT0M2: MOV TMOD, #26H MOV TL0 , #0FFH ;T0置初值置初值 MOV TH0 , #0FFH SETB TR0 ;启动;启动T0 SETB ET0 ;允许;允许T0中断中断 MOV TL1,#06H ;T1置初值置初值 MOV TH1,#06H CLR F0 SETB EA ;CPU开放中断开放中断 RET2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUIT0P: CLR TR0 ;停止;停止T0计数计数 SETB F0 ;建立产生中断标志;建立产生中断标志 RETIIT1P: CPL P1.0 ;P1.0位取反位取反 RETI2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU【例【例6.46.4】用定时器用定时器T1T1的方式的方式2 2对外部计数对外部计数, ,要求每计满要求每计满100100个数个数, ,将将P1.0P1.0引脚信号求反引脚信号求反. . 解解:P3.5:P3.5引脚输入外部信号引脚输入外部信号, ,每发生每发生1 1次负跳变计数器次负跳变计数器加加1,1,每输入每输入100100个脉冲个脉冲, ,计数器溢出中断计数器溢出中断, ,将将P1.0P1.0引脚引脚求反求反. . TMOD=60H TMOD=60H 注意注意: :此处此处T0T0不能为方式不能为方式3,3,其它皆可。其它皆可。 X=2 X=28 8-100=156=9CH-100=156=9CH方式方式2 2应用应用计数模式计数模式2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU程序清单程序清单: ORG 0000H LJMP MAIN ORG 001BH CPL P1.0 RETI ORG 0100HMAIN: MOV TMOD,#60H MOV TL0,#9CH MOV TH0,#9CH SETBTR1HERE: AJMPHERE2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU【例【例6.5A】T0方式方式3,分别产生,分别产生200us和和400us的定时的定时并使并使P1.0和和P1.1分别产生分别产生400us和和800us的方法的方法, fosc=6MHZ解解:TL0用于定时用于定时200us,TH0用于定时用于定时400us (28-X)*2*10-6=200*10-6, X=156 即即X=9CH (28-X)*2*10-6=400*10-6, X=56 即即X=38H 方式方式3 3的应用的应用2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 0000H START: AJMP MAIN ORG 000BH AJMP P1TO ORG 001BH AJMP PIT1 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUMAIN : MOV SP , #60H MOV TMOD , #03H MOV TL0 , #9CH MOV TH0 , #38H MOV TCON , #50H MOV IE , #8AHHERE : AJMP HEREPIT0 : MOV TL0 , #9CH CPL P1.0 RETIPIT1: MOV TH0,#38H CPL P1.1 RETI 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU【例【例6.5B】假设某假设某MCS-51应用系统的应用系统的2个外部中断源个外部中断源已被占用已被占用,设置定时器设置定时器T1工作在方式工作在方式2,作波特率发作波特率发生器用生器用.现要求增加现要求增加1个外部中断源个外部中断源,并控制并控制P1.0引脚引脚输出输出1个个5KHz的方波的方波. fosc=6MHZ.T0(P3.4)TL0为方式为方式3计数计数100s100sTH0为方式为方式3定时定时P1.02024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU(1)初值计算初值计算: TL0=0FFH (28-X)2*10-8=110-4 ,X=156=9CH即即TH0=9CH ORG 0000H LJMP MAIN ORG 000BH LJMP TL0INT 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 001BH LJMP TH0INT ORG0100HMAIN : MOV TMOD , #27H ; 00100111 MOV TL0 , #0FFH MOV TH0 , #9CH 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU MOV TL1,#data1 ;data据波特率据波特率常数定常数定 MOV TH1,#data1 MOV TCON , #55H ;边沿触发;边沿触发,启动启动定时定时 MOV IE , #9FH ;中断允许;中断允许 TL0INT:MOV TL0, #0FFH2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU RETITH0INT: MOV TH0,#9CH CPL P1.0 RETI中断处理中断处理2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU门控位门控位 GATEGATE的应用的应用【例【例6.6】门控门控GATE1使定时使定时/计数器计数器T1启动计数受启动计数受INT1的控制。当的控制。当GATE1为为1,TR为为1时,只有时,只有INT1引脚输入高电平,引脚输入高电平,T1才被允许计数,故可测才被允许计数,故可测引脚引脚P3.3上正脉冲宽度(机器周期数)。上正脉冲宽度(机器周期数)。 解解: 门控位为门控位为1,定时器启动计数受外部输入电平的,定时器启动计数受外部输入电平的影响,可测外部是输入脉冲宽度。影响,可测外部是输入脉冲宽度。 被测脉冲输入被测脉冲输入P3.3 (INT1 ) , T1为定时方式。为定时方式。 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG0000H RESET:AJMPMAIN ORG0100HSTART : MOV TMOD , #90H ; 门控定时门控定时,T1为方为方式式1 MOV SP , #60H2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU MOV TL1 , #00H MOV TH1 , #00HLOOP1 : JB P3.3 LOOP1 ; SETB TR1 LOOP2 : JNB P3.3 LOOP2LOOP3 : JB P3.3 LOOP32024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU CLR TR1 MOV A , TL1LOOP3: LCALLDIR AJMPLOOP3 将将A中中的的T1计计数数值值送送显显示示缓缓冲冲区并转换成可显示的代码区并转换成可显示的代码2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU【例【例6.7】 P3.4 输入低频负脉冲,要求输入低频负脉冲,要求P3.4每次发生负每次发生负调变时,调变时,P1.0输出一个输出一个400us的同步脉冲。的同步脉冲。2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUSTART : MOV TMOD , #06H ; T0为方式为方式2外部计外部计数数 MOV TH0 , #0FFH MOV TL0 , #0FFH SETB TR0 ;允许计数;允许计数LOOP1 : JBC TF0, PTF01 ; 溢出后溢出后 AJMP LOOP1方法一方法一: : 软件查询方式软件查询方式 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUPTF01 : CLR TR0 MOV TMOD , #02H ; T0为方式为方式2定时定时 MOV TH0 , #0AH ; 500us定时定时 MOV TL0 , #0AH CLR P1.0 SETB TR02024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDULOOP2 : JBC TF0 , PTF02 AJMP LOOP2PTF02 : SETB P1.0 CLR TR0 AJMP START 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU解解:P3.4即即T0为方式为方式2,计数,初值,计数,初值 #0FFH P3.5即即T1为方式为方式2,定时,初值,定时,初值 #38H , 400us ORG 0000H AJMP MAIN ORG 0000BH AJMP PT0 方法二方法二: :中断方式中断方式 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU ORG 001BH AJMP PT1 ORG 1000HMAIN : MOV TMOD , #26H MOV TL0 , #0FFH MOV TH0 , #0FFH MOV TL1 , #38H MOV TH1 , #38H MOV IE , #8AH SETB TR0 HERE : AJMP HEREPT0 : CLR TR0 CLR P1.0 SETB TR1 RETI 2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDUPT1 : SETB P1.0 CLR TR1 SETB TR0 RETI2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU 读取运行中的定时器读取运行中的定时器/计数器时,可能会出现读计数器时,可能会出现读取的计数值出错的问题。原因是取的计数值出错的问题。原因是CPU不可能在同一不可能在同一时刻同时读取时刻同时读取THX和和TLX的内容。(不同相的错误)的内容。(不同相的错误)错误情况举例:错误情况举例: 先读(先读(TLX),后读(),后读(THX),由于定时器在不),由于定时器在不断运行,读断运行,读(THX)前,若恰好出现前,若恰好出现TLX溢出向溢出向THX进位的情况,则读到的(进位的情况,则读到的(TLX)值完全不)值完全不对。对。运行中读定时器运行中读定时器/ /计数器计数器2024/9/14电气工程学院电气工程学院Electrical Engineering Institute of NEDU解决读错问题的方法:解决读错问题的方法: 先读(先读(THX),后读(),后读(TLX),再读(),再读(THX)。若)。若两次读得的(两次读得的(THX)相同,则可确定读得的内容是)相同,则可确定读得的内容是正确的。若不相同,则需要再次重复上述过程。这正确的。若不相同,则需要再次重复上述过程。这次读得的内容应该是正确的。下面是按此思路编写次读得的内容应该是正确的。下面是按此思路编写的程序段,读得的的程序段,读得的TH0和和TL0放在放在R1和和R0内。内。 RDTIME: MOV A , TH0 MOV R0, TH0 CJNE A , TH0,RDTIME MOV R1 , A 2024/9/14
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号