单片机课件-4 MCS-51的片内接口.ppt_第1页
单片机课件-4 MCS-51的片内接口.ppt_第2页
单片机课件-4 MCS-51的片内接口.ppt_第3页
单片机课件-4 MCS-51的片内接口.ppt_第4页
单片机课件-4 MCS-51的片内接口.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第四章 MCS-51的片内接口,内容提要:,4-1 MCS-51中断系统,4-2 定时 / 计数器,4-3 MCS-51片内串行接口,4-1 MCS-51中断系统,一、概述,与上对比,单片机中也有同样的问题。CPU正 在执行原程序,突然,被意外事情打断,转去执行 新程序。CPU执行新程序结束后,又回到原程序中 继续执行。这样的过程就叫 。,什么叫中断? 举例:某同学正在教室写作业,忽然被人叫出去,回来 后,继续写作业。这就是生活中中断的例子。,对突发事故,做出紧急处理。 根据现场随时变化的各种参数、信息,做出实时监控。 CPU与外部设备并行工作,以中断方式相联系,提高工作效率。 解决快速CPU与慢速外设之间的矛盾。 在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。,中断的作用:,对于MCS-51单片机中断系统的组成可以用一句话来讲, 叫做:“五源中断,两级管理”,五个中断源: 入口地址 外部中断0(/INT0) 0003H T0溢出中断 000BH 外部中断1(/INT1) 0013H T1溢出中断 001BH 串口中断 0023H,二、中断请求源(“五源中断”),中断源的中断请求,如何通知CPU?,利用中断请求标志位来通知!,以上6个中断请求标志位分别分布在TCON、SCON两个寄存器中。,TCON,TF1 T1的溢出中断标志 硬件置1,硬件清0(也可软件清0),TF0 T0的溢出中断标志。(同TF1,只是针对T0的),IE1 外部中断1(/INT1)请求标志。 外部有中断请求时,硬件使IE1置1,硬件清0。,IE0 外部中断0(/INT0)请求标志。,IT1 外部中断1(/INT1)触发类型控制位。 IT1 = 0 ,低电平触发。IT1 = 1 , 下降沿触发。,IT0 外中断0(/INT0)触发类型控制位,用法同IT1。,SCON,TI 串口发送中断标志位。 发送完数据,硬件使TI置1,软件清0(CLR TI),RI 串行口接收中断标志位。 硬件置1,软件清0。,在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。,三、中断控制(两级管理) 1、中断屏蔽(第一级管理),IE,EA 总控制位,“” 未定义位,ES 串口控制位,ET1 T1中断控制位,EX1 /INT1控制位,ET0 T0中断控制位,EX0 /INT0控制位,若为“1”,开关接通,允许 例如 SETB EA 若为“0”,开关断开,不允许 例如 CLR IE.7,2、中断优先级(第二级管理),为什么要有中断优先级?,CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。 !,为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。,IP,P S 串口的中断优先级别 PT1 定时 / 计数器T1的中断优先级别 PX1 外部中断1 的中断优先级别 PT0 定时 / 计数器T0的中断优先级别 PX0 外部中断0 的中断优先级别,该位是“1”时,为高级优先级 该位是“ 0”时,为低级优先级,同一级中的5个中断源的优先顺序是:,/INT0中断 T0溢出中断 /INT1中断 T1溢出中断 串口中断,高,低,出厂前已由厂家固化顺序 事先约定,中断优先原则:(概括为四句话) 1、低级不打断高级 2、高级不睬低级 3、同级不能打断 4、同级、同时中断,事先约定。,事件1,事件2,子程序2,子程序1,中断嵌套的概念:,主程序,中断,中断,四、MCS-51中断的响应过程,CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:,(1)CPU正处理相同级别或更高级别的中断; (2)正在执行指令,还未到最后一个机器周期; (3)正在执行的指令是RETI或访问IP、IE指令,则执行完上 述指令后,再执行一条指令后,才会响应新中断。,日常生活中的中断与单片机中断的比较:,某同学 单片机 过程说明 正在看书 执行主程序 有人找出去 中断信号 中断请求 暂停看书 暂停执行主程序 中断响应 书中作记号 当前PC入栈 保护断点 出去做事 执行中断程序 中断服务 回来继续看 返回主程序 中断返回,响应过程:(假设已使某中断请求标志置1) (1)先使相应优先级状态触发器置1; (2)执行一个硬件子程序的调用, 1)硬件清零相应中断请求标志(TI、RI除外) 2)将当前PC内容压入堆栈保护断点; 3)将中断服务子程序入口地址送PC转移。,返回过程:(RETI执行后) (1)使相应优先级状态触发器清0。 (2)从堆栈中弹出栈顶的两个字节内容送PC恢复断点。 (3)CPU接着中断处继续执行原程序。,注意:1)保护断点与保护现场以及恢复断点与恢复现场的区别。 2)外部中断响应时间在3 8个机器周期之间。 利用外部中断实现单步操作:,8031,+5v,在主程序中: CLR IT0 SETB EA SETB PX0 SETB EX0 在中断服务子程序中: JNB P3.2 , $ JB P3.2 , $ RETI,小结: 1、MCS-51单片机中断系统有几个中断源?分别是什么? 事先约定的优先顺序是怎样的? 2、如何进行中断允许控制?如何进行中断优先级控制? 3、中断优先的规则是什么?,4-2 定时 / 计数器,一、定时/ 计数器的结构,51子系列单片机内有两个十六位增一 定时 / 计数器,TH0,计数值高八位,TL0,计数值低八位,TH1,计数值高八位,TL1,计数值低八位,TMOD,TCON,工作方式,定时 / 计数控制,1、工作方式控制寄存器 TMOD,TMOD,T1,T0,GATE 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制; GATE = 1 启动受 /INT0 或 /INT1 的控制。,C/T 外部计数器 / 定时器方式选择位 C/T = 0 定时方式; C /T = 1 计数方式。,M1M2 工作模式选择位(编程可决定四种工作模式)。,2、定时 / 计数器控制寄存器TCON,TCON,TR0 定时 / 计数器0运行控制位。 软件置位,软件复位。,能否启动定时 / 计数器工作与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计数。,TR1 定时 / 计数器1运行控制位。(用法与TR1类似),二、定时 / 计数器的四种工作模式,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 计数寄存器TLi 低5位 + THi8位 (T1、T0的等效逻辑结构),C/T = 0 定时; C/T = 1 对外计数。 定时:fosc / 12 = 1 /(12/fosc) = 1 / T,波形等间隔,次数已定,时间确定 即对机器周期进行计数。,左图定时时间为 N*T,T,N个方波,计数:脉冲不等间隔。,每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。,2、模式1 与模式0相似。 与模式0的区别:计数位数不同。 计数 寄 存 器:THi(高8位)+ TLi(低8位),(逻辑图),3、模式2 与模式0、1的区别:1)计数位数不同; 2)初值自动重装。,(逻辑图),4、模式3 T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数器TL0和TH0。 TL0使用C/T、GATE、TR0、/INT0、TF0定时/计数, TH0使用TR1、TF1 因此,只能用于定时 (逻辑图),模式3时,T1可定时为模式0、1、2的定时/计数,但不可中断,所以一般只作串口波特率发生器用。 (逻辑图),编程前确定参数: (1)定时/计数器 T0、T1选择其一, (2)工 作 方 式 C/T及GATA, (3)计 数 初 值 加1计数、16位。,M,N,X,计数: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,小结:1、MCS-51单片机内有几个定时计数器? 如何计数? 2、T0、T1有几种工作方式? 3、编程应用前要事先确定的参数有几个?,布置作业:P141 9,4-3 定时 / 计数器的应用,TMOD,TCON,复习:,例2、设fosc = 6MHz,利用单片机内定时/计数器及P10口线输出1000个脉冲,脉冲周期为2ms,试编程。,2ms,T = 121/fosc = 2us 选取T0定时;T1计数。,设T0采用中断方式产生周期为2ms方波,T1对该方波计数,当输出至第1000个脉冲时,使TF1置1。 在主程序中用查询方法,检测到TF1变1时,关掉T0,停止输出方波。,T0、T1参数的确定: T0模式0、定时:脉宽为脉冲周期的一半 所以,X = 2131ms / 2us = 0001 1110 0000 1100B TH0 = 0F0H ; TL0 = 0CH T1模式1、计数:N = 1000 则 X = 655361000 = 64536 = 0FC18H (若选模式0也可以,此时X = 7192=1C18H),程序: ORG 0000H LJMP MAIN ORG 000BH LJMP TOS ORG 1000H,MAIN: MOV TMOD,#50H;T0定时,模式0;T1计数,模式1 MOV TL0,#0CH MOV TH0,#0F0H MOV TL1,#18H MOV TH1,#0FCH,SETB TR1 SETB TR0 SETB ET0 SETB EA WAIT: JNB TF1,WAIT;查询1000个脉冲计够没有到? CLR EA CLR ET0 ANL TCON,#0FH ; 停T0、T1 SJMP TOS: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI END,例3、脉冲参数测量GATE功能的使用。 脉冲高电平(计数)长度值存于21H、20H中, 脉冲低电平长度存于23H、22H中。 电路连接如下图所示。,解: 复习GATE的用法: GATE = 0时,TRi = 1,即可启动Ti定时 / 计数 GATE = 1时,TRi = 1,且 =1,才启动定时 / 计数。,被测信号,8031,2,1,a,3,T0计数,T1计数,ORG 0000H LJMP MAIN ORG 2000H MAIN:MOV TMOD,#99H ;T0、T1均工作在定时, ;模式1,GATE=1 MOV A,#00H ;T0、T1赋计数初值00H, ; 定时最长时间为0000 65536 MOV TL0,A,MOV TH0,A MOV TL1,A MOV TH1,A,TEST0: JB P32,TEST0 ;检测是否到a点 SETB TR0 ;到a点,TR0 = 1,做好取计时值准备。 TEST1: JNB P32,TEST1 ;检测是否到1点 SETB TR1 ;到1点T0计时;TR1 = 1,做好T1计时准备。 TEST2:JB P32,TEST2 ;检测是否到2点 CLR TR0 ;到2点,停止T0计时,T1开始计时。 MOV 20H,TH0 ;保存T0计时结果 MOV 21H,TL0,TEST3:JB P33,TEST3 ;检测是否到3点 CLR TR1 ;到3点,停止T1计数 MOV 22H,TH1 ;保存T1计数结果 MOV 23H,TL1 LCALL DISP SJMP ,小结:1、定时/计数的四种方式是怎样的? 2、如何计算计数初值?如何编程送入计数初值? 3、GATE的用法是怎样的?,布置作业:P141 10、 11,4-4 MCS-51单片机串行接口,一、串行通信概述 1、什么叫串行通信?,在生活中同学们排横队行走 并行;排纵队行走 串行。 计算机中在传输信息、数据时也有并行、串行的问题。,接收设备,发送设备,2、同步通信、异步通信,同步发送设备时钟与接收设备时钟严格一致。,异步 发送时钟与接收时钟不一定相等。,3、串行通信的方向,单工,A 发,B 发,半双工,A 发 收,B 收 发,例如:广播电台 收音机,例如: 对讲机,全双工,A 发 收,B 收 发,例如: 电话机,4、波特率 即串行通信速率。 b/s 、 bps 在异步通信中,单位时间内所传送的有效二进制位数波特率。 举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒240个字符。求波特率。 解:(181)240 = 2400 b/s = 2400波特。,5、串行通信接口,发送:,CPU,发送寄存器SBUF,0,1,发送时钟:,接收:,CPU,接收时钟,接收数据寄存器SBUF,二、MCS-51机串行接口 单片机内有通用异步接收/发送器 UART。 全双工,4种工作方式,波特率可编程设置,可中断。,1、串口的组成 从编程角度讲来看主要由以下寄存器组成。,SBUF 串行发送 / 接收数据缓冲器 是两个物理单元,共用一个地址(99H),PCON 电源管理寄存器,SCON 串行口控制寄存器,TI / RI :中断请求标志位(前面已讲过),RB8:接收的第九位数,TB8:发送的第九位数,REN:允许接收控制位,SM2:多机通信控制位(常与RB8配合,决定是否激活RI),SM0、SM1:工作方式选择位(四种工作方式),2、串行口的工作方式 (1)方式0:同步移位寄存器方式 波特率固定为fosc / 12 RXD 接收发送数据 TXD 产生同步移位脉冲 接收/发送完,置位RI / TI ,(要求SM2 = 0),发送,接收,无起始位,无停止位 。可用于并口的扩展。,(2)方式1:8位UART 波特率为(2SMODT1的溢出率)/ 32 ,可变。 一帧信息10位。,发送,接收,送 RB8,发送完置位TI。,当接收到数据后,置位RI是有条件的。即: REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。 此时,数据装载SBUF, RI置1 ,停止位进入RB8。,(3)方式2、方式3 :9位UART 一般用于多机通信。一帧信息11位。,发送,发送完数据置位TI。,接收,接收到有效数据完毕,置位RI的条件: REN = 1,RI = 0 且SM2 = 0或接收到第9位数据为1, 此时,数据装载SB

温馨提示

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

评论

0/150

提交评论