已阅读5页,还剩92页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章MCS 51单片机的内部功能单元 学习目标 学习重点 主要内容 主要内容 主要内容 5 1MCS 51单片机的中断系统 5 1 1中断的概念 1 什么是中断所谓中断是指中央处理器CPU正在处理某件事情的时候 外部发生了某一事件 如定时器定时的时间到 请求CPU迅速去处理 CPU暂时中断当前的工作 转去处理所发生的事件 处理完以后 再回到原来被中断的地方 继续原来的工作 这样的过程称为中断 实现这种功能的单元称为中断系统 中断机构 中断过程如图5 1所示 表面上看 程序中断类似于子程序调用过程 因此又称中断处理程序为中断服务子程序 但程序中断与子程序调用有着很大的区别 子程序调用是由程序员事先安排好在程序运行到某一步时进行的 通过LCALL或ACALL调用指令来实现 而中断则往往是突发的 无法预知何时发生的事件 程序中无此调用命令 而是由内 外部设备向CPU发出中断请求 CPU响应实现的 5 1MCS 51单片机的中断系统 5 1 1中断的概念 图5 1中断过程示意图 2 为什么要用中断中断技术在实时控制 分时操作 人机交互 多机系统等方面得到了广泛的应用 大大扩大了计算机的应用范围 提高了计算机的性能 例如 在CPU与外设交换信息时 若用查询方式 则CPU会浪费较多时间去等待外设 这就是快速CPU和慢速外设之间的矛盾 为了解决这个问题引入了中断的概念 引入中断后有以下优点 1 同步工作有了中断功能后 就可以使CPU和外设同步工作 例如 CPU启动外设工作后 就继续执行主程序 而外设把数据准备好后 发出中断请求 请求CPU中断原来主程序的运行 转去执行输入 输出操作 中断处理 中断程序执行完后 CPU恢复执行主程序 外设也继续工作 这样CPU就可指挥多个外设同时工作 大大提高了CPU的利用率 也提高了输入 输出速度 5 1MCS 51单片机的中断系统 5 1 1中断的概念 2 实时处理在实时控制中 现场采集到的各种数据可在任何一时刻发出中断请求 要求CPU处理 若中断是开放的 则CPU即可马上对这些数据进行处理 3 分时处理利用中断功能 CPU可以同时为多个对象服务 只有服务对象向CPU发出中断请求 CPU才转而为之服务 这样就大大提高了CPU的效率 4 故障处理计算机在运行过程中出现了事先预料不到的情况或故障时 如掉电 存储出错 溢出等 可以利用中断系统自行处理 而不必停机 3 中断源引起中断的原因 或能发出中断请求的来源 称为中断源 通常的中断源有以下几种 5 1MCS 51单片机的中断系统 5 1 1中断的概念 外部输入 输出设备 如A D转换器 打印机等 数据通信设备 如进行双机或多机通信 定时时钟 故障源 如掉电保护请求等 为调试程序而设置的中断源 每一个中断源可由程序控制为允许中断或禁止中断 当CPU执行 关 中断指令 或系统复位 后 将屏蔽所有的中断请求 当CPU执行 开 中断指令以后才可能接受中断请求 4 中断系统的功能 1 实现中断并返回当某一个中断源发出中断请求时 CPU应决定是否响应这个中断请求 当CPU正在执行更重要的工作时 可暂时不响应中断 若响应这个中断请求 CPU必须在现行指令执行完后 保护现场和断点 然后转到需要处理的中断源 5 1MCS 51单片机的中断系统 5 1 1中断的概念 的服务程序入口 执行中断服务程序 当中断处理完后再恢复现场和断点 使CPU返回去继续执行主程序 2 能实现优先排队通常 在系统中会有多个中断源 有时会出现两个以上的中断源同时提出中断请求的情况 这时CPU应能找到优先级别最高的中断源 响应它的中断请求 在优先级别最高的中断源处理完后 再去响应级别较低的中断源 3 高级中断源能中断低级的中断处理当CPU响应某一中断源的请求 在进行中断处理时 若有优先级别更高的中断源发出中断请求 则CPU应能中断正在执行的中断服务程序 保留这个程序的断点和现场 响应高级中断 在高级中断处理完后 再继续执行被中断的中断服务程序 若当发出新的中断请求的中断源的优先级别与正在处理的中断源同级或更低时 CPU不响应这个中断请求 直到正处理的中断服务程序执行完后 才去处理新的中断请求 5 1MCS 51单片机的中断系统 5 1 2MCS 51的中断系统 MCS 51单片机有 个中断源 8052有 个 其中 个为外部请求 P3 2 和 P3 3 个片内定时 计数器T0和T1的溢出中断请求TF0 TCON 5 和TF1 TCON 7 1个片内串行口发送或接收中断请求TI SCON 1 或RI SCON 0 这些中源分别由特殊功能寄存器TCON和SCON的相应位锁存 4个用于中断控制的特殊功能寄存器IE IP TCON 用 位 和SCON 用 位 可提供两个中断优先级 实现二级中断嵌套 个中断源对应 个固定的中断入口地址 中断向量地址 MCS 51的中断系统从面向用户的角度来看 有以下4个特殊功能寄存器 定时器控制寄存器TCON 串行口控制寄存器SCON 中断允许寄存器IE 中断优先级寄存器IP 其中TCON和SCON只有一部分位用于中断控制 通过对以上各特殊功能寄存器的有关位进行置位 置1 或复位 清0 等操作 可实现各种中断控制功能 5 1 3中断控制 5 1MCS 51单片机的中断系统 1 中断源请求标志 1 定时 计数器控制寄存器TCON中的中断标志位TCON为定时 计数器T0 T1的控制寄存器 同时也锁存了T0 T1的溢出中断源和外部中断请求源等 字节地址为88H 与中断有关的位如下 5 1 3中断控制 5 1MCS 51单片机的中断系统 5 1 3中断控制 1 中断源请求标志 1 各控制位的含义如下 IE0 外部中断 标志 若IE0 1 则表示外部中断 向CPU提出了中断请求 IT0 外部中断 触发方式控制位 当IT0 0 外部中断 控制为电平触发方式 在这种方式下 CPU在每个机器周期的S5P2期间采样 P3 2 的输入电平 若采到低电平 则认为有中断请求 随即由硬件置IE0 1 若采到高电平 则认为无中断请求或中断请求已撤销 随即对IE0清 在电平触发方式中 CPU响应中断后不能自动使IE0清 也不能由软件使IE0清 故在中断返回前必须请除引脚上的低电平 否则会再次响应中断造成出错 时 计数器控制寄存器TCON中的中断标志位TCON为定时 计数器T0 T1的控制寄存器 同时也锁存了T0 T1的溢出中断源和外部中断请求源等 字节地址为88H 与中断有关的位如下 5 1MCS 51单片机的中断系统 5 1 3中断控制 当IT0 1 外部中断 控制为边沿触发方式 CPU在每个机器周期的S5P2期间采样的输入电平 相继两次采样 一个周期采样为高电平 接着的下一个周期采样为低电平 则由硬件置IE0 1 表示外部中断 正在向CPU请求中断 直到该中断被CPU响应时 IE0由硬件自动清0 在边沿触发方式中 为了保证CPU在两个机器周期内检测到先高后低的负跳变 输入高低电平的持续时间起码要保持1个机器周期 IE1 外部中断1标志 功能与IE0类似 IT1 外部中断1触发方式控制位 功能与IT0类似 TF0 定时 计数器T0溢出中断标志 在启动定时 计数器后 T0从初值开始加1计数 当计满溢出时 由硬件置TF0 1 向CPU请求中断 CPU响应TF0中断后 由硬件对TF0清 TF0也可由软件 指令 清 5 1MCS 51单片机的中断系统 5 1 3中断控制 TF1 T1溢出中断标志 功能与TF0类似 当MCS 51系统复位后 TCON各位均清 2 串行口控制寄存器SCON中的中断标志位SCON为串行口控制寄存器 字节地址为98H SCON的低 位TI和RI锁存串行口的接收中断和发送中断标志 其格式如下 TI 串行口发送中断标志 CPU将 位数据写入发送缓冲器SBUF时 就启动发送 每发送完一帧串行数据后 由硬件置TI 1 向CPU提出中断请求 但CPU响应中断时不会对TI清 必须由软件 指令 清 5 1MCS 51单片机的中断系统 5 1 3中断控制 RI 串行口接收中断标志 若串行口接收器允许接收 每接收完一个串行帧 硬件置RI 1 RI 1表示串行口接收器正在向CPU请求中断 同样CPU响应中断时不会对RI清 必须由软件 指令 清 2 中断允许控制对于每个中断源 其中断的开放与禁止由中断允许寄存器IE中的某一位控制 IE的字节地址为A8H 其格式如下 EA CPU的中断开放标志 EA 1 CPU开放中断 EA 0 CPU禁止 屏蔽 所有的中断请求 5 1MCS 51单片机的中断系统 5 1 3中断控制 ES 串行口的中断允许位 ES 1 允许串行口中断 ES 0 禁止串行口中断 ET1 定时 计数器T1的溢出中断允许位 ET1 1 允许T1中断 ET1 0 禁止T1中断 EX1 外部中断1 的中断允许位 EX1 1 允许外部中断1中断 EX1 0 禁止外部中断1中断 ET0 定时 计数器T0的溢出中断允许位 ET0 1 允许T0中断 ET0 0 禁止T0中断 EX0 外部中断 的中断允许位 EX0 1 允许外部中断0中断 EX0 0 禁止外部中断0中断 MCS 51单片机系统复位后 IE中各位均被清0 即禁止所有中断 3 中断优先级控制MCS 51单片机有两个中断优先级 对于每一个中断源的中断请求可编程为高优先级中断或低优先级中断 可实现二级中断嵌套 一个正在执行的低优先级中断能被高优先级中断请求所中断 但不能被另一个同优先级的中断请求所中断 一直执行到结束 遇到中断返回指令RETI 返回主程序后再执行一条指令才能响应新的中断请求 5 1MCS 51单片机的中断系统 5 1 3中断控制 MCS 51单片机内有一个优先级寄存器IP 字节地址为B8H 只要用指令改变其内容 就可对各中断源的中断优先级别进行设置 其格式如下 PS 串行口中断优先级控制位 PS 1 串行口中断设置为高优先级中断 PS 0 设置为低优先级中断 PT1 T1中断优先级控制位 PT1 1 定时 计数器T1设置为高优先级中断 PT1 0 设置为低优先级中断 PX1 外部中断 中断优先级控制位 PX1 1外部中断 设置为高优先级中断 PX1 0设置为低优先级中断 PT0 T0中断优先级控制位 PT0 1 定时 计数器T0设置为高优先级中断 PT0 0 设置为低优先级中断 5 1MCS 51单片机的中断系统 5 1 3中断控制 PX0 外部中断 中断优先级控制位 PX0 1外部中断 设置为高优先级中断 PX0 0设置为低优先级中断 MCS 51单片机系统复位后 IP各位均为0 各中断源均设定为低优先级中断 MCS 51单片机中各中断源的优先顺序以及对应的入口地址如表5 1所示 表5 1中断优先顺序及对应入口地址表 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 1 响应条件单片机响应中断的条件是 中断源有请求 CPU允许所有中断源请求中断 EA 1 中断允许寄存器IE相应位置1 这样 在每个机器周期内 单片机对所有中断源都进行顺序检测 并可在任一个周期的S6期间 找到所有有效的中断请求 并对其优先级排队 只要满足下列条件 无同级或高级中断正在服务 现行指令执行到最后一个机器周期且已结束 若现行指令为RETI或需访问特殊寄存器IE或IP的指令时 执行完成该指令且紧随其后的另一条指令也已经执行完毕 单片机便在紧接着的下一个机器周期S1期间响应中断 否则将丢弃中断查询的结果 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 2 响应过程单片机一旦响应中断 首先置位响应的优先级有效触发器 然后由硬件系统把断点地址压入堆栈保护 然后将对应的中断入口地址值装入程序计数器PC 使程序转向该中断入口地址 以执行中断服务程序 由上可知 单片机响应中断后 只保护断点而不保护现场 如累加器 程序状态字寄存器PSW的内容 且不能清除串行口中断标志TI和RI 也无法清除外部中断请求信号和 故用户在编制程序时应予以考虑 CPU从以上相应的地址开始执行中断服务程序 直至遇到一条RETI指令为止 若用户在中断服务程序开始后安排了保护现场指令 相应寄存器内容压入堆栈 则在RETI指令前应有恢复现场 相应寄存器内容弹出堆栈 的指令 CPU从以上相应的地址开始执行中断服务程序 直至遇到一条RETI指令为止 若用户在中断服务程序开始后安排了保护现场指令 相应寄存器内容压入堆栈 则在RETI指令前应有恢复现场 相应寄存器内容弹出堆栈 的指令 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 3 中断响应时间综上所述 CPU不是在任何情况下都对中断请求立即响应的 而且不同的情况对中断响应的时间也不同 下面以外部中断为例 说明中断响应时间 外部中断请求信号的电平在每个机器周期的S5P2期间 经反相锁存到IE0或IE1标志位 CPU在下一个机器周期才会查询到这些值 这时如果满足响应条件 CPU响应中断时 以两个机器周期的时间由硬件电路完成中断服务程序的调用 以转到相应的中断服务入口 这样 从外部中断请求有效到开始执行中断服务程序的第一条指令 至少需 个机器周期 如果在请求中断时 CPU正在处理最长指令 如乘 除法指令 则额外等待时间增加 个机器周期 若正在执行RETI或访问IE IP指令 则额外等待时间又增加 个机器周期 综合估算 若系统中只有一个中断源 则响应时间为 个机器周期 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 例5 1 采用中断和查询的方法扩充外部中断源 实现多个故障源的查找显示 图5 3所示的电路可实现多个故障源的查找显示 当系统无故障时 无中断请求 4个输入故障源的故障信号输入端为低电平 故障指示灯全部熄灭 当系统中某一路出现故障时 相应故障源的故障信号输入端为高电平 表示有中断请求 从而引起8031的中断 中断服务子程序的任务就是判定故障源 并点亮相应的指示灯 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 程序如下 ORG2000HAJMPMAIN 转向主程序ORG0003HAJMPSERVE 转向中断服务程序MAIN ANLP1 00H 全部指示灯灭 并为读入故障信号作准备SETBIT0 选择为边沿触发方式SETBEX0 允许中断SETBEA CPU开中断LOOP1 MOVA P1ANLA 55HJNZLOOP1 有外部中断请求转LOOP1ANLP1 00H 无中断请求灯全灭 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 SJMPLOOP1 等待中断SERVE JNBPl 0 L1 中断服务程序SETBP1 1 查询中断源 有故障则点亮相应的指示灯SJMPL2L1 CLRP1 1L2 JNBP1 2 L3SETBP1 1SJMPL4L3 CLRP1 3L4 JNBP1 4 L5SETBPl 5SJMPL6L5 CLRP1 5 5 1MCS 51单片机的中断系统 5 1 4中断的响应条件及响应过程 L6 JNBP1 6 L7SETBPl 7SJMPL8L7 CLRP1 7L8 RETI 5 2MCS 51单片机的定时器 计数器 5 2 1定时 计数器的结构 MCS 51单片机内有两个16位的定时 计数器 定时器0 T0 和定时器1 T1 它们都具有定时和计数功能 可用作定时控制 延时以及对外部事件的计数及检测 定时 计数器的内部结构如图5 4所示 图5 4定时 计数器的内部结构 5 2MCS 51单片机的定时器 计数器 5 2 1定时 计数器的结构 定时 计数器的核心是一个加1计数器 其分别由两个 位的特殊功能寄存器组成 T0由TH0和TL0构成 T1由TH1和TL1构成 地址顺序依次是8AH 8DH 这些寄存器用于存放定时或计数的初值 每个定时器都可以由软件设置成定时工作方式或计数工作方式 这些功能都由定时 计数器方式寄存器TMOD设置 由定时 计数器控制寄存器TCON控制的 当定时器工作在计数方式时 外部输入信号是加到T0 P3 4 或T1 P3 5 端 外部输入信号的下降沿将触发计数 计数器在每个机器周期的S5P2期间采样外部输入信号 若一个周期的采样值为1 下一个周期的采样值0 则计数器加1 故识别一个从1到0的跳变需2个机器周期 所以对外部输入信号最高的计数速率是晶振频率的1 24 同时外部输入信号的高电平与低电平保持时间均需大于一个机器周期 当定时 计数器工作在定时方式时 加1计数器对机器周期计数 每一个机器周期加1 直至计数器计满溢出 由于一个机器周期由12个时钟周期组成 所以计数频率为时钟频率的1 12 5 2MCS 51单片机的定时器 计数器 5 2 1定时 计数器的结构 一旦定时 计数器被设置成某种工作方式后 它就会按设定的工作方式独立运行 不再占用CPU操作时间 直到加1计数器计满溢出 才可能中断CPU的当前操作 用户可以重新设置定时 计数器的工作方式 以改变定时 计数器的工作状态 5 2 2定时 计数器的方式寄存器和控制寄存器 定时 计数器是一种可编程的单元 在其工作之前必须将控制字写入方式寄存器TMOD和控制寄存器TCON 用以确定工作方式 这个过程称为定时 计数器的初始化 1 工作方式寄存器TMODTMOD用于控制T0和T1的工作方式 其格式如下 5 2MCS 51单片机的定时器 计数器 5 2 2定时 计数器的方式寄存器和控制寄存器 其中 高 位控制定时器T1 低 位控制定时器T0 各位的含义如下 M1 M0 工作方式控制位 可构成以下 种工作方式 如表5 2所示 5 2MCS 51单片机的定时器 计数器 5 2 2定时 计数器的方式寄存器和控制寄存器 表5 2工作方式控制位构成的工作方式及其说明 5 2MCS 51单片机的定时器 计数器 5 2 2定时 计数器的方式寄存器和控制寄存器 计数工作方式 定时工作方式选择位 0 设置为定时工作方式 1 设置为计数工作方式 GATE 选通控制位 GATE 0 只要用软件 指令 对TR0 或TR1 置1就可以启动定时器 GATE 1 只有在 或 引脚为1 且用软件对TR0 或TR1 置1才能启动定时器工作 系统复位后TMOD的所有位清 TMOD不能位寻址 只能用字节地址设置工作方式 2 控制寄存器TCONTCON用于控制定时器的启动 停止以及反映定时器的溢出和中断情况 其格式如下 5 2MCS 51单片机的定时器 计数器 5 2 2定时 计数器的方式寄存器和控制寄存器 TCON高4位的含义为 TF1 定时器1溢出标志 当T1计数器溢出时由硬件置1 并请求中断 在CPU响应中断后 并由硬件清 TF1也可由软件清 TF0 定时器 溢出标志 功能与TF1相同 TR1 定时器1的运行控制位 可由软件置1或清0 当GATE TMOD 为 而TR1为1时 允许T1计数 当TR1为 时禁止T1计数 当GATE TMOD 为1时 仅当TR1 1且输入为高电平才允许T1计数 TR1 0或输入低电平都禁止T1计数 5 2MCS 51单片机的定时器 计数器 5 2 2定时 计数器的方式寄存器和控制寄存器 TR0 定时器 运行控制位 功能与TR1相同 TCON低4位与外部中断有关 含义为 IE1 外部中断1请求标志 IE0 外部中断 请求标志 IT1 外部中断1触发方式选择位 IT0 外部中断 触发方式选择位 系统复位后 TCON中的各位均清 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 8051单片机中两个16位的定时 计数器具有定时和计数两种功能 每种功能包括了4种工作方式 除了工作方式 以外 其他 种工作方式的基本原理都是一样的 用户通过指令把方式字写入TMOD中来选择定时器 计数器的功能和工作方式 通过把计数的初始值写入TH和TL中来控制计数长度 通过对TCON中相应位进行置1或清0来实现启动或停止定时 计数器工作 还可以读出TH TL TCON中的内容来查询定时器的状态 1 工作方式0当M1M0为00时 定时 计数器被设置成方式0 它是一个13位计数器 以T0为例 工作方式 的逻辑结构如图5 5所示 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 图5 5工作方式0的逻辑结构 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 在这种工作方式下 16位的计数器 TH0和TL0 只用了13位构成13位定时 计数器 TL0的高 位未用 当TL0的低 位计满时 向TH0进位 而TH0溢出后对中断标志位TF0置1 并请求中断 T0是否溢出也可用查询TF0是否为1确定 当 0时 控制开关接通内部振荡器 T0对机器周期加1计数 其定时时间为 t 213 T0初值 机器周期 213 T0初值 振荡周期 12若晶振频率为12MHz 则时钟周期为 12 s 当计数初值为 时 最长定时时间为 tmax 213 0 1 12 s 12 8 192ms当 1时 控制开关接通外部输入信号 当外部输入信号发生从 1 到 0 跳变时 加1计数器加1 即处于计数工作方式 当GATE 0时 或门输出恒为1 被封锁 仅由TR0便可控制T0的开启和关闭 当GATE 1时 T0的开启与关闭取决于TR0和相与的结果 即只有当 1和TR0 1时 T0才被开启 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 2 工作方式1当M1M0为01时 定时 计数器被设置成方式1 以T0为例 工作方式1的逻辑结构 如图5 6所示 图5 6工作方式1的逻辑结构 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 由图可见 它与工作方式 的差别仅在于工作方式 是以16位计数器参加计数的 且定时时间为 t 216 T0初值 机器周期 216 T0初值 振荡周期 12若晶振频率为12MHz 则时钟周期为 12 s 最长的定时时间 计数初值为 为 tmax 216 0 1 12 s 12 65 536ms3 工作方式2当M1M0为10时 定时 计数器被设置成方式2 以T0为例 工作方式 的逻辑结构图 如图5 7所示 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 图5 7工作方式2的逻辑结构 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 在这种工作方式下 定时 计数器构成一个能够重复置初值的 位计数器 在工作方式 或工作方式1下若用于重复定时计数 则每次计满溢出后由于计数器变为全 还得重新装入初值 而工作方式 是把16位的计数器分成两个 位计数器使用 TL0用作 位计数器 TH0用来保存初值 每当TL0计满溢出后 可自动将TH0的初值再次自动装入TL0中 工作方式 的定时时间为 t 28 T0初值 机器周期 28 T0初值 振荡周期 124 工作方式3当M1M0为11时 定时 计数器被设置成方式3 工作方式 的逻辑结构图 如图5 8所示 在这种工作方式下 只适用于定时 计数器T0 T0在工作方式 被拆成两个相互独立的计数器 其中TL0使用原T0的各控制位 引脚和中断源 GATE TR0 和TF0 而TH0则只能作为定时器使用 但它占用了T1的TR1和TF1 即占用了T1的中断标志和运行控制位 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 图5 8工作方式3的逻辑结构 5 2MCS 51单片机的定时器 计数器 5 2 3定时 计数器的工作方式 一般在系统需增加一个额外的 位定时器时 可设置为工作方式 此时T1虽然仍可定义为工作方式 工作方式 和工作方式 但只能用在不需要中断控制的场合 5 2 4定时 计数器编程和应用举例 应用定时 计数器时应注意两点 一是初始化 写入控制字 二是对初值的计算 初始化步骤为 向TMOD写入工作方式控制字 向计数器TLi THi装入初值 置TRi 1 启动计数 若需要时 置ETi 1 允许定时 计数器中断 置EA 1 CPU开中断 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 例5 2 利用T0方式0产生1ms的定时 在P1 0引脚上输出周期为2ms的方波 设单片机晶振频率fosc 12MHz 分析 要在P1 0输出周期为2ms的方波 只需连续定时1ms 半周期 使P1 0逐次取反即可 确定方式字 T0的方式字为 TMOD 00H 即 TMOD 1 TMOD 0M1M0 00 T0为方式0 TMOD 2 0 T0为定时状态 TMOD 3GATE 0 表示计数不受控制 因T1不用 TMOD 4 TMOD 7可为任意 这里取0值 计算1ms定时T0的初值 已知 机器周期t 1 fosc 12 12 1 10 6s 1 s 设 T0的计数初值为x 由于 213 x 1 10 6 s 1 10 3 s 1ms 5 2MCS 51单片机的定时器 计数器 例5 3 采用定时器溢出中断方式产生上例所要求的方波 分析 采用查询方式的程序很简单 但在定时器整个计数过程中 CPU要不断地查询溢出时标志TF0的状态 这就占用了CPU工作时间 以致CPU的效率不高 而采用定时器溢出中断方式 则可以提高CPU的效率 方式字和初值与上例一样 程序如下 主程序 MAIN MOVTMOD 00H 置T0为方式0MOVTL0 18H 送初值MOVTH0 0E0HSETBEA CPU开中断SETBET0 T0中断允许SETBTR0 启动T0HERE SJMPHERE 等待中断 虚拟主程序 5 2 4定时 计数器编程和应用举例 5 2MCS 51单片机的定时器 计数器 中断服务程序 ORG000BH T0中断入口AJMPCTC0 转中断服务程序ORG0100HCTC0 MOVTL0 18H 重装初值MOVTH0 0E0HCPLP1 0 输出方波RETI 中断返回 5 2 4定时 计数器编程和应用举例 5 2MCS 51单片机的定时器 计数器 例5 4 产生秒定时信号 分析 直接使用定时器不可能得到秒定时信号 但可以在晶振频率fosc 6MHz 定时 计数器取工作方式1时得到100ms的定时周期 此时最大定时周期为65 536ms 2 131 072ms 利用10次定时周期为100ms的中断则可以得到秒定时信号 确定方式字 T0的方式字为 TMOD 00000001B 01H 计算100ms定时T0的初值 设初值为x 由于t 216 x 1 6 s 12 100ms 初值x 15536D 3CB0H TH0初值为3CH TL0初值为0B0H 程序如下 ORG0000HAJMPMAIN 转主程序MAIN MOVSP 63H 设置堆栈指针MOVTMOD 01H T0初始化 写入工作方式控制字MOVTL0 0B0H 设置计数初值 5 2 4定时 计数器编程和应用举例 5 2MCS 51单片机的定时器 计数器 MOVTH0 3CHMOVR7 10SETBEA CPU开中断SETBET0 允许T0中断SETBTR0 启动T0计数SJMP 主程序结束 等待100ms中断ORG000BH T0中断服务程序INT MOVTL0 0B0H 重新设置计数初值MOVTH0 3CHDJNZR7 EXITCPLP1 0 秒定时时间到 P1 0取反输出MOVR7 10EXIT RETIEND 5 2 4定时 计数器编程和应用举例 5 2MCS 51单片机的定时器 计数器 例5 5 已知系统时钟频率fosc 6MHz 试编写程序 使P1 7输出如下的矩形脉冲 5 2 4定时 计数器编程和应用举例 分析 将T0用作定时器方式1使用 定时40ms 确定方式字 T0的方式字为 TMOD 00000001B 01H 计算40ms定时T0的初值 设初值为x 由于t 216 x 1 6 s 12 40ms初值x 45536D B1E0H 即TH0初值为0B1H TL0初值为0E0H程序如下 ORG0000HLJMPMAIN 转初始化ORG000BH T0中断入口地址LJMPIT0 转T0中断服务程序 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 ORG0100H 初始化程序首地址MAIN CLRP1 7 输出低电平MOVTMOD 01H 置T0定时器方式1MOVTH0 0B1H 置T0初值 定时40msMOVTL0 0E0HSETBPT0 置T0为高优先级SETBTR0 T0启动SETBP1 7 输出高电平SETBF0 置40ms标志MOVR7 9 置360ms计数器初值MOVIE 10000010B T0开中断LJMPMAINORG 0200H 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 IT0 MOVTH0 0B1H 置T0初值40msMOVTL0 0E0HJBF0 IT01 有40ms标志 转DJNZR7 IT02 无40ms标志 判断360ms到否 未到转返回MOVR7 9 360ms到 重置计数器初值IT01 CPLP1 7 输出波形取反CPLF0 40ms标志取反IT02 RETI 中断返回 例5 6 利用定时器扩展外部中断源 分析 当定时 计数器选择为计数工作方式时 T0或T1引脚上的负跳变将使T0或T1计数器加1计数 故若把计数初始设定为满量程FFH 一旦外部从计数引脚输入一个负跳变信号 计数器T0或T1加1产生溢出中断 这样便可把外部计数输入端T0 P3 4 或T1 P3 5 扩充作为外部中断源的输入端 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 利用定时器T1扩展外部中断源 每当T1引脚上出现负跳变时进入中断处理程序使累加器 内容加1 再送P1口输出 程序如下 ORG0000H 用户程序首址AJMPMAIN 转主程序ORG001BHAJMPINT 转中断服务程序MAIN MOVSP 53H 堆栈指针赋初值MOVTMOD 60H T1方式 计数MOVTL1 0FFH 送常数MOVTH1 0FFHSETBEA CPU开中断SETBET1 允许T1中断SETBTR1 启动T1计数 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 SJMP 等待INT INCA T1中断处理程序MOVP1 ARETI 中断返回 例5 7 测试引脚上正脉冲的宽度 以机器周期数表示 分析 当GATE 1 TR0 1 只有引脚上出现高电平时 T0才被允许计数 利用这一功能外部待测脉冲由 P3 2 输入 T0工作在方式1 设置为定时状态 GATE置 1 测试时 在端为 0 时置TR0为 1 当端变为 1 时启动计数 端再次变为 0 时停止计数 此时的计数值就是被测正脉冲的宽度 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 程序如下 ORG0000HMOVTMOD 09H T0工作于方式 定时 GATE 1MOVTL0 00HMOVTH0 00HWAIT1 JBP3 2 WAIT1 等待 3 2变低SETBTR0 启动T0WAIT2 JNBP3 2 WAIT2 等待 3 2变高WAIT3 JBP3 2 WAIT3 等待 3 2再变低CLRTR0 T0停止计数MOVA TL0 存放计数值MOVB TH0 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 例5 8 利用定时中断抗干扰 分析 在这里抗干扰的设计思想是先估算系统主程序运行一次所需的时间t1 然后把定时器T0或T1的定时时间t2取得比t1稍大些 并在主程序中包含对定时器的初始化程序 这样如果系统主程序运行正常 因定时时间t2比t1大 故在定时时间t2还未到时 主程序已运行完成 T0或T1可以被重新初始化 使定时时间常数重新置入其中 不会产生溢出中断 若应用系统由于干扰失控 主程序不能正常结束 则T0或T1就不能被及时初始化 而经过时间t2后 T0或T1必将产生溢出中断 转入中断服务 这表明程序运行出现故障 用可安排中断服务程序跳转回主程序需要的地址 以此重新使主程序运行 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 程序段如下 MOVTMOD 20H 设置T1为工作方式 定时MOVTL1 data T1赋初值 根据t MOVTH1 dataSETBPT1 T1中断设置为高优先级别SETBEA CPU开中断SETBET1 开中断SETBTR1 启动T1计数ORG001BH T1溢出中断入口地址POPACC 丢弃PC压入堆栈的错误地址POPACCMOVA data 将需转去的主程序地址 个字节 送入栈顶PUSHACCMOVA data 5 2MCS 51单片机的定时器 计数器 5 2 4定时 计数器编程和应用举例 PUSHACCRETI 中断返回 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 1 串行通信与并行通信计算机与外界的信息交换 数据传输 称为通信 通信方式有两种 串行通信与并行通信 如图5 9所示 串行通信的数据传输是在单根数据线上 逐位顺序传送的 其通信速度慢 但仅使用一根或两根传输线 大大降低了成本 适合于远距离通信 在并行通信中 信息传输线的根数与传送的数据位数相等 数据所有位的传输同时进行 其通信速度快 但通信线路复杂 成本高 当通信距离较远 位数多时更是如此 因此并行通信适合于近距离通信 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 a 串行传输 b 并行传输图5 9串行通信与并行通信 MCS 51单片机的并行通信是由其并行接口实现的 同一时刻可以输入或输出8位数据 MCS 51串行通信是由其串行接口实现的 2 串行通信方式串行通信中 数据在通信线上的传送方式有3种 单工方式 半双工方式和双工方式 如图5 10所示 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 单工方式 这种方式只允许数据按一个固定的方向传送 如图5 10 a 所示 半双工方式 数据可以从A发送到B 也可以由B发送到A 但A B之间只有一根传输线 因此同一时刻只能进行一个方向的传送 其传送方向由收发控制开关K切换 如图5 10 b 所示 平时一般让A B方都处于接收状态 以便能够随时响应对方的呼叫 全双工方式 数据可同时在两个方向上传送 如图5 10 c 所示 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 图5 10串行通信中数据的传送方式 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 MCS 51单片机的串行通信是全双工方式 可随时发送或接收数据 串行通信有两种基本方式 同步通信和异步通信 1 同步通信要求有准确的时钟信号来保证发送端和接收端的的严格同步 当距离较近时 可以把发送端的时钟信号接到接收端 作为接收时钟 即发送和接收是同步进行的 同步通信时 因可以保证时钟的精确同步 一次可传送大量数据而不产生误差 故是按数据块传送的 把传送的字符顺序连接起来 组成数据块 如图5 11所示 在数据块前面添加特殊的同步字符 作为数据块的起始符号 在数据块的后面加校验字符 用于校验通信中是否发生传输错误 同步通信效率高 但线路复杂 且仅适合于近距离通信 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 图5 11同步通信格式 异步通信若接收端与发送端使用的不是同一时钟信号 则为异步通信 异步通信由于收 发双方的时钟信号不同步 故其是按帧传送数据的 即每次传送一个字符 而不是一个较长的数据块 以免产生时钟采样误差 异步通信的数据帧格式 如图5 12所示 字符前面有一个起始位0 后面有一个停止位1 各字符之间没有固定的间隙长度 各字符传送的间隙为空闲位1 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 当发送端发送时 首先发送一个起始位0 接受端侦测到数据线上信号不是表示空闲位的1而是0时便开始接收数据 图5 12异步通信格式 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 异步通信通常采用通用异步接收 发送器UART UniversalAsynchronousReceiver Transmitter 控制实现 MCS 51单片机片内集成有UART 可实现异步串行通信 3 串行通信的传送速率在串行通信中 数据是按位进行传送的 因此传送速率用每秒传送格式位的数目表示 称为波特率 Baudrate 1波特 1位 秒 bit s 假设某通信系统的数据传送速率为120字符 秒 每个字符为10位 则波特率为 10位 字符 120字符 秒 1200位 秒 1200波特 bit s 我们可算出每位传送所花费的时间为 Td 1 波特率 1 1200bit s 0 833ms异步通信的数据传送速率在110 19200bit s之间 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 4 信号的调制与解调由于计算机处理的数据为数字信号 当传送这些数字信号时 要求通信线有很宽的频带 对于近距离通信 不能超过30m 可采用直接电缆连接 但对于远距离通信 通常采用电话线来传送信息 而电话线的频带很窄 数字信号经过电话线传送后 会发生严重的畸变 解决这一问题的方法是采用调制与解调 调制常采用调幅 调频 调相等方法 下面对调频方法做一个简单介绍 当采用调频方法时 调制 是指在发送端把数字信号 0 和 1 转换成不同频率的模拟信号 然后再发送到电话线等通信线路上去 解调 时在接收端将不同频率的模拟信号还原成数字信号 0 和 1 图5 13为调制与解调过程的示意图 通常把调制器与解调器做成一个整体 调制解调器 Modem 5 3MCS 51单片机的串行通信I O接口 5 3 1串行通信概述 图5 13信号的调制与解调 5 3 2串行通信I O接口 1 串行口的结构与工作原理MCS 51单片机中的串行接口是一个全双工异步通信接口 能同时进行发送和接收 它既可以按UART 通用异步接收和发送器 使用 也可以作为同步移位寄存器使用 其帧格式和波特率可通过软件编程设置 在使用上非常方便灵活 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 1 串行口的结构MCS 51单片机的串行口主要由两个数据缓冲器SBUF 一个输入移位寄存器 一个串行控制寄存器SCON和一个波特率发生器T1等组成 串行口结构框图 如图5 14所示 图5 14串行口结构框图 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 串行口数据缓冲器SBUF是可以直接寻址的专用寄存器 在物理上 一个做发送缓冲器 一个做接收缓冲器 但两个缓冲器共用一个口地址99H 由读写信号区分 CPU写SBUF时为发送缓冲器 读SBUF时为接收缓冲器 接收缓冲器是双缓冲的 它是为了避免在接收下一帧数据之前 CPU未能及时响应接收器的中断 把上帧数据读走 而产生两帧数据重叠的问题而设置的双缓冲结构 对于发送缓冲器 为了保持最大传输速率 一般不需要双缓冲 这是因为发送时CPU是主动的 不会产生写重叠的问题 特殊功能寄存器SCON用来存放串行口的控制和状态信息 T1用作串行口的波特率发生器 其波特率是否增倍可由特殊功能寄存器PCON的最高位控制 2 串行通信过程串行通信的过程分为接收数据和发送数据 其过程如下 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 接收数据的过程 在进行通信时 当CPU允许接收时 即SCON的REN位置1时 外界数据通过引脚RXD P3 0 串行输入 数据的最低位首先进入输入移位器 一帧接收完毕再并行送入缓冲器SBUF中 同时将接收中断标志位RI置位 向CPU发出中断请求 CPU响应中断后 并用软件将RI位清除同时读走输入的数据 接着又开始下一帧的输入过程 重复直至所有数据接收完毕 发送数据的过程 CPU要发送数据时 即将数据并行写入发送缓冲器SBUF中 同时启动数据由TXD P3 1 引脚串行发送 当一帧数据发送完即发送缓冲器空时 由硬件自动将发送中断标志位TI置位 向CPU发出中断请求 CPU响应中断后 用软件将TI位清除 同时又将下一帧数据写入SBUF中 重复上述过程直到所有数据发送完毕 2 串行口的控制MCS 51串行口的工作方式选择 中断标志 可编程位的设置 波特率的增倍均是通过两个特殊功能寄存器SCON和PCON来控制的 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 1 电源和波特率控制寄存器PCONPCON的地址为87H 只能进行字节寻址 不能按位寻址 其内容如下 PCON的最高位D7位作为SMOD 是串行口波特的增倍控制位 当SMOD 1时 波特率加倍 例如在工作方式2下 若SMOD 0时 则波特率为fosc的1 64 当SMOD 1时 波特率为fosc的1 32 恰好增大一倍 系统复位时 SMOD位为0 PCON其余位用于CHMOS型MCS 51单片机的低功耗控制 2 串行口控制寄存器SCON深入理解SCON各位的含义 正确地用软件设定修改SCON各位是运用MCS 51串行口的关键 该专用寄存器的主要功能是串行通信方式选择 接收和发送控制及串行口的状态标志指示等作用 其各位的含义如下 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 SM0和SM1 为串行口工作方式选择位 SM0和SM1的工作方式及其功能 如表5 3所示 表5 3SM0和SM1的工作方式及其功能 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 SM2 允许方式2和方式3进行多机通信的控制位 在方式2和方式3中 如果SM2 1 那么串行口接收到第9位数据 RB8 为0时 则不置位RI 不提出中断请求 如果SM2 0 则接收到停止位信息后必置位RI 在方式1中 若SM2 1 则只有收到有效停止位时才置位RI 在方式0中 SM2必须是0 REN 允许接收控制位 REN 0 则禁止串行口接收 REN 1 允许串行口接收 TB8 是工作方式2和方式3中要发送的第9位数据 由软件置位或复位 该位可作为奇偶校验位 在多机通信中 该位用于表示是地址帧还是数据帧 RB8 是工作方式2和方式3接收到的第9位数据 可能是奇偶校验位或地址 数据标识位 在方式l中 若SM2 0 则RB8是接收到的停止位 在方式0中 不使用RB8 TI 发送中断标志位 在方式0中 当发送完第8位数据时 TI由硬件置位 在其他方式中 TI在开始发送停止位时由硬件置位 TI 1时 请求中断 CPU响应中断后 再发送下一帧数据 在任何方式下 都必须用软件对TI清零 5 3MCS 51单片机的串行通信I O接口 5 3 2串行通信I O接口 RI 接收中断标志位 在方式0中 当接收到第8位数据时 RI由硬件置位 在其他方式中 RI在接收到停止位的中间时刻 由硬件置位 RI 1时 串行口向CPU请求中断 CPU响应中断后 从SBUF中取出数据 在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业地产买卖合同协议
- 个人荣誉事业的承诺书(6篇)
- 吐鲁番市托克逊县公安局2025年面向社会公开招聘第二批警务辅助人员备考题库及完整答案详解1套
- 2026年阜阳招聘100名辅警备考题库及完整答案详解1套
- 中山市人民医院2026年招聘备考题库(第一期)及答案详解1套
- 2025年四川房地产销售合同模板
- 广西医科大学附属武鸣医院2025年公开招聘高层次人才备考题库及完整答案详解
- 四年级暑假日记500字8篇范文
- 2026年青海两弹一星干部学院招聘备考题库及答案详解一套
- 2026年南方科技大学公共卫生及应急管理学院梁凤超课题组诚聘实验技术人员备考题库及参考答案详解1套
- GB/T 34590.3-2017道路车辆功能安全第3部分:概念阶段
- GB/T 11417.5-2012眼科光学接触镜第5部分:光学性能试验方法
- 《寝室夜话》(4人)年会晚会搞笑小品剧本台词
- 统编教材部编人教版小学语文习作单元教材解读培训课件:统编小语四-六年级习作梳理解读及教学建议
- 开放大学土木工程力学(本)模拟题(1-3)答案
- 医疗机构远程医疗服务实施管理办法
- 【教学课件】谋求互利共赢-精品课件
- 国家开放大学电大《公共部门人力资源管理》期末考试题库及答案
- 情感性精神障碍护理课件
- 起重吊装作业工作危害分析JHA记录表
- 偏微分方程的数值解法课后习习题答案
评论
0/150
提交评论