51单片机 第三章_第1页
51单片机 第三章_第2页
51单片机 第三章_第3页
51单片机 第三章_第4页
51单片机 第三章_第5页
已阅读5页,还剩211页未读 继续免费阅读

下载本文档

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

文档简介

大连理工大学电信学院陈育斌 第三章 单片机内部主要功能模块工作原理及应用 本章主要内容 MCS 51单片机并行端口的结构特点 定时 计数器 串行口的工作原理 查询 及 中断 两种编程方法及对定时器 串行口进行编程 大连理工大学电信学院陈育斌 本章目录 MCS 51单片机的8位并行输入输出端口MCS 51单片机的定时 计数器MCS 51单片机的串行接口MCS 51的中断系统 大连理工大学电信学院陈育斌 3 28位并行输入输出端口 CPU 输入输出端口 外部设备 内总线 MCS 51 并行I O端口是实现单片机与外部进行并行数据交换的通道 大连理工大学电信学院陈育斌 MCS 51单片机的并行端口具备三种工作方式 通用I O方式 直接与外部设备连接 实现数据的并行交换 常用于 最小系统 模式的设计 总线方式 当系统要与外部ROM RAM或ADC等器件进行连接时 采用类似于微机系统的三总线结构进行设计 部分端口承担总线的功能 此时系统称为 扩展系统 第二功能方式 由于引脚的限制 内部信号无法正常输入输出 因此借用I O端口引脚作为内部信号通道也是一种不得已的方法 当端口作为总线或第二功能时 就不能再做I O 大连理工大学电信学院陈育斌 MCS 51单片机的四个并行端口P0 P1 P2和P3都是具有输出锁存功能的 准双向 端口 这些锁存器的位置都在SFR中 其地址分别为 80H 90H A0H B0H 出于系统功能的考虑 在硬件设计上对端口功能都有不同的要求 所以它们又具有不同的结构和特点 大连理工大学电信学院陈育斌 3 1 1P0口 3 1 2P1口 3 1 3P2口 3 1 4P3口 3 1 5并行端口在使用时应注意的几个问题 3 1 6单片机与继电器等大电流负载的接口 大连理工大学电信学院陈育斌 3 1 1P0口 特点 具有两种工作方式 通用数据I O双向端口 地址 数据复用总线 大连理工大学电信学院陈育斌 在作为通用数据I O端口时 具有较强的输出驱动能力 8个TTL负载 因输出是 开漏 结构 所以与MOS负载连接时 需要外接一个上拉电阻 作为 地址 数据复用总线 使用时 P0口首先输出存储器的低八位地址信号 然后变为数据总线进行数据的输入输出 所以称 分时复用总线 注意 此时P0口不能再作为通用I O口 大连理工大学电信学院陈育斌 P0口的位结构图 DQ锁存器CL Q P0 x引脚 Vcc 地址 数据1 0 控制 0时 读锁存器 读引脚 内部总线 写锁存器 MUX 控制 0时 Vcc 返回前一次 参见讲义235页 大连理工大学电信学院陈育斌 硬件组成 1 一个输出锁存器 D型触发器 2 二个三态门 控制读引脚或读锁存器 3 与门和MUX等元件组成的输出控制电路 4 一对场效应晶体管FET构成的输出电路 大连理工大学电信学院陈育斌 P0口的工作原理 普通I O模式下的输出与输入原理 扩展 总线 方式下的工作原理 大连理工大学电信学院陈育斌 1 P0口的I O操作 通用I O端口 在P0口作为通用I O端口时 控制电路中的 控制 端为 0 电平 此时多路开关MUX接入下方的锁存器的 Q端 因与门的一个输入端为 0 所以它使上端的FET截止 这就是P0口在做I O口时输出为 漏极开路 结构的原因 返回结构图 大连理工大学电信学院陈育斌 数据经内总线送到锁存器的 D 端 经 Q 端送场效管应输出极 总线送 0 时 锁存器的 Q 1 使下端的FET导通 上面的FET截止 端口呈现 0 电平 总线送 1 时 锁存器 Q 0 使下端的FET截止 输出极的两个FET全部截止 在这种情况下 必须通过上拉电阻的作用使端口为高电平 返回结构图 一 输出操作 MOVP0 A 大连理工大学电信学院陈育斌 输入操作实际上有两种 参见结构图 读引脚 用于真正的外部数据输入的通道 读锁存器 在端口作输出时常使用的操作 a 读引脚 当外部信号通过端口引脚输入时 读引脚上的电平实现信号的输入 如指令 MOVA P0 A P0此时 单片机控制 读引脚 的三态门 使引脚处的外部电平经三态门送入内部总线 返回结构图 二 输入操作MOVA P0 大连理工大学电信学院陈育斌 在端口电路中 可以发现一个问题 端口在输入 读引脚 时 原来锁存器的状态可能要影响引脚电平的输入 如 原来锁存器的状态为 0 态 电路将不能正确读入 要解决的方法就是让下端的FET截止 即事先向端口写一个 1 返回结构图 读引脚操作前要事先向该端口写 1 大连理工大学电信学院陈育斌 请注意下面的一段程序 MOVP0 0FFH 0FFH送P0 写1 MOVA P0 从P0口引脚输入数据到A你能正确的分析出指令的操作吗 上述指令执行后P0 返回结构图 大连理工大学电信学院陈育斌 b 读锁存器 端口作输出时的一种操作在这种情况下 读入的数据不是来自引脚 而是端口内部的锁存器的内容 P0 X 单片机的引脚设计为输出时 返回结构图 大连理工大学电信学院陈育斌 当端口输出时 MOVP0 A 往往要再将前面输入的状态取回来 进行再处理然后重新输出 如 ORLP0 A将P0口前次输出的数据与累加器A的内容相 或 后在送回P0口 输出 此时P0口的数据是从锁存器中读回的 而不是从引脚输入 上述的过程也称之谓 读 修改 写 操作 为什么端口作输出时还要读入操作 大连理工大学电信学院陈育斌 凡是这种 读 修改 写 操作 读到的数据都是锁存器的数据而不是读引脚数据 这种 读 修改 写 的操作有 ORL XRL JBC CPL INC DEC DJNZ MOVPx y CLRPx y和SETPx y 而真正读引脚的指令只有MOVA P0 大连理工大学电信学院陈育斌 为什么要读锁存器而不去读引脚 为什么 读 修改 写 操作不是从引脚回取信号 因为 引脚信号与外部设备连接 易受外界干扰 引脚上的电平往往不能正确反映前次的输出结果 负载 Vcc 大连理工大学电信学院陈育斌 举例 在当前状态下 将P0 2的电平变 1 其余位不变 MOVA 00000100BORLP0 A这里 ORL指令就是先将P0口的锁存器数据取出 与A相或 结果送回P0口 思考 直接使用 MOVA 00000100BMOVP0 A是否可以 P0 0P0 1P0 2P0 3P0 4P0 5P0 6P0 7 大连理工大学电信学院陈育斌 2 P0口的总线方式 控制电路的 控制 1 此时与门打开 MUX接向 地址 数据 信号 在这种情况下 输出极的两个FET都处于正常的工作状态 地址 数据信息通过 地址 数据 线经反相器送至FET的输入 并输出 由于上部FET管不再被 控制 信号关闭 所以此时口线可以输出高电平 即不用外加上拉电阻 返回结构图 大连理工大学电信学院陈育斌 只要CPU执行MOVX MOVC 外ROM 指令 P0 P2口就自动变为数据 地址总线 在进行硬件系统的设计中 如果使用了外部存储器时 P0口成为整个系统的地址 数据复用总线 换句话 P0口不能再作为通用的I O端口 大连理工大学电信学院陈育斌 做通用数据I O端口并与MOS器件连接时 必须外接 上拉电阻 否则不能正确的输出高电平 在输入操作前 必须先向端口 写1 读引脚 与 读锁存器 是不同的两个数据通道 在总线方式时 P0口不能再做通用的I O端口 它分时输出地址 数据总线的信息 此时引脚不用外接上拉电阻 返回 返回结构图 P0口特点小结 大连理工大学电信学院陈育斌 特点 单纯的通用I O端口 负载能力为3个TTL输入 与P0口的区别在于内部具有上拉电阻 所以输出时不用外接上拉电阻 3 1 2P1口的位结构图 DQ锁存器CL Q P1 x引脚 Vcc 读锁存器 读引脚 内部总线 写锁存器 内部上拉电阻 返回 返回前一次 大连理工大学电信学院陈育斌 3 1 3P2口特点 通用数据I O端口 和 高八位地址总线 端口 DQ锁存器CL Q P2 x引脚 Vcc 地址 数据1 0 控制 读锁存器 读引脚 内部总线 写锁存器 MUX 地址 数据 0 内部上拉电阻 返回上一次 大连理工大学电信学院陈育斌 注意 使用外数据存储器时 P2口分两种情况 1 使用256B的外部RAM时 此时用8位的寄存器R0或R1作间址寄存器 这时P2口无用 所以在这种情况下 P2口仍然可以做通用I O端口 如 movxa r0或movxa r12 如果访问外部ROM或使用大于256BRAM时 P2口必须作为外存储器的高八位地址总线 如 movxa dptr 访问外部数据存储器movca a dptr 访问外部程序存储器这里使用了16位的寄存器DPTR 上一页 返回 大连理工大学电信学院陈育斌 3 1 4P3口特点 通用I O端口 多用途端口 DQ锁存器CL Q P3 x引脚 第二输出功能 读锁存器 读引脚 内部总线 写锁存器 Vcc 返回 第二输入功能 大连理工大学电信学院陈育斌 在多用途情况下 P3口分别作为串行口 外中断输入 外部计数输入和系统扩展时使用的WR和RD信号的端口 在这种情况下 锁存器Q端为 1 电平以保证与门是打开的 在通用I O模式下 替代输出功能 端为 1 电平 以保证与门打开 原则上在进行系统设计时 P3口不做通用I O口 以充分利用单片机的内部模块资源 大连理工大学电信学院陈育斌 P3口各位的第二功能 大连理工大学电信学院陈育斌 3 1 5并行端口使用中应注意的问题 如何使用并行端口来直接驱动电流比较大的负载 如 LED 是采用 拉电流 还是 灌电流 Px y Vdd Px y Vdd Vdd 灌电流方式输出 0 点亮LED 拉电流方式输出高电平点亮LED 返回 大连理工大学电信学院陈育斌 使用灌电流的方式与电流较大的负载直接连接时 MCS 51的端口可以吸收约20mA的电流而保证端口电平不高于0 45V 见右上图 但驱动逻辑并不符合人们的日常习惯 采用拉电流方式连接负载时 MCS 51所能提供 拉电流 仅仅为80 A 否则输出的高电平会急剧下降 如果我们采用右下图的方式 向端口输出一个高电平去点亮LED 会发现端口输出的电平不是 1 而是 0 注意 现在已出现如PIC等单片机可以提供较大的 拉电流 具体问题灵活掌握 大连理工大学电信学院陈育斌 3 1 6单片机与大电流负载的接口 为了提高系统的可靠性和安全性 在一般设计中并行端口不是直接与负载连接 往往使用驱动电路 如74LS244等 做缓冲 驱动 可以采用通向驱动也可以采用反向驱动 Px y Vcc Px y Vcc 同相驱动 反相驱动 大连理工大学电信学院陈育斌 为了保证单片机系统的安全 减少外部电路对系统的干扰 采用管电隔离是一种有效的方法 J Vcc Vdd Px y A B 更安全的驱动方式 光电隔离 注意 Vcc与Vdd是两套独立的电源系统 大连理工大学电信学院陈育斌 作业 二 单片机时序中的时钟周期由什么因素确定 指令执行的快 慢与什么有关 单字节的指令一定就比双字节指令快吗 举例在执行MOVX MOVC 片外 指令时 外部存储器如何获得地址 数据信息 MOVXA R0与MOVXA DPTR在端口使用上有何区别 大连理工大学电信学院陈育斌 端口如果做输入口时 要注意什么 P0口做输出时 要注意什么 MCS 51的端口可以采用 拉电流 的方式输出较大的电流吗 写出P0 P1 P2和P3口在SFR中的地址 返回本节 返回本章目录 大连理工大学电信学院陈育斌 3 2MCS 51单片机的定时 计数器 本节内容 了解定时 计数器的作用 定时和计数两种方式的区别 定时 计数器的结构与工作原理 利用相关寄存器对定时计数器初始化及编程 大连理工大学电信学院陈育斌 定时 计数是计算机经常要处理的操作 如 利用单片机产生某一频率的方波 定时 利用单片机作工业生产线上的产品数量统计 电机转速的测量 计数 等 大连理工大学电信学院陈育斌 以定时为例 通常有两种方法实现 软件延时法 利用指令 延时子程序 运行所消耗的时间实现所需的定时时间 特点 由CPU控制 占用CPU的资源 硬件法 利用一个硬件电路实现所需的时间定时 一旦时间到边产生一个标志信号通知CPU 特点 由CPU控制定时的启动 但定时过程由专用模块实现 CPU不参与其过程 所以提高了CPU的工作效率 大连理工大学电信学院陈育斌 定时 计数器就是专用于产生延时和计数的外围模块 是单片机内部重要的铸成部分 定时计数器还可以构成 输入捕捉 输出比较 和 脉宽调制 简称CCP模块 这是新一代单片机内部结构的一个标志 使单片机的应用更加灵活和方便 不难看出 作为一个嵌入式控制器 其内部所包含的定时 计数器的数量已经成为衡量其功能的重要指标 大连理工大学电信学院陈育斌 本章目录 3 2 0定时 计数器工作方式与原理 3 2 1定时 计数器的四种工作模式3 2 2MCS 51定时 计数器的控制和状态寄存器3 2 3定时计数器的初值TC计算3 2 4 定时 计数器应用 继续 大连理工大学电信学院陈育斌 定时 计数器工作方式与原理 产生延时的硬件逻辑电路 它可以完成两种不同的方式工作 定时 计数 使用硬件电路延时 可以提高CPU的工作效率 大连理工大学电信学院陈育斌 定时 产生一个标准的时间间隔 如20mS 100mS或1000mS等 单片机使用这种方式可以产生一个符合某一要求的脉冲方波 如下图 20mS 40mS MCS 51Px y 输出波形 大连理工大学电信学院陈育斌 计数 对外部的事件 脉冲 进行统计 外部事件的发生是随机的 单片机不可能预知外部事件何时发生 但可以进行统计 计数 当达到所要求的计数值时 单片机进行相应的操作 MCS 51T0 T1 端口 外部脉冲 外部设备 大连理工大学电信学院陈育斌 单片机检测产品数量示意图 P0口MCS 51T0 红外线扫描发射器 红外线接收电路 产品包装控制器 产品生产线 产品 传送带 大连理工大学电信学院陈育斌 定时 计数器的基本模型 CY 计数脉冲CP 溢出标志 8位的加一计数器 定时 计数器的核心部件是一个计数器 两种工作方式的区别在于计数脉冲来源 大连理工大学电信学院陈育斌 3 MCS 51单片机定时 计数器的工作原理 N位增量计数器 TF N位初值寄存器 系统内部时钟fosc 启动控制TR 外部脉冲T0或T1引脚 定时 计数控制C T 计数器溢出中断信号 计数脉冲CP C T 0 C T 1 定时 计数时间到标志 1 何时控制启动计数器 问题 2 如何控制是定时还是计数 3 如何控制定时 计数的长短 大连理工大学电信学院陈育斌 TR 定时计数器的启动控制开关 TR 1 计数器开始计数 TR 0 计数器停止计数 C T 计数器输入脉冲选择开关 决定着计数器的 定时 或 计数 的两种工作方式 C T 0 计数器接收内部时钟信号fosc 定时方式 C T 1 计数器接收引脚上的外部信号 计数方式 TF 计数器溢出标志 TF 1 定时或计数时间到 可以采用查询或中断方式处理 初值寄存器 预装用来决定计数器产生溢出周期的参数 此参数决定着定时或计数的周期 通常要预算并送入初值寄存器中 大连理工大学电信学院陈育斌 3 2 1定时 计数器的四种工作模式 在MCS 51单片机内部 具有两个完全相同的定时计数器T0 T1 它们都具有两种工作方式 定时和计数 无论是定时或计数方式 又都有具备四种工作模式 以根据实际要求达到最佳的工作状态 定时计数器的工作方式 工作模式是由SFR中的TMOD内容来决定的 因此对其方式 模式的设定是靠对TMOD的初始化编程实现的 大连理工大学电信学院陈育斌 1 模式0 13位计数器模式 TH1 TL1 震荡器 1 12 8位 低5位 TF1 中断 启动控制 T1引脚 TR1 GATE INT1 高三位弃用 C T 0 C T 1 13位加1计数器 在某一个初值的基础上加1计数 当计数器计满为全 1 再来一个计数脉冲时 就产生一个 溢出中断信号 TF1 1 由于低8位计数器中的高三位没有参与工作 故填装初值时应 避开 此三位 大连理工大学电信学院陈育斌 类同于模式0 由于两个计数器为完整的8位 故将计算好的16位初值可直接填装到TH TL中 TL1 TH1 震荡器 1 12 8位 8位 TF1 中断 启动控制 T1引脚 TR1 GATE INT1 C T 0 C T 1 2 模式1 既16位计数器模式 16位加1计数器 返回上一次 大连理工大学电信学院陈育斌 模式0 1的特点 13位和16位的计数器模式 启动后 从某一个初值的基础上进行 加一 计数 当计到 全 时再来一个计数脉冲 计数器就会产生一个 溢出 即TF 1 此时计数器本身为 全零 如果需要重复性的完成某一值的定时或计数 需要在每一次计数前不断的重新预装初值 称之为 软件重装初值 大连理工大学电信学院陈育斌 TL做计数器 TH做初值寄存器 工作前TL1 TH1分别预置相同的初值 TL1计数时 产生溢出的同时 将TH1中的初值自动重装TL1 TL1继续计数 TL1 8位 TH1 8位 震荡器 1 12 TF1 中断 控制 T1引脚 TR1 GATE INT1 C T 1 C T 0 3 模式2 8位自动重装初值模式 8位加1计数器 8位初值寄存器 大连理工大学电信学院陈育斌 模式2的特点及应用 8位计数器的模式 定时或计数的范围远远小于模式0和模式1 具备初值 硬件自动重装 功能 非常适合进行重复性定时的场合 如产生连续方波信号等 编成中省去了软件重装初值的麻烦 在MCS 51单片机中 T1设定成此模式用于做串行口波特率发生器 大连理工大学电信学院陈育斌 将T0和T1重新进行 拆分 组合 将T0变为由TH0 TL0组成的两个独立的8位定时 计数器 TL0 震荡器 1 12 TF0 中断 控制 T0引脚 TR0 GATE INT0 C T 0 C T 1 TH0 TF1 中断 控制 TR1 Fosc 12 4 模式3组合扩展模式 仅适用于T0 大连理工大学电信学院陈育斌 注意 TH0 TL0及T1的各自特点 1 TH0计数脉冲来自内部fosc 所以它只能处于 定时 方式 2 TH0分别借用了定时器T1的TR1和TF1为自己服务 使TH0能象TL0那样用TR1启动定时 并用TF1来作为TH0的溢出中断的标志 3 此时 由于T1缺少了启动控制信号TR1和溢出标志TR1 那么在模式3时 T1是如何启动和工作 4 模式3就是将单片机原有的T0 T1两个计数器变成三个独立的计数器 其中T1要事先设定为模式2 串行口的波特率发生器 并启动起来 返回结构图 大连理工大学电信学院陈育斌 在模式3时T0 T1的电路结构图 TL0八位定时 计数器 TH0八位定时器 TL1 TF0 TF1 将T0分解为两个计数器TL0 8位定时 计数器 TH0 8位定时器 借用TR1和TF1 T1 模式2 做波特率发生器 此种方式不用反复启动和查询标志 返回结构图 TH1 大连理工大学电信学院陈育斌 GATE信号的作用 GATE 0时 当TR1 1时 启动定时 计数工作 一种定时计数器通常的工作方式 GATE 1且TR 1时 INT1 1时 开始工作 INT 0时 计数器停止计数 此方式用于测量INT1脚上输入的正脉冲的脉宽 TR0 1 GATE 1 INT0 0 1 1 0 0 启动计数器 大连理工大学电信学院陈育斌 定时 计数器4种模式比较 计数方式 大连理工大学电信学院陈育斌 定时 计数器4种模式比较 定时方式 T M TC t其中 T 定时时间 M 计数器的模 TC 计数初值 t 计数器计数脉冲的周期 t fosc 12 大连理工大学电信学院陈育斌 3 2 2定时 计数器的控制和状态寄存器 GATE选通门 GATE 0时 只要TR 1 计数器就开始工作 GATE 1时 只有INT TR 1 时 计数器工作 用来测量INT脚高电平脉冲的宽度 C T计数 定时方式选择位 C T 1时 计数方式 C T 0时 定时方式 M1 M0模式选择 确定四种工作模式 定时 计数器1 定时 计数器0 1 模式控制寄存器TMOD SFR的地址 89H 结构图 大连理工大学电信学院陈育斌 TF0定时器T0的溢出标志 计数器溢出时硬件自动置位 即TR 1 进入中断后再由硬件自动清除 TF0 0 TR0计数器T0的控制位 由软件设定 TR0 1计数器开始工作 TR0 0计数器停止计数 TF1 TR1同上 2 控制寄存器TCON SFR地址 88H 返回前一次 大连理工大学电信学院陈育斌 IE1 IE0外部中断INT1 INT0的请求标志 当单片机检测到INT引脚上有下降沿时 IE 1申请中断 进入中断服务程序时 硬件自动清除IE标志 IT1 IT0外中断触发类型控制 IT 1时 外中断信号的下降沿触发IE标志 IT 0时 外中断信号的低电平触发IE标志 控制寄存器TCON SFR地址 88H 返回前一次 大连理工大学电信学院陈育斌 3 2 3定时计数器初值TC的计算 计数器TH TL中的初值TC决定着计数器溢出的时间 根据具体的实际应用的需要 计算出对应的TC值是对定时 计数器初始化的重要步骤 初值TC的大小与系统的工作频率fosc和定时计数器的工作模式有关 大连理工大学电信学院陈育斌 一 计数器工作方式下的TC计算 TC M C其中 M 计数器的模模式0 M 213 8192模式1 M 216 65536模式3 M 28 256C 要求的计数值 大连理工大学电信学院陈育斌 二 定时工作方式下的TC计算 TC M T T计数其中 M 计数器的模模式0 M 213 8192模式1 M 216 65536模式3 M 28 256T计数 计数器计数脉冲周期 1 fosc 12T 要求的定时时间值 大连理工大学电信学院陈育斌 TC计算举例 一 计数方式 要求每计100个脉冲定时器产生一次溢出 解1 选择模式2 TC 256 100 156 9CHMOVTH0 9CHMOVTL0 9CH 解2 选择模式1 TC 65536 100 65436 FF9CHMOVTH0 0FFHMOVTL0 9CH 思考题 若选用模式0 TC 如何编写指令 大连理工大学电信学院陈育斌 TC计算举例 二 定时方式 要求T0产生50mS的定式 解1 选择模式1 TC M T T计数TC 65536 50mS 1000 1 S 65536 50000 15536 3CB0HMOVTH0 3CHMOVTL0 0B0H 思考题 为什么选择模式1 大连理工大学电信学院陈育斌 3 2 4 定时 计数器应用 学习定时 计数器的编程方法 首先 根据实际应用 确定 工作方式的选择 定时或计数 工作模式的确定 取决于定时或计数的范围 计算初值并装载TH TL寄存器中 启动定时器开始工作 上述操作主要体现在对TMOD TCON的初始化 大连理工大学电信学院陈育斌 一 定时器方式1应用举例 利用单片机的P1 0产生一个频率为50HZ的对称方波 解 使用T0 确定工作方式 工作模式和定时初值 1 选择定时方式 C T 0 2 选择模式1 M2 M1 01 3 计算初值TC TC 65536 5ms 1us 60536 EC78H即TH 0ECH TL 78H 4 试编程 10ms 5ms 5ms 大连理工大学电信学院陈育斌 用单片机设计一个方波发生器示意图 MCS 51P1 0 TMOD00000001 TCON 大连理工大学电信学院陈育斌 ORG1000HSTRAT MOVTMOD 01H 设定时器为定时 模式1SETBTR0 启动定时器T0LOOP MOVTH0 0ECH 设定时初值MOVTL0 78HJNBTF0 定时时间到 CLRTF0 清T0标志CPLP1 0 P1 0取反SJMPLOOP 循环继续END 程序清单 查询法 返回本节目录 大连理工大学电信学院陈育斌 程序流程图 查寻法 设定T0的模式 启动T0 设定定时初值 TF0 1 清标志 CPLP1 0 N Y 大连理工大学电信学院陈育斌 思考题 若采用模式0如何编程 模式0时 13位模式 TC 8192 5ms 1us 3193 0C78H 0000110001111000B 0110001111000B 高8位TH0低5位TL0 MOVTH0 60HMOVTL0 18H 注意 低8位中的高三位用0来填充 即00011000 大连理工大学电信学院陈育斌 二 定时器方式1应用举例 利用P1 0口线输出周期为2S的方波 解 如何产生1S 1000ms 的定时 1000ms的定时由50ms累计20次 1 选择T0且设定为定时方式 模式1 2 TC 65535 50ms 1us 3CB0H3 TMOD控制字为 00000001B 01H4 T0采用中断方式 既每50ms产生一次中断 中断20次便是1S 软件重装初值 R0 0 N Y CPLP1 0 2S 1S 1S P1 0 20 R0 R0 1 R0 RETI BRT0 中断服务程序 大连理工大学电信学院陈育斌 ORG0000HLJMPSTARTORG1000HSTART MOVTMOD 01H 设T0为定时方式 模式1MOVTH0 3CH 50mS定时初值MOVTL0 0B0HSETBTR0 启动定时器T0MOVR0 14H 计数器R0赋初值20LOOP JNBTF0 等待50mS定时BRT0 DJNZR0 NEXT 定时到计数器R0减一 R0 0Z转NEXTCPLP1 0 P1 0输出取反MOVR0 14H 计数器R0重赋初值20NEXT MOVTH0 3CH 软件重装初值MOVTL0 0B0HSJMPLOOP 返回LOOP继续END TMOD寄存器 查询方式编程 大连理工大学电信学院陈育斌 三 定时器门控位GATE的应用 如果GATE 1 TR 1时电路是否计数取决于 INT0 INTE0 1时开始计数 INTE0 0 电路停止计数 利用这一特点 可以实现测量外部脉冲的宽度 计数器 震荡器 1 12 TF0 中断 计数控制 T0引脚 TR0 GATE INT0 C T 0 C T 1 MCS 51INT0 大连理工大学电信学院陈育斌 解题步骤 将外部脉冲接到P3 2 INT0 上 使用T0且C T 0 且令GATE 1 计数器TH0 TL0原始初值为00H 且设为模式1 16位 在 INT0 0时启动T0计数器 TR0 1 当 INT0 1时 定时器T0自动开始计数 当 INT0 0时计数自动停止计数 此时TH0 TL0中的计数值就是与脉冲宽度相对应得数据 MCS 51INT0 SETBTR0T0开始计数计数停止 TR0 1 INT0 1 INT0 0 准备阶段计数阶段完成计数 外部脉冲 大连理工大学电信学院陈育斌 MOVTMOD 09H 设定T0为模式1且GATE0 1MOVTH0 00HMOVTL0 00H 计数器原始清零MOVR0 20H 设置数据区指针并原始赋初值JBINT0 等待P3 2引脚上的脉冲变低 寻找准备阶段SETBTR0 INT0变低后 TR0置一 但不计数 JNBINT0 若INT0低电平则等待 准备计数阶段JBINT0 若INT0高电平则等待 硬件开始计数 CLRTR0 INT0变低后 关闭T0 停止计数 MOV R0 TH0INCR0MOV R0 TL0 保存计数器T0的计数值 MCS 51INT0 SETBTR0T0开始计数计数停止 TR0 1 INT0 1 INT0 0 准备阶段计数阶段完成计数 外部脉冲 大连理工大学电信学院陈育斌 程序流程图 设定T1模式模式1 GATE 1 TH1 TL1原始清零 数据指针R0赋初值 INT1 0 SETBTR1 INT1 0 INT1 1 CLRTR1 取TH TL值 N N N 等待低电平 Y 准备计数 等待高电平 高电平是自动计数并等待低 Y Y 低电平时完成计数 返回本节目录 设fosc 12MH 则脉宽T THL TL0 1 大连理工大学电信学院陈育斌 3 3MCS 51单片机的串行接口 本节内容 串行通讯的基本概念 MCS 51单片机串行接口的工作模式 串行接口应用及编程 大连理工大学电信学院陈育斌 本节目录 3 3 0单片机系统中的串行接口及特点 3 3 1数据缓冲寄存器SBUF 3 3 2串行口控制寄存器SCON 3 3 3串行口的模式0 3 3 4串行口模式1 3 3 5串行口模式2 3 3 3 6波特率及定时器T1的设定 返回上一页 继续 大连理工大学电信学院陈育斌 单片机系统中的串行接口及特点 串行接口有两种工作方式 异步通信方式 两台微处理器之间或远距离低成本数据传输的有效方法 同步方式 在嵌入式系统硬件设计中 采用同步串行接口实现系统内部单片机与外围模块之间新的接口形式而越来越多的被采用 大连理工大学电信学院陈育斌 当前嵌入式系统流行的串行接口 异步串行UART 同步串行USRT总线接口 SPI Microwire 总线接口 MOTOROAL NS I2C总线接口 PHILIPS 1 Wire总线接口 Dallas CAN总线接口 Bosch USB总线接口 Compaq等 从机 从机 从机 从机 主机 大连理工大学电信学院陈育斌 串行通信的基本概念 一 串行通信的两种基本方式 二 串行通讯的工作制式 三 串行通信的传输速率 四 串行通信的电平标准 五 MCS 51单片机的串行接口 大连理工大学电信学院陈育斌 一 串行通信的两种基本方式 异步通信传送方式 在物理结构上 异步通信的双方只有数据线而没有时钟传输线 A B双方都以自己的时钟源控制着发送的速率或对接收进行采样 由于通讯双方系统时钟往往不同 所以在异步通信中 要想保证通信的成功必须保证两点 通信双方必须保持相同的传送 接收速率 波特率 双方必须遵守相同的数据格式 字符帧 大连理工大学电信学院陈育斌 将要传送的数据由一个0点平的 起始位 引导 中间为8位 或9位 的数据位 后面有一个高电平的 停止位 数据帧格式 异步通信的字符帧格式由于添加了 起始位 和 停止位 占用了传输时间 降低了传输效率 因此仅适用于远距离的数据通信 起始位 停止位 0 1 MCS 51单片机的一个字符帧的格式 大连理工大学电信学院陈育斌 同步传送模式 在物理结构上 通信双方除了通信的数据线外还增加了一个通信用的 时钟传输线clock 由主控方提供时钟信号clock 由于有了时钟信号来 同步 发送或接收操作 所以被传送的数据不再使用 起始位 和 停止位 因而提高了传送速度 因此同步通信常被用于系统内部各芯片之间的接口设计 由于同步通信多了一条 时钟线 因此不太适合远距离的通信 大连理工大学电信学院陈育斌 同步发送 接收示意图 主控方 被控方 data clock 主控方 被控方 data clock 主控方发送数据主控方接收数据 大连理工大学电信学院陈育斌 二 串行通讯的工作制式 按照串行通讯中数据传送的方向与工作模式 可将其划分为三种工作制式 单工模式 simplex 半双工模式 halfduplex 全双工模式 fullduplex 大连理工大学电信学院陈育斌 串行通讯的工作制式 一 单工模式 simplex 通讯的A方只能送 而B方只能接收 广播式 例如 除了用于远程通信外 系统内部单片机以串行方式接收外围芯片 ADC 的数据 或者控制外围芯片 DAC LCD等 工作 发送方A 接收方B TXD RXD 大连理工大学电信学院陈育斌 串行通讯的工作制式 二 半双工模式 halfduplex 在某一时刻A方只能发送 B方只能接收 而在另一时刻B方只能发送 A方只能接收 对讲机模式 例如 除了用于远程通信外 系统内部单片机与串行接口的RAM E2PROM之间的数据交换 发送方A 接收方B TXD RXD TXD RXD 大连理工大学电信学院陈育斌 串行通讯的工作制式 三 全双工模式 fullduplex A B双方可以同时发送和接收数据 手机模式 例如 两台单片机系统之间的数据串行交换 发送方A 接收方B TXD RXD TXD RXD 大连理工大学电信学院陈育斌 三 串行通信的传输速率 用于表征串行通信速率的参数称为 波特率 波特率的单位为 位 秒 bit s 波特率取值范围一般为 0 9600bit s 影响波特率的主要因素取决于传输线的分布电容 通信电平标准和传送距离 大连理工大学电信学院陈育斌 四 串行通信的电平标准 为了增加串行通信的距离 可以采用RS 232 RS 485的通信标准 其中 TTL电平 0 5V 10英尺以内 RS 232标准 12V 12V 50英尺 RS 485标准 差分输入输出 1000英尺以上 大连理工大学电信学院陈育斌 五 MCS 51单片机的串行接口 具有一个 全双工 的通讯能力串行接口 其中 P3 0端口作RXD 异步接收端 P3 1端口作TXD 异步发送端 包含 同步通信 和 异步通信 两种工作方式的四种工作模式 在 异步方式 中由T1做波特率发生器 与串行口相关的SFR有 SBUF 接收SBUF和发送SBUF SCON串口控制寄存器 设定四种模式 大连理工大学电信学院陈育斌 MCS 51单片机的异步串行通讯应用示意图 MCS 51TXD 甲 RXD RXDMCS 51TXD 乙 TXDRXD RXDTXD RS 232或485 RS 232或485 TXDRXD RS 232 PC机COM1 COM2 单片机甲 乙之间近距离的直接通讯 单片机甲乙两地之间远距离通讯 单片机与PC机之间的数据通讯 返回前一次 大连理工大学电信学院陈育斌 3 3 1数据缓冲寄存器SBUF 在MCS 51的串行口电路中 SBUF是用来存放发送和接收数据的两个独立的缓冲寄存器 在SFR的地址都是99H CPU执行写SBUF指令便开始引发串口的发送 MOVSBUF A当串口接收缓冲器接收到一帧数据时 可以执行下面指令进行读取 MOVA SBUF由于发送SBUF与接收SBUF是两个独立的缓冲器 所以51串行口是一个可以同时发送与接收的 全双工 接口 大连理工大学电信学院陈育斌 接收SBUF移位寄存器 发送SBUF移位寄存器 内部总线 CPU MCS 51 RXDP3 0 TXDP3 1 SBUF实际上是一个能够独立完成数据接收和数据发送操作的复杂的硬件电路 CPU只要将数据送到发送SBUF MOVSBUF A 后 SBUF便一位一位的发送数据 发送完成后标志TI 1 当外部串行数据经RXD送入SBUF时 电路便自动启动接收 直至完成一帧数据后标志RI 1 大连理工大学电信学院陈育斌 3 3 2串行口控制寄存器SCON 用于设定串行接口工作模式 表征串口的工作状态的特殊功能寄存器 在SFR中的地址为98H 这是一个可以按位寻址的SFR 在使用中可直接使用位操作指令 给编程带来方便 大连理工大学电信学院陈育斌 SCON寄存器示意图 返回前一次 D7D6D5D4D3D2D1D0 大连理工大学电信学院陈育斌 SCON寄存器各位定义 D7 D6位 SM0SM1模式选择位 SCON寄存器 大连理工大学电信学院陈育斌 D1 D0 TI RI发送 接收完成标志TI 完成一帧数据发送标志 原始应软件清零 发送完成TI 1同时申请中断 如果中断开放 则引发中断 RI 完成一帧数据接收标志 原始应软件清零 接收完成RI 1并申请中断 如果中断开放 则引发中断 SCON寄存器 大连理工大学电信学院陈育斌 D3 D2 TB8 RB8发送 接收的第9位数据TB8 在9位数据传送的模式2 3时 将要发送的第9位数据 在执行MOVSBUF A指令之前要事先将TB8设定好 RB8 在9位数据传送的模式2 3时 接收到的第9位数据 SCON寄存器 大连理工大学电信学院陈育斌 D4 REN允许接收控制位 REN 允许接收位 REN 1时允许接收 由软件置位或清零 SCON寄存器 D7D6D5D4D3D2D1D0 大连理工大学电信学院陈育斌 D5 SM2多机通信使能位 用于接收方串口控制 模式0 1时 SM2不用 模式2 3时 有两种设定方法 若SM2 0 无论RB8如何 RI都能被激活 但RI不能引发中断 CPU可通过查询RI的方式接收数据 若SM2 1 若接收到的第9位 RB8 0时 RI不会被激活 若RB8 1时 RI不仅能被激活 并可引发中断 这种特性得出一个特殊的结果 如果接收方将其SM2 1 则能否接收到对方发送的数据不取决于自己 而是由发送方的TB8来决定的 SM2 1的设定用于多机通信的场合 SCON寄存器 大连理工大学电信学院陈育斌 使用RI TI标志完成数据的发送与接收 SBUF是独立于CPU 不论是数据的发送还是接收都由SBUF独立完成 SBUF的传送速度远远低于CPU执行指令的速度 每次发送后CPU必须等待SBUF 协调CPU与SBUF的速度只能靠标志信号 即 发送操作后 查询TI 1 来决定是否可以发送下一个数据 接收操作时 查询RI 1 判断是否接收到数据 大连理工大学电信学院陈育斌 利用接收标志RI控制数据的接收操作 RI SCON 0 接收完成标志 当SUBF从RXD引脚接收完一个完整的数据帧时RI 1 CPU可以使用两种方式来处理接收的数据 CPU采用查询RI来控制数据的读取 JNBRI 如果RI 1则等待MOVA SBUF RI 1时 取SBUF中数据送A 如果中断是开放的 则RI 1时会自动引发中断 用户可以通过中断服务程序将SBUF中的数据取出送累加器A MOVA SBUF 中断方式接收数据 大连理工大学电信学院陈育斌 TI SCON 1 发送完成标志 当CPU执行 MOVSBUF A指令后 便引发一次串行通讯的过程 SBUF开始通过TXD向外按位发送数据 当完成一帧数据的发送后 TI 1 使用查询的方式对TI进行检测 JNBTI 如果TI 1则等待MOVSBUF A TI 1时发送下一个数据如果系统中断是开放的 则TI 1会自动引发中断 用户可以通过中断服务程序向SBUF输送下一个数据 MOVSBUF A 在中断程序中发送下一个数据 大连理工大学电信学院陈育斌 使用查询RI TI标志的方式进行发送与接收N个数据 CLRSCON TI 数据送累加器A movsbuf a TI 1 N个数据发送完 YES NO YES NO 发送数据的程序框图 SETBSCON REN mova sbuf RI 1 N个数据接收完 YES NO YES NO CLRSCON RI A送数据区 返回本节目录一 接收数据程序框图 大连理工大学电信学院陈育斌 3 3 3串行口的模式0 特点 同步移位寄存器模式 B fosc 12 在这种模式下RXD P3 0 做数据口 TXD P3 1 做移位脉冲输出端 在移位过程中 先移数据的低位D0 注意 移位脉冲的频率就是模式0的波特率 主要功能 使用串行口扩展并行口 可以扩展N 8位的并行口 MCS 51RXDTXD Data外部移位寄存器cp 移位脉冲 串行数据 并行的数据 8位 大连理工大学电信学院陈育斌 利用串行模式0构成的2位LED数码管驱动电路 MCS 51P3 0P3 1P1 0 QAQHA B74LS164 CLRCLK QAQHA B74LS164 CLRCLK RXD TXD 共阳极LED数码管 gfedcba 共阳极LED数码管 gfedcba 5V 大连理工大学电信学院陈育斌 模式0电路框图 51内部总线 SBUF 零检测器 移位时钟 STARTSHIFT发送控制器TXCLOCKTISEND DSQCP STARTRIRECEIVERX接收控制器SHIFTCLOCK11111110 输入移位寄存器 SBUF 51内部总线 读SBUF 写SBUF S6 串行口中断 P3 0RXD P3 1TXD 装载SBUF REN RI 返回前一次 P3 0RXD MOVSBUF A 1 S6P2 大连理工大学电信学院陈育斌 串行口模式0的时序信号 发送 写SBUF SEND D1 D0 D2 D3 D4 D5 D6 D7 RXD端数据 SHIFT TXD端同步脉冲 TI中断标志 movsbuf a指令送发送到结束的10个机器周期 返回电路图 大连理工大学电信学院陈育斌 模式0的工作原理 发送 单片机执行movsbuf a指令的S6P2时 出现 写sbuf 信号 1 打开总线三态门使累加器中的数据送到SBUF中 2 使D型触发器置一 触发器的输出构成了SBUF的第9位 3 启动 发送控制器 开始发送 在 写SBUF信号 有效相隔一个机器周期后 发送控制器 的SEND 1使RXD TXD端的与门打开 使数据和移位脉冲输出 在TXD端 每一个机器周期中发出一个同步脉冲 同时在SEND 1期间 每一个S6P2时控制器发出一个SHIFT移位信号将SBUF中的数据右移一次 同时D型触发器清零 这样 每当SBUF中的数据右移 发送 一位时 SBUF的左端便移入1个 0 返回电路图 大连理工大学电信学院陈育斌 当SBIUF中的数据右移7次后 检零器的7个输入端全为 0 向控制器发出一个信号 通知控制器作最后一次移位 然后控制器的SEND 0停止发送数据和同步信号 TI被置位 返回电路图 大连理工大学电信学院陈育斌 模式0的工作原理 接收 在满足REN 1且RI 0的条件下 实际上是一条写SCON指令 就会引发一次接收过程 在下一个机器周期的S6P2时刻 接收控制器将11111110写入移位寄存器 在下一个周期的S1P1使RECEIVE 1从而使TXD端的与门打开 同发送的过程类似 在后面的每一个机器周期从TXD端发出同步移位脉冲 在每一个S5P2时刻对RXD线进行采样 在S6P2时刻 控制器对寄存器进行移位 每左移一次右端就补进一位由RXD端输入的数据 当从RXD端输入7位数据时 开始最右端的 0 被移到寄存器的最左端 寄存器向控制器发信号 通知控制器做最后一次接收 并将完整的8位数据装入SBUF中 最后清RECEIVE SCON中的RI置位 向CPU发中断申请 返回电路图 大连理工大学电信学院陈育斌 模式0的时序信号 接收 写SCON RI 0 RECEIVE SHIFT RI 对RXD采样 TXD同步脉冲 RI中断标志 返回电路图 大连理工大学电信学院陈育斌 3 3 4串行口模式1 特点 10位异步传输 1个起始位 8个数据位 1个停止位 波特率B可变 由定时器T1的溢出率来确定 发送操作 在TI 0 执行movsbuf a指令后从TXD端开始发送数据 当发送完8位数据后自动的添加一个高电平的停止位 并将TI置位 起始位 停止位 0 1 从TXD P3 1 端发出的一个字符帧的格式 TI TXD 大连理工大学电信学院陈育斌 接收操作 在REN 1且RI 0的条件下进行 串行口的接收控制器对RXD线进行采样 其采样频率是接收时钟的16倍 当连续8次采集到RXD线上为低电平时 检测电路便认定RXD线上有了 起始位 在此后 便开始在每次第7 8 9三个脉冲时进行RXD采样 采取 三中取二 的原则来确定接收的数据 如图所示 当接收到停止位时 必须满足 RI 0且SM2 0 才能把接收的数据送到SBUF中 停止位送SCON的RB8中 并

温馨提示

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

最新文档

评论

0/150

提交评论