单片机原理与应用技术:6第5章 中断系统和IO接口电路1

上传人:努力****83 文档编号:78259517 上传时间:2022-04-21 格式:PPT 页数:106 大小:1.24MB
返回 下载 相关 举报
单片机原理与应用技术:6第5章 中断系统和IO接口电路1_第1页
第1页 / 共106页
单片机原理与应用技术:6第5章 中断系统和IO接口电路1_第2页
第2页 / 共106页
单片机原理与应用技术:6第5章 中断系统和IO接口电路1_第3页
第3页 / 共106页
点击查看更多>>
资源描述
5.1 定时器/计数器第第5 5章章 中断系统和中断系统和I/OI/O接口电路接口电路5.2 中断系统中断系统2定时定时/计数的实现方法:计数的实现方法: 定时定时/计数的实现方法有计数的实现方法有3种:种: 硬件数字电路:硬件数字电路:用用555构成的定时器构成的定时器和计数器等。和计数器等。 软件编程软件编程 可编程定时可编程定时/计数器计数器5.1 定时器定时器/计数器计数器3软件编程n例 100MS延时程序延时程序n解解: 计算机反复执行一段程序以达到延时的目的称为软件延时。计算机反复执行一段程序以达到延时的目的称为软件延时。通过控制执行指令的数量可以延时不同的时间。要实现较长时间通过控制执行指令的数量可以延时不同的时间。要实现较长时间的延时,一般需采用多重循环。下面是延时的延时,一般需采用多重循环。下面是延时100ms的延时程序,的延时程序,设单片机的晶振为设单片机的晶振为12MHZ。(机器周期TM=12个时钟周期)START: ORG 1000H MOV R6, 0C8H ; 外循环外循环 200 次次LOOP1: MOV R7, 0F8H ; 内循环内循环 248 次次 NOP ; 时间补偿时间补偿 LOOP2: DJNZ R7, LOOP2 ; 延时延时 2 s248=496 s DJNZ R6, LOOP ; 延时延时 500 s200=100 ms RET n以上程序执行以上程序执行MOV Rn, data 指令的时间为指令的时间为 1 s, DJNZ指令指令 2 s, NOP指令指令1 s, 所以所以, 内循环延迟时间内循环延迟时间: 1 s+1 s+2 s248=498 s, 外循环延迟时间外循环延迟时间: 1 s+(内环延时内环延时+2 s)200=100.001 ms。 42 定时器的定时器的TMOD和和TCON寄寄存器存器5.1 定时器定时器/计数器计数器1 定时器的结构及工作原理定时器的结构及工作原理3 定时器的工作方式定时器的工作方式4 定时器的编程和应用定时器的编程和应用5一、一、 定时定时/计数器的结构和原理计数器的结构和原理是是MCS一一51单片机的重要功能模块之一。单片机的重要功能模块之一。可实现定时控可实现定时控制、延时、对外部事件计数,制、延时、对外部事件计数,还可用定时器产生毫秒宽还可用定时器产生毫秒宽的脉冲驱动步进电动机一类的电气机械。计数器主要用的脉冲驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。于外部事件的计数。 8031/8051/8751单片机有单片机有2个个16位的定时位的定时/计数器:计数器:定定时器时器0(T0)和定时器)和定时器1(T1)。它们都有定时器或事它们都有定时器或事件计数的功能件计数的功能。可由程序选择作为定时器用或作为计数可由程序选择作为定时器用或作为计数器用,定时时间或计数值也可由程序设置。器用,定时时间或计数值也可由程序设置。T0由由2个特殊功能寄存器个特殊功能寄存器TH0和和TL0构成,构成,T1则由则由TH1和和TL1构成。构成。1 定时器的结构及工作原理定时器的结构及工作原理67定时定时/ /计数器的结构计数器的结构16位加法计数器位加法计数器组成:两个组成:两个16位的定时器位的定时器T0和和T1,以及他们的工作方式寄,以及他们的工作方式寄存器存器TMOD和控制寄存器和控制寄存器TCON等组成。内部通过等组成。内部通过总线总线与与CPU相连。相连。8n每个定时器内部结构实际上就是一个每个定时器内部结构实际上就是一个可编程的加法计数器可编程的加法计数器,由编程来设置它工作在定时状态还是计数状态。由编程来设置它工作在定时状态还是计数状态。两种工作模式两种工作模式: (1) 计数器计数器工作模式工作模式就是对外部事件进行计数。就是对外部事件进行计数。计数脉冲来自相应的外部输入计数脉冲来自相应的外部输入引脚引脚T0T0(P3.4)P3.4)或或T1(P3.5)T1(P3.5)。当输入信号发生由。当输入信号发生由1 1至至0 0的的负跳变负跳变( (下降沿下降沿) )时,时,计数器(计数器(TH0TH0,TL0TL0或或TH1TH1,TL1TL1)的值增)的值增1 1。计数的最高频率一般为计数的最高频率一般为振荡频率的振荡频率的1/241/24。Why?(2) 定时器定时器工作模式工作模式也是通过计数实现的。也是通过计数实现的。计数脉冲来自内部时钟脉冲计数脉冲来自内部时钟脉冲,每个机器周期每个机器周期计数值增计数值增1 1,每个机器周期,每个机器周期=12=12个振荡周期,因此计数频率为振荡频个振荡周期,因此计数频率为振荡频率的率的1/121/12。所以。所以定时时间定时时间= =计数值计数值机器周期机器周期。4种工作方式种工作方式 (方式方式0-方式方式3) 。组成:两个可编程的定时器组成:两个可编程的定时器/计数器计数器T1、T09n在每个机器周期的在每个机器周期的S5P2S5P2期间采样检测引脚输入电平期间采样检测引脚输入电平。n若前一个机器周期采样值为若前一个机器周期采样值为“1”1”,后一个机器周期采样值,后一个机器周期采样值为为“0”0”,则计数器加,则计数器加1 1。n新的计数值在检测到输入引脚电平发生新的计数值在检测到输入引脚电平发生“1”1”到到“0”0”的负的负跳变(下降沿)后,于下一个机器周期的跳变(下降沿)后,于下一个机器周期的S3P1S3P1期间装入计期间装入计数器中数器中。n由于由于CPUCPU需要两个机器周期来识别一个需要两个机器周期来识别一个“1”1”到到“0”0”的跳变的跳变信号,所以最高的计数频率为振荡周期的信号,所以最高的计数频率为振荡周期的1/241/24。P1P2S1振荡周期振荡周期状态周期状态周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2计数的最高频率一般为振荡频率的计数的最高频率一般为振荡频率的1/241/24。Why?10n定时定时/ /计数器对输入信号的要求计数器对输入信号的要求1.外部计数脉冲的最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/24,例如例如选用选用12MHz频率的晶体,则可输入频率的晶体,则可输入500KHz的外部脉冲。的外部脉冲。2.输入信号的高、低电平至少要分别保持一个机器周期。输入信号的高、低电平至少要分别保持一个机器周期。如图所示,图中如图所示,图中Tcy为机器周期。为机器周期。11综上综上n所谓所谓计数器计数器就是就是对外部输入脉冲的计数对外部输入脉冲的计数;n所谓所谓定时器定时器也是对脉冲进行计数完成的,也是对脉冲进行计数完成的,计数的是计数的是MCS-51内部产生的标准脉冲内部产生的标准脉冲,通,通过过计数脉冲个数实现定时计数脉冲个数实现定时。n所以,定时器和计数器本质上是一致的,所以,定时器和计数器本质上是一致的,在以后的叙述中将定时器在以后的叙述中将定时器/计数器计数器笼统称为笼统称为定时器定时器。12定时器定时器/计数器原理框图计数器原理框图1C/T=n当控制信号当控制信号 定时器工作在定时器工作在定时方式定时方式;加;加1计数器对脉冲计数器对脉冲f进行计数,每来一个脉冲,计数器加进行计数,每来一个脉冲,计数器加1,直到计时器计满溢出;,直到计时器计满溢出; 因为因为 ,即一个计数脉冲的周期就是一个机器周期;计数,即一个计数脉冲的周期就是一个机器周期;计数器计数的是机器周期脉冲个数。从而实现定时。器计数的是机器周期脉冲个数。从而实现定时。n当控制信号当控制信号 定时器工作在定时器工作在计数方式计数方式;加;加1计数器对来自输计数器对来自输入引脚入引脚T0(P3.4)和和T1(P3.5)的外信号脉冲进行计数,每来一个的外信号脉冲进行计数,每来一个脉冲,计数器加脉冲,计数器加1,直到计时器计满溢出;,直到计时器计满溢出;C/T=0Tx THxTFxTLxTRxINTx定时定时计数计数0f0/12ff 控制信号控制信号K“1”“1”启动,计数器运行;启动,计数器运行;“0”0”停止,计数器停止;停止,计数器停止;加加1 1计数器计数器0/12ffn控控制信号制信号K可以控制计数器的可以控制计数器的“启动启动”和和“停停止止”:K = TRx(INTx+GATE)13 TCON(88H)组成:组成:TMOD 和和 TCONn工工作方式寄存器作方式寄存器TMOD:用于设置定时器的用于设置定时器的工作模式和工作工作模式和工作方式方式;n控制寄存器控制寄存器TCON:用于用于启动和停止启动和停止定时器的计数,并控制定时器的计数,并控制定时器的状态;定时器的状态;n单片机复位时,两个寄存器的所有位都被清单片机复位时,两个寄存器的所有位都被清0。14n可编程定时器的工作方式、启动、停止、溢出标可编程定时器的工作方式、启动、停止、溢出标志、计数器等都是志、计数器等都是可编程可编程的的通过设置寄存器通过设置寄存器TMOD,TCON,TH0,TL0,TH1和和TL1 实现。实现。n当设置了定时器的工作方式并启动定时器工作后,当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定好的工作方式独立工作,定时器就按被设定好的工作方式独立工作,不再不再占用占用CPU,只有在计数器计满溢出时才向,只有在计数器计满溢出时才向CPU申申请中断,占用请中断,占用CPU。n由此可见,定时器是单片机中工作效率高且应用由此可见,定时器是单片机中工作效率高且应用灵活的部件。灵活的部件。152 定时器的定时器的TMOD和和TCON寄寄存器存器5.1 定时器定时器/计数器计数器162 定时器的定时器的TMOD和和TCON寄存器寄存器n8051单片机定时器主要有几个特殊功能寄存器组单片机定时器主要有几个特殊功能寄存器组成:成:TMOD,TCON,TH0,TL0,TH1,TL1。nTMOD:设置定时器的工作方式;:设置定时器的工作方式;nTCON:控制定时器的启动和停止;:控制定时器的启动和停止;nTH0和和TL0 :存放定时器:存放定时器T0的的初值或计数结果初值或计数结果; TH0存放高存放高8位,位,TL0 存放低存放低8位;位;nTH1和和TL1 :存放定时器:存放定时器T1的的初值或计数结果初值或计数结果; TH1存放高存放高8位,位,TL1 存放低存放低8位;位;172.1 工作方式控制寄存器工作方式控制寄存器TMOD8位分为两组,高位分为两组,高4位控制位控制T1,低,低4位控制位控制T0。(1) GATE 门控位门控位 0: 以以TRX (X=0,1) 来启动定时器来启动定时器/计数器运行。计数器运行。1: 用外中断引脚用外中断引脚 (INT0*或或INT1*) 上的高电平和上的高电平和TRX来启来启动定时器动定时器/计数器运行。计数器运行。(2) M1、M0 工作方式选择位工作方式选择位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定时器位定时器/计数器。计数器。 0 1方式方式1,16位定时器位定时器/计数器。计数器。 1 0 方式方式2,8位常数自动重新装载位常数自动重新装载 1 1 方式方式3,仅适用于,仅适用于T0,T0分成两个分成两个8位计数器,位计数器,T1停止计数。停止计数。(3) C/T* 计数器模式和定时器模式选择位计数器模式和定时器模式选择位0: 定时器模式。定时器模式。 1: 计数器模式。计数器模式。(4) TMOD无位地址,不能位寻址。无位地址,不能位寻址。(5) 复位时,复位时,TMOD所有位均为所有位均为“0”。18低低4位与外部中断有关,后面介绍。高位与外部中断有关,后面介绍。高4位的功能如下位的功能如下: (1) TF1、TF0 计数溢出标志位计数溢出标志位 定时器定时器T0或或T1计数溢出时,由硬件计数溢出时,由硬件自动自动将此位将此位置置“1”;TFx可以由程序查询,也是定时中断的请求源;可以由程序查询,也是定时中断的请求源;(2) TR1、TR0 计数运行控制位计数运行控制位 TRx=1: 启动定时器启动定时器/计数器工作计数器工作 TRx=0: 停止定时器停止定时器/计数器工作计数器工作 2.2 控制寄存器控制寄存器TCON192.3 定时定时/ /计数器的初始化计数器的初始化MCS-51单片机的定时器单片机的定时器/计数器是可编程的,但在进行定计数器是可编程的,但在进行定时或计数之前要对程序进行时或计数之前要对程序进行初始化初始化,具体步骤如下:,具体步骤如下:(1)对)对TMOD赋值,以赋值,以确定确定定时器的定时器的工作模式工作模式;(2)置置定时定时/计数器计数器初值初值,直接将初值写入寄存器的,直接将初值写入寄存器的TH0、TL0或或TH1、TL1;(3)根据需要,对)根据需要,对IE置初值,开放定时器中断;置初值,开放定时器中断;(4)对)对TCON寄存器中的寄存器中的TR0或或TR1置位置位,启动定时,启动定时/计数计数器,置位以后,计数器即按规定的工作模式和初值进行计器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。数或开始定时。20定时器初始化(1). 通过对方式寄存器通过对方式寄存器TMOD进行设置,进行设置,选择工作方式。选择工作方式。 设设T0为定时方式为定时方式1:01H(0000 0001););设设T1为计数方式为计数方式1:50H(0101 0000)。)。 MOVTMOD, #01HM0M0M1M1C/TC/TGATEGATEM0M0M1M1C/TC/TGATEGATED0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7注意:注意:TMOD不能位寻址不能位寻址21(2) 给定时器赋初值例例5.5 T0初值初值3CB0H,T1初值初值00FFH。利用字节传送指令装入初值:利用字节传送指令装入初值:MOV TH0,#3CH MOV TL0,#0B0HMOV TH1,#00H MOV TL1,#0FFH22( 3) 启动定时器 例 5.2 SETB TR0 ;启动T0 SETB TR1 ;启动T1设定时器T1为定时方式1,初值3CB0H,若未用中断,初始化程序: MOVTMOD, #10H MOV TH1, #3CH MOVTL1, #0B0H SETB TR1注意:注意:TCON可位寻址可位寻址232定时器初值设定方法(1)根据时间长短,选择工作方式 设用M表示最大计数值,则各种方式计数最大值如下: 方式0M2138192 方式1M21665536 方式2M28256 方式3M28256原则上,定时时间长选用16位或13位计数器,即方式0或方式1。若时间短选8位计数器即方式2和方式3,如果需要自动装入初值,只能选择方式2。24(2)定时初值计算)定时初值计算 设初值为设初值为X,最大计数值为,最大计数值为M。初值。初值X与机器周期与机器周期TM 、定时时间、定时时间T的关系如下:的关系如下: (MX)TMT 其中,其中,TM12个时钟周期个时钟周期12/ fosc,XMT/TM25 例例 采用定时器采用定时器T1,方式,方式1,定时,定时50ms,计算,计算定时初值。已知晶振频率定时初值。已知晶振频率fosc12MHZ 26 例例 采用定时器采用定时器T1,方式,方式1,定时,定时50ms,计算,计算定时初值。已知晶振频率定时初值。已知晶振频率fosc12MHZ 解:解:fosc12MHz TM12个时钟周期个时钟周期=12/fosc=1s 定时方式定时方式1时时 M21665536 所以所以 XMT/TM 6553650000/1 155363CB0H27第第5章章 定时器定时器/计数器及其应用计数器及其应用3 定时器的工作方式定时器的工作方式28nMCS-51的定时器的定时器T0有有4种工作方式:种工作方式:即:即:方式方式0,方式,方式1,方式,方式2,方式,方式3。nMCS-51的定时器的定时器T1有有3种工作方式:种工作方式:即:即:方式方式0,方式,方式1,方式,方式2。3 定时器的工作方式定时器的工作方式293.1 方式方式0 M1、M0设置为设置为00 ,为,为13位位计数器,以计数器,以T1为例,为例,其框图如下其框图如下:3 定时器的工作方式定时器的工作方式方式方式0计数脉冲输入加1计数器303 定时器的工作方式定时器的工作方式方式方式0TH1 D12 D11 D10 D9 D8 D7 D6 D5TL1 D4 D3 D2 D1 D0n在这种方式下,在这种方式下,16位寄存器位寄存器TH1和和TL1只用只用13位,位,由由TH1的的8位和位和TL1的低的低5位组成。位组成。TL1的高的高3位不定。位不定。n当当TL1的低的低5位计数溢出时,向位计数溢出时,向TH1进位。而进位。而TH1计计数溢出时,则向中断标志位数溢出时,则向中断标志位TF1进位(即硬件将进位(即硬件将TF1置置1),并请求中断。),并请求中断。n可通过查询可通过查询TF1是否置是否置“1”或考察中断是否发生来判或考察中断是否发生来判定定时器定定时器T1的操作完成与否。的操作完成与否。313 定时器的工作方式定时器的工作方式方式方式0n当当C/T=0时,为时,为定时定时工作模式,开关接到振荡器的工作模式,开关接到振荡器的12分频器输出上,计数器对机器周期脉冲计数。其分频器输出上,计数器对机器周期脉冲计数。其定时时间为:定时时间为:(213-初值初值)振荡周期振荡周期12例如:例如:若晶振频率为若晶振频率为12MHz,则最长的定时时,则最长的定时时间为:间为: (213-0)(1/12)12us=8.191msn当当C/T=1时,为时,为计数计数工作模式,开关与外部引脚工作模式,开关与外部引脚T1(P3.5)接通,计数器对来自外部引脚的输入脉冲接通,计数器对来自外部引脚的输入脉冲计数。当外部信号发生负跳变时计数器加计数。当外部信号发生负跳变时计数器加1。323 定时器的工作方式定时器的工作方式方式方式0nGATE控制定时器控制定时器Tx(T1或或T0)的条件的条件:(1) 当当GATE=0时,时,“或门或门”输出恒为输出恒为1,“与门与门”的输的输出信号出信号K由由TRx决定决定(即此时即此时K=TRx),定时器不受,定时器不受INTx输入电平的影响,由输入电平的影响,由TRx直接控制定时器的启动和停止。直接控制定时器的启动和停止。TRx=1;计数启动;计数启动;TRx=0;计数停止;计数停止;(2) 当当GATE=1时时, “与门与门”的输出信号的输出信号K由由INTx输入输入电平和电平和TRx位的状态一起决定位的状态一起决定(即此时即此时K=TRxINTx),当且仅当当且仅当TRx=1且且INTx=1(高电平高电平)时,时,计数启动计数启动;否则,计数停止否则,计数停止。333.2 方式方式1 M1、M0=01,为,为16位位的计数器,除位数外,其他与方式的计数器,除位数外,其他与方式0相同相同。n其定时时间为:其定时时间为:(216-初值初值)振荡周期振荡周期12例如:若晶振频率为例如:若晶振频率为12MHz,则最长的定时时间为,则最长的定时时间为(216-0)(1/12)12us=65.536ms3 定时器的工作方式定时器的工作方式方式方式1343.3 方式方式2 M1、M0=10 ,为,为自动恢复初值的自动恢复初值的8位位计数器,等效框图如计数器,等效框图如下下: TLx作为作为8位计数器,位计数器,THx作为重置初值的缓冲器。作为重置初值的缓冲器。 3 定时器的工作方式定时器的工作方式方式方式2THx作为常数缓冲器作为常数缓冲器,当,当TLx计数溢出时,在置计数溢出时,在置“1”溢出标志溢出标志TFx的同时,还的同时,还自动的将自动的将THx中的初值送至中的初值送至TLx,使,使TLx从初值开始重从初值开始重新计数。定时器新计数。定时器/计数器的方式计数器的方式2工作过程如图工作过程如图 (x=0, 1) 。35n优点:优点:方式方式0 0和方式和方式1 1用于循环重复定时或计数用于循环重复定时或计数时,在时,在每次计数器挤满溢出后,计数器每次计数器挤满溢出后,计数器复复0 0。若要进行新一轮的计数,就得重若要进行新一轮的计数,就得重新装入计数初值。这样一来不仅造成新装入计数初值。这样一来不仅造成编编程麻烦,而且影响定时精度。程麻烦,而且影响定时精度。而方式而方式2 2具有初值自动装入的功能,避免了这个具有初值自动装入的功能,避免了这个缺点,缺点,可实现精确的定时可实现精确的定时。n缺点:缺点:只有只有8 8位计数器,定时时间短、计数范位计数器,定时时间短、计数范围小。围小。其定时时间为:其定时时间为: (28-初值初值)振荡周期振荡周期12若晶振频率为若晶振频率为12MHz,则最长的定时时间为,则最长的定时时间为(28-0)(1/12)12us=0.256ms3 定时器的工作方式定时器的工作方式方式方式2方式方式2工作过程图工作过程图 (x=0, 1) 。363.4 方式方式3 只适用于定时器只适用于定时器/计数器计数器T0。T1不能工作在方式不能工作在方式3。如果将如果将T1置为方式置为方式3,则相当于,则相当于TR1=0,停止计数,停止计数 。1. 工作方式工作方式3下的下的T0 T0在方式在方式3时被拆成两个时被拆成两个独立的独立的8位计数器:位计数器:TH0和和TL0。n8位计数器位计数器TL0使用使用T0的状态控制位的状态控制位C/T*、GATE、TR0、INT0,它既可以工作在,它既可以工作在定时方式定时方式,也可以工作在也可以工作在计数方式计数方式。n8位定时器位定时器TH0被固定为一个被固定为一个8位定时器位定时器(不能作外部计数模不能作外部计数模式式) ,并使用定时器,并使用定时器T1的状态控制位的状态控制位TR1,同时占用定时器同时占用定时器T1的中断请求源的中断请求源TF1。此时,定时器。此时,定时器TH0的启动或停止只受的启动或停止只受TR1控制控制。TR1=1时,启动时,启动TH0的计数;的计数; TR1=0时,停止时,停止TH0的计数的计数3 定时器的工作方式定时器的工作方式方式方式3375.3 定时器的工作方式定时器的工作方式各引脚与各引脚与T0的逻辑关系如图所示的逻辑关系如图所示: 382. T0工作在方式工作在方式3下下T1的各种工作方式的各种工作方式 注意:当注意:当T0处于方式处于方式3时,时, T1仍可设置为方式仍可设置为方式0、方式、方式1和方式和方式2。n当时由于当时由于TR1、TF1和和T1的中断源都已被定时器的中断源都已被定时器T0(中的中的TH0)占占用,所以定时器用,所以定时器T1 仅有控制位仅有控制位C/T来决定其工作在定时方式或来决定其工作在定时方式或计数方式。计数方式。n当计数器计满溢出时,不能置位当计数器计满溢出时,不能置位“TF1”,而只能将输出送往串,而只能将输出送往串口。所以,此时定时器口。所以,此时定时器T1一般用作串口的波特率发生器,或不需一般用作串口的波特率发生器,或不需要中断的场合。要中断的场合。(1) T1工作在方式工作在方式03 定时器的工作方式定时器的工作方式39(2) T1工作在方式工作在方式1 (3) T1工作在方式工作在方式23 定时器的工作方式定时器的工作方式40结论结论nT0 方式方式3时,时,TL0和和TH0被分成两个独被分成两个独立的立的8位定时器位定时器/计数器。其中,计数器。其中,n TL0: 8位定时器位定时器/计数器;计数器;n TH0: 8位定时器位定时器。n当当T1作串行口波特率发生器时,作串行口波特率发生器时,T0才才设置为方式设置为方式3。414 定时器的编程和应用定时器的编程和应用5.1 定时器定时器/计数器计数器424 定时器的编程和应用定时器的编程和应用n编程说明编程说明MCS-51单片机的定时器是可编程的,但在进行定时或计数之前要对程单片机的定时器是可编程的,但在进行定时或计数之前要对程序进行序进行初始化初始化,具体步骤如下:,具体步骤如下:(1)确定工作方式字:对)确定工作方式字:对TMOD寄存器正确赋值;寄存器正确赋值;(2)确定定时初值:计算初值,直接将初值写入寄存器的)确定定时初值:计算初值,直接将初值写入寄存器的TH0、TL0或或TH1、TL1;初值计算初值计算: 设计数器的最大值为设计数器的最大值为M,则置入的初值,则置入的初值X为:为: 计数方式:计数方式:X=M-计数值计数值 定时方式:由定时方式:由(M-X)T=定时值定时值,得得X=M-定时值定时值/T T为计数周期,是单片机的机器周期。为计数周期,是单片机的机器周期。(模式(模式0 M为为213,模式,模式1 M为为216,模式,模式2和和3 M为为28)(3)根据需要,对)根据需要,对IE置初值,开放定时器中断;置初值,开放定时器中断;(4)启动定时)启动定时/计数器,对计数器,对TCON寄存器中的寄存器中的TR0或或TR1置位,置位以置位,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。后,计数器即按规定的工作模式和初值进行计数或开始定时。43任务任务7 2ms方波输出方波输出要要在在P1.0上输出一个周期为上输出一个周期为2ms的方波,假的方波,假设系统振荡频率采用设系统振荡频率采用12MHz。 利用利用T0方式方式0产生产生1ms的定时的定时方波的周期用方波的周期用T0来确定,让来确定,让T0每隔每隔1ms计数溢出计数溢出1次,即次,即TF0=1;查询到;查询到TF0=1 则则CPU对对P1.0取反。取反。即要使即要使P1.0P1.0每隔每隔1ms1ms取反取反一次。一次。44硬件设计硬件设计45第一步:第一步: 确定工作方式字确定工作方式字 方式方式0 (13位位)最长可定时最长可定时 8.192ms; 方式方式1 (16位位)最长可定时最长可定时 65.536ms; 方式方式2 (8位位)最长可定时最长可定时 256 s。nT0为方式为方式0, M1M0=00 n定时工作状态,定时工作状态, C/T=0nGATE=0,不受,不受INT0控制,控制,nT1不用,全不用,全部取部取“0”值。值。n故故TMOD=00H46第二步:第二步: 计算计算1ms定时的初值定时的初值X 设初值为设初值为X,则有,则有: (213-X) 12 1/(12106 ) =110-3可求得:可求得:X=8192-1000=7192X化为化为16进制,进制,即即X=1C18H=1,1100,000 1,1000B。所以,所以,T0的初值为的初值为: TH0=E0H TL0=18HTH0 1 1 1 0 0 0 0 0TL0 1 1 0 0 047第三步:第三步: 程序设计程序设计 采用查询采用查询TF0的状态来控制的状态来控制P1.0的输出,同时要重新的输出,同时要重新装入初值。装入初值。48 参考程序参考程序: ORG 0100HMAIN:MOV TMOD, #00H;设置T0为方式0MOVTL0,#18H;送计数初值 MOVTH0,#0E0H ;送计数初值SETB TR0 ;启动T0LOOP: JBC TF0,NEXT ;查询定时时间到,转NEXT,同时清TF0SJMPLOOP;重复循环NEXT:MOV TL0, #18H ;T0重置初值 MOV TH0, #0E0H ;T0重置初值 CPL P1.0 ;P1.0的状态取反SJMPLOOP;重复循环END49n演演 示示50 例例 将将2ms的的输出方波周期改为输出方波周期改为1秒。秒。 分析:分析: 周期为周期为1s的方波要求的方波要求500ms的定时。的定时。 (1) T0工作方式的确定工作方式的确定因定时时间较长,采用哪一种工作方式?因定时时间较长,采用哪一种工作方式?由各种工作方由各种工作方式的特性,可计算出式的特性,可计算出: 方式方式0 (13位位)最长可定时最长可定时 8.192ms; 方式方式1 (16位位)最长可定时最长可定时 65.536ms; 方式方式2 (8位位)最长可定时最长可定时 256 s。 所以采用定时器定时加软件计数的方法来实现延长定时。所以采用定时器定时加软件计数的方法来实现延长定时。选方式选方式1,定时,定时50ms,软件计数,软件计数10次。次。50ms 10=500ms。 所以,所以,TMOD=01H以上各方式以上各方式都不满足要求都不满足要求4 定时器的编程和应用定时器的编程和应用51 (2) 计算计数初值计算计数初值因为因为: (21 6-X)12 1/(12106 ) =5010-3所以所以: X=15536=3CB0H因此因此: TH0=3CH,TL0=B0H (3) 10次计数的实现次计数的实现设计一个软件计数器,初始值设为设计一个软件计数器,初始值设为10。每隔。每隔50ms定时时间到,产生溢出标志定时时间到,产生溢出标志TF0,程序查询,程序查询到到TF0=1,则软件计数器减,则软件计数器减1。这样减到。这样减到0时就获时就获得了得了500ms的定时。的定时。4 定时器的编程和应用定时器的编程和应用52(4) 程序设计(参考程序)程序设计(参考程序) MAIN: MOV TMOD,#01H ;设T0工作在方式1MOV TL0,#0B0H ;给T0设初值MOV TH0,#3CHMOVR7,#10;软件计数器初值SETB TR0 ;启动T0LOOP: JBCTF0, NEXT;查询定时时间到,转NEXT,同时清TF0SJMP LOOP NEXT: DJNZ R7,EXIT;R7不等于0,则跳转,不对P1.0取反CPLP1.0MOVR7,#10;重置软件计数器初值EXIT: MOV TL0,#0B0H ;T0中断子程序,重装初值MOV TH0,#3CH SJMPLOOPEND 53n以上的定时程序中,程序都要以上的定时程序中,程序都要重置计时器初值重置计时器初值,这,这样从定时器溢出发出溢出标志,到重装完定时器初样从定时器溢出发出溢出标志,到重装完定时器初值值,再开,再开始计数,之间总会有一段始计数,之间总会有一段时间间隔时间间隔,使定,使定时时间增加了若干微秒,造成时时间增加了若干微秒,造成定时不够精确定时不够精确。n为了减小这种定时误差,单片机中设置了为了减小这种定时误差,单片机中设置了工作方式工作方式2(自动重装初值自动重装初值),则可避免上述因素,则可避免上述因素,省去程序省去程序中重装初值的指令,中重装初值的指令,实现精确定时。实现精确定时。n但是工作方式但是工作方式2的的缺点缺点是是只有只有8位位计数器,定时时间计数器,定时时间受到很大限制。受到很大限制。4 定时器的编程和应用定时器的编程和应用54例例 利用利用T0方式方式2产生产生250us的定时,在的定时,在P1.0引脚上输出周期为引脚上输出周期为500us的方波的方波(要求精确定时要求精确定时)。(设系统振荡为设系统振荡为12MHz)(1) 工作方式选择工作方式选择实现精确定时,采用方式实现精确定时,采用方式2。对于对于12MHz晶振,方式晶振,方式2的最大计数时间为的最大计数时间为28=256us, 所以可实现所以可实现250us的精确定时。的精确定时。故,设置故,设置TMOD=02H。(2) 计算初值计算初值设初值为设初值为X: 则则 (28-X) 12 1/(12106 ) =25010-6 X=28-250=6=06H(3) 程序设计程序设计采用查询采用查询TF0的状态来控制的状态来控制P1.0的输出。的输出。4 定时器的编程和应用定时器的编程和应用55(4) 参考程序参考程序MAIN: MOV TMOD, #02H ;置T0方式2MOV TH0,#06H ;送计数初值MOV TL0,#06HSETB TR0 ;启动T0LOOP: JBC TF0,NEXT ;查询定时时间到,转NEXT,同时清TF0SJMP LOOPNEXT:CPLP1.0;输出取反,不需重装初值SJMPLOOP;重复循环END4 定时器的编程和应用定时器的编程和应用56nGATE门可使定时器门可使定时器Tx(T0或或T1)的启动计数的启动计数受受INTx*的控制,的控制,可测量引脚可测量引脚INTx*(P3.2或或P3.3) 上正脉冲的宽度上正脉冲的宽度(机器周期数机器周期数) 。n以以T1为例:为例:门控制位门控制位GATE的应用的应用测量脉冲宽度测量脉冲宽度回顾回顾当当GATE=1时,时,K=TRxINTxK57例例 利用利用T1门控位门控位GATE测试测试INT1*(P3.3)引脚上出现的正脉冲引脚上出现的正脉冲的宽度。的宽度。分析:分析:n根据设计要求,将根据设计要求,将T1设定为定时工作模式、方式设定为定时工作模式、方式1、GATE=1;n当当TR1=1时,一旦时,一旦INT1*(P3.3)引脚上出现高电平就开始计引脚上出现高电平就开始计数,直到出现低电平为止。数,直到出现低电平为止。n然后读取然后读取TH1、TL1中的计数值,分别送到寄存器中的计数值,分别送到寄存器A和和B中。中。n由于由于T1工作在定时方式,计数器计数的是机器周期的脉冲数;工作在定时方式,计数器计数的是机器周期的脉冲数;n将脉冲数转化成时间,就可得到正脉冲的宽度。将脉冲数转化成时间,就可得到正脉冲的宽度。门控制位门控制位GATE的应用的应用测量脉冲宽度测量脉冲宽度58ORG 0100HMAIN: MOV TMOD, #90H ;T1为方式1定时控制字MOV TL1, #00H;计数器初值为0MOV TH1, #00HLOOP: JB P3.3, LOOP;等待INT1*低SETB TR1;如INT1*为低,启动T1LOOP1: JNB P3.3, LOOP1;等待INT1*升高,开始计数LOOP2: JB P3.3, LOOP2 ;等待INT1*降低,停止计数 (此时在计数)CLR TR1;停止T1计数MOV A, TL1;T1计数值的低8位送AMOV B, TH1;T1计数值的高8位送B由于定时器最长为由于定时器最长为16位计数器,因此被测脉冲高电平的宽度不能超过位计数器,因此被测脉冲高电平的宽度不能超过65536个机器周期。个机器周期。参考程序参考程序: :59 当当T0(P3.4) 引脚上发生负跳变时,从引脚上发生负跳变时,从P1.0引脚上输出引脚上输出一个周期一个周期为为200ms的方波的方波,如图所示。如图所示。(系统振荡为系统振荡为6MHz) 两个计数器同时使用两个计数器同时使用任务任务8 定时计数综合应用定时计数综合应用60硬件电路硬件电路61(1) 工作方式选择工作方式选择lT0为方式为方式1计数计数,初值,初值 0FFFFH,即外部计数输入端,即外部计数输入端T0(P3.4) 发生一次负跳变时,发生一次负跳变时,T0加加1且溢出,溢出标志且溢出,溢出标志TF0置置“1”,发中断请求。在进入,发中断请求。在进入T0中断程序后,把中断程序后,把F0标志置标志置“1”,说明,说明T0引脚上已接收了负跳变信号。引脚上已接收了负跳变信号。lT1定义为方定义为方式式1定定时。时。在在T0引脚产生一次负跳变后,启动引脚产生一次负跳变后,启动T1每每100Ms产生一次中断,在中断服务程序中对产生一次中断,在中断服务程序中对P1.0求反,求反,使使P1.0产生周产生周期期200ms的方波。的方波。lTMOD=0001,0101=15H(2) 计算计算T1初值初值设设T1的初值为的初值为X: 则则 (216-X)12 1/(6106 ) =10010-3所以所以: X=15536=3CB0H软件设计软件设计晶振为晶振为12M时:时:方式方式0 (13位位)最长可定时最长可定时 8.192ms; 方式方式1 (16位位)最长可定时最长可定时 65.536ms;方式方式2 (8位位)最长可定时最长可定时 256 s。62MAIN: MOV TMOD, #15H ;初始化,T1为方式2定时,T0为方 式1计数MOV TL0, #0FFH ;T0置初值 MOV TH0, #0FFHSETB TR0 ;启动T0MOV TL1, #0B0H ;T1置初值MOV TH1, #3CHLOOP0:JBCTF0,NEXT0;TF0=1,转,同时TF0=0 ;查询T0有无负跳变,有则转到NEXT0SJMP LOOP0NEXT0:CPLP1.0;P1.0取反SETB TR1;启动T1LOOP1:JBCTF1,NEXT1 ;查询T1定时时间到否,到则转到NEXT1SJMP LOOP1NEXT1:MOV TL1, #0B0H ;T1重置初值MOV TH1, #3CH CPLP1.0;P1.0取反SJMP LOOP1END(3) 程序设计程序设计63n以上例题均采用以上例题均采用查询查询的方法,这种方法很的方法,这种方法很简单简单,但是在定时器整个计数的过程中,但是在定时器整个计数的过程中,CPU要要不断不断地查询地查询溢出标志溢出标志TFx的状态,很难执行其他操的状态,很难执行其他操作,作,占用了占用了CPU的工作时间,使得的工作时间,使得CPU的的工作工作效率不高效率不高。n若若采用中断采用中断的方式来实现,可大大提高的方式来实现,可大大提高CPU的的工作效率。工作效率。645.2 中断系统中断系统5.2.1 输入输出传送方式输入输出传送方式1无条件传送方式采用这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。 652查询传送方式查询传送方式 也称为条件传送。为了也称为条件传送。为了保证数据传送的正确性,保证数据传送的正确性,计算机在传送数据之前,计算机在传送数据之前,要首先查询外部设备是要首先查询外部设备是否处于准备好的状态。否处于准备好的状态。对于输入操作,需要知对于输入操作,需要知道外设是否已经把要输道外设是否已经把要输入的数据准备好了;对入的数据准备好了;对于输出操作,则要知道于输出操作,则要知道外设是否把上一次计算外设是否把上一次计算机输出的数据处理完毕。机输出的数据处理完毕。只有通过查询,确信外只有通过查询,确信外设确实已处于设确实已处于“准备好准备好”的状态,计算机才能发的状态,计算机才能发出访问指令,实现数据出访问指令,实现数据的交换。的交换。 663直接存储器存取直接存储器存取(DMA)方式方式CPU让出数据总线(悬浮状态),使外部设备和存储器之间直接传送。下面两种情况时可考虑使用DMA方式:(1) 外设和存储器直接有大量的数据需要传送.(2) 外部设备的工作速度很快的情况 图 中断流程执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回(RETI)4中断传送方式中断传送方式中断是指中断是指CPU正在处理某件事时,外部又发生了另一件事(如一个正在处理某件事时,外部又发生了另一件事(如一个电平的变化,一个脉冲沿的产生,或定时器计数溢出等)请求电平的变化,一个脉冲沿的产生,或定时器计数溢出等)请求CPU快速处理,于是,计算机暂时中断当前的工作程序,转入处理所发快速处理,于是,计算机暂时中断当前的工作程序,转入处理所发生事件的程序;中断服务处理完后,再回到原来被中断的地方,继生事件的程序;中断服务处理完后,再回到原来被中断的地方,继续原来程序。续原来程序。提高提高CPU效率效率的一个有效途的一个有效途径是采用中断径是采用中断方式。方式。68中断的多级嵌套中断的多级嵌套n一个中断请求尚未处理完,又转而处理新的中断一个中断请求尚未处理完,又转而处理新的中断请求,称为中断的多级嵌套或称为多级中断请求,称为中断的多级嵌套或称为多级中断 请求请求中断响应中断响应中断响应中断响应请求请求中断返回中断返回中断返回中断返回低级低级中断中断服务服务程序程序高级高级中断中断服务服务程序程序图图 两级中断嵌套的示意图两级中断嵌套的示意图695.2.2 8051中断系统结构 自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT1IT1=1INT1IT1=0T0INT0IT0=1IT0=0源允许总允许优先级硬件查询EASCON:串行口控制寄存器,其低2位为锁存串行口的接收中断和发送中断标志。TCON:定时器/计数器T0、T1的控制寄存器,同时也锁存了T0、T1的溢出中断源和外部中断请求源中断源一、一、 中断源及中断入口中断源及中断入口共有五个中断源, 3个在单片机内部,2个在单片机外部,分别是外部中断两个、定时中断两个和串行中断一个:1外部中断源外部中断源外部中断外部中断0-INT00-INT0,由由P3.2端口线引入,低电平或下降沿引起。端口线引入,低电平或下降沿引起。外部中断外部中断1 1INT1INT1,由P3.3端口线引入,低电平或下降沿引起。外部中断有两种信号方式,即外部中断有两种信号方式,即电平方式和方式和脉冲方式。方式。IT0(IT1)=0:低电平触发;IT0(IT1)=1:边沿触发2内部中断源内部中断源T0T0: :定时定时/计数器计数器0中断,由中断,由T0回零溢出引起。回零溢出引起。T1:T1:定时定时/计数器计数器1中断,由中断,由T1回零溢出引起。回零溢出引起。TI/RITI/RI:串行串行I/O中断,完成一帧字符发送中断,完成一帧字符发送/接收引起。接收引起。每个中断源均可软件编程为高优先级或低优先级中断,允每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向许或禁止向CPU请求中断。请求中断。71 中断源中断源入口地址入口地址外部中断外部中断00003H定时器定时器T0中断中断000BH外部中断外部中断10013H定时器定时器T1中断中断001BH串行口中断串行口中断0023H单片机的中断为单片机的中断为固定入口式中断固定入口式中断,即一响应中断就转入,即一响应中断就转入固定入口地址固定入口地址执行中断服务程序。具体入口如下:执行中断服务程序。具体入口如下:72 中断请求:定时和外中断控制寄存器中断请求:定时和外中断控制寄存器TCONTCON; ; 串行控制寄存器串行控制寄存器SCONSCON; ; 中断允许控制寄存器中断允许控制寄存器IEIE; ; 中断优先级控制寄存器中断优先级控制寄存器IPIP。 二二 中断控制寄存器中断控制寄存器 80518051单片机中涉及中断控制的有单片机中涉及中断控制的有3 3个方面个方面4 4个个特殊功能寄存器特殊功能寄存器:734个控制寄存器均可位寻址74INT0、INT1、T0、T1中断请求标志放在TCON中串行中断请求标志放在SCON中。 中断请求控制寄存器中断请求控制寄存器(88H)(88H)TCOND7D6D5D4D3D2D1D0位名称TF1TF0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能 T1T1 中断中断标志标志T0T0中断中断标志标志 中断中断标志标志 触发触发方式方式 中断中断标志标志触发触发方式方式TCONTCON的结构、位名称、位地址和功能如下:的结构、位名称、位地址和功能如下:75 TCON位功能: TF1 T1溢出中断请求标志 T1T1计数溢出后,计数溢出后,TF1=1TF1=1 TF0 T0溢出中断请求标志 T0T0计数溢出后,计数溢出后,TF0=1TF0=1 IE1 外中断中断请求标志 当当P3.3P3.3引脚信号有效时,引脚信号有效时,IE1=1IE1=1 IE0 外中断中断请求标志 当当P3.2P3.2引脚信号有效时,引脚信号有效时,IE0=1IE0=1 IT1 外中断触发方式控制位 IT1=1IT1=1,边沿触发方式:边沿触发方式: CPUCPU在每个机器周期的在每个机器周期的S5P2S5P2期间采样期间采样P3.3P3.3引引脚的输入电平。若相继两次采样,一个周期采样为高电平,接着下一脚的输入电平。若相继两次采样,一个周期采样为高电平,接着下一个周期采样为低电平,则置位个周期采样为低电平,则置位IE1IE1。 IT1=0IT1=0,电平触发方式电平触发方式:CPU:CPU在每个机器周期的在每个机器周期的S5P2S5P2期间采样期间采样P3.3P3.3引脚引脚的输入电平。若采到低电平,则认为有中断请求,随即置位的输入电平。若采到低电平,则认为有中断请求,随即置位IE1IE1。 IT0 外中断触发方式控制位 其意义和功能与其意义和功能与IT1IT1相似。相似。76外部中断触发方式的区别外部中断触发方式的区别n电平触发方式电平触发方式是按照电平的高或者低来触发,所以用的时候,必须在发生触发事件后立即将电平拉到非触发电平上,如果不这样做的话,会导致程序一直在触发事件程序入口处,而不会执行其他地方的程序。所以一般比较少用。 n边沿触发方式边沿触发方式是按照(上或下)边沿触发事件,由于触发的条件是边沿(上或下),所以即使在触发事件后,保存原来的电平都没有关系,不会一直在触发,一般都用这种方式。 77串行控制寄存器串行控制寄存器SCON(98H)SCON(98H)SCOND7 D6 D5D4 D3 D2D1D0位名称 TIRI位地址 99H98H功能 串行发送中断标志串行接收中断标志RI: 串口接收中断标志。每接收完一个串行帧, 由硬件置位RI,RI须由软件清除。TI: 串口发送中断标志。每发送完一个串行帧, 由硬件置位TI。TI须由软件清除。 78 8051对中断源的开放或关闭由中断允许控制寄存器IE控制。 IE在特殊功能寄存器中,字节地址A8H,位地址分别是A8HAFH。IE控制CPU对中断源总的开放或禁止以及每个中断源是否允许中断。 中断允许控制寄存器中断允许控制寄存器IEIE(A8H)A8H)IEIE的结构、位名称和位地址如下:的结构、位名称和位地址如下:IED7D6 D5D4D3D2D1D0位名称EA ESET1EX1ET0EX0位地址AFH ACHABHAAHA9HA8H中断源CPU 串行口T1T0 EA CPU中断允许控制位 EA=1,CPU开中; EA=0,CPU关中,且屏蔽所有5个中断源。 EX0 外中断INT0中断允许控制位 EX0=1,INT0开中;EX0=0,INT0关中。 EX1 外中断INT1中断允许控制位 EX1=1,INT1开中;EX1=0,INT1关中。 ET0 定时/计数器T0中断允许控制位 ET0=1,T0开中;ET0=0,T0关中。 ET1 定时/计数器T1中断允许控制位 ET1=1,T1开中;ET1=0,T1关中。 ES 串行口中断(包括串发、串收)允许控制位 ES=1,串行口开中;ES=0,串行口关中。说明: 8051对中断实行两级控制,总控制位是EA,每一中断源还有各自的控制位。首先要EA=1,其次还要自身的控制位置“1”。80例 5.5 假设允许外部中断0中断,禁止其它中断。试设置IE的相应值。解:(a)用字节操作指令 MOV IE , #81H (b)用位操作指令 SETB EA SETB EX0(3)中断优先寄存器中断优先寄存器IP(B8H) IP在特殊功能寄存器中,字节地址为在特殊功能寄存器中,字节地址为B8H,位地位地址分别是址分别是B8HBFH,IP用来锁存各中断源优先级的用来锁存各中断源优先级的控制位,其格式如图所示。控制位,其格式如图所示。 82 若同时收到几个同一优先级的中断请求时,相应哪一个中若同时收到几个同一优先级的中断请求时,相应哪一个中断源优先取决于内部硬件查询顺序断源优先取决于内部硬件查询顺序 中断源 同级内的中断优先级外部中断外部中断0 最高最高定时器定时器/计数器计数器0溢出中断溢出中断外部中断外部中断1 定时器定时器/计数器计数器1溢出中断溢出中断串行中断串行中断 最低最低83 三三. 中断处
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!