《单片机原理及应用》6-11章.ppt_第1页
《单片机原理及应用》6-11章.ppt_第2页
《单片机原理及应用》6-11章.ppt_第3页
《单片机原理及应用》6-11章.ppt_第4页
《单片机原理及应用》6-11章.ppt_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

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

文档简介

一个完整的微机系统是由硬件和软件共同构成的 微机系统的硬件有CPU 存储器和I O口 外设组成 CPU与存储器之间的信息交换比较简单 而CPU与外设之间进行信息交换之前必须确定外设是否准备好 即选择I O传送方式 I O传送方式有4种 无条件 查询 中断和DMA 本章学习中断传送方式的有关内容 4 1中断概述4 2MCS 51中断系统 第6章中断技术 4 1中断概述 返回 1 中断的定义 中断是指如下过程 CPU与外设同时工作 CPU执行主程序 外设做准备工作 当外设准备好时向CPU发中断请求信号 若条件满足 则CPU终止主程序的执行 转去执行中断服务程序 在中断服务程序中CPU与外设交换信息 待中断服务程序执行完后 CPU再返回刚才终止的主程序继续执行 2 中断系统的定义 中断系统是指为了实现中断传送过程在CPU内外设置的硬件和有关中断的指令 3 中断源 中断源的定义 中断源是指引起中断请求的来源 中断源的分类 软中断和 硬中断4 中断处理的全过程中断处理的全过程分成3个阶段 中断请求 中断响应和中断服务 5 多重中断与中断优先级 当系统中有多个设备提出中断请求时 多个外设的中请信号要通过门电路送到CPU的中请输入端 使CPU能收到多个外设提出的中请 CPU在收到多个外设的请求后 按中断处理原则处理中断 确定优先级的方法解决优先级的问题一般可有三种方法 软件查询法 简单硬件方法及专用硬件方法 采用可编程的中断控制器芯片 如Intel8259A 通过指令引起的中断 可以发中断请求信号的外设或过程 如打印机 驱动器 故障源和A D转换器等 中断请求 1 CPU都有中请输入线 中请输入线有2类 非屏蔽中请输入线和可屏蔽中请输入线 有的CPU只有可屏蔽中请输入线 而有的CPU则2种都有 2 CPU的开 关中断 CPU内有1个中断请求触发器IFF 当IFF 1时 称CPU开中断 此时CPU可以处理收到的可屏蔽中请 当IFF 0时 称CPU关中断 虽然CPU收到了可屏蔽中请 但不处理 响应 它 3 CPU内有中断请求检测电路 CPU每执行一条指令 其内的中断请求检测电路都要检测中断请求输入端的状态 先测NMI 若NMI有效 则CPU进入非屏蔽中响阶段 若NMI无效 则检测INT的状态 若INT有效且CPU开中断 则CPU进入可屏蔽中响阶段 若INT有效但CPU关中断 则CPU执行下一条指令 若INT无效 则CPU执行下一条指令 对于非屏蔽中请输入线上的中请 CPU无条件的响应 对于可屏蔽中请输入线上的中请 只有在CPU和中断源都开中断的情况下才能响应 返回 中断响应 1 中断响应定义中断源向CPU发出中断请求 若其优先级别最高 CPU在满足一定的条件下 可以中断当前程序的运行 保护好被中断的主程序的断点及现场信息 然后 根据中断源提供的信息 找到中断服务子程序的入口地址 转去执行新的程序段 这就是中断响应 2 中断响应条件CPU响应中断是有条件的 如内部允许中断 中断未被屏蔽 当前指令执行完等 3 任何CPU在中断响应阶段一定做如下工作 保护断点和 给出中断服务程序入口地址 将中断服务程序的首地址送给PC 为CPU执行装段服务程序创造条件 有的CPU还会做自动关中断等操作4 给出中断服务程序入口地址的方法有2种 固定入口式 中断服务程序的首地址固定 直接将此规定地址送给PC 矢量式 返回 中断服务 中断服务子程序是由用户根据自己的需要编制的 编制时要注意如下问题 1 保护现场 由一系列的PUSH指令完成 目的是为了保护那些与主程序中有冲突的寄存器 如A PSW 工作寄存器等 如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话 这一步骤可以省略 2 开 关中断 由SETB或CLR指令实现 目的是为了能控制中断 3 中断服务 与中断源实现信息交换 4 恢复现场 由一系列的POP指令完成 是与保护现场对应的 但要注意数据恢复的次序 以免混乱 5 返回 使用中断返回指令RETI 不能使用一般的子程序返回指令RET 因为RETI指令除了能恢复断点地址外 还能恢复中断响应时的标志寄存器的值 而这后一个动作是RET指令不能完成的 返回 中断服务子程序结构图 中断服务子程序结构图 返回 保护现场 开中断 与外设交换信息 恢复现场 中断返回 中断处理原则 返回 1 当多个中断源同时提出中请时 CPU按优先级的高低有高到低依次为外设服务 2 当CPU正为某外设服务又有新外设提出中请时 若新外设级别高则CPU终止为原外设服务转去为新外设服务 为新外设服务完后 再为原外设服务 若新外设级别低或与原外设同级 则CPU继续为原外设服务 为原外设服务完后 再为新外设服务 4 2MCS 51中断系统 4 2 1MCS 51中断系统结构4 2 2MCS 51中断处理过程4 2 3MCS 51中断系统应用 返回 4 2 1MCS 51中断系统结构 MCS51系列单片机上集成有中断系统 从使用者的角度出发 MCS51的中断系统就是一些SFR 如IE IP TCON SCON 返回 INT0 定时器1 串行口 外设 外设 0 INT1 0 IE0 IE1 TF0 TF1 定时器0 TCON RI TI SCON EX0 EX1 ET0 ET1 ES IE EA PX0 0 1 PX1 0 1 PT0 0 1 PT1 0 1 PS 0 1 IP 0003H 000BH 0013H 001BH 0023H 0003H 000BH 0013H 001BH 0023H PC 高 低 中断源 MCS 51中断源 MCS51单片机有5个中断源 5个中断源分为2种 2个外中断 由P3 2和P3 3引入 和3个内中断 T0 T1和串口 每个中断源对应一个中断标志位 当某个中断源有中请时 相应的中断标志位置1 各个中断源的中断标志位在TCON和SCON中 返回 INT0 定时器1 串行口 外设 外设 0 INT1 0 IE0 IE1 TF0 TF1 定时器0 TCON RI TI SCON EX0 EX1 ET0 ET1 ES IE EA PX0 0 1 PX1 0 1 PT0 0 1 PT1 0 1 PS 0 1 IP 0003H 000BH 0013H 001BH 0023H 0003H 000BH 0013H 001BH 0023H PC 高 低 中断源 中断标志与TCON和SCON 1 MCS51单片机内部的中断检测电路检测到有中请后 将检测结果存于TCON SCON中 每个中断源对应一个中断标志位 当某个中断源有中请时 相应的中断标志位置1 各个中断源的中断标志位在TCON和SCON中 TCON 88H可以按字节操作 也可以按位操作 TCON 98H可以按字节操作 也可以按位操作 2 在每条指令结束时 CPU检测各个中断标志位 若中断标志位置1 则认为有中断请求 3 外中断有2种触发方式 低电平和下降沿 由TCON中的TI0和TI1决定 当IT0 1 INT0为脉冲方式 后沿负跳变有效 当IT0 0 低电平有效 此位 可由软件置1或清0 当IT1 1 INT1为脉冲方式 后沿负跳变有效 当IT1 0 低电平有效 此位可由软件置1或清0 返回 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TI RI 中断开放与中断允许控制寄存器IE MCS 51单片机的5个中断源都是可屏蔽中断 也就是说用户可以通过软件方法来控制是否允许CPU去响应中断 CPU对中断源的中断开放 也称中断允许 或中断屏蔽 也称中断禁止 的控制是通过中断允许控制寄存器IE来实现的 IE A8H可以按字节操作 也可以按位操作 EA 当EA 0时 称CPU关中断 当EA 1时 称CPU开中断 EX0 当EX0 0时 禁止INT0申请中断 当EX0 1时 允许INT0申请中断 EX1 当EX1 0时 禁止INT1申请中断 当EX1 1时 允许INT1申请中断 ET0 当ET0 0时 禁止T0中断 当ET0 1时 允许T0中断 ET1 当ET1 0时 禁止T1中断 当ET1 1时 允许T1中断 ES 当ES 0时 禁止串行口中断 当ES 1时 允许串行口中断8051复位后IE 00H 说明CPU和各个中断源都关中断 注意 单片机在响应中断后不会自动关中断 因此 如果在转入中断服务处理程序后 如果想禁止更高级的中断源的中断申请 可以用软件方式关闭中断 例如 假定要开放外中断1和T1的溢出中断 屏蔽其他中断 则对应的中断允许控制寄存器内容应为10001100B 即中断允许控制字为8CH 使用字节操作指令 可用一条指令MOVIE 8CH完成 使用位操作指令 则需三条指令SETBEX1 SETBET1 SETBEA实现 EX0 ET0 EX1 ET1 ES EA 返回 中断优先级与中断优先级寄存器IP MCS 51单片机的中断系统对优先级的控制比较简单 只规定了两个中断优先级 对于每一个中断源均可编程为高优先级中断或低优先级中断 各中断源的优先级由中断优先级控制寄存器IP设定 IP B8H可以按字节操作 也可以按位操作 PX0 当PX0 0时 INT0处于低级 当PX0 1时 INT0处于高级 PX1 当PX1 0时 INT1处于低级 当PX1 1时 INT1处于高级 PT0 当PT0 0时 T0处于低级 当PT0 1时 T0处于高级 PT1 当PT1 0时 T1处于低级 当PT1 1时 T1处于高级PS 当PS 0时 串行口处于低级 当PX0 1时 串行口处于高级 8051复位后IP 00H 说明各个中断源都处于低级 注意 1 当五个中断源在同一个优先级的情况下INT0优先权最高 串行口优先权最低 在同一个优先级中 对五个中断源的优先次序安排如下 INT0 T0 INT1 T1 串口 中断优先级从高到低 2 对于外中断来说 可以用软件查询法和硬件排队电路法确定优先级 3 通过对IP寄存器的编程 可以把五个中断源分别定义在两个优先级中 软件可以随时对IP的各位清0或置1 例如某软件中对寄存器IE IP设置如下 MOVIE 10001111BMOVIP 00000110B此时该系统中 CPU中断允许 允许外部中断0 外部中断1 定时 计数器0 定时 计数器1发出的中断申请 允许中断源的中断优先次序为 定时 计数器0 外部中断1 外部中断0 定时 计数器1 PX0 PT0 PX1 PT1 PS 返回 4 2 2MCS 51中断处理全过程 1 中断请求 MCS51单片机内部的中断检测电路随时检测各个中断源 检测到有每个中断源有中请后 将相应的中断标志位置1 CPU在每条指令结束时 检测各个中断标志位 若中断标志位置1 则认为有中断请求 CPU读取IE和IP的内容 若中断允许且满足如下条件 则在下一个机器周期进入中断响应阶段 没有同级或更高级的中断正在执行 否则必须等CPU为它们服务完之后 才能响应新中断请求 执行完的指令不是RETI或访问IE和IP的指令 否则必须另外执行一条指令后才能响应 2 中断响应在中断响应阶段单片机做2件工作 断点地址压栈 根据不同的中断源 将不同的固定地址送PC 从而转到不同的地方执行程序 各个中断源的入口地址是 0003H 000BH 0013H 001BH 0023H INT0T0INT1T1串行口注意 8051在响应了INT0 INT1 T0 T1的中断之后会自动清除它们的中断标志位 但不会清除串口的中断标志位 3 中断服务CPU响应中断后即转至中断服务程序的入口 执行中断服务程序 针对中断源的具体要求进行不同处理 不同的中断源其中断处理内容可能不同 中断服务 子 程序的最后一条指令是RETI RETI指令使程序返回被中断的 主 程序继续执行 CPU执行该指令 一方面清除中断响应时所置位的优先级有效触发器 另一方面从堆栈栈顶弹出断点地址送入程序计数器PC 从而返回主程序 返回 4 2 3MCS 51中断系统的应用 1 中断系统初始化在使用MCS51单片机内部的中断系统时 需要对其初始化 89C51的中断系统的初始化包括 开中断 确定优先级 若是外中断 应确定触发方式 例设引脚P3 2接有一个开关 当开关按下并抬起时 产生一次中断 试对中断系统初始化 MOVSP 60HMOVIE 81HSETBIT02 中断系统应用举例例1用中断实现如下功能 将30H 60H单元的内容送微型打印机打印 例2用中断实现如下功能 2个开关K1和K2 1个数码管 当K1按下时数码管加1 K2按下时数码管减1 返回 例1用中断实现如下功能 将30H 60H单元的内容送微型打印机打印 返回 P1 0 P1 1 P1 2 P1 3 STB ACK BUSY 89C51 D6 D0 D1 D2 D3 D4 D5 P1 4 P1 5 P1 6 P1 7 微型打印机 D7 P2 0 P3 2 ORG0000HLJMPMAINORG0003HLJMPAINT0MAIN MOVSP 60HSETBEASETBEX0SETBIT0MOVR0 30HMOVP1 R0SETBP2 0CLRP2 0SJMP AINT0 INCR0CJNER0 61H AINT00MOVP1 R0SETBP2 0CLRP2 0AINT00 RETI 例2 用中断实现如下功能 2个开关K1和K2 1个数码管 当K1按下时数码管加1 K2按下时数码管减1 返回 P1 0 P1 1 P1 2 P1 3 89C51 P1 4 P1 5 P1 6 P1 7 COM a b c d e f g 共阴极LED K1 K2 P3 2 P3 3 5V BINT1 DECR7CJNER7 0FFH BINT11MOVR7 9BINT11 RETI TAB DB3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH ORG0000HLJMPMAINORG0003HLJMPAINT0ORG0013HLJMPBINT1MAIN MOVSP 60HMOVIE 83HSETBIT0SETBIT1MOVR7 0UP MOVA R7MOVDPTR TABMOVCA A DPTRMOVP1 ASJMPUP 第7章定时计数技术单片机控制系统中常常用到的定时与计数问题 5 1定时计数概述5 2MCS 51单片机的定时计数器 5 1定时 计数器概述 1 定时的定义 定时是对周期固定 已知的脉冲计数 2 计数的定义 计数是对外界产生的周期不固定的未知脉冲计数 计数器的计数方式可以是加1计数 也可以是减1计数 3 定时 计数的实现方法 定时 计数的实现方法有3种 硬件数字电路 用555构成的定时器和计数器等 软件编程 可编程定时 计数器 例 编制一个延时2mS的子程序 D2MS MOVR7 2D2MS0 MOVR6 250DJNZR6 DJNZR7 D2MS0RET例 统计开关按动次数 并存于30H单元 MOV30H 0UP JBP1 0 JNBP1 0 INC30HSJMPUP 有的控制系统是按时间间隔来进行控制的 如定时的温度检测等 虽然可以利用延迟程序来取得定时的效果 但这会降低CPU的工作效率 如果能用一个可编程的实时时钟 以实现定时或延时控制 则CPU不必通过等待来实现延时 就可以提高CPU的效率 另外也有些控制是按计数的结果来进行的 因此在微机控制系统中常使用可编程的硬件定时 计数器 现在有很多专门用作定时 计数器的接口芯片 单片机内带有硬件定时 计数器可以简化系统设计 不论是独立的定时器芯片还是单片机内的定时器 都有以下特点 1 定时 计数器可以有多种工作方式 可以是计数方式也可以是定时方式等等 2 计数器模值是可变的 当然计数的最大值是有一定限制的 这取决于计数器的位数 计数的最大值也就限制了定时的最大值 3 可以按照规定的定时或计数值 当定时的时间到或者计数终止时 发出中断申请 以便实现定时或计数控制 除了上述共同特点外 各种定时器还会有各自的特点 各自的工作方式和控制方式 5 2MCS51单片机内部的定时 计数器 5 2 1定时 计数器结构5 2 2定时 计数器工作方式5 2 3定时 计数器应用 5 2 1定时 计数器结构 MCS51单片机内有2个独立的16位的可编程定时 计数器T0和T1 它们的结构相似 T0的结构如图所示 振荡器 12 C T 0 C T 1 加1计数器 TF0 合 断 T0 TR0 GATE0 INT0 TCON TMOD TH0 TL0 TH1 TL1 TMOD 89H只能按字节操作 振荡器 12 C T 0 C T 1 加1计数器 TF0 合 断 T0 TR0 GATE0 INT0 GATE1 C T 用来确定To T1 是工作在计数方式还是工作在定时方式 C T 0为定时方式 C T 1为计数方式 即对外部引脚的外部输入脉冲计数 外部引脚上输入的每一个脉冲的负跳变使计数值加1 由于外输入脉冲的每个高 低电平持续时间各应大于一个机器周期 因此最小的计数周期为两个机器周期 例如 若单片机晶振频率为12MHZ 则外部计数脉冲的最高频率只能为500KHZ M1和M2 两位用来确定To T1 的具体工作模式 M1 M2的四种组合刚好与四种工作模式对应 分别是方式0 方式1 方式2 方式3 GATE 一般称为门控标志 它对定时 数器的启动起着控制作用 当GATE 1时 定时计数器的启动除了受TR控制外 还受INT引脚的控制 当TR 0且INT引脚上出现高电平时才能启动定时计数器 TMOD C T1 M11 M10 GATE1 C T1 M11 M10 TCON 88H可以按字节操作 也可以按位操作 振荡器 12 C T 0 C T 1 加1计数器 TF0 合 断 T0 TR0 GATE0 INT0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF0 T0溢出中断标志位 当T0计数溢出时 TF0 1 在允许中断的情况下 CPU响应T0中断 转向T0中断服务程序 此时由硬件自动将TF0清0 该标志位可由软件查询 也可用软件清0或置1 TR0 为T0启动控制位 当TR0 1时 启动T0 TR0 0时 关闭T0 该位由软件进行设置 TF0 T0溢出中断标志位 当T0计数溢出时 TF0 1 在允许中断的情况下 CPU响应T0中断 转向T0中断服务程序 此时由硬件自动将TF0清0 该标志位可由软件查询 也可用软件清0或置1 TR0 为T0启动控制位 当TR0 1时 启动T0 TR0 0时 关闭T0 该位由软件进行设置 振荡器 12 C T 0 C T 1 加1计数器 TF0 合 断 T0 TR0 GATE0 INT0 MCS 51单片机内部有两个16位的定时 计数器T0和T1 每个定时 计数器占用两个特殊功能寄存器 T0由TH0和TL0两个8位计数器组成 字节地址分别是8CH和8AH T1由TH1和TL1两个8位计数器组成 字节地址分别是8DH和8BH 用于存放定时或计数的初值 当计数器工作时 其值随计数脉冲做加1变化 计数寄存器 TH0 TL0 由于T0由TL0 低8位 和TH0 高8位 组成 T1由TH和THl组成 所以T0 T1都是16位计数器 但是若将它们设置成不同的工作方式 其计数长度 最大值 和计数方式都可变化 内部定时 计数器一共有四种工作方式 由TMOD的相关位设置 5 2 2定时 计数器的工作方式 GATE1 C T1 M11 M10 GATE1 C T1 M11 M10 M1和M2 两位用来确定To T1 的具体工作模式 M1 M2的四种组合刚好与四种工作模式对应 定时 计数器工作模式如下 方式0 方式1 方式2 方式3 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 在方式0下 T0构成一个13位的计数器 由TH0的8位和TL0的低5位组成 TL0的高3位未用 满计数值为213 T0启动后立即加1计数 当TL0的低5位计数溢出时向TH0进位 TH0计数溢出则对相应的溢出标志位TF0置位 以此作为定时器溢出中断标志 当单片机进入中断服务程序时 由内部硬件自动清除该标志 TH0 D5 方式0 D4 D3 D2 D1 D0 TL0 当选择了定时或计数工作方式后 定时 计数脉冲却不一定能到达计数器输入端 只有当控制开关合上时 计数脉冲才能到达计数器输入端 开始加1计数 控制开关闭合的条件如下 GATE 0时 开关的打开 合上取决于TR0 只要TR0是1 开关就合上 计数脉冲得以畅通无阻 而如果TR0等于0则开关打开 计数脉冲无法通过 因此定时 计数是否工作 只取决于TR0 GATE 1时 控制开关不仅要由TR0来控制 而且还要受到引脚的控制 只有TR0为1 且INT0引脚也是高电平 开关才合上 计数脉冲才得以通过 计数器 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 在方式1下 定时 计数器T0和T1的方式1都是相同的 以下仅以T0为例 T0构成一个16位的计数器 由TH0的8位和TL0的8位组成 满计数值为216 T0启动后立即加1计数 当TL0计数溢出时向TH0进位 TH0计数溢出则对相应的溢出标志位TF0置位 以此作为定时器溢出中断标志 当单片机进入中断服务程序时 由内部硬件自动清除该标志 TH0 TL0 方式1 计数器 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 在方式2下 定时 计数器T0和T1的方式1都是相同的 以下仅以T0为例 TH0和TL0被当作两个8位计数器 计数过程中 TH0寄存8位初值并保持不变 由TL0进行8位计数 当低8位计数溢出时 除了可产生中断申请外 还将TH0中保存的内容向TL0重新装人 以便于重新计数 而TH0中的初值仍然保留 以便下次再行对TL0进行重装 方式2对于连续计数比较有利 这时不需要在溢出后用软件重新装入计数初值 而是可以自动装入 但此时计数的长度将受到很大的限制 只有28 256次 TH0 TL0 方式2 计数器 振荡器 12 C T 0 C T 1 TF0 合 断 T0 TR0 GATE0 INT0 方式3只适用于定时 计数器T0 这种工作方式下 定时 计数器T0被拆成2个独立的定时 计数器来用 TL0 方式3 计数器 振荡器 12 TF1 TH0 计数器 TR1 合 断 在方式3下 T0和T1的工作有很大的不同 若把T1置于方式3 则Tl停止计数 定时器T1保持其内容不变 所以 一般不会把T1置于方式3 若把T0置于方式3 则16位计数器拆开为两个独立工作的8位计数器TL0和TH0 但这两个8位计数器的工作是有差别的 首先是工作方式的不同 对TL0来说它既可以按计数方式工作 也可以按定时方式工作 而TH0则只能按定时方式工作 另外是控制方式的不同 一般情况下 当定时 计数器T0处于工作方式3时 定时 计数器T1可工作为方式0 1 2 但由于此时其已没有控制通断和溢出中断的功能 T1只能作为串行口的波特率发生器使用 或不需要中断的场合 MCS 51的定时 计数器是可编程的 因此 在进行定时或计数之前也要用对其进行初始化 初始化一般应包括以下几个步骤 1 对TMOD寄存器赋值 以确定定时器的工作方式 2 置定时 计数器初值 直接将初值写入寄存器的TH0 TL0或TH1 TLl 3 根据需要 对寄存器IE置初值 开放定时器中断 4 对TCON寄存器中的TRl或TR0置位 启动定时 计数器 启动以后 计数器即按规定的工作方式和初值进行计数或开始定时 5 2 3定时 计数器的应用 例1 例2 例3 定时 计数器初值 在初始化过程中 要置入定时值或计数值的初值 这时要作一些计算 方法如下 设计数器的最大值为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 方法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 欲产生周期为2秒的方波 定时器T0必须能定时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时间未到 不进行任何操作 直接返回主程序 ORG0000HAJMPMAINORG000BHAJMPTIMEORG001BHAJMPDISPMAIN MOVIE 8AHMOVTMOD 11HMOVSP 70HMOVR3 0MOVR4 0MOVR5 0MOVR6 0MOVTL1 30HMOVTH1 0F8HMOVTL0 0B0HMOVTH0 3CHMOVR7 20SETBTR1SETBTR0MOVR0 0SJMP 例3分秒表 TIME MOVTL0 0B0HMOVTH0 3CHDJNZR7 TIMEFMOVR7 20INCR3CJNER3 0AH TIMEFMOVR3 0INCR4CJNER4 06H TIMEFMOVR4 0INCR5CJNER5 0AH TIMEFMOVR5 0INCR6CJNER6 06H TIMEFMOVR6 0TIMEF RETI DISP MOVTL1 30HMOVTH1 0F8HMOVDPTR TABTINCR0MOVP3 0FFH DISP1 CJNER0 01H DISP2MOVA R3MOVCA A DPTRMOVP2 ACLRP3 0AJMPDISPFDISP2 CJNER0 02H DISP3MOVA R4MOVCA A DPTRMOVP2 ACLRP3 1AJMPDISPFDISP3 CJNER0 03H DISP4MOVA R5MOVCA A DPTRMOVP2 ACLRP3 6DISP4 CJNER0 03H DISPFMOVA R6MOVCA A DPTRMOVP2 ACLRP3 7DISPF RETItabt DB0C0H 0F9H 0A4H 0B0HDB99H 92H 82H 0F8H 80H 98H 6 1存储器概述6 2半导体存储器6 3MCS 51单片机存储器扩展 第8章存储器接口 1 存储器定义在微机系统中凡能存储程序和数据的部件统称为存储器 2 存储器分类微机系统中的存储器分为内存和外存两类 3 内存储器的组成微机系统中的存储器由半导体存储器芯片组成 单片机内部有存储器 当单片机内部的存储器不够用时 可以外扩存储器 外扩的存储器就是由半导体存储器芯片组成的 当用半导体存储器芯片组成内存时必须满足个要求 每个存储单元一定要有8个位 存储单元的个数满足系统要求 注意 内存的容量是指它所含存储单元的个数 每个存储单元一定要有8个位 可以存储8位二进制信息 6 1存储器概述 外存的存储容量大 存取速度慢 它不能直接与CPU交换信息 必须经过内存实现 常用的有硬盘 软盘和光盘 内存的存储容量有限 存放将要运行的程序和数据 存取速度快 可以直接与CPU交换信息 返回 由于集成工艺水平的限制 一个半导体存储器芯片上所集成的单元个数和每个单元的位数有限 用它构成内存时必须满足 内存容量和一个存储单元有8个位的要求 因此内存常常由多个半导体存储器芯片构成 半导体存储器芯片的存储容量是指其上所含的基本存储电路的个数 用单元个数 位数表示 掌握 已知内存容量和半导体存储器芯片的容量 求用半导体存储器芯片构成内存时需要的芯片个数 内存的容量 末地址 首地址 1半导体存储器芯片分成ROM和RAM两类 6 2 1ROM芯片6 2 2RAM芯片 6 2半导体存储器 返回 例 例 由 已知内存容量和半导体存储器芯片的容量 求用半导体存储器芯片构成内存时需要的芯片个数 返回 由 内存的容量 末地址 首地址 1 返回 1 ROM简介ROM是只读存储器 ROM中的信息是用写录器写入的 一旦写入 其上的信息就不能随意更改 其内的信息可以由CPU读出 但不能由CPU通过指令写入 2 ROM特性ROM具有非易失性 即掉电后其上的信息不消失 常常用于存储程序和固定的数据表格 3 ROM分类 掩膜ROM 其上的程序由厂家用特殊工艺写入 结构简单 集成度高 但成本也高 适用于大批量产生 PROM 出厂时 其上未存任何信息 用户可以用编程器写入 一旦写入其上的程序就不能再更改 EPROM 出厂时 其上未存任何信息 用户可以用编程器写入 也可以用紫外线整片擦除 E2PROM 出厂时 其上未存任何信息 用户可以用编程器写入 也可以用电信号整字节擦除 4 典型ROM芯片 6 2 1ROM芯片 返回 2764 Intel2764的容量为8K 8 有28个引脚 各引脚的功能如下 Al2 A0 地址信号输入引脚 可寻址芯片的8K个存储单元 O7 O0 双向数据信号输入输出引脚 CE 片选信号输入引脚 低电平有效 只有当该引脚转入低电平时 才能对相应的芯片进行操作 OE 数据输出允许控制信号引脚 输入 低电平有效 用以允许数据输出 VPP 25v电源 用于在专用装置上进行写操作 PGM 编程脉冲输入 低电平有效 Vcc 5v电源 GND 地 返回 2764 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CE OE VPP PGM D0 D1 D2 D3 D4 D5 D6 D7 2764 1 RAM简介RAM是随机读写存储器 其中的信息由CPU通过指令读写 movx dptr a movxa dptr 2 RAM特性RAM具有易失性 即掉电后其上的信息消失 故用于存储临时性数据 3 RAM分类 RAM分为2类 双极型和MOS型 MOS型RAM因其集成度高 功耗低 价格便宜而得到广泛应用 MOS型RAM又分为SRAM和DRAM 4 典型RAM芯片 6 2 2RAM芯片 返回 6264 SRAM用MOS型双稳态触发器存储信息 集成度低 接口简单 DRAM用电容存储信息 集成度高 接口复杂 因为电容上的电荷容易泄漏 所以必须定时充电 Intel6264的容量为8K 8 有28个引脚 各引脚的功能如下 Al2 A0 地址信号输入引脚 可寻址芯片的8K个存储单元 D7 D0 双向数据信号输入输出引脚 OE 数据输出允许控制信号引脚 输入 低电平有效 用以允许数据输出 WE 数据输入允许控制信号引脚 输入 低电平有效 用以允许数据输入 CS1 片选信号输入引脚 低电平有效 只有当该引脚转入低电平时 才能对相应的芯片进行操作 CS2 片选信号输入引脚 高电平有效 只有当该引脚转入高电平时 才能对相应的芯片进行操作 Vcc 5v电源 用于在线的读操作 GND 地 返回 6264 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 WE OE CS1 CS2 D0 D1 D2 D3 D4 D5 D6 D7 6264 6 3MCS 51单片机存储器扩展 在微机系统中存储器是必不可少 MCS51系列单片机内部的存储器不够用时需要外扩半导体存储器芯片 外扩的半导体存储器芯片与MCS51系列单片机通过三总线交换信息 二者连接时必须考虑如下问题 1 二者地址线 数据线 控制线的连接 2 工作速度的匹配 CPU在取指令和存储器读或写操作时 是有固定时序的 用户要根据这些来确定对存储器存取速度的要求 或在存储器已经确定的情况下 考虑是否需要Tw周期 以及如何实现 3 片选信号的产生 目前生产的存储器芯片 单片的容量仍然是有限的 通常总是要由许多片才能组成一个存储器 这里就有一个如何产生片选信号的问题 4 CPU的驱动能力 在设计CPU芯片时 一般考虑其输出线的直流负载能力 为带一个TTL负载 现在的存储器一般都为MOS电路 直流负载很小 主要的负载是电容负载 故在小型系统中 CPU是可以直接与存储器相连的 而较大的系统中 若CPU的负载能力不能满足要求 可以 就要考虑CPU能否带得动 需要时就要加上缓冲器 由缓冲器的输出再带负载 6 3 1ROM芯片的扩展6 3 2RAM芯片的扩展 返回 6 3 1ROM芯片的扩展 返回 在MCS 51单片机应用系统中 如果单片机内部程序存储器不够用时 特别是对片内无ROM的8031单片机 外扩程序存储器是必不可少的工作 程序存储器容量的扩展可根据实际需要在64KB范围内选择 单片机扩展用程序存储器有紫外光可擦除型 EPROM 电擦除型 EEPROM 和闪速存储器FLASH等 EPROM价格低廉 性能稳定可靠 所以 一般程序存储器的扩展均采用之 在进行程序存储器扩展时 首先应根据应用系统的要求 选择使用何种类型的芯片作程序存储器芯片 其次 在存储器容量选择时 应尽量选择大容量的芯片 即使用一片存储器芯片能够满足要求的 尽量不使用多片 从而减少芯片的组合数量 当必须选用多芯片时 也应选择集成度相同的芯片 以便简化系统的应用电路 例1某微机系统只有一片2764 试将其与8051进行连接 例2用2764构成16K的存储系统 试将它们与8051进行连接 返回 例1某微机系统只有一片2764 试将其与8051进行连接 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 将芯片的13位地址线按引脚名称一一并联 然后按次序逐根接至系统地址总线的低13位 将芯片的8位数据线依次接至系统数据总线的O0 O7 芯片的OE端接至系统控制总线的存储器读信号 PSEN 因为系统中只有1片2764 所以2764的CE可以接地 地址码的计算 返回 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 地址码的计算 计算2764每个单元的地址 8051送出何种地址码时选中该单元 P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P00AB15AB14AB13AB12AB11AB10AB9AB8AB7AB6AB5AB4AB3AB2AB1AB0 0000000000000 1111111111111 0000H 1FFFH 89C51从2764中读取信息的过程 89C51发地址码P00 P07 AB 2764的A0 A7ALE 1P20 P27 AB 2764的A8 A12 89C51发读ROM信号PSEN 0 CB 2764的OE 2764将选中单元的内容送出 DB 89C051的P00 P07 返回 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 例2用2764构成16K的存储系统 试将它们与8051进行连接 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 2764的容量是8K 8 1片2764上有8K个存储单元 每个存储单元有8个基本存储电路 能存放8位二进制信息 可以满足位数的要求 但是1片2764上有8K个存储单元 为了满足内存的容量的要求 需要2片2764串联使用 即2片2764不能同时被选中 因为2片2764的的数据线都接在8位DB上 当二者同时被选中时 会出现争占DB的现象 这时 需要考虑片选问题 返回 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 片选信号的产生 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 片选信号的产生方法有3种 线选法 部分译码法和全译码法 返回 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 线选法 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 线选法就是用剩余的高位地址线作片选信号 线选法有2个缺点 其一是各芯片的地址不连续 其二是有一些地址不能使用 否则会造成片选的混乱 有地址重叠现象 即一个存储单元有多个地址码 AB15 AB14 P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P00AB15AB14AB13AB12AB11AB10AB9AB8AB7AB6AB5AB4AB3AB2AB1AB001 0000000000000 01 111111111111110 0000000000000 10 1111111111111 0400H 5FFFH 8000H 9FFFH 返回 ALE RD WR PSEN P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 89C51 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 A0 A1 A2 A3 A4 A5 A6 A7 OE LE D0 D1 D2 D3 D4 D5 D6 D7 74LS373 DB AB CB A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 AB0 AB15 AB12 全译码法 A0 A12 CE OE VPP PGM O0 O7 2764 AB12 AB0 全译码法就是剩余的全部地址线都参与译码 译码器的输出作为片选信号 因为译码器在某一时刻只有1条输出线有效 保证了在某一时刻只有1个芯片被选中的要求 全译码法则没有地址重叠现象 即各存储单元的地址码唯一 AB15 AB14 P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P00AB15AB14AB13AB12AB11AB10AB9AB8AB7AB6AB5AB4AB3AB2AB1AB00000000000000000 00011111111111110010000000000000 0011111111111111 0000H 1FFFH 2000H 3FFFH 74LS13874LS139 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A G1 G2A G2B C B 74LS138 AB13 5V 返回 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A G1 G2A G2B C B 74LS138 74LS138 74LSl38具有三个输入选择端 能够组合成8种输入状态 对应8种输出 可产生8个片选信号 低电平有效 也就是说 每种输入状态 仅允许一个输出端输出低电平 其余输出端全部为高电平 同时 74LS138还具有3个使能端G1 G2A G2B 3个使能端必须同时输入有效电平 译码器才能正常工作 即仅当G1 G2A G2B 100时 才能选通译码器 否则译码器输出全无效 73LS138译码器的逻辑功能真值表 6 3 2RAM芯片的扩展 返回 由于8051单片机芯片内部仅有128B的RAM 需要作为工作寄存器 堆栈和数据缓冲器使用 当控制系统需要暂存的数据量较大时 片内RAM往往不够用 因此需要进行片外数据存储器的扩展 MCS 51系列单片机数据存储器的扩展能力最大可达64KB 在一般的数据存储器扩展中 常选用静态数据存储器芯片 S

温馨提示

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

评论

0/150

提交评论