中断与定时(10.21).ppt_第1页
中断与定时(10.21).ppt_第2页
中断与定时(10.21).ppt_第3页
中断与定时(10.21).ppt_第4页
中断与定时(10.21).ppt_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Welcome to study,枣庄学院机电工程学院,第五章 MSC-51系统的 中断、定时及串行口通信,第五章 中断与定时,内容提要:,5-1 MCS-51中断系统,5-2 定时 / 计数器及其应用,5-3 串行口通信,5-1 MCS-51中断系统,一、概述,与上对比,单片机中也有同样的问题。 CPU暂停正在执行的程序的执行,转而为紧急事件服务(执行中断服务子程序),并在服务完后自动返回原程序继续执行的过程就叫,1、中断的概念 举例:某同学正在教室写作业,忽然被人叫出去,回来 后,继续写作业。这就是生活中中断的例子。,看电视,中断处理,中断请求,实际生活,中断返回,电话铃响,接听电话,看电视,主程序,计算机,事件发生,事件处理,主程序,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,中断的过程: 中断申请:CPU正常执行某一程序时,突然发生了紧急事件。则此紧急事件产生一个电信号,向CPU提出“中断请求”(Interrupt Request)。 中断响应:CPU一旦检测到并响应该申请,便自动将“断点”地址入栈保护,然后转入对应的中断服务程序执行。(Interrupt Acknowledge) 中断返回:中断服务子程序执行完毕,从堆栈中取出“断点”到PC中,程序又转回原先执行的程序继续往下正常执行。(Interrupt Return),中断源 、中断申请 中断的屏蔽、判优 中断的入口 中断服务(保护现场、恢复现场) 中断返回,中断涉及的几个环节,两个阶段:1)从申请到找到中断服务程序 2)从执行中断服务程序到返回主程序,1) 对突发事故,做出紧急处理。 2) 根据现场随时变化的各种参数、信息,做出实时监控。 3) CPU与外部设备并行工作,以中断方式相联系,提高工作效率。 4) 解决快速CPU与慢速外设之间的矛盾 5) 在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。,2、中断的作用:,对于MCS-51单片机中断系统的组成可以用一句话来讲, 叫做:“五源中断,两级管理”,中断源通常有以下几种: 、外部设备中断源: 用于外部I/O设备和CPU之间的实时数据传送。 要求外部设备在输入/输出完一个数据时能自动产生一个“中断请求”电信号。如:串行中断、键盘中断、打印机中断等。 、控制对象中断源:用于实时控制系统。 被控对象用作中断源,要求CPU及时采集系统的控制参量、越限参数以及要求发送或接收数据。 、故障中断源:用于出错、故障等紧急处理。如除数为0、掉电处理等。 、定时脉冲中断源:定时/计数器的溢出中断。用于定时或计数外部事件的发生次数。,3、中断请求源(“五源中断”),中断源是指起中断原因的设备或部件,或发出中断请求信号的源泉。 通常有I/O设备、实时控制系统中的随机参数和信息故障源等。,、可屏蔽中断: 是指CPU可以控制的一类中断。CPU对INT中断请求输入线上输入的中断请求可以响应,也可以屏蔽掉。这种控制可以通过中断控制指令来实现。MCS-51具有可屏蔽中断功能。 、非屏蔽中断: CPU对NMI中断输入线上来的中断请求是不可屏蔽(或控制)的,一旦发生,CPU必须响应。如:Z80系列。 、软件中断: 软件中断是指人们可以通过相应的中断指令使CPU响应中断,CPU只要执行这种指令就转入相应中断服务程序执行,以完成相应的中断功能。即中断源为软件指令。如:Intel 80888086等CPU。,4、中断分类,5、中断嵌套,、中断优先级: 一个CPU总会有若干中断源,可以接收若干个中断源发出的中断请求。但在同一瞬间,CPU只能响应一个中断请求,CPU为了避免在同一瞬间因响应若干个中断源的中断请求而带来的混乱,就必须给每个中断源的中断请求赋一个特定的中断优先级,以便CPU先响应优先级高的中断请求,然后再逐个响应中断优先级次高和次低的中断请求。 、中断嵌套: 在某一瞬间,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若CPU此时的中断是开放的,那它必然可以把正在执行的中断服务程序暂停下来转而响应和处理中断优先权更高的中断源的中断请求,等到处理完后再转回来继续执行原来的中断服务程序。这就是中断嵌套。 、中断嵌套的先决条件: 在被嵌套的中断服务程序中,中断是开放的。 又发生了中断优先级更高的中断源的中断请求。,事件1,事件2,子程序2,子程序1,中断嵌套的概念:,主程序,中断,中断,6、中断系统的功能,中断系统是指能够实现中断功能的那部分硬件电路和软件程序。 中断系统的功能: 、进行中断优先级排队:中断优先权排队电路。决定各个中断源的优先顺序、轻重缓急。当多个中断源同时请求中断时,决定先响应哪一个。 、实现中断嵌套:使CPU可以暂停低优先级中断源的中断服务程序的执行,转而为更紧急的事件服务。 、自动响应中断:CPU必须不断检测中断输入线上的中断请求信号,以及时响应随机发生的中断请求。CPU总是在每条指令的最后状态对中断请求进行一次检测。CPU在响应中断时自动做三件事:关闭中断、保护断点;按中断源提供的中断矢量自动转入相应的中断服务程序;撤消本次中断请求,以避免再次响应本次中断的请求。 、实现中断返回:在执行到中断服务程序末尾的中断返回指令时,能自动到堆栈中取出断点地址,返回中断前的原程序继续执行。,中断源的中断请求,如何通知CPU?,利用中断请求标志位来通知!,二、中断的控制,1、MCS-51系列单片机的中断源和中断标志,中断标志位:中断事件发生后,在单片机内部的表示方式,或者说各个中断源的状态标志寄存位。 每个中断源都有一个中断申请标志位,串行口两个,所以共6个。分布在两个SFR中,TCON中4个,SCON中2个。 中断标志位为0:相应的中断源没有提出中断申请; 中断标志位为1:表示相应中断源已经提出了中断申请。,TCON,定时器控制寄存器TCON:,SCON,串行口控制寄存器SCON:,注意:响应中断后,CPU并不清零中断标志位,必须软件清零。,MCS-51单片机的中断源都是可屏蔽中断。其中断的开放和关闭是通过IE进行两级控制的。所谓两级控制是指有一个中断允许总控制位EA,配合各个中断源的中断允许控制位共同实现对中断请求的控制。,2、中断控制(两级管理) 1)、对中断允许的控制(第一级管理),IE,若为“1”,开关接通,允许 例如 SETB EA 若为“0”,开关断开,不允许 例如 CLR IE.7,例:如果允许片内定时器、计数器中断,禁止其他中断,试根据假设条件设置IE的相应值。 解:1)用字节操作指令 MOV IE , #8AH 或 MOV A8H , #8AH 2)用位操作指令 SETB ET0 SETB ET1 SETB EA,2)、对中断优先级的控制(第二级管理),中断优先级分两个层次: 中断优先权:由单片机和CPU自身硬件决定的(固定不变): (最低)SBUF、T1、INT1、T0、INT0(最高) 中断优先级:由IP编程决定(可以编程改变)。 MCS-51系列单片机的中断系统只有高、低两个中断优先级,且任意一个中断源都可设定为高或低优先级。所以MCS-51系列CPU只能实现两级中断嵌套。,P S 串口的中断优先级别 PT1 定时 / 计数器T1的中断优先级别 PX1 外部中断1 的中断优先级别 PT0 定时 / 计数器T0的中断优先级别 PX0 外部中断0 的中断优先级别,该位是“1”时,为高级优先级 该位是“ 0”时,为低级优先级,同一级中的5个中断源的优先顺序是:,中断优先级处理原则,对同时发生多个中断申请时: 不同优先级的中断同时申请 先高后低 相同优先级的中断同时申请 按序执行 正处理低优先级中断又接到高级别中断 高打断低 正处理高优先级中断又接到低级别中断 高不理低,例:设8031的片外中断为高优先级,片内中断为低优先级,试设置IP相应值。 解:1)用字节操作指令 MOV IP , #05H 或 MOV 0B8H , #05H 2)用位操作指令 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1,三、MCS-51系列单片机对中断的响应,1、响应中断申请的四个条件: 该中断被允许(IE);当前正在执行的程序不是中断服务程序或其对应中断源比该中断源的优先级低(IP);执行完当前指令;如果是下述四类指令(RETI、RET、IE操作、IP操作),则执行完该指令后再执行一条指令,才能响应该中断 2、CPU响应一个中断之后的操作: 自动操作:保护断点; 中断入口地址,并转入响应中断服务程序; 清中断标志位: 人为操作:保护现场; 修改IE,关闭某些不希望发生的中断。,3、响应时间,响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器周期: 1个周期(查询)2个周期(长调用LCALL) (2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,4、MCS-51系列单片机的中断向量表及中断请求的撤除,、中断向量表: 像复位入口一样,每个中断源都有一个中断入口。当CPU响应该中断时,流程立即转到该地址执行。 中断向量表:INT0:0003H T0: 000BH INT1:0013H T1: 001BH SBUF:0023H 、中断请求的撤除: TF0/TF1:当CPU响应该中断时,由硬件自动清除。 IE0/IE1:下降沿触发方式时,在CPU响应中断时,由硬件自动清除。 电平触发方式时,由外部事件清除。 RI/TI:必须由软件清除。,由于各中断服务程序入口地址仅相隔8个字节,难以容纳中断服务程序,为此可在入口处放置一条长跳转指令,而实际的中断服务程序放在存储器区内的任意位置(一般放在主程序后),如下所示: ORG 0003H LJMP INT0 ; 在外中断入口处放一条长跳转指令 ORG 0100H MAIN: ; 主程序 INT0: ; 外中断的中断服务程序,5、MCS-51系列单片机中断响应的全过程,、中断初始化: 使用中断:IE、IP、SP:决定中断允许、优先级别和堆栈容量。 使用INT0、INT1:TCON:决定触发方式。 使用T0、T1:TCON、TMOD:决定工作方式、启停控制。 使用SBUF:TMOD、SCON、PCON:决定波特率、串口工作方式。 、中断申请的提出: 中断事件发生置位相应的中断标志位。 、响应中断申请的条件: 该中断被允许:IE。 可以打断正在执行的程序:IP。 执行完当前指令。 如果是下述四种指令,则执行完该指令后,再执行一条指令后,才能响应该中断。RETI、RET、IE操作、IP操作。,主程序 ORG 0000H ;复位入口 LJMP MAIN ;转到主程序 ORG 0003H ;外部中断 入口 LJMP INT_0 ;转到中断服务程序 ORG 0013H ;外部中断 入口 LJMP INT_1 ;转到中断服务程序 ORG 0030H ;主程序入口 MAIN: ANL P1, #55H ;主程序开始,熄灭LED,准备输入查询 SETB EX0 ;允许INT0中断 SETB IT0 ;负边沿触发方式 SETB EX1 ;允许INT1中断 SETB IT1 ;负边沿触发方式 SETB EA ;开中断 HERE: SJMP HERE ;等待中断,、CPU响应一个中断之后的操作 自动操作:保护断点 中断入口地址PC 清中断标志位: 人为操作:保护现场。 如果不希望发生某个中断,修改IE。 、中断嵌套:子程序的堆栈嵌套深度。 、在中断服务子程序执行完时的操作:全是人为操作: 恢复现场。 决定再开或关某些中断。 RETI最后一条。,中断服务程序结构与子程序类似,大致包含以下几部分: ; 必要时保护现场 PUSH PSW PUSH Acc SETB RS0 ; 切换工作寄存器区,根据需要可使用03区中的任一区 CLR RS1 ; 由于中断出现的不确定性,因此只要中断服务程序中使用 ; 了寄存器组R0R7,就需要切换工作区 ; 中断服务程序体(略) RETI,编程中应注意: (1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为 MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能插入一条转移指令; (2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。 (3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。,在主程序中: CLR IT0 SETB EA SETB PX0 SETB EX0 在中断服务子程序中: JNB P3.2 , $ JB P3.2 , $ RETI,四、 MCS-51中断系统的应用,例 1 单步操作的中断实现。 把一个外部中断(设为INT0)设置为电平激活方式。,注意:1)保护断点与保护现场以及恢复断点与恢复现场的区别。 2)外部中断响应时间在3 8个机器周期之间。,例 2 多中断源。 MCS - 51 单片机有两个外部中断输入端, 当有 2 个以上中断源时, 它的中断输入端就不够了。此时, 可以将定时器/计数器作为外部中断源使用,也可以采用中断与查询相结合的方法来实现。 可以使每个中断源都接在同一个外部中断输入端上, 同时利用输入口线作为多中断源情况下各中断源的识别线。,ORG 0003H LJMP INT0 INT0: PUSH PSW PUSH ACC JB P0.7, DV1 JB P0.6, DV2 JB P0.5, DV3 JB P0.4, DV4 GOBACK: POP ACC POP PSW RETI DV1: ; 装置1中断服务程序 ,AJMP GOBACK DV2: ; 装置2中断服务程序 AJMP GOBACK DV3: ; 装置3中断服务程序 AJMP GOBACK DV4: ; 装置4中断服务程序 AJMP GOBACK,小结: 1、MCS-51单片机中断系统有几个中断源?分别是什么? 事先约定的优先顺序是怎样的? 2、如何进行中断允许控制?如何进行中断优先级控制? 3、中断优先的规则是什么?,5-2 定时 / 计数器及其应用,一、定时/ 计数器的结构,MCS-51系列单片机内部有两个16位的定时/计数器T0和T1。它们都是加计数器,可以做为定时器或计数器使用。 定时器:计数单片机内部时钟,转换为时间。 计数器:计数外部脉冲的个数。外部脉冲由T0/T1引脚引入。,定时器/计数器结构框图,与定时/计数器有关的SFR,、计数器T0:TH0+TL0,16位加计数器。 、计数器T1:TH1+TL1,16位加计数器。 、定时/计数器工作方式寄存器TMOD: 决定定时/计数器的工作模式、工作方式。 、定时/计数器控制寄存器TCON: 控制T0和T1的计数启停、提供中断标志位。 、IE、IP、SP:当使用T0/T1中断时,也有关。,1、计数器T0/T1,T0/T1都为16位或双8位的加计数器。具有以下三个方面的功能: * 对脉冲源进行计数; 计数范围:8位:0255;13位:01FFFH;16位:00FFFFH。 * 计数溢出后自动置位相应的中断请求标志位TF0/TF1; 但溢出后若不关断定时/计数器,它们将从0开始继续循环计数。 * 可以对T0/T1进行读写操作。写入计数初值、读出当前实时计数值。 T0/T1不可位寻址,且只能按字节读写,16位分两次完成。在计数过 程中读取计数值,应连读两次,校验高位字节读出值相同时才有效。 工作模式: * 计数模式:对T0/T1管脚上送入的外部脉冲进行计数。 外部脉冲的每一个正跳变使计数内容加1。 * 定时模式:对单片机内部时钟进行计数。每个机器周期使计数器加1。 复位状态:T0=0000H、T1=0000H、TMOD=00H、TCON=00H。,2、工作方式控制寄存器 TMOD,GATE 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制; GATE = 1 启动受 /INT0 或 /INT1 的控制。 门控:INT0/INT1引脚上的外加信号。当TRx=1且INTx=1时,Tx 才进行 计数。,TMOD的功能:TMOD决定三件事:定时/计数器工作模式的选择、工作方式的选择、是否为T0/T1设定门控功能。 TMOD的定义:低四位用于编程T0,高四位用于编程T1,M1M0 工作模式选择位(编程可决定四种工作模式)。 00方式0:THx的8位和TLx的低5位构成13位的定时/计数器。 01方式1:THx的8位和TLx的8位构成16位的定时/计数器。 10方式2:可自动重装初值的8位定时器。TLx溢出时,HxTLx。 11方式3:仅T0有方式3。将T0分成两个8位定时/计数器。,C/T 外部计数器 / 定时器方式选择位 C/T = 0 定时方式; C /T = 1 计数方式。,3、定时 / 计数器控制寄存器TCON,TCON,能否启动定时 / 计数器工作与GATE有关,分两种情况: GATE = 0 时,若TRi = 1,开启Ti计数工作;(i = 0或1) 若TRi = 0,停止Ti计数。 GATE = 1 时,若TRi = 1 且/INTi = 1时开启Ti计数; 若TRi = 1 且/INTi = 0时不能开启Ti计数。 若TRi = 0, 停止Ti计数。,二、定时 / 计数器的四种工作模式,M1 M0 模式 说明 0 0 0 13位定时/计数器 高八位TH(7 0)+ 低五位TL(4 0) 0 1 1 16位定时/计数器 TH(7 0)+ TL(7 0) 1 0 2 8位计数初值自动重装 TL(7 0) TH(7 0) 1 1 3 T0运行,而T1停止工作,8位定时/计数。,1、模式0: 13位定时/计数器 计数寄存器TLi 低5位 + THi8位 (T1、T0的等效逻辑结构),C/T = 0 定时; C/T = 1 对外计数。 定时:fosc / 12 = 1 /(12/fosc) = 1 / T,波形等间隔,次数已定,时间确定 即对机器周期进行计数。,左图定时时间为 N*T,N个方波,计数:脉冲不等间隔。,每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。,选择方法:TMOD中的M1M0=00。T0和T1都有工作方式0。 计数器的组成和计数范围: 13位计数器=THx的8位+TLx的低5位。 计数范围:0000H1FFFH=8192=8K个脉冲。 计数器的两种启停控制方式: 当GATE=0时:内部软件单独控制。 当GATE=1时:“内部软件+外部硬件门控触发信号”联合控制。 TRx(GATEINTx) 计数初值的确定:设需要计数X个脉冲后产生溢出中断,则计数初值Y: Y=1FFFH-X=y12y11y10y5y4y3y2y1y0 所以:THx= y12y11y10y5,TLx= 000y4y3y2y1y0,由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=MN=8 192500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其余码均计入高 8 位TH0 的初值, 则 T0 的初值调整为 TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1,方式0的计数长度M为2的13次方。 初值也是13位二进制数,但要注意是高8位赋值给TH0,低5位前面补足 3 个 0 凑成 8 位赋给TL0。 例如,如要求计数值为1000,则初值为 xM100081921000 1C18H1 1100 0001 1000B 则赋初值时,TH00E0H,TL018H。,方式 0 的应用 例 1 利用定时器输出周期为 2 ms的方波, 设单片机晶振频率为 12 MHz。 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 定时 1 ms的初值: 因为 机器周期=1212 MHz= 1 s 所以 1 ms内T0 需要计数N次: N= 1 ms1 s = 1000,定时器溢出中断方式下程序清单如下: ORG 0000H AJMP START; 复位入口 ORG 000BH AJMP T0INT ; T0中断入口 ORG 0030H START: MOV SP, 60H; 初始化程序 MOV TH0, 0E0H ; T0赋初值 MOV TL0, 18H MOV TMOD, 00H SETB TR0 ; 启动T0,SETB ET0 ; 开T0中断 SETB EA ; 开总允许中断 MAIN: AJMP MAIN ; 主程序 T0INT: CPL P1.0 MOV TL0, 18H MOV TH0, 0E0H RETI,查询方式下的程序清单,MOV TH0, 0E0H ; T0赋初值 MOV TL0, 18H MOV TMOD, 00H SETB TR0 ; 启动T0 LOOP:JBC TF0,NEXT SJMP LOOP NEXT:CPL P1.0 MOV TL0, 18H MOV TH0, 0E0H SJMP LOOP,2、模式1: 16位定时/计数器 与模式0相似。 与模式0的区别:计数位数不同。 计数 寄 存 器:THi(高8位)+ TLi(低8位),选择方法:TMOD中的M1M0=01。T0和T1都有工作方式1。 内部结构原理框图:方式1与方式0几乎完全相同,差别在于16位计数器。 计数器的组成和计数范围: 16位计数器=THx的8位+TLx的8位。 计数范围:0000H0FFFFH=65536=64K个脉冲。 计数器的两种启停控制方式:同方式0。 TRx(GATEINTx) 计数初值的确定:设需要计数X个脉冲后产生溢出中断,则计数初值Y: Y=0FFFFH-X=y15y14y13y8y7y2y1y0 所以:THx= y15y14y13y8 ,TLx= y7y2y1y0。 定时时间的延长:设置溢出次数寄存器。 方式0/1的应用特点:定时时间较长;每当CPU响应溢出中断后,都需要对T0/T1重新初始化,而且此重新初始化过程在连续定时中会影响定时时间。,方式 1应用 方式 1 与方式 0 基本相同, 只是方式 1 改用了 16 位计数器。 要求定时周期较长时, 13 位计数器不够用, 可改用 16 位计数器。 例 2 已知某生产线的传送带上不断地有产品单向传送, 产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。 假定红灯亮时停止统计, 红灯灭时才在上次统计结果的基础上继续统计, 试用单片机定时器 /计数器T1的方式 1完成该项产品的计数任务。,硬件原理图,(1) 初始化: TMOD=11010000B=0D0H (GATE=1, C/T=1, M0M1=01) TCON=00H (2) T1在方式1时, 溢出产生中断, 且计数器回零, 故在中断服务程序中, 需用R0计数中断次数, 以保护累积计数结果。,(3) 启动T1计数, 开T1中断。 程序清单如下:,ORG 0000H AJMP START ; 复位入口 ORG 001BH AJMP T1INT ; T1中断入口 ORG 0100H START: MOV SP, 60H ; 初始化程序 MOV TCON, 00H MOV TMOD, 0D0H MOV TH1, 00H,MOV TL1, 00H MOV R0, 00H ; 清中断次数计数单元 MOV P3, 28H; 设置P3.5第二功能 SETB TR1 ; 启动T1 SETB ET1; 开T1中断 SETB EA ; 开总中断 MAIN: ACALL DISP ; 主程序, 调显示子程序 ORG 0A00H T1INT: INC R0 ; 中断服务子程序 RETI DISP: ; 显示子程序 RET,3、模式2:可自动重装初值的8位定时/计数器 与模式0、1的区别:1)计数位数不同; 2)初值自动重装。,选择方法:TMOD中的M1M0=10。T0和T1都有工作方式2。 计数器的组成和计数范围:8位计数器=TLx的8位。 计数范围:00H0FFH=256个脉冲。 特点:方式2只用TLx做8位计数器,最大计时值为255;高8位THx做为初值存储单元,并不参与增1计数,它在每次中断溢出时立即把初值重新装入低8位TLx单元,而THx自身初值内容并不变化。 计数器的两种启停控制方式:TRx(GATEINTx) 计数初值的确定:设需要计数X个脉冲后产生溢出中断,则计数初值Y: Y=0FFH-X=y7y6y5y4y3y2y1y0 所以:THx= y7y6y5y4y3y2y1y0 ,TLx= y7y6y5y4y3y2y1y0。 方式2的应用特点:初值的自动重装由硬件自动进行,不占用软件时间,所以用于定时/计数器的连续循环计数时,可以减少软件操作并提高定时精度。,4、模式3 T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数器TL0和TH0。 TL0使用C/T、GATE、TR0、/INT0、TF0定时/计数, TH0使用TR1、TF1 因此,只能用于定时,(a)TL0作8位定时/计数器,(b)TH0作8位定时器,模式3时,T1可定时为模式0、1、2的定时/计数,但不可中断,所以一般只作串口波特率发生器用。,(a) T0模式3时T1模式0,(b) T0模式3时T1模式1,(c) T0模式3时T1模式2,选择方法:TMOD中的M1M0=11。只有T0有工作方式3。 计数器的组成和计数范围:两个8位计数器=TLx的8位/ THx 的8位。 特点:只有T0有方式3,此时TL0和TH0各自组成一个独立的8位计数器,并在溢出后需考虑软件分别赋初值。 TL0既可以用于定时,也可以用于计数。但TH0只能用于定时模式。 TH0借用了T1的控制位TR1、中断申请标志位TF1和中断入口。 TL0和TH0都可以中断。但T1只能工作于定时模式且不允许中断,T1的启停由M1M0控制。 计数器的两种启停控制方式:TL0:TR0(GATEINT0);TH0:TR1 方式3的应用特点:T0的方式3用于需要三个定时/计数器的场合,如果需要三个定时/计数器,而且其中至少两个必须是定时功能的场合下,可以将T0用于方式3,此时将限制T1必须用于定时功能且不允许中断(用于产生串行通讯的波特率)。,方式 3 的应用 定时器 T0 工作在方式 3 时是 2 个 8 位定时器 /计数器。 且TH0 借用了定时器 T1 的溢出中断标志TF1和运行控制位 TR1。 例 3 假设有一个用户系统中已使用了两个外部中断源, 并置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要求再增加一个外部中断源, 并由 P1.0 口输出一个 5K Hz的方波(假设晶振频率为 6 MHz)。,在不增加其它硬件开销时, 可把定时器/计数器 T0 置于工作方式 3, 利用外部引脚 T0端作附加的外部中断输入端, 把 TL0 预置为 0FFH, 这样在 T0 端出现由 1至 0 的负跳变时, TL0 立即溢出, 申请中断, 相当于边沿激活的外部中断源。 在方式 3下, TH0 总是作 8 位定时器用, 可以靠它来控制由 P1.0 输出的 5 kHz方波。 由 P1.0 输出 5 kHz的方波, 即每隔 100 s使 P1.0 的电平发生一次变化。则TH0中的初始值 X=MN=256100/2=206。,MOV TL0, 0FFH MOV TH0, 206 MOV TL1, BAUD ; BAUD根据波特率要求设置常数 MOV TH1, BAUD MOV MOD, 27H ; 置T0工作方式3 ; TL0工作于计数器方式 MOVTCON, 55H ; 启动定时器 T0、 T1, 置外部中断 0 和 1 ; 为边沿激活方式 MOVIE, 9FH ; 开放全部中断,程序清单如下,TL0 溢出中断服务程序(由 000BH单元转来): TL0INT: MOV TL0, 0FFH ; 外部引脚 T0 引起中断处理程序 RETI TH0 溢出中断服务程序(由 001BH转来): TH0INT: MOV TH0, 206 CPL P1.0 RETI 此处串行口中断服务程序、 外中断 0和外中断 1的中断服务程序没有列出。,编程前确定参数: (1)定时/计数器 T0、T1选择其一, (2)工 作 方 式 C/T及GATA, (3)计 数 初 值 加1计数、16位。,计数:X=MN;M=213=8192(模式0) M=216=65536(模式1) M=28=256 (模式2、 模式3) 定时: X=MN =M t/T(t为所要求的 定时时间,T为机器周期),(4)工 作 模 式 M1、M0,三、定时/计数器的应用,编制初始化程序: 1)写TMOD; 2)确定IE、IP; 3)写计数初值; 4)启动计数(TRi),例1、设计一个能产生t=1ms的周期信号发生器,试编程。 解:选T0; C/T=0,GATE= 0,N = t / T = t /12(1/fosc)= 500 所以, X = M 500 , 模式0、模式1均可,取模式0,M=213=8192 X = 8192500 = 7692 = 1E0CH,= 0001 1110 000 0 1100B,,1E0CH,TL0,TH0,F0H,0CH,先将低五位放入TL0中,再将剩余的数从右 向左数出八位放入TH0中。,LJMP MAIN ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H,SETB TR0 SETB ET0 SETB EA SJMP ,ORG 0000H,INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI,定时/计数器的初始化过程,定时/计数器一般工作于中断方式,也可工作于查询方式。 如果是做定时器使用,一般都工作于中断方式,以不占用CPU机时,提高CPU的工作效率。此时CPU和T0/T1可以并行工作。 和定时/计数器相关的SFR: TMOD:决定定时/计数工作模式、工作方式、启停控制方式。 TCON:控制T0/T1计数的启停。 T0/T1:写入计数初值,以决溢出时的脉冲数,产生不同的定时/计数值。 IE、IP、SP:中断相关操作。决定T0/T1的中断优先级和中断允许状态。 初始化顺序:SPIP TMOD T0/T1 TCON IE 有关定时/计数器的程序一般分为三部分: 初始化程序段:各相关SFR赋初值。 主程序:一般与T0/T1无关。 CPU和T0/T1可以并行工作。 T0/T1中断服务子程序:重装初值、溢出标志事件的处理。,T0/T1定时初值的确定:已知定时值为“T”秒。 * 先确定一个计数脉冲(机器周期)的时间“t”; * 再确定“T”秒定时值所对应的脉冲(机器周期)数“N”; * 最后确定定时初值“Y”。 Y=2n N 其中“2n”为定时/计数器的溢出值,这表示在“Y”的基础上再来“N”个脉冲溢出,而来这N个脉冲正好需要“T”秒的时间。 定时精度的提高方法: * 从溢出中断申请到响应中断进入中断子程序的误差TS1的确定: 在中断子程序中,停止计数,并读取当前计数值N1。N1=TS1。 * 从停止计数到开始计数的程序指令执行时间误差TS2的确定: 计算其间指令的总的机器周期数N2。N2=TS2。 * 修正方法:由于T0/T1是加计数器,所以把N1和N2加入定时初值即可。 * 避免T0/T1上的中断嵌套:将T0设为唯一的高优先级或在T0中关EA。,小结:1、MCS-51单片机内有几个定时计数器? 如何计数? 2、T0、T1有几种工作方式? 3、编程应用前要事先确定的参数有几个?,5-3 MCS-51单片机串行接口,内容提要,1、 串行通信基本知识,2、 串行接口及其寄存器,3、 串行口应用,1、通信方式 2、串行通信的分类 3、异步串行通信 4、同步串行通信 5、通信协议,一、 串行通信基本知识,1、通信方式,通信:CPU与外设之间、计算机与计算机之间的信息交换和传输称为通信。 有串行通信和并行通信两种方式。如果距离小于30米可采用并行通信方式;当距离大于30米时采用串行通行方式。,并行通信方式:占用8位I/O口线,一次传送一个字节。 指数据的各位同时进行传送(发送或接收)的通信方式。 其优点是传送速度快;缺点是数据有多少位,就需要有多少根传送线。因此并行通信在位数多、传送距离又远时就不太适合了。 串行通信方式:占用1个I/O口线,数据逐位传送。适于远距离通信。 指数据是一位一位按顺序传送的通信方式。 优点是只需一对传输线,这样就大大地降低了传输成本,特别适用于远距离通信;其缺点是传送速度较低。,2、串行通信的分类,、按收发功能分为三种方式: 单工方式:1条信号线,信息只能按一个方向传输。 半双工方式:1条信号线,无法同时实现双向传输,只能交替地收或发。 全双工方式:两条信号线,可同时实现双向传输,同时收发。,、按数据传送方式可分为两种: 同步方式:要求接收器时钟和发送器时钟严格保持同步。,异步方式:在数据发送端和接收端各自有独立的时钟源,双方时钟不一致。,3、异步串行通信,异步通信方式中,数据以字节(字符)为单位进行传送。在发送信息时,信息位的同步时钟(即发送一个信息位的定时信号)并不发送到线路上去,在数据的发送端和接收端各自有独立的时钟源,双方时钟不一致。 为了克服通信双方时钟不一致可能引起的数据传送误差,异步通信采用了“字符再同步技术”,即每接收一个字符都要进行一次识别,识别和检测一个字符有效数据位所需要的信息都包含在一个完整的字符帧格式中,即在每一个字符数据位的传送过程中都要加进一些识别信息和校验信息位,构成一帧字符信息,或称为字符格式。,(1)、字符格式:一帧字符信息由四部分组成:起始位、数据位、奇偶校验位/标志位和停止位。 、起始位:起始位的检测开始了字符再同步的过程。 按照串行通讯协议的规定,在通信双方不进行数据传输时,线路呈逻辑“1”传号(MARK)状态,在发送端要发送字符时,首先发送一个起始位。即将线路置成逻辑“0”空号(SPACE)状态,当接收端检测到线路上的状态变化后,便开始对线路进行8次或16次或更多次的连续采样,在确认电平的变化持续一个位时间后,便认定为起始位开始,准备接收跟着而来的数据位。,、数据位:真正的数据,可以是5、6、7或8位。一般是7位或8位数据位。在数据位传送时,低位(LSB)在前,高位(MSB)在后。 、奇偶校验位:校验传输的正确性。它是根据通信双方采用何种校验方式(奇校验或偶校验)的约定而加入的。在传输过程中,一旦发现奇偶错,便置位奇偶校验标志,CPU可以读出此标志,进行纠错处理。,、停止位:表示一个字符数据的结束,用逻辑“1”表示。 停止位可以是1位、1.5位或2位。停止位之后可以紧接着下一个字符的起始位,也可以是若干个空闲位(逻辑“1”),它意味着线路处于等待状态。,波特率定义为每秒钟传送二进制数的位数。即串行通信速率。b/s 、 bps 在异步通信中,单位时间内所传送的有效二进制位数波特率。 例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒240个字符。求波特率。 解:(181)240 = 2400 b/s = 2400波特。 注意:、波特率并不等于有效数据位的传输速率。 、波特率也不等于时钟频率。通常是时钟频率的1/16或1/64或更小。通常采用高于波特率若干倍的时钟频率(16或64倍)对一位数据进行检测,以防止传输线路上可能出现的短时间的脉冲干扰,从而保证对数据信号的正确接收。 总之,异步通信方式是按帧传送数据的工作方式,这种方式的优点是可靠性高,能及时发现通信中的错码,缺点是通信效率比同步方式低。,(2)、波特率:,4、同步串行通信,同步通信方式需要提供单独的通信时钟信号,且要求接收器时钟和发送器时钟严格保持同步。同步方式是以数据块为单位进行传输。 其帧格式由三部分组成: 由若干字符组成的数据块。 在数据块的开头加上1个或2个同步字符。 在数据块的后部根据需要加入若干校验字符。 同步方式以数据块为单位进行数据传输,一次可以传送完一大批数据,通信速度比较快,但收发两端的时钟同步必须采取一些复杂的硬件电路才能保证。,A、串并转换 B、设备同步 设备同步对通信双方有两个共同要求: 通信双方必须采用统一的编码方法; 通信双方必须能产生相同的传送速率。,5、串行通信的过程及通信协议,1)串并转换与设备同步 两个通信设备在串行线路上成功地实现通信必须解决两个问题:即串并转换和设备同步。,2)、串行通信协议 通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种。异步协议包括: 1、起始位 2、数据位 3、奇偶校验位、 4、停止位约定 5、波特率设置 6、握手信号约定,二、 串行接口及其寄存器,1、MCS-51系列单片机串行口的结构。 2、与串行口有关的特殊功能寄存器。 3、串行口的4种工作方式。,1、MCS-51系列单片机串行口的结构。,MCS-51串行口结构框图,发送:,CPU,发送寄存器SBUF,发送时钟:,接收:,CPU,接收时钟,接收数据寄存器SBUF,2、串口特殊寄存器,SBUF 串行发送 / 接收数据缓冲器 是两个物理单元,共用一个地址(99H),PCON 电源管理寄存器,从编程角度讲来看主要由以下寄存器组成。,SCON(98H)、PCON(87H),SCON 串行口控制寄存器,(1)方式0:同步移位寄存器输入输出模式,可外接移位寄存器,以扩展I/O口。 波特率固定为fosc / 12 RXD 接收发送数据 TXD 产生同步移位脉冲 接收/发送完,置位RI / TI ,(要求SM2 = 0),发送,接收,无起始位,无停止位 。可用于并口的扩展。,3、串行口的工作方式,方式0的时序,方式 0 的输出状态,MOV SCON, #00000000B ; 定义串行工作方式 CLR TI ; 清除发送中断标志 MOV SUBF, A ; 输出串行数据 LOOP: JNB TI, LOOP ; 等待一帧数据发送结束,方式 0 的输入状态。 当满足RI=0且REN0时,就启动一次接收过程,参考程序如下: MOV SCON, #00000000B ; 定义串行工作方式 CLR P1.7 ; 输出送数脉冲(允许74LS165芯片 接收并锁 存并行输入端数据) NOP SETB P1.7 ; 延迟一个机器周期后,取消送数 负脉冲 CLR RI ; 清除接收中断标志RI SETB REN ; 允许接收 LOOP: JNB RI, LOOP ; 等待一帧数据接收结束 MOV A,SBUF ; 读串行输入数据,(2)方式1:8位UART 波特率为(2SMODT1的溢出率)/ 32 ,可变。 一帧信息10位。,发送,接收,送 RB8,发送完置位TI。,当接收到数据后,置位RI是有条件的。即: REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。 此时,数据装载SBUF, RI置1 ,停止位进入RB8。,方式 1 的发送过程,用软件清除 TI后, CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程。数据由 TXD引脚输出, 此时的发送移位脉冲是由定时器 /计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断, 完成一次发送过程。,方式 1 接收过程,用软件清除 RI后, 当允许接收位 REN被置位 1 时, 接收器以选定波特率的 16 倍的速率采样 RXD引脚上的电平, 即在一个数据位期间有 16 个检测脉冲, 并在第 7、 8、9 个脉冲期间采样接收信号, 然后用三中取二的原则确定检测值, 以抑制干扰。 并且采样是在每个数据位的中间, 避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时, 则启动接收过程, 在接收移位脉冲的控制下, 接收完一帧信息。 当最后一次移位脉冲产生时能满足下列两个条件: RI=0; 接收到的停止位为 1 或 SM2=0。 则停止位送入RB8,8位数据进入SBUF,并置RI1,完成一次接收过程。否则,所接收到的一桢信息将丢失,接收器复位,并从新开始检测负跳变,以便接收下一桢信息。 注意:接收中断标志RI应由软件清除。,方式1的时序,(3)方式2、方式3 :9位UART 一般用于多机通信。一帧信息11位。,发送,发送完数据置位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论