




已阅读5页,还剩172页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 第1页 河南科技大学电子信息工程学院自动化系主讲 张松灿 单片机原理与应用 第四章80C51单片机的功能单元 第四章 第2页 第四章80C51单片机的功能单元 4 1并行I O接口4 1 1P1口4 1 2P3口4 1 3P2口4 1 4P0口4 2定时器 计数器4 2 1概述4 2 2定时器 计数器T0 T1 第四章 第3页 4 2 3定时器 计数器T24 2 4看门狗4 2 5定时器 计数器的编程和使用4 3串行接口4 4中断系统4 4 1中断 中断源及中断优先级4 4 2中断的控制和操作4 4 3中断的响应过程和中断矢量地址 第四章 第4页 80C51有四个8位的并行双向口 共有32根输入 输出 I O 口线 口组成 锁存器 输出驱动器和输入缓冲器 各并口在结构上有差异 故各口的性质和功能也有所不同 4 1并行I O接口 第四章 第5页 80C51并行I O接口的比较 第四章 第6页 第四章 第7页 4 1 1P1口8位口 可以字节访问 地址 90H 也可位访问 地址 90H 97H 位结构与工作过程 结构 输出锁存器 输入缓冲器BUF1 读引脚 BUF2 读锁存器 以及由FET晶体管Q0与上拉电阻组成的输出 输入驱动器 D CL Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P1 0引脚 锁存器 内部总线 A BUF2 BUF1 内部上拉电阻 作用 P1口只能作为输入口或输出口使用 第四章 第8页 返回 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P1 0 锁存器 P1口直接做输出口时 输出信息的过程 将1送到P1 0的过程 1 0 0 1 注意 P1口做输出口时 内部数据经过锁存器送到P10 P17上 由于内部有上拉电阻 所以P1口作输出口使用时 不用外接上拉电阻 内部总线 第四章 第9页 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P1 0 锁存器 P1口直接做输入口时 输入信息的过程 将P1 0处的0送入DB0 0的过程 0 0 注意 1 P1口作输入口时 P10 P17上的信号经过缓冲器送到内部数据总线上 在读引脚之前 要先将锁存器置1 否则总是读到0 2 CPU对P1口的读操作有2种 读引脚和读 改 写锁存器 当CPU执行MOVA P1或JB JNBP1 x 标号时 产生读引脚控制信号 此时读的是引脚的状态 当CPU执行读 改 写指令 以端口为目的操作数的ANL ORL XRL DEC INC SETB CLR等 时 产生读锁存信号 此时是先读锁存器的状态 在修改之后 送回锁存器保存 返回 内部总线 第四章 第10页 2 P1口的特点 输出锁存 输出时没有条件 输入缓冲 输入时有条件 即需要先将该口设为输入状态 先输出1 工作过程中无高阻悬浮状态 即 该口不是输入态就是输出态 具有这种特性的口不属于 真正 的双向口 而被称为 准 双向口 第四章 第11页 3 P1口的操作对于P1口不仅可以字节操作 也可以按位操作 字节操作指令 输出MOVP1 A P1 A MOVP1 data P1 dataMOVP1 direct P1 direct 输入MOVA P1 A P1 MOVdirect P1 direct P1 第四章 第12页 位操作指令 置位 清除SETBP1 i P1 i 1CLRP1 i P1 i 0输入 输出MOVP1 i C P1 i CYMOVC P1 i CY P1 I判跳JBP1 i rel P1 i 1 跳转JBCP1 i rel P1 i 1 跳转且P1 i 0逻辑运算ANLC P1 i CY P1 i CY ORLC P1 i CY P1 i CY 其中 P1 i中的i 0 7 第四章 第13页 4 口操作时序在执行改变端口锁存器内容的指令时 新的内容在指令执行的最后一个周期的S6P2时传送到口的锁存器内 然而口锁存器仅在任何周期的P1时才采样端口锁存器 缓冲器 在P2时输出锁存器的值并保持P1时所采样到的内容 因此 S6P2时写入端口锁存器的新数值直到下一个周期的P1时被采样到 即只有在下一个机器周期的S1P1时 才真正出现在引脚上 第四章 第14页 5 P1口的多功能线80C52中 P1 0和P1 1是多功能线 除作一般I O外 还具有下列功能 P1 0 定时器 计数器2的外部输入端T2 P1 1 定时器 计数器2的外部控制端T2EX 此时 该两位的结构与P3口的位结构相当 第四章 第15页 4 1 2P3口多功能的8位口 可以字节访问 地址 B0H 也可位访问 地址 B0H B7H 1 位结构与工作过程分析P3口的位结构如图4 2所示 P3口能驱动4个TTL负载 第四章 第16页 D CLK Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P3 0 锁存器 替代输出功能 替代输入功能 内部总线 A B C Q0 图4 2P3口的位结构 与P1口的区别 1 增加一个与非门 与非门有两个输入 一个为Q端 另一个为替代功能的控制输出 与非门的输出端控制FET管Q0 2 输出锁存器从Q端引出 3 有两个输入缓冲器 替代输入功能取自第一个缓冲器的输出端 I O口的通用输入信号取自第二个缓冲器的输出端 第四章 第17页 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P3 0 锁存器 替代输出功能 替代输入功能 P3口直接做输出口时 输出信息的过程 将1送到P3 0的过程 1 0 0 1 注意 P3口做输出口时 内部数据经过锁存器送到P30 P37上 由于内部有上拉电阻 P3口作输出口使用时 不用外接上拉电阻 内部总线 B C A 第四章 第18页 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P3 0 锁存器 替代输出功能 替代输入功能 0 P3口直接做输入口时 输入信息的过程 将P3 0处的0送入DB0 0的过程 0 注意 1 P3口作输入口时 P30 P37上的信号经过缓冲器送到内部数据总线上 在读引脚之前 要先将锁存器置1 否则总是读到0 2 CPU对P3口的读操作有2种 读引脚和读 改 写锁存器 当CPU执行MOVA P3或JB JNBP3 x 标号时 产生读引脚控制信号 此时读的是引脚的状态 当CPU执行读 改 写指令 以端口为目的操作数的ANL ORL XRL DEC INC SETB CLR等 时 产生读锁存信号 此时是先读锁存器的状态 在修改之后 送回锁存器保存 内部总线 A B C 第四章 第19页 C 内部总线 B Q0 A 上拉电阻 D CL Q Q 读引脚 读锁存器 写锁存器 DB0 0 5V P3 0 锁存器 替代输出功能 替代输入功能 作用 1 P3口可以直接作为输入口或输出口使用 2 P3口的引脚又具有第二功能 1 当使用单片机内部串行口时 若CPU执行MOVA SBUF指令 则P3 0 RXD 作为接收信号线 接收由外界串行输入的数据 若CPU执行MOVSBUF A指令 则P3 1 TXD 作为发送信号线 串行发送数据至外界 2 当单片机使用外中断时 P3 2 INT0 作为外中断0的中断请求输入线 3 3 INT1 作为外中断1的中断请求输入线 3 当单片机使用定时器 且定时器工作于计数方式时 P3 4 T0 作为定时器0的计数脉冲输入线 P3 5 T1 作为定时器1的计数脉冲输入线 4 当单片机外扩RAM或I O接口芯片时 P3 6 WR 作为RAM或I O接口芯片的写控制信号 P3 7 RD 作为RAM或I O接口芯片的读控制信号 当P3口的一些引脚没有作为第二功能使用时 这些引脚就被释放 直接作为I O口线使用 第四章 第20页 2 输出过程分析 B点置1时 锁存器输出可以顺利通到引脚P3 i 此时为准双向口 当输出锁存器输出 C点 置1 替代输出功能可以顺利通到引脚P3 i 若替代输出为0时 因C点已置1 现B点为0 故与非门输出为1 使Q0导通 从而使A点为0 若替代输出为1时 与非门输出为1 Q0截止 从而使A点为高电平 P3口处于替代输出功能状态 总之 不论是替代输出还是替代输入功能时 输出锁存器的输出置1是必需 因此 P3口不论作替代功能输入 还是作替代功能输出 甚至作一般I O的输入功能时 都需要向该口位输出1 第四章 第21页 2 P3口的功能和特点P3口 多功能口 1 可作I O口使用 为准双向口 既可以字节操作 也可以位操作 既可以8位口操作 也可以逐位定义口线为输入线或输出线 既可以读引脚 也可以读锁存器 实现 读 修改 输出 操作 第四章 第22页 2 替代功能 替代输入功能 P3 0 RXD 串行输入口 P3 2 INT0 外部中断0的请求 P3 3 INT1 外部中断1的请求 P3 4 T0 定时器 计数器0外部计数脉冲输入 P3 5 T1 定时器 计数器1外部计数脉冲输入 替代输出功能 P3 1 TXD 串行输出口 P3 6 WR 外部数据存储器写选通 输出 低有效 P3 7 RD 外部数据存储器读选通 输出 低有效 第四章 第23页 D CL Q Q DB0 0 控制线 5V P2 0 多路开关 锁存器 作用 1 外扩芯片时 P2口不再做I O口使用 而是传送高8位地址 2 没有外扩芯片时 P2口可以直接作为输入口或输出口使用 读引脚 读锁存器 写锁存器 内部总线 地址 4 1 3P2口P2口 多功能的8位口 可以字节访问也可位访问 字节访问地址 A0H 位访问地址 A0H A7H 1 位结构与工作过程分析 A Q0 B C 第四章 第24页 与P1口的区别 P2口增加一个多路开关 多路开关的输入有两个 一个是口输出锁存器的输出端Q 一个是地址寄存器 PC或DPTR 的高位输出端 多路开关的输出经反相器反相后去控制输出FETQ0 多路开关的切换由内部控制信号控制 输出锁存器的输出端是Q而不是 Q 第四章 第25页 返回 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 控制线 5V P2 0 多路开关 锁存器 P2口直接做输出口时 输出信息的过程 将0送到P2 0的过程 0 0 0 1 0 注意 P2口做输出口时 内部数据经过锁存器送到P20 P27上 由于内部有上拉电阻 所以P2口作输出口使用时 不用外接上拉电阻 A Q0 B C 地址 内部总线 第四章 第26页 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 控制线 5V P2 0 转换开关 锁存器 P2口直接做输入口时 输入信息的过程 将P2 0处的0送入DB0 0的过程 0 0 0 注意 1 P2口作输入口时 P20 P27上的信号经过缓冲器送到内部数据总线上 在读引脚之前 要先将锁存器置1 否则总是读到0 2 CPU对P2口的读操作有2种 读引脚和读 改 写锁存器 当CPU执行MOVA P2或JB JNBP2 x 标号时 产生读引脚控制信号 此时读的是引脚的状态 当CPU执行读 改 写指令 以端口为目的操作数的ANL ORL XRL DEC INC SETB CLR等 时 产生读锁存信号 此时是先读锁存器的状态 在修改之后 送回锁存器保存 返回 A Q0 B C 地址 内部总线 第四章 第27页 2 工作过程分析 多路开关投向输出锁存器的输出 C点 接通输出锁存器 P2口的工作状态是I O口状态 多路开关的输入投向地址输出 B点 多路开关将接通地址寄存器输出 同样可以知道 A点的电平将随地址输出的0 1而相应地变化 P2口的工作状态是输出高8位地址 第四章 第28页 2 P2口的功能和特点P2口是一个双功能的口 1 作I O口时 P2口为一准双向口 功能与P1口一样 2 作地址输出时 P2口可以输出程序存储器或片外数据存储器的高8位地址 与P0口输出的低地址一起构成16位地址线 从而可分别寻址64KB的程序存储器或片外数据存储器 8位地址线是一起自动输出 3 P2口能驱动4个TTL负载 第四章 第29页 3 P2口使用中注意的问题 1 由于P2口具有输出锁存功能 在取指周期或外部RAM读 写期间 输出的高8位地址是锁存的 故无需外加地址锁存器 2 如果外接程序存储器 访问片外程序存储器时需要不断进行取指操作 P2口需要不断送出高位地址 这时P2口线均不宜再作I O口使用 3 仅有片外数据存储器的系统中 P2口使用可分为两种情况 第四章 第30页 若片外RAM容量 256B 可使用 MOVXA Ri 及 MOVX Ri A 访问片外RAM 此时P2口不输出地址 P2口仍可作为I O口使用 若片外数据存储器的容量 256B 使用 MOVXA DPTR 及 MOVX DPTR A 指令访问片外数据存储器 P2口需输出高8位地址 在片外RAM容量不太大时 也可只利用P1 P3甚至P2口中的某几根口线送高位地址 从而保留P2口的全部或部分口线作I O口用 注意 这时使用的是 MOVXA Ri 及 MOVX Ri A 类访问指令 高位地址不再是自动送出的 而要通过程序设定 第四章 第31页 D CL Q Q DB0 0 地址 数据线 5V P0 0 多路开关 锁存器 作用 1 外扩芯片时 P0口不再做I O口使用 而是先传送地址 后传送数据 2 没有外扩芯片时 P0口可以直接作为输入口或输出口使用 控制 读引脚 读锁存器 写锁存器 内部总线 A Q0 4 1 4P0口多功能8位口 可以字节访问 地址为80H 也可位访问 地址为80H 87H 1 位结构与工作过程分析 1 0 第四章 第32页 与P1口有明显区别 P0口中增加一个多路开关 其输入有两个 地址 数据输出 输出锁存器的输出 其输出用于控制输出FETQ0的导通和截止 多路开关的切换由内部控制信号控制 P0口的上拉电路与P1口完全不同 P0口的上拉电路导通和截止受内部控制信号和地址 数据信号共同 相 与 来控制 第四章 第33页 2 工作过程分析 控制信号置1时 接通地址 数据输出端 当地址 数据线置1时 与 门输出为1 上拉FET导通 同时反相器输出0 控制下拉FET截止 A点电位上拉 地址 数据输出线为1 当地址 数据线置0时 与 门输出为0 上拉FET截止 同时反相器输出1 控制下拉FET导通 A点电位下拉 地址 数据输出线为0 此时的输出状态随地址 数据线而变 因此 P0口可以作为地址 数据复用总线使用 上下两个FET处于反相 构成推拉式输出电路 负载能力大大增加 此时的P0口相当一个双向口 第四章 第34页 控制信号置0时 接输出锁存器的 Q端 与门关闭 上拉FET截止 P0口为漏极开路输出 P0口作输出口 若P0 i输出1 输出锁存器的端为0 下拉FET截止 P0 i为漏极开路输出 若P0 i输出0 输出锁存器的端为1 下拉FET导通 P0 i输出低电平 P0口作输入口 必须先使P0 i锁存器置1 下拉FET也截止 P0 i处于悬浮状态 A点的电平由外设的电平而定 通过输入缓冲器读入CPU P0口相当于一个高阻抗的输入口 具体见下图说明 第四章 第35页 P0口直接做输出口时 输出信息的过程 将0送到P0 0的过程 返回 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 地址 数据线 5V P0 0 多路开关 锁存器 0 0 0 1 0 注意 P0口做输出口时 内部数据经过锁存器送到P00 P07上 由于上管始终截止 而当下管也截止时 P00 P07被架空 没有标准的高电平 所以P0口作输出口使用时 必须外接上拉电阻 控制 内部总线 A Q0 0 第四章 第36页 P0口直接做输入口时 输入信息的过程 将P0 0处的1送入DB0 0的过程 D CP Q Q 读引脚 读锁存器 写锁存器 DB0 0 地址 数据控制线 5V P0 0 转换开关 锁存器 0 0 1 注意 1 P0口作输入口时 P00 P07上的信号经过缓冲器送到内部数据总线上 在读引脚之前 要先将锁存器置1 否则总是读到0 2 CPU对P0口的读操作有2种 读引脚和读 改 写锁存器 1 当CPU执行MOVA P0或JB JNBP0 x 标号时 产生读引脚控制信号 此时读的是引脚的状态 当CPU执行读 改 写指令 以端口为目的操作数的ANL ORL XRL DEC INCSETB CLR等 时 产生读锁存信号 此时是先读锁存器的状态 在修改之后 送回锁存器保存 返回 内部总线 A Q0 0 第四章 第37页 2 P0口的功能和特点 1 作I O口使用 相当于一个真正的双向口 输出锁存 输入缓冲 输入时需先将口置1 每根口线可以独立定义为输入或输出 它具有双向口的一切特点 特点 输出为漏极开路输出 与NMOS的电路接口时要用电阻上拉 输入时为悬浮状态 为一个高阻抗的输入口 第四章 第38页 2 作地址 数据复用总线用 P0口为一个准双向口 但是没有上拉电阻 作数据输入时 口也不是悬浮状态 作地址 数据复用总线时 口不能逐位定义为输入 输出 作数据总线用 输入 输出8位数据 作地址总线用 输出低8位地址 也不能作I O口使用 3 P0口能驱动8个TTL负载 第四章 第39页 例1 例2 例1 例2 MCS 51单片机并行口应用 在没有外扩任何芯片时 单片机内部并行口可以作为输出口 直接与输出外设连接 常用的输出外设是发光二极管 可以作为输入口 直接与输入外设连接 常用的输入外设是开关 直接做输出口直接做输入口 第四章 第40页 直接做输出口 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 89C51 5V 电阻的作用是当流过发光二极管的电流过大时 它就会被烧坏 电阻可以限制流过发光二极管的电流 因此这个电阻叫作限流电阻 限流电阻阻值的计算方法如下 R 5 1 75 Id Id是流过发光二极管的电流 一般从8mA到20mA 其值越大 发光二极管越亮 但不能太大 当流过发光二极管的电流超过20mA时 容易烧坏发光二极管 例1 用89C51的P1口驱动8个发光二极管 使8个发光二极管由上向下轮流点亮 试画出连接图 编制驱动程序 解 1 画电路图 2 编程 mova 0fehup movp1 alcalldelayrlasjmpupDelay movr7 2delay11 movr6 250djnzr6 djnzr7 delay11ret 第四章 第41页 直接做输出口 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 89C51 5V 例2 用80c51的P1口驱动1个数码管 制成1位秒表 试画出连接图 编制驱动程序 解 1 画电路图 2 编程 思考 a b c d e f g Dp a b c d e f g Dp UP0 MOVR7 10MOVR2 00HMOVDPTR TABUP MOVA R2MOVCA A DPTRMOVP1 ALCALLD1SINCR2DJNZR7 UPSJMPUP0TAB DB0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 98H 第四章 第42页 例2 用8051的P1口驱动1个数码管 制成1位秒表 试画出连接图 编制驱动程序 思考 如果用P2口驱动发光二极管 公共端接P3 0 则如何修改 如果制成0 1S的表 则如何修改 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 89C51 P3 0 a b c d e f g Dp CLRP3 0UP0 MOVR7 10MOVR2 00HMOVDPTR TABUP MOVA R2MOVCA A DPTRMOVP2 ALCALLD1SINCR2DJNZR7 UPSJMPUP0TAB DB0C0H 0F9H 0A4H 0B0HDB99H 92H 82H 0F8H 80H 98H 第四章 第43页 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 89C51 5V 例1 用89C51的P1口传送8个开关状态 用P2口显示8个开关状态 若开关合则对应灯亮 试画出连接图 编制驱动程序 解 1 画电路图 MOVP1 0FFHUP MOVA P1MOVP2 ASJMPUP P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 5V 开关处的电阻称为上拉电阻 它的作用是当开关断开时 使P1口的电压上拉为准确的高电平 避免悬空状态 2 编程 强调 8051内部并行口直接作为输入口时 必须先将口锁存器置1 思考 直接做输入口 第四章 第44页 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 89C51 MOVP1 0FFHUP MOVA P1CPLAMOVP2 ASJMPUP P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 5V 思考 如果将发光二极管反接 则如何修改程序 第四章 第45页 直接做输入口 89C51 5V 例2 用8051的P1口驱动8个发光二极管 P3 4接一个开关K1 当开关按下时 8个发光二极管由左向右轮流点亮 开关断开时 8个发光二极管不亮 试画出连接图 编制驱动程序 解 1 画电路图 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 2 编程 5V P3 4 movp3 0ffhup0 mova 0fehup1 jbp3 4 up1movp1 alcalldelay1rlasjmpup1delay1 movr7 2delay11 movr6 250djnzr6 djnzr7 delay11ret 思考 第四章 第46页 基本概念1 定时的定义 定时 对周期固定 已知的脉冲计数 2 计数的定义 计数 对外界产生的周期不固定的未知脉冲计数 计数器的计数方式可以是加1计数 也可以是减1计数 3 定时 计数的实现方法 硬件数字电路 用555构成的定时器和计数器等 软件编程 可编程定时 计数器 4 2定时器 计数器 第四章 第47页 例 编制一个延时2mS的子程序 D2MS MOVR7 2D2MS0 MOVR6 250DJNZR6 DJNZR7 D2MS0RET例 统计开关按动次数 并存于30H单元 MOV30H 0UP JBP1 0 JNBP1 0 INC30HSJMPUP 软件编程 第四章 第48页 控制系统有按时间间隔来进行控制 如定时的温度检测等 可用延迟程序来实现 但会降低CPU工作效率 假如用可编程的实时时钟 实现定时或延时 则CPU不必通过等待来实现延时 可提高CPU的效率 也有控制系统是按计数的结果来进行的 因此在微机控制系统中常使用可编程的硬件定时 计数器 现在有很多定时 计数器的接口芯片 单片机内有硬件定时 计数器 可以简化系统设计 不论是独立的定时器芯片还是单片机内定时器 都有以下特点 1 有多种工作方式 可以是计数方式也可以是定时方式等等 2 计数器模值是可变的 计数的最大值也就限制了定时的最大值 3 当定时时间到或者计数终止时 发出中断申请 以便实现定时或计数控制 除了上述共同特点外 各种定时器还会有各自的特点 各自的工作方式和控制方式 第四章 第49页 4 2 1概述单片机控制系统中常常遇到定时与计数问题 定时器 计数器 timer counter 是单片机中重要部件 其工作方式灵活 编程简单 使用它可减轻CPU的负担和简化外围电路 80C51有两个16位的定时器 计数器 T0和T1 80C52有三个16位的定时器 计数器 T0 T1和T2 在80C51系列的部分产品 80C552 中 还包含有一个用做看门狗的8位定时器 T3 第四章 第50页 定时器 计数器的核心是一个加一计数器 其基本功能是加1功能 T0 T1或T2引脚上施加一个1到0的跳变 计数器增1 即是计数功能 在单片机内部对机器周期或其分频进行计数 从而得到定时 即定时功能 在单片机中 定时功能和计数功能的设定和控制都是通过软件来进行 第四章 第51页 4 2 2定时器 计数器T0 T11 MCS51单片机内有2个独立的16位的可编程定时 计数器T0和T1 它们结构相似 内部结构简图如图4 5 定时器 计数器T0 T1组成 计数器TH0 TL0和TH1 TL1 特殊功能寄存器TMOD TCON 时钟分频器 输入引脚T0 T1 INT0 INT1 第四章 第52页 图4 5定时器 计数器T0 T1的内部结构简图 第四章 第53页 振荡器 12 C T 0 C T 1 加1计数器 TF0 合 断 T0 TR0 GATE0 INT0 TCON TMOD TH0 TL0 TH1 TL1 T0的结构 第四章 第54页 2 T0 T1的特殊功能寄存器 1 方式寄存器 TMOD 地址 89H逐位定义的8位寄存器 只能字节寻址的寄存器 其格式如下 D7D6D5D4D3D2D1D0 低4位设置定时器 计数器T0 高4位设置定时器 计数器T1 第四章 第55页 GATE 门控标志 控制定时 计数器的启动 当GATE 1时 定时计数器的启动除了受TR控制外 还受INT引脚的控制 当TR 1且INT引脚上出现高电平时才能启动定时计数器 C T 用来确定T0 T1 是工作在计数方式还是工作在定时方式 C T 0为定时方式 C T 1为计数方式 M1和M0 确定T0 T1 的具体工作模式 M1 M0的四种组合确定四种工作模式 分别是方式0 方式1 方式2 方式3 第四章 第56页 第四章 第57页 2 T0 T1控制寄存器 TCON逐位定义的8位寄存器 既可字节寻址也可位寻址 字节地址为88H 位寻址的地址为88H 8FH 其格式如下 第四章 第58页 各位意义 TF1 TCON 7 T1的溢出标志 T1溢出 该位由内部硬件自动置位 若中断开放 即申请中断 CPU若响应中断 进入中断服务程序后 由硬件自动清0 该标志位也可由软件查询 可用于判跳 可用软件清0或置1 TR1 TCON 6 T1的启动控制位 用软件进行控制 置1时 启动T1 清0时 停止T1 TF0 TCON 5 T0的溢出标志 其意义与TF1相同 TR0 TCON 4 T0的启动控制位 用软件进行控制 置1时 启动T0 清0时 停止T0 第四章 第59页 IE1 TCON 3 外部中断1请求标志位 IT1 TCON 2 外部中断1触发类型选择位 IE0 TCON 1 外部中断0请求标志位 IT0 TCON 0 外部中断0触发类型选择位 TCON的低4位与中断有关 将在 中断系统 一节中详细讨论 复位后 TCON的所有位均清0 第四章 第60页 表4 4控制寄存器 TCON各位的功能 第四章 第61页 3 T0 T1的数据寄存器 TH1 TL1和TH0 TL0 51单片机内部有两个16位的定时 计数器T0和T1 每个定时 计数器占用两个特殊功能寄存器 1 T0由TH0 高 和TL0 低 两个8位计数器组成 字节地址分别是8CH和8AH 2 T1由TH1 高 和TL1 低 两个8位计数器组成 字节地址分别是8DH和8BH 用于存放定时或计数的初值 当计数器工作时 其值随计数脉冲做加1变化 复位后 四个寄存器全部清零 它们都只能字节寻址 第四章 第62页 表4 5定时器 计数器T0 T1的数据寄存器的字节地址 第四章 第63页 3 T0 T1的功能选择 1 由TMOD中的C T来选择的 C T 0 定时器 输入信号是内部时钟脉冲 每个机器周期使寄存器的值增1 每个机器周期等于12个振荡周期 故计数速率为振荡周期的1 12 当采用12MHz的晶体时 计数速率为1MHz定时时间 与系统的振荡频率有关 计数器的长度和初值有关 第四章 第64页 C T 1 计数器 对引脚T0 P3 4 和T1 P3 5 的外部输入脉冲计数 每一个脉冲的负跳变使计数值加1 由于外输入脉冲的每个高 低电平持续时间各应大于一个机器周期 因此最小的计数周期为两个机器周期 例如 若单片机晶振频率为12MHZ 则外部计数脉冲的最高频率只能为500KHZ 检测一个1到0的跳变需要两个机器周期 故最高计数频率为振荡频率的1 24 第四章 第65页 4 定时器 计数器T0 T1的工作方式T0由TL0 低8位 和TH0 高8位 组成 T1由TH和THl组成 所以T0 T1都是16位计数器 若将它们设置成不同的工作方式 其计数长度 最大值 和计数方式都可变化 定时 计数器一共有四种工作方式 由TMOD的相关位设置 第四章 第66页 1 方式0 M1 0 M0 0计数寄存器为13位 由TH0的8位和TL0的低5位组成 TL0的高3位未用 满计数值为213 T0启动后立即加1计数 TL0的低5位计数溢出时向TH0进位 TH0计数溢出则对相应的溢出标志位TF0置位 作为定时器溢出中断标志 进入中断服务程序 内部硬件自动清除该标志 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 TH0 D5 D4 D3 D2 D1 D0 TL0 计数器 第四章 第67页 当确定工作方式后 只有当控制开关合上时 定时 计数脉冲才能到达计数器输入端 开始加1计数 控制开关闭合条件如下 GATE 0时 开关的打开 合上取决于TR0 TR0置1 开关合上 计数脉冲得以畅通无阻 TR0为0 开关打开 计数脉冲无法通过 因此定时 计数是否工作 只取决于TR0的值 GATE 1时 控制开关由TR0和INT0引脚的控制 只有TR0为1 且INT0引脚也是高电平 开关才合上 计数脉冲才得以通过 第四章 第68页 2 方式1 16位计数器 由THX和TLX组成 满计数值为216 T0和T1的方式1都是相同的 仅以T0为例介绍 T0启动后立即加1计数 当TL0计数溢出时向TH0进位 TH0计数溢出则溢出标志位TF0置位 并作为定时器溢出中断标志 当单片机进入中断服务程序时 由内部硬件自动清除该标志 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 TH0 TL0 计数器 第四章 第69页 3 方式2在方式2下 T0和T1的方式2都是相同的 以下以T0为例 TH0和TL0被当作两个8位计数器 计数过程中 TH0寄存8位初值并保持不变 由TL0进行8位计数 当低8位计数溢出时 除了可产生中断申请外 还将TH0中保存的内容向TL0重新装人 以便于重新计数 而TH0中的初值仍然保留 以便下次再行对TL0进行重装 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 TH0 TL0 计数器 第四章 第70页 方式2的作用 用于连续计数 不需要在溢出后用软件重新装入计数初值 而是可以自动装入 但此时计数的长度将受到很大的限制 只有28 256次 此外 对定时控制也特别有用 可实现每隔预定时间发出控制信号 特别适合于串行口波特率发生器的使用 第四章 第71页 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 4 方式3 只适用于定时 计数器T0 定时 计数器T0被拆成2个独立的定时 计数器来用 TL0 计数器 振荡器 12 TF1 TH0 计数器 TR1 合 断 在方式3下 T0和T1的工作有很大的不同 若T1置于方式3 则Tl停止计数 定时器T1保持其内容不变 一般不会把T1置于方式3 若把T0置于方式3 则16位计数器拆开为两个独立工作的8位计数器TL0和TH0 但其工作有差别 工作方式的不同 TL0既可以按计数方式工作 也可以按定时方式工作 TH0只能按定时方式工作 控制方式的不同 一般情况下 当定时 计数器T0处于工作方式3时 定时 计数器T1可工作为方式0 1 2 但由于此时其已没有控制通断和溢出中断的功能 T1只能作为串行口的波特率发生器使用 或不需要中断的场合 第四章 第72页 MCS 51的定时 计数器是可编程的 因此 在使用前应进行初始化 初始化一般应包括以下几个步骤 1 TMOD寄存器赋值 确定定时器的工作方式 2 置定时 计数器初值 直接将初值写入寄存器的TH0 TL0或TH1 TLl 3 根据需要 对寄存器IE置初值 开放定时器中断 4 对TCON寄存器中的TRl或TR0置位 启动定时 计数器 启动以后 计数器即按规定的工作方式和初值进行计数或开始定时 定时 计数器的应用 例1 例2 第四章 第73页 初始化时 要先置入定时值或计数值的初值 计算方法 设计数器的最大值为M 不同的工作方式中 M可以为213 216或28 则置入的初值X可这样来计算 计数方式 X M 计数模值定时方式 M X T 定时值 所以X M 定时值 T 其中T为计数周期 是单片机时钟周期的12倍 当时钟周期为1 12MHZ时 计数周期为1us 在这种情况下 若定时器工作在方式0 则最大定时值为213 X 1 12MHZs 8 192ms 若工作在方式1 则最大定时值为216 X 1 12MHZs 65 536ms例若单片机的频率为12MHz 请计算2ms所需要的定时器初值 解 计数脉冲个数为2 0 001 2000若方式0 则计数初值为 213 2000 6192 1830HTH0 18H TL0 30H若方式1 则计数初值为 216 2000 63536 F830HTH0 F8H TL0 30H 定时 计数器初值 第四章 第74页 方法1 用延时程序实现1mS的延时 UP SETBP1 0LCALLD2MSCLRP1 0LCALLD2MSSJMPUP方法2 用T0定时2mS 查询TF0 确定工作方式方式0 计算初值E018H 编程MOVTMOD 00HSETBTR0LOOP MOVTH0 0E0HMOVTL0 18HJNBTF0 CPLP1 0CLRTF0SJMPLOOP 例1使P1 0输出一个周期为2mS的方波 方法3 用T0定时2mS 中断 ORG0000HLJMPMAINORG000BHLJMPAT0MAIN MOVTMOD 00HMOVTH0 0E0HMOVTL0 18HSETBEASETBET0SETBTR0SJMP AT0 MOVTMOD 00HMOVTH0 0E0HCPLP1 0RETI 第四章 第75页 欲产生周期为2秒的方波 定时器应能定时1秒 已超过定时器的最大定时时间 为此 只有采用定时器定时和软件计数相结合的方法解决问题 例2使P1 1输出一个周期为2S的方波 ORG0000HLJMPMAINORG000BHLJMPAT0MAIN MOVTMOD 01HMOVTH0 0B1HMOVTL0 0E0HMOVIE 82HSETBTR0MOVR7 50SJMP AT0 MOVTMOD 00HMOVTH0 0E0HDJNZR7 AT1CPLP1 0MOVR7 50AT1 RETI 例如 我们可以在主程序中设定一个初值为20的软件计数器并使T0定时50ms 这样 每当T0定时到50ms时CPU就响应它的溢出中断请求 从而进入它的中断服务程序 在中断服务程序中 CPU先使软件计数器减1 然后判断它是否为零 若为零 则说明1S时间到 完成所需操作后返回主程序 若不为零 则说明1S时间未到 不进行任何操作 直接返回主程序 第四章 第76页 3 定时器 计数器的应用举例 例 设单片机晶振频率为6MHZ 使用T1以工作方式1 产生周期为500us的等宽正方波 由P1 0输出 以中断方式编程 分析 题目的要求可用下图来表示 由上图可知 只要使P1 0的电位每隔250us取一次反即可 所以定时时间应取250us 第四章 第77页 1 计算计数初值设计数初值为x 由定时计算公式知 2 寄存器的初始化所以 TMOD应设置为 10H开放定时器 计数器1中断 所以IE应设置为 88H 第四章 第78页 3 编写程序ORG0000HSJMPMAINORG001BHAJMPINTT1MAIN MOVTMOD 10HMOVIE 88HMOVTH1 0FFHMOVTL1 83H 初始化LOOP SETBTR1 启动HERE SJMPHERE 等待中断AJMPLOOPINTT1 MOVTH1 0FFH 中断响应程序MOVTL1 83HCPLP1 0RETI 中断返回 第四章 第79页 例 用定时器1以工作方式2实现计数 每计数100 累加器进行加1操作 以查询方式编写程序 解 1 计算计数初值2 专用寄存器初始化01100000所以 TMOD 60H使用查询方式 所以关闭中断 即IE 00H 第四章 第80页 3 程序设计MOVIE 00H 禁止中断MOVTMOD 60H T1工作在方式2 计数功能MOVTH1 9CHMOVTL1 9CH 装载计数初值START SETBTR1 启动DEL JBCTF1 LOOPAJMPDELLOOP INCA 溢出响应程序AJMPSTART 第四章 第81页 例利用定时 计数器T0的方式1 产生10ms的定时 并使P1 0引脚上输出周期为20ms的方波 采用中断方式 设系统时钟频率为12MHz 解 1 计算计数初值X 由于晶振为12MHz 所以机器周期Tcy为1 s 所以 N t Tcy 10000X 65536 10000 55536 D8F0H即应将D8H送入TH0中 F0H送入TL0中2 求T0的方式控制字TMOD M1M0 01 GATE 0 C T 0 方式控制字为01H 第四章 第82页 ORG0000HLJMPMAIN 跳转到主程序ORG000BH T0的中断入口地址LJMPDVT0 转向中断服务程序ORG0100HMAIN MOVTMOD 01H 置T0工作于方式1MOVTH0 0D8H 装入计数初值MOVTL0 0F0HSETBET0 T0开中断SETBEA CPU开中断SETBTR0 启动T0SJMP 等待中断DVT0 CPLP1 0 P1 0取反输出MOVTH0 0D8H 重新装入计数值MOVTL0 0F0HRETI 中断返回END 第四章 第83页 3 定时器 计数器的应用例 使用定时器 计数器T0的方式0 设定1ms的定时 在P1 0引脚上产生周期为2ms的方波输出 晶体振荡器的频率为fosc 6MHz 解 定时常数计算振荡器的频率fosc 6MHz 6 106Hz 方式0计数器长度L 13 L 8192定时时间t 1ms 1 10 3s定时常数TC 2L fosc t 12 8192 6 106 10 3 12 8192 500 7692 第四章 第84页 定时常数TC转换成二进制数TCB 1111000001100B所以TCH 0F0H TCL 0CH TMOD的设定 即控制字 第四章 第85页 编程MOVTMOD 00H 写控制字MOVTH0 0F0H 写定时常数MOVTL0 0CHSETBTR0 启动T0SETBET0 允许T0中断SETBEA 开放CPU中断AJMP ORG000BH T0中断矢量地址AJMPINQP 第四章 第86页 ORG00 H 中断服务程序INQP MOVTH0 0F0H 重写定时常数MOVTL0 0CHCPLP1 0 P1 0变反输出RETI 中断返回 第四章 第87页 例 设定时器 计数器T0为计数方式2 当T0引脚出现负跳变时 向CPU申请中断 解 定时常数计算 当T0引脚出现负跳变 向CPU申请中断一次 故此时的定时常数应为0FFH TMOD的设定 即控制字 编程 第四章 第88页 ORG000BH T0的中断入口RETIORG0100HMAIN MOVTMOD 06H 设T0为计数方式2MOVTL0 0FFH 设TL0初值MOVTH0 0FFH 设TH0初值SETBTR0 启动计数SETBET0 允许T0中断SETBEA 中断开放AJMP CLRET0 禁止T0中断CLREA 关中断 从此例可知 相当于把T0的计数中断转换为一个外部中断 第四章 第89页 例 利用定时器 计数器测定图4 15所示波形的一个周期长度 解 利用门信号GATE启动定时器 设如图4 15所示 T0为定时器 INT0为高电平时 启动定时器 T1为计数器 T1的电平由1到0 计数器计数 定时器设置 当脉冲数低于每秒3个时 每个脉冲周期为330ms左右 故设置定时器的基本定时为100ms 可满足测时的精度要求 因此 采用门控方式 触发启动定时器 采用方式1 16位计数器 第四章 第90页 图4 15利用定时器 计数器测定周期 第四章 第91页 定时器T0的TMOD的设置 控制字9H 门控定时器方式1 时间常数计算 晶体振荡器为6MHz 基本定时时间为100ms 机器周期Tc 12 6 106 2 10 6s设置初值 x 216 x 100 10 3 2 10 6 50 103x 216 50 103 15536 3CB0H 预置 TH0 3CH TL0 0B0H 第四章 第92页 计数器设置T1为计数器 计数值为2 当计数1时 启动定时器 当计数2时 中断计数器T1 并停止定时器T0的定时 中断方式 其优先级高于定时器T0 计数器T1的TMOD的设置 控制字为5H GATEC TM1M00101计数器 方式1 计数初值为0FFFEH 预置 TH1 0FFH TL0 0FEH 第四章 第93页 编程ORG0BH 定时器T0中断入口AJMPTIME0ORG1BH 定时器T1中断入口AJMPTIME1ORG HMOVR3 0 清除软件计数器SETBP3 2 置P3 2 P3 5为输入状态SETBP3 5MOVTMOD 59HMOVTH0 3CH 定时器初值MOVTL0 0B0HMOVTH1 0FFH 计数器初值 第四章 第94页 MOVTL1 0FEHSETBTR0 启动定时器 计数器SETBTR1MOVIP 08H T1中断优先于T0SETBET1 允许T0 T1中断SETBET0SETB20H 1 设20H 0 20H 1为中断标志LOOP SETB20H 0SETBET0SETBEA 开中断JB20H 0 JB20H 1 LOOPRETTIME0 CLRTR0 第四章 第95页 MOVTMOD 51H GATE 0SETBTR1MOVTH0 3CH 重置定时器初值MOVTL0 0B0HINCR3 计数器加1CPL20H 0RETITIME1 CLR20H 0 清除中断标志CLR20H 1CLRET0 禁止T0 T1中断CLRET1CLREA 关中断CLRTR0 关定时器 计数器CLRTR1RETI本子程序占用T0 T1 20H 0 20H 1及寄存器R3 R3 100ms即为周期长度 因此可测的最大周期为256 100ms 25 6s 第四章 第96页 4 3串行接口 80C51有一个全双工的异步串行接口 可作UART 通用异步接收和发送器 用 也可作同步移位寄存器 全双工 可以同时进行接收和发送数据 口内的接收缓冲器和发送缓冲器在物理上是隔离的 即是完全独立的 其它型号又增加了新的串行口 如8XC552中具有I2C总线功能的串行口 通过访问SBUF 来访问接收缓冲器和发送缓冲器 接收缓冲器具有双缓冲的功能 即它在接收第一个数据字节后 能接收第二个数据字节 在它完成接收第二个数据字节之后 若第一个字节仍未取走 那么该字节数据将丢失 第四章
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省唐海县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省黄骅市2025年上半年公开招聘辅警试题含答案分析
- 2025年户外照明灯具研发生产与市场推广合作协议
- 2025版企业搬迁过程中员工培训与服务合同
- 2025岑瑾与配偶共同债务处理及财产分配离婚协议
- 2025年智能房产租赁居间服务合作协议
- 2025年新型环保材料边坡支护及护壁桩工程合同
- 2025年二手房购房合同房屋产权归属与登记手续
- 2025年度房地产居间代理服务合同
- 2025版水泥产品定制化生产购销合同模板
- 飞机上通用应急设备-安全设备
- 复旦研究生入学教育考试
- 2023-2024学年九年级道德与法治上册 同步备课系列 教学设计教案(全册)
- 成熟生产线评价报告
- “高效的课件制作技巧及展示技能培训”
- 输电线路工程项目划分表
- 沪教版八年级生物第一册全册完整课件
- 第06章设计美学程能林第4版《工业设计概论》课课件
- 中行bfw框架开发和测试资料课件
- 医疗CT中碲锌镉CZT探测器的工作原理
- 食材配送应急保障配合措施方案
评论
0/150
提交评论