《C的中断系统及定时计数器.pptx》由会员分享,可在线阅读,更多相关《C的中断系统及定时计数器.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022-5-2415.1 80C51单片机的中断系统单片机的中断系统5.1.1 80C515.1.1 80C51中断系统的结构中断系统的结构 CPUCPU进行工作进行工作A A时发生了事件时发生了事件B B,请求,请求CPUCPU马上处理马上处理 CPUCPU暂时中断当前工作暂时中断当前工作A A,转去处理事件,转去处理事件B B 事件事件B B处理完后,回到工作处理完后,回到工作A A被中断的地方继续处理被中断的地方继续处理A A工作工作 中断的概念中断的概念 中断源中断源 中断请求中断请求 中断服务中断服务 中断返回中断返回 中断系统中断系统中断的优点中断的优点v 利用率高利用率高v 实
2、时性强实时性强v 可靠性好可靠性好 2022-5-242 80C51 80C51中断系统的结构中断系统的结构5 5个中断源、个中断源、2 2个优先级个优先级2022-5-243 中断源中断源5.1.2 80C515.1.2 80C51的中断源的中断源外部中断外部中断0 0(INT0INT0)外部中断外部中断1 1(INT1INT1)T0T0溢出中断(溢出中断(TF0TF0)T1T1溢出中断(溢出中断(TF1TF1)串行口中断(串行口中断(RIRI或或TITI)2022-5-244 触发方式设置及中断标志触发方式设置及中断标志 76543210TCONTF1TR1TF0TR0IE1IT1IE0I
3、T0字节地址:字节地址:88H 电平方式(电平方式(ITx=0ITx=0),),INTxINTx引脚引脚低电平低电平时时IEx=1IEx=1,响应中响应中断后断后IExIEx不自动清不自动清0 0(INTxINTx引脚状态)。引脚状态)。 边沿方式(边沿方式(ITx=1ITx=1),),INTxINTx引脚引脚负跳变负跳变时时IEx=1IEx=1,响应中响应中断后断后IExIEx自动清自动清0 0。 外部中断标志外部中断标志IE1IE1、IE0IE0(用(用IExIEx表示)表示)2022-5-245两种触发方式比较:两种触发方式比较: 电平方式时,电平方式时, INTxINTx低电平必须保持
4、到响应时,否则就会低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,漏掉;在中断服务结束前,INTxINTx低电平必须撤除,否则中断低电平必须撤除,否则中断返回之后将再次产生中断。返回之后将再次产生中断。 例,例,82558255的中断请求线在接受读或写操作后即被复位,因的中断请求线在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便。此以其去请求电平触发方式的中断比较方便。边沿方式时,采样到有效下降沿后,在边沿方式时,采样到有效下降沿后,在IExIEx中将锁存一个中将锁存一个1 1。若若CPUCPU暂时不能响应,申请标志也不会丢失,直到响应时才暂时不能响应,申请标志也不
5、会丢失,直到响应时才清清0 0。 例,例,ADC0809ADC0809的转换结束信号的转换结束信号EOCEOC为正脉冲,经反相后就可为正脉冲,经反相后就可以作为以作为80C5180C51的的INTxINTx信号信号 。2022-5-246 溢出中断标志溢出中断标志TF1TF1、TF0TF0(用(用TFxTFx表示)表示) 溢出中断请求标志溢出中断请求标志TFxTFx ,TxTx启动后就开始由初值进行加启动后就开始由初值进行加1 1计数,直至最高位产生溢出使计数,直至最高位产生溢出使TFx=1TFx=1向向CPUCPU请求中断。请求中断。CPUCPU响应中断后响应中断后TFxTFx自动清自动清0
6、 0。 SCONSCON的中断标志的中断标志76543210SCONTIRI字节地址:字节地址:98HRIRI:串口:串口接收接收中断标志,响应中断时中断标志,响应中断时不能自动清除不能自动清除 TITI:串口:串口发送发送中断标志,响应中断时中断标志,响应中断时不能自动清除不能自动清除 2022-5-2475.1.3 80C515.1.3 80C51中断的控制中断的控制 中断允许控制中断允许控制中断源的开放和屏蔽由中断源的开放和屏蔽由IEIE控制(控制(1 1,开放;,开放;0 0,禁止,禁止) 76543210IEEAESET1EX1ET0EX0字节地址:字节地址:A8H EX0:外中断外
7、中断0允许允许 ET0:T0中断允许中断允许 EX1:外中断外中断1 1允许允许 ET1:T1中断允许中断允许 ES :串口中断允许串口中断允许 EA :CPU中断允许中断允许 2022-5-248 中断优先级控制中断优先级控制中断优先级由中断优先级由IPIP控制(控制(1 1,高级;,高级;0 0,低级,低级) 76543210IPPSPT1PX1PT0PX0字节地址:字节地址:B8H PX0:外中断外中断0优先级优先级 PT0:T0中断中断优先级优先级 PX1:外外中断中断1 1优先级优先级 PT1:T1中断中断优先级优先级 PS :串口中断串口中断优先级优先级同一优先级的自然顺序:同一优
8、先级的自然顺序:自高至低:自高至低:INT0INT0、TOTO、INT1INT1、T1T1、串口。、串口。 2022-5-249 同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:2022-5-2410 中断优先级遵循的原则中断优先级遵循的原则几个中断同时申请,先响应高级的中断几个中断同时申请,先响应高级的中断 正进行的中断服务,同级或低级中断不能对其正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断。中断,但可以被高级中断所中断。 为此,中断系统内设有对应高、低为此,中断系统内设有对应高、
9、低2 2个个优先级状优先级状态触发器态触发器(用户不能寻址)。其中一个置(用户不能寻址)。其中一个置1 1,表示,表示正在响应高优先级的中断,它将阻断后来所有的中正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置断请求;另一个置1 1,表示正在响应低优先级中断,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。它将阻断后来所有的低优先级中断请求。 状态触发器的复位由中断返回指令状态触发器的复位由中断返回指令RETIRETI控制。控制。2022-5-24115.2 80C51单片机中断处理过程单片机中断处理过程5.2.1 5.2.1 中断响应条件和时间中断响应条件和时间 中
10、断响应条件中断响应条件有中断请求有中断请求 相应的中断允许位为相应的中断允许位为1 1CPUCPU开中断(即开中断(即EA=1EA=1) 遇下面情况之一将不被响应(遇下面情况之一将不被响应(此间中断条件失效,中断丢失此间中断条件失效,中断丢失) 正在处理同级或高级中断正在处理同级或高级中断 当前查询周期不是所执行指令的最后一个机器周期当前查询周期不是所执行指令的最后一个机器周期 正在执行正在执行RETIRETI或或访问访问IEIE或或IPIP 的指令的指令 2022-5-2412中断服务的进入: CPU执行程序过程中,在每个机器周期的S5P2期间,中断系统对各个中断源进行采样。这些采样值在下一
11、个机器周期内按优先级和内部顺序被依次查询。 如果某个中断标志在上一个机器周期的S5P2时被置成了1,那么它将于现在的查询周期中及时被发现。接着CPU便执行一条由中断系统提供的硬件LCALL指令,转向被称作中断向量的特定地址单元,进入相应的中断服务程序。 2022-5-2413 中断响应时间中断响应时间中断响应至少需要中断响应至少需要3 3个完整的机器周期个完整的机器周期(3 38 8个)!个)!受阻时要附加受阻时要附加3 3 5 5个机器周期(个机器周期(无同级或高级中断正进行无同级或高级中断正进行) 若M1周期的S5P2前某中断生效,在S5P2期间其中断请求被锁存到相应的标志位中去;M2恰逢
12、指令的最后一个机器周期,且该指令不是RETI或访问IE、IP的指令。于是,M3和M4便可以执行硬件LCALL指令,M5周期将进入了中断服务程序。2022-5-24145.2.2 5.2.2 中断响应过程中断响应过程 CPUCPU响应中断过程响应中断过程将相应优先级状态触发器置将相应优先级状态触发器置1 1(阻断后来同级或低级中断阻断后来同级或低级中断 )执行硬件执行硬件LCALLLCALL指令(指令(PCPC入栈,中断服务程序入口址送入栈,中断服务程序入口址送PCPC )执行中断服务程序执行中断服务程序 中断响应过程的前两步是由中断系统内部自动完成的,而中断服务程序则要由用户编写程序来完成。
13、编写中断服务程序注意编写中断服务程序注意中断服务程序入口存放指令中断服务程序入口存放指令LJMPLJMP或或AJMPAJMP现场保护与现场恢复现场保护与现场恢复2022-5-24155.2.3 5.2.3 中断返回中断返回 中断服务程序最后指令必须是中断服务程序最后指令必须是RETIRETI,其功能:,其功能: 将断点从堆栈弹送将断点从堆栈弹送PCPC,CPUCPU从原断点继续执行从原断点继续执行 将相应优先级状态触发器清将相应优先级状态触发器清0 0,恢复原来工作状态,恢复原来工作状态 注意注意不能用不能用RETRET代替代替RETRETI I 中断服务程序中中断服务程序中PUSHPUSH和
14、和POPPOP必须成对使用必须成对使用2022-5-24165.2.4 中断程序举例 2022-5-2417 ORG 0000HSTART:LJMP MAIN ;跳转到主程序 ORG 0003H LJMP INTO ;转向中断服务程序 ORG 0030H ;主程序 MAIN:CLR IT0 ;设为电平触发方式 SETB EA ;CPU开放中断 SETB EX0 ;允许中断 MOV DPTR,#1000H ;设置数据区地址指针 ORG 0200H ;中断服务程序 INT0:PUSH PSW ;保护现场 PUSH ACC SETB P3.0 ;由P3.0输出0 NOP NOP CLR P3.0 ;
15、由P3.0输出1,撤除 MOV A,P1 ;输入数据 MOVX DPTR,A ;存入数据存储器 INC DPTR ;修改数据指针,指向下一个单元 POP ACC ;恢复现场 POP PSW RETI ;中断返回2022-5-2418 例 多外部中断源的系统示例。 设有5个外部中断源,中断优先级排队顺序为:XI0、XI1、XI2、XI3、XI4。试设计它们与80C51单片机的接口。2022-5-2419 ORG 0003H LJMP INSE0 ;转外部中断0服务程序入口 ORG 0013H LJMP INSE1 ;转外部中断1服务程序入口 INSE0: PUSH PSW ;XI0中断服务程序
16、PUSH ACC POP ACC POP PSW RETI 2022-5-2420INSE1:PUSH PSW ;中断服务程序 PUSH ACC JB P1.0,DV1 ;P1.0为1,转XI1中断服务程序 JB P1.1,DV2 ;P1.1为1,转XI2中断服务程序 JB P1.2,DV3 ;P1.2为1,转XI3中断服务程序 JB P1.3,DV4 ;P1.3为1,转XI4中断服务程序INRET:POP ACC POP PSW RETI DV1: ;XI1中断服务程序 AJMP INRET DV2: ;XI2中断服务程序 AJMP INRET DV3: ;XI3中断服务程序 AJMP IN
17、RET DV4: ;XI4中断服务程序 AJMP INRET2022-5-24215.3 80C51单片机的定时单片机的定时/计数器计数器 实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:v软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。v采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。v采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器
18、不够用时,可以考虑进行扩展。2022-5-2422定时定时/ /计数器的结构计数器的结构基本型:基本型:T0T0,定时、计数。,定时、计数。 T1 T1,定时、计数、串口波特率发生器。,定时、计数、串口波特率发生器。 增强型:增加了增强型:增加了T2T2。见。见5.3.45.3.4节。节。 5.3.1 5.3.1 定时定时/ /计数器的结构和工作原理计数器的结构和工作原理 TH1TH1、TL1TL1TH0TH0、TL0TL0TCONTCONTMODTMOD2022-5-2423定时定时/ /计数器的工作原理计数器的工作原理实质是实质是1616位加位加1 1计数器计数器定时器模式时,是对内部定时
19、器模式时,是对内部机器周期机器周期计数。计数值乘以机计数。计数值乘以机器周期就是定时时间器周期就是定时时间 计数器模式时,是对计数器模式时,是对外部事件外部事件计数。脉冲由计数。脉冲由T0T0(P3.4P3.4)或或T1T1( (P3.5P3.5) )引脚输入。引脚输入。 2022-5-2424设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输
20、入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 s。 注意注意:(:(若若计数值计数值为为N N, ,计数初值计数初值为为X X) )溢出信号使溢出信号使TF0TF0或或TF1TF1置置1 1,并,并发出中断请求发出中断请求,1616位时有:位时有: N=65536-XN=65536-X,或,或X=65536-NX=65536-N12MHz12MHz晶振时,计数频率低于
21、晶振时,计数频率低于0.5MHz 0.5MHz 2022-5-24255.3.2 5.3.2 定时定时/ /计数器的控制计数器的控制工作方式寄存器工作方式寄存器TMODTMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下: 76543210TMODGATEC/TM1M0GATEC/TM1M0字节地址:字节地址:89HGATEGATE:门控位。:门控位。GATEGATE0 0时,只要时,只要TRxTRx为为1 1,就可启动计,就可启动计数器工作;数器工作;GATAGATA1 1时,定时器的启动还要加上时,定时器的启动还要加上INTxINTx引脚
22、引脚为高电平这一条件。为高电平这一条件。 C/TC/T:模式选择位。:模式选择位。 清清0 0为定时模式,置为定时模式,置1 1为计数方式。为计数方式。M1M0M1M0:工作方式设置位。可设置四种工作方式:工作方式设置位。可设置四种工作方式( (见下页见下页)。)。2022-5-2426M1M0M1M0 工作方式工作方式说说 明明0000方式方式0 01313位定时位定时/ /计数器计数器0101方式方式1 11616位定时位定时/ /计数器计数器1010方式方式2 28 8位自动重装定时位自动重装定时/ /计数器计数器1111方式方式3 3T0T0分成两个独立的分成两个独立的8 8位定时位定
23、时/ /计数器;计数器;T1T1此方式停止计数此方式停止计数注意:注意:TMODTMOD不能进行位寻址不能进行位寻址 2022-5-2427控制寄存器控制寄存器TCONTCON 76543210TCONTF1TR1TF0TR0字节地址:字节地址:88HTFxTFx:TxTx溢出标志位。溢出标志位。响应中断后响应中断后TFxTFx有硬件自动清有硬件自动清0 0。用软件设置用软件设置TFxTFx可产生同硬件置可产生同硬件置1 1或清或清0 0同样的效果。同样的效果。TRxTRx:TxTx运行控制位。运行控制位。置置1 1时开始工作;清时开始工作;清0 0时停止工作。时停止工作。TRxTRx要由软件
24、置要由软件置1 1或清或清0 0(即启动与停止要由软件控制即启动与停止要由软件控制)。)。2022-5-24285.3.3 5.3.3 定时定时/ /计数器的工作方式计数器的工作方式T0T0有方式有方式0 0、1 1、2 2、3 3;T1T1有方式有方式0 0、1 1、2 2。以。以T0T0为例说明。为例说明。方式方式0 0:1313位方式位方式 2022-5-2429 C/T=1 C/T=1时,则为计数模式,有:时,则为计数模式,有: X=2X=21313-N=8192-N-N=8192-N C/T=0 C/T=0时,则为定时模式,有:时,则为定时模式,有: X=2X=21313-N=819
25、2-N-N=8192-N,N=N=t t/Tcy/Tcy【例例5-35-3】若计数个数若计数个数N N为为2 2,求计数初值。,求计数初值。 公式法计算:公式法计算:X X819281922=8190=1FFEH2=8190=1FFEH 求补法计算:对求补法计算:对0 0000 0000 0010B0 0000 0000 0010B取反加取反加1 1为:为: 1 1111 1111 1110B(1 1111 1111 1110B(1FFEH1FFEH) )初值计算:初值计算:公式法公式法 求补法求补法 :X=X=对对N N求补求补2022-5-2430门控位作用门控位作用当当GATE=0GAT
26、E=0时时仅由仅由TR0TR0控制与门的开启。与门输出控制与门的开启。与门输出1 1时,控制开关时,控制开关接通,计数开始;接通,计数开始; 当当GATE=1GATE=1时时与门的开启由与门的开启由INT0INT0和和TR0TR0共同控制。这种方式可以用共同控制。这种方式可以用来测量来测量INT0INT0引脚上正脉冲的宽度。引脚上正脉冲的宽度。 注意注意:方式:方式0的计数初值高的计数初值高8位和低位和低5位确定麻烦位确定麻烦 ,实际,实际应用中常由应用中常由16位的方式位的方式1取代。取代。2022-5-2431方式方式1 1:1616位方式位方式 X=2X=21616-N=65536-N
27、-N=65536-N 计数范围:计数范围:1 16553665536 计数初值要计数初值要分成分成2 2个字节个字节分别送入分别送入TH0TH0、TL0TL02022-5-2432【例例5-45-4】若要求定时器若要求定时器T0T0工作于方式工作于方式1 1,定时时间为,定时时间为1ms1ms,当晶振为当晶振为6 MHz6 MHz时,求送入时,求送入TH0TH0和和TL0TL0的计数初值各为多少?的计数初值各为多少?应怎样送入应怎样送入TH0TH0和和TL0TL0?由于晶振为由于晶振为6 MHz6 MHz,所以机器周期,所以机器周期TcyTcy为为2 2S S,因此:,因此:N=t/TcyN=
28、t/Tcy=1=11010-3-3/2/21010-6-6500500X X2 21616-N-N65536-50065536-5006503665036FE0CH FE0CH 也可以利用以下也可以利用以下2 2条指令完成:条指令完成:v MOV TL0,#(65536-500) MOV TL0,#(65536-500)MODMOD 256 ; 256 ;余数余数为计数初值的为计数初值的低字节低字节v MOV TH0,#(65536-500) MOV TH0,#(65536-500)/ /256 ; 256 ; 商商为计数初值的为计数初值的高字节高字节用传送指令分别将用传送指令分别将FEHFE
29、H送入送入TH0TH0中,中,0CH0CH送入送入TL0TL0中即可。中即可。2022-5-2433方式方式2 2:8 8位自动重装方式位自动重装方式 X=2X=28 8-N=256-N -N=256-N 计数范围:计数范围:1 1256256 特别适合与脉冲信号发生器特别适合与脉冲信号发生器2022-5-2434方式方式3 3:(仅(仅T0T0有此方式,有此方式,T1T1的方式的方式3 3将停止计数)将停止计数) TL0 TL0进行进行8 8位定时位定时/ /计数计数 TH0 TH0进行进行8 8位定时(位定时(T1T1方式方式2 2时,可出借时,可出借TR1TR1、TF1TF1)2022-
30、5-2435 5.3.4 5.3.4 定时定时/ /计数器用于外部中断扩展计数器用于外部中断扩展扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时/计数器溢出中断。例:用例:用T0T0扩展一个外部中断源。将扩展一个外部中断源。将T0T0设置为计数器方式,设置为计数器方式,按方式按方式2 2工作,工作,TH0TH0、TL0TL0的初值均为的初值均为0FFH0FFH,T0T0允许中断,允许中断,CPUCPU开放中断。其初始化程序如下:开放中断。其初始化程序如下: MOV TMOD,#
31、06H ;MOV TMOD,#06H ;置置T0T0为计数器方式为计数器方式2 2 MOV TL0,#0FFH ; MOV TL0,#0FFH ;置计数初值置计数初值 MOV TH0,#0FFHMOV TH0,#0FFH SETB TR0 ; SETB TR0 ;启动启动T0T0工作工作 SETB EA ;CPUSETB EA ;CPU开中断开中断 SETB ET0 ;SETB ET0 ;允许允许T0T0中断中断 T0T0外部引脚上出现一个下降沿信号时,外部引脚上出现一个下降沿信号时,TL0TL0计数加计数加1 1,产生,产生溢出,将溢出,将TF0TF0置置1 1,向,向CPUCPU发出中断请
32、求发出中断请求 2022-5-24365.3.5 5.3.5 定时定时/ /计数器应用举例计数器应用举例初始化程序应完成:初始化程序应完成:v对对TMODTMOD赋值,以确定赋值,以确定T0T0和和T1T1的工作方式;的工作方式;v求初值求初值, ,并写入并写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1;v中断方式时,要对中断方式时,要对IEIE赋值,开放中断;赋值,开放中断;v使使TR0TR0或或TR1TR1置位,启动定时置位,启动定时/ /计数器工作。计数器工作。2022-5-2437计数应用计数应用【例例5-55-5】有一包装流水线,产品每计数有一包装流水线,产品每计数24
33、24瓶时发出一个包瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用装控制信号。试编写程序完成这一计数任务。用T0T0完成计数,完成计数,用用P1.0P1.0发出控制信号。发出控制信号。确定方式字:确定方式字:T0T0在计数的方式在计数的方式2 2时:时:M1M0=10M1M0=10,GATE=0 GATE=0 ,C/T=1C/T=1方式控制字为方式控制字为06H06H 求计数初值求计数初值X:X:N=24N=24X=256-24=232=E8HX=256-24=232=E8H应将应将E8HE8H送入送入TH0TH0和和TL0TL0中中 2022-5-2438 ORG 0000H ORG
34、 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH LJMP DVT0 LJMP DVT0 ORG 0100HORG 0100HMAIN:MOV TMOD,#06H ;MAIN:MOV TMOD,#06H ;置置T0T0计数方式计数方式2 2 MOV TH0,#0E8H; MOV TH0,#0E8H;装入计数初值装入计数初值 MOV TL0,#0E8H MOV TL0,#0E8H SETB ET0 ;T0 SETB ET0 ;T0开中断开中断 SETB EA ;CPUSETB EA ;CPU开中断开中断 SETB TR0 ;SETB TR0 ;启动启动
35、T0T0 SJMP $ ; SJMP $ ;等待中断等待中断DVT0:SETB P1.0 DVT0:SETB P1.0 NOP NOP NOP NOP CLR P1.0 CLR P1.0 RETI RETI END END主程序主程序 中断服务程序中断服务程序 2022-5-2439定时应用定时应用 定时时间较小时(小于定时时间较小时(小于65ms65ms)。晶振为。晶振为12 MHz12 MHz时,时,TcyTcy为为1 1S S。可直接采用方式。可直接采用方式1 1完成定时任务。完成定时任务。 【例例5-65-6】利用定时利用定时/ /计数器计数器T0T0的方式的方式1 1,产生,产生10
36、ms10ms的定时,并的定时,并使使P1.0P1.0引脚上输出周期为引脚上输出周期为20ms20ms的方波,采用中断方式,设系的方波,采用中断方式,设系统的晶振频率为统的晶振频率为12 MHz12 MHz。 确定方式字:确定方式字:T0T0在定时的方式在定时的方式1 1时:时:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字为方式控制字为0101H H 求计数初值求计数初值X:X:TcyTcy为为1 1S S N=10ms/1N=10ms/1S=10S=10 000000X=65536-10000=D8F0HX=65536-10000=D8F0H应将应
37、将D8D8送送TH0, F0HTH0, F0H送送TL0TL0 2022-5-2440 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH LJMP DVT0 LJMP DVT0 ORG 0100HORG 0100HMAIN:MOV TMOD,#01H ;MAIN:MOV TMOD,#01H ;置置T0T0方式方式1 1 MOV TH0,#0D8H; MOV TH0,#0D8H;装入计数初值装入计数初值 MOV TL0,#0F0H MOV TL0,#0F0H SETB ET0 ;T0 SETB ET0 ;T0开中断开中断 SE
38、TB EA ;CPUSETB EA ;CPU开中断开中断 SETB TR0 ;SETB TR0 ;启动启动T0T0 SJMP $ ; SJMP $ ;等待中断等待中断DVT0:CPL P1.0 DVT0:CPL P1.0 MOV TH0,#0D8H MOV TH0,#0D8H MOV TL0,#0F0H MOV TL0,#0F0H RETI RETI END END主程序主程序 中断服务程序中断服务程序 2022-5-2441采用软件查询方式完成的源程序如下:采用软件查询方式完成的源程序如下: ORG 0000H ORG 0000H LJMP MAIN ; LJMP MAIN ;跳转到主程序跳
39、转到主程序 ORG 0100H ;ORG 0100H ;主程序主程序 MAIN:MOV TMOD,#01H ;MAIN:MOV TMOD,#01H ;置置T0T0工作于方式工作于方式1 1 LOOP:MOV TH0,#0D8H ; LOOP:MOV TH0,#0D8H ;装入计数初值装入计数初值 MOV TL0,#0F0H MOV TL0,#0F0H SETB TR0 ; SETB TR0 ;启动定时器启动定时器T0T0 JNB TF0,$ ;TF0=0 JNB TF0,$ ;TF0=0,查询等待,查询等待 CLR TF0 ;CLR TF0 ;清清TF0TF0 CPL P1.0 ;P1.0 C
40、PL P1.0 ;P1.0取反输出取反输出 SJMP LOOP SJMP LOOP END END2022-5-2442 定时时间较大时(大于定时时间较大时(大于65ms65ms)。实现方法:一是采用。实现方法:一是采用1 1个定时个定时器定时一定的间隔(如器定时一定的间隔(如20ms20ms),然后用软件进行计数;二是采),然后用软件进行计数;二是采用用2 2个定时器级联,其中一个定时器用来产生周期信号(如个定时器级联,其中一个定时器用来产生周期信号(如20ms20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。进
41、行脉冲计数。 【例例5-75-7】编写程序,实现用定时编写程序,实现用定时/ /计数器计数器T0T0定时,使定时,使P1.7P1.7引脚输出周期为引脚输出周期为2s2s的方波。设系统的晶振频率为的方波。设系统的晶振频率为12MHz12MHz。确定方式字:确定方式字:T0T0在定时的方式在定时的方式1 1时:时:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字为方式控制字为0101H H 求计数初值求计数初值X:X:TcyTcy为为1 1S S N=20ms/1N=20ms/1S=20S=20 000000X=65536-20000=4E20HX=655
42、36-20000=4E20H应将应将4E4E送送TH0, 20HTH0, 20H送送TL0TL0 采用定时采用定时20ms20ms,然后再计数,然后再计数5050次的方法实现次的方法实现 2022-5-2443 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH LJMP DVT0 LJMP DVT0 ORG 0030HORG 0030HMAIN:MOV TMOD,#01H;MAIN:MOV TMOD,#01H;置置T0T0方式方式1 1 MOV TH0,#4EH ; MOV TH0,#4EH ;装入计数初值装入计数初值 MO
43、V TL0,#20H ;MOV TL0,#20H ;首次计数值首次计数值 MOV R7,#50MOV R7,#50 ; ;计数计数5050次次 SETB ET0 ;T0 SETB ET0 ;T0开中断开中断 SETB EA ;CPUSETB EA ;CPU开中断开中断 SETB TR0 ;SETB TR0 ;启动启动T0T0 SJMP $ ; SJMP $ ;等待中断等待中断DVT0:DJNZ R7,NT0DVT0:DJNZ R7,NT0 MOV R7,#50 MOV R7,#50 CPL P1.7 CPL P1.7 NT0:MOV TH0,#4EH NT0:MOV TH0,#4EH MOV
44、TL0,#20H MOV TL0,#20H SETB TR0 SETB TR0 RETI RETI END END主程序主程序 中断服务程序中断服务程序 2022-5-2444门控位的应用门控位的应用【例例5-85-8】 测量测量INT0INT0引脚上出引脚上出现的正脉冲宽度,并将结果现的正脉冲宽度,并将结果(以机器周期的形式)存放在(以机器周期的形式)存放在30H30H和和31H31H两个单元中。两个单元中。 将将T0T0设置为方式设置为方式1 1的定的定时方式,且时方式,且GATE=1GATE=1,计数,计数器初值为器初值为0 0,将,将TR0TR0置置1 1。 INT0INT0引脚上出现
45、高电平引脚上出现高电平时,加时,加1 1计数器开始对机计数器开始对机器周期计数。器周期计数。 INT0INT0引脚上信号变为引脚上信号变为低电平时,停止计数低电平时,停止计数 然后读出然后读出TH0TH0、TL0TL0的值的值 2022-5-2445 ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN ORG 0200H ORG 0200H MAIN:MOV TMOD,#09H ; MAIN:MOV TMOD,#09H ;置置T0T0为定时器方式为定时器方式1 1,GATE=1GATE=1 MOV TH0,#00H ; MOV TH0,#00H ;置计数初值置计数初
46、值 MOV TL0,#00HMOV TL0,#00H MOV R0,#31H ; MOV R0,#31H ;置地址指针初值(指向低字节)置地址指针初值(指向低字节) L1:JB P3.2,L1 ;L1:JB P3.2,L1 ;高电平等待高电平等待 SETB TR0 ;SETB TR0 ;当当INT0INT0由高变低时使由高变低时使TR0=1TR0=1,准备好,准备好 L2:JNB P3.2,L2 ;L2:JNB P3.2,L2 ;等待等待INT0INT0变高变高 L3:JB P3.2,L3 ; L3:JB P3.2,L3 ;已变高,启动定时,直到已变高,启动定时,直到INT0INT0变低变低 CLR TR0 ;INT0 CLR TR0 ;INT0由高变低,停止定时由高变低,停止定时 MOV R0,TL0 ;MOV R0,TL0 ;存结果存结果 DEC R0DEC R0 MOV R0,TH0 MOV R0,TH0 SJMP $ SJMP $ END END