最新单片机培训5-定时器计数器与中断系统.ppt_第1页
最新单片机培训5-定时器计数器与中断系统.ppt_第2页
最新单片机培训5-定时器计数器与中断系统.ppt_第3页
最新单片机培训5-定时器计数器与中断系统.ppt_第4页
最新单片机培训5-定时器计数器与中断系统.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

1 定时器 计数器与中断系统 周剑峰 2 MCS 51单片机的定时器 计数器 3 一 MCS 51单片机定时器 计数器组成 定时器 计数器0 T0 16位的加计数器定时器 计数器1 T1 16位的加计数器二 定时器 计数器的功能对外部输入信号的计数功能 定时器 计数器0 T0 的外来脉冲输入端为P3 4 定时器 计数器1 T1 的外来脉冲输入端为P3 5 定时功能 定时器 计数器的定时功能也是通过计数实现的 它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号 即为对机器周期计数 MCS 51单片机的定时器 计数器 4 MCS 51单片机定时器 计数器逻辑结构图 T1由TH1 TL1构成 字节地址为8DH 8BH T0由TH0 TL0构成 字节地址为8CH 8AH TCON则用于控制定时计数器T0和T1的启动和停止计数 同时管理定时器T0和T1的溢出标志等 特殊功能寄存器TMOD控制定时计数器的工作方式 5 定时器 计数器的控制主要是通过以下几个寄存器实现的 TCON 定时器 计数器控制寄存器TMOD 定时器 计数器工作方式控制寄存器IE 中断允许控制寄存器 定时器 计数器的控制 6 TMOD89H GATE 门控位 GATE 0启动不受 INT0或 INT1的控制 TCON的TR0或TR1置1 启动定时器工作 GATE 1 INT0或 INT1为高电平 且TCON的TR0或TR1置1 启动定时器工作 C T 外部计数器 定时器方式选择位C T 0定时方式 C T 1计数方式 M1M0 工作方式选择位 编程可决定四种工作模式 7 方式寄存器TMOD M1和M0方式选择位 8 0 定时 1 对外计数 定时 fosc 12 1 12 fosc 1 T 计数 脉冲不等间隔 波形等间隔 次数已定 时间确定即对机器周期进行计数 左图定时时间为N T 每个下降沿计数一次确认一次负跳变需两个机器周期 所以 计数频率最高为fosc 24 9 TCON88H TF0 TF1分别是定时 计数器T0 T1的溢出标志位 10 1 定时 计数器的工作方式 M1M0 工作模式选择位 编程可决定四种工作模式 0013位定时 计数器模式00116位定时 计数器模式108位定时 计数器 自动重装初值 模式211T08位定时 计数模式311T1停止工作模式3 11 1 工作方式0 T0的等效逻辑结构 12 在计数工作方式0下 计数器的计数值范围是 1 8192 2的13方 当为定时工作方式时 定时时间的计算公式为 8192 计数初值 晶振周期 12或 8192 计数初值 机器周期其时间单位与晶振周期或机器周期相同 16位寄存器只用13位 TL0 TL1的高3位未用 如果单片机的晶振选为6 000MHz 则最小定时时间为 8192 8192 1 1 6 10 6 12 2 10 6 s 2 us 最长定时时间为 8192 0 1 6 10 6 12 16384 10 6 s 16384 us 13 2 工作方式1 T0的等效逻辑结构 14 在工作方式1下 计数器的计数值范围是 1 65536 2的16方 当为定时工作方式1时 定时时间的计算公式为 65536 计数初值 晶振周期 12或 65536 计数初值 机器周期其时间单位与晶振周期或机器周期相同 如果单片机的晶振选为6 000MHz 则最小定时时间为 65536 65536 1 1 6 10 6 12 2 10 6 s 2 us 最长定时时间为 65536 0 1 6 10 6 12 131072 10 6 s 131072 us 15 3 工作方式2 T0的等效逻辑结构 16 方式2与方式0 1的区别 工作方式0和工作方式1的最大特点就是计数溢出后 计数器为全0 因而循环定时或循环计数应用时就存在反复设置初值的问题 这给程序设计带来许多不便 同时也会影响计时精度 工作方式2就具有自动重装载功能 即自动加载计数初值 所以也有的文献称之为自动重加载工作方式 在这种工作方式中 16位计数器分为两部分 即以TL0为计数器 以TH0作为预置寄存器 初始化时把计数初值分别加载至TL0和TH0中 当计数溢出时 不再象方式0和方式1那样需要 人工干预 由软件重新赋值 而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载 方式2在串口通讯时 常用作波特率发生器 17 4 工作方式3 18 如果定时 计数器0工作于工作方式3 那么定时 计数器1的工作方式就因为自己的一些控制位已被定时 计数器0借用 只能工作在方式0 方式1或方式2下 T1等效电路参见下图 19 2 怎样编制计数程序 首先必须对定时计数器进行初始化 然后再开启定时或计数 简单的总结一下 定时计数器的初始化包括以下内容 1 确定工作方式 对TMOD赋值 如 任务中的MOVTMOD 06H指令 设定T0为计数器工作方式 2 预置定时计数器中计数的初值 直接写入TH和TL 如 任务中的MOVTH0 00H两条指令 设定计数初值 MOVTL0 00H 20 3 根据需要开放定时器 计数器的中断 对IE位赋值 4 启动定时器 计数器 如 任务中的SETBTR0指令初值的计算方法X M 计数值M是定时器的最大计数值 视工作方式不同而不同 工作方式0 13位定时 计数方式 因此 最多可以计到2的13次方 也就是8192次 工作方式1 16位定时 计数方式 因此 最多可以计到2的16次方 也就是65536次 工作方式2和工作方式3 都是8位的定时 计数方式 因此 最多可以计到2的8次方 也说是256次 21 预置值计算 用最大计数量减去需要的计数次数即可 通过上面的任务 我们掌握了计数程序的编制方法 下面我们再看看定时程序怎样编制 首先我们看一下下面的程序段 MOVTMOD 01HMOVTL0 00HMOVTH0 4CHSETBTR0以上程序是任务一中的定时程序段 它的初始化过程和计数方式类似 22 MCS 51单片机的定时器 计数器应用举例 利用定时器 计数器实现固定时间的定时利用定时器 计数器实现对外来信号脉冲的计数利用定时器 计数器实现对外来信号脉冲信号脉宽的测量 MCS 51单片机的定时器 计数器 23 实例一 定时器 计数器实现固定时间的定时题目 利用T0 使用工作方式0 在单片机的P1 0输出一个周期为2ms 占空比为1 1的方波信号 解 周期为2ms 占空比为1 1的方波信号 只需要利用T0产生定时 每隔1ms将P1 0取反即可 编程步骤 计算TMOD的值由于GATE 0 M1M0 00 C T 0 所以 TMOD 00H计算初值 单片机振荡频率为12MHZ 所需要的机器周期数 n 1000us 1us 1000计数器的初始值 8192 1000 7192 1110000011000B 1C18H所以 TH0 E0H TL0 18H 24 主程序 中断程序 流程图 25 3 程序清单ORG0000HLJMPMAINORG000BH T0中断入口地址LJMPSER 中断服务程序MAIN MOVSP 50H 开辟堆栈MOVTMOD 00H 工作方式设置MOVTH0 E0H 初始值设置MOVTL0 18HSETBEA 开中断SETBET0 开T0中断SETBTR0 运行T0HERE SJMP 等待中断SER CPLP1 0 定时到 输出取反MOVTH0 E0H 重新加载初战值MOVTL0 18HRETI 中断返回END 中断程序的主程序和中断服务程序的布局 定时器初始化 开定时器中断 主程序 中断服务程序 26 实例二 利用方式1定时题目 用定时器T1 使用工作方式1 在单片机的P1 0输出一个周期为2分钟 占空比为1 1的方波信号 解 周期为2分钟 占空比为1 1的方波信号 只需要利用T1产生定时 每隔1分将P1 0取反即可 由于定时器定时时间有限 设定T1的定时为50ms 软件计数1200次 可以实现1分钟定时 编程步骤 1 计算TMOD的值由于 GATE 0 M1 M0 0 1 C T 0 所以 TMOD 10 计算初值 单片机的振荡频率为12MHZ 所需要的机器周期数 n 50000us 1us 50000计数器的初始值 65536 50000 15536所以 TH0 3CH TL0 0B0H 27 主程序 中断程序 流程图 28 程序清单ORG0000HLJMPMAINORG001BH T1中断入口地址LJMPSER 中断服务程序MAIN MOVSP 50H 开辟堆栈MOVTMOD 10H 工作方式设置MOVTH1 3CH 初始值设置MOVTL1 0B0HSETBEA 开中断SETBET1 开T1中断SETBTR1 运行T1MOV20H 20MOV21H 60HERE SJMP 等待中断 中断程序的主程序和中断服务程序的布局 定时器初始化 开定时器中断 主程序 计数单元赋初值 29 SER MOVTH1 3CH 初始值重新设置MOVTL1 0B0HDJNZ20H NOMOV20H 20DJNZ21H NOMOV21H 60CPLP1 0 定时到 输出取反NO RETI 中断返回END 中断服务程序 判断中断的次数 思考 能否利用定时器来实现一个电子钟 注意 此程序的 20和 60这两个立即数后面没有加H表示是十进制数 30 要求 每秒的次数用发光管显示出来每秒钟按键的按下次数不超过255次 测量每1秒钟之内的按键按下次数 31 实现的方法 利用T0计数器对从T0输入的脉冲进行计数 利用T1工作于定时 每定时达到1秒钟 取出计数器的值进行显示 由于每秒钟按键的按下次数不超过255次 所以只需要显示TL0的内容即可 步骤 由于定时器的最大定时时间不能够达到1秒钟 我们设定T1定时100mS 每10次取一次计数值 设定TMOD TH1 TL1的内容 fosc 6MHz所以 TMOD 51H TH1 3CH TL1 0B0H 工作原理 32 ORG0000HLJMPMAINORG001BHLJMPSERMAIN MOVR1 10MOVTMOD 51HMOVTH1 3CHMOVTL1 0B0HMOVTL0 00HMOVTH0 00HSETBEASETBTR0SETBTR1SETBET1MOVP1 00HSJMP T0和T1初始化T1定时 T0计数 启动T0计数 T1定时 开T1中断 主程序 中断程序的主程序和中断服务程序的布局 程序清单 33 SER CLRTR0CLRTR1MOVTH1 3CHMOVTL1 0B0HDJNZR1 LLMOVA TL0MOVP1 AMOVTH0 00HMOVTL0 00HLL SETBTR0SETBTR1RETIEND 关T0和T1重新对T1赋值 判断是否到10次 取值显示清除T0的计数值 开T0和T1 返回 中断程序清单 34 P3 2 T 测量在 P3 2 端出现的正脉冲宽度 35 实质 利用门控制位GATE实现对定时器 计数器的启 停控制 来测量脉冲宽度 当GATE为1 TR1 TR0 为1时 只有INT1 INT0 引脚输入高电平时 T1 T0 才允许计数 当GATE为0 只要TR1 TR0 为1时 T1 T0 就允许计数 利用GATE 1时的这个功能 可测试INT1 P3 3 和INT0 P3 2 上正脉冲的宽度 工作原理 36 流程图 37 ORG4000HMOVTMOD 09H 定时器T0模式1定时MOVTH0 00H 设定初值MOVTL0 00H JBP3 2 等待INT0变低SETBTR0 启动T0JNBP3 2 等待INT0变高JBP3 2 开始计数 等待变低CLRTR0 停止计数MOV30H TH0 取出T0中的高八位MOV31H TL0 取出T0中的低八位 END 对T0进行初始化 T0计数过程 取计数值 程序如下 38 MCS51单片机的中断系统 39 MCS51单片机的中断系统 中断的基本概念MCS 51的中断系统中断源和中断标志中断的允许和优先权中断的处理过程外部中断源的扩展中断的应用 40 中断的基本概念 日常生活中断的例子单片机中的中断概念中断技术的优点什么是中断 我们从生活中的例子引入 看书的例子 你正在看书 突然电话铃响了 中断就是正常的工作被外部事件打断了 41 日常生活中的中断 仔细研究一下生活中的中断 对于我们学习计算机中的中断也很有好处 1 什么可以引起中断 生活中有很多事件可以引起中断 有人按了门铃 电话铃响了 你的闹钟铃响了 你烧的水开了 你内急了 等等诸如此类的事件 我们把可以引起中断的事件称之为中断源 计算机中也有一些可以引起中断的事件 像MCS51单片机就有5个中断源 42 2 中断的嵌套与优先级处理 设想一下 我们正在看书 电话铃突然响了 同时又有人按了门铃 你该先做那样呢 如果你正在等一个很重要的电话 你一般不会去理会门铃的 而反之 你正在等一个很重要的客人 则可能就不会去理会电话了 如果不是这两者 即不等电话 也不等人上门 你可能会按你通常的习惯去处理 总之这里存在一个优先级问题 优先级问题不仅仅发生在两个或以上的中断同时产生的情况 也发生在一个中断已经产生 又有一个中断产生的情况 如你正在接电话 有人按门铃的情况 或你正在开门与人交谈 又有电话铃了的情况 考虑一下我们会怎么办吧 43 3 中断的响应过程 看书的例子 当有事件产生 进入中断之前我们必须先记住现在看书的第几页了 或拿一个书签放在当前页的位置 然后去处理不同的事情 因为处理完了 我们还要来继续看书 接电话的例子 电话铃响了我们要到放电话的地方去 门铃响了 我们要到门那边去 也就是说 不同的中断 我们要在不同的地点处理 而这个地点通常还是固定的 这也和计算机中的中断类似 如51MCU的5个中断源都有各自的中断入口地址 当某个中断源产生中断时 CPU响应中断便到相应的中断入口地址执行程序 44 计算机中的中断计算机执行正常程序时 系统出现某些急需处理的异常情况和特殊请求 CPU暂时中止现在正在执行的的指令 转去对随机发生的更紧迫事件处理 处理完后 CPU会自动返回原来的程序继续执行 就如 你正在家中看书 突然电话铃响了 你放下书本 去接电话 和来电话的人交谈 然后放下电话 回来继续看你的书 这就是生活中的 中断 的现象 就是正常的工作过程被外部的事件打断了 计算机中的中断 45 计算机中的中断 中断是指由于某种随机事件的发生 计算机暂停现行程序的运行 转去执行另一程序 以处理发生的事件 处理完毕后又自动返回原来的程序继续运行 将能引起中断的事件称为中断源 CPU现行运行的程序称为主程序 处理随机事件的程序称为中断服务子程序 46 中断技术的优点 分时操作 CPU可以同多个外设 同时 工作实时处理 CPU及时处理随机事件故障处理 电源掉电 存储出错 运算溢出 47 MCS 51中断系统 中断源中断标志中断允许中断优先级MCS 51中断系统结构中断寄存器 48 MCS 51的中断系统 中断源 8051单片机有5个中断请求源 单片机 49 MCS 51的中断系统 中断标志 CPU 主程序 INT0 INT1 T0 T1 串口 IE0 TF0 IE1 TF1 中断源 中断标志位 每一个中断源都有相应的中断标志位 某一个中断源申请中断 相应中断标志位置1 50 MCS 51的中断系统 中断允许 CPU 主程序 INT0 INT1 T0 T1 串口 IE0 TF0 IE1 TF1 中断源 中断标志位 EA 总中断允许位 EA 1开放所有中断 EA 0 禁止所有中断 某一个中断源还有相应的中断允许位 1允许相应中断源的中断 0禁止相应中断源的中断 中断允许 ES ET0 EX0 EX1 ET1 EA 51 MCS 51的中断系统结构图 52 TCON T1溢出中断标志 TCON 7 T1启动计数后 计满溢出由硬件置位TF1 1 向CPU请求中断 此标志一直保持到CPU响应中断后 才由硬件自动清0 也可用软件查询该标志 并由软件清0 TCON寄存器 T0和T1控制寄存器 53 TCON88H 外部中断INT1中断标志位 TCON 3 IE1 1 外部中断1向CPU申请中断 外部中断INT1触发方式控制位 TCON 2 IT1 0 电平触发方式IT1 1 下降沿触发方式 TCON寄存器 T0和T1控制寄存器 注意 该寄存器可以位寻址 54 TF1 定时器1的溢出中断标志 T1被启动计数后 从初值做加1计数 计满溢出后由硬件置位TF1 同时向CPU发出中断 TF0 定时器0溢出中断标志 其操作功能同TF1 IE1 外部中断1标志 IE1 1 外部中断1向CPU申请中断 IT1 外中断1触发方式控制位 当IT1 0时 外部中断1控制为电平触发方式 当IT1 1时 外部中断1控制为电平触发方式 IE0 外部中断0中断标志 其操作功能与IE1相同 IT0 外中断0触发方式控制位 其操作功能与IT1相同 55 TI SCON 1 串行发送中断标志 RI SCON 0 串行接收中断标志 SCON寄存器 串行口控制寄存器 SCON98H 注意 该寄存器可以位寻址 56 TI 串行发送中断标志CPU将数据写入发送缓冲器SBUF时 就启动发送 每发送完一个串行帧 硬件将使TI置位 注意 CPU响应中断时并不清除TI 必须由软件清除 RI 串行接收中断标志在串行口允许接收时 每接收完一个串行帧 硬件将使RI置位 注意 CPU在响应中断时不会清除RI 必须由软件清除 57 IEA8H 例 允许定时器T0中断 SETBEASETBET0或MOVIE 82H 注意 该寄存器可以位寻址 IE寄存器 中断允许寄存器 58 EA 总中断允许控制位 EA 1 开放所有中断 各中断源的允许和禁止可通过相应的中断允许位单独加以控制 EA 0 禁止所有中断 ES 串行口中断允许位 ES 1 允许串行口中断 ES 0 禁止串行口中断 ET1 定时器1中断允许位 ET1 1 允许定时器1中断 ET1 0 禁止定时器1中断 EX1 外部中断1中断允许位 EX1 1 允许外部中断1中断 EX1 0 禁止外部中断1中断 ET0 定时器0中断允许位 ET0 1 允许定时器0中断 ET0 0 禁止定时器0中断 EX0 外部中断0中断允许位 EX0 1 允许外部中断0中断 EX0 0 禁止外部中断0中断 59 51单片机有两个中断优先级 高级和低级专用寄存器IP为中断优先级寄存器 用户可用软件设定相应位为1 对应的中断源被设置为高优先级 相应位为0 对应的中断源被设置为低优先级系统复位时 均为低优先级该寄存器可以位寻址 IP寄存器 中断优先级寄存器 IPB8H 60 PS 串行口中断优先控制位PS 1 设定串行口为高优先级中断 PS 0 设定串行口为低优先级中断 PT1 定时器T1中断优先控制位PT1 1 设定定时器T1中断为高优先级中断 PT1 0 设定定时器T1中断为低优先级中断 PX1 外部中断1中断优先控制位PX1 1 设定外部中断1为高优先级中断 PX1 0 设定外部中断1为低优先级中断 PT0 定时器T0中断优先控制位PT0 1 设定定时器T0中断为高优先级中断 PT0 0 设定定时器T0中断为低优先级中断 PX0 外部中断0中断优先控制位PX0 1 设定外部中断0为高优先级中断 PX0 0 设定外部中断0为低优先级中断 当系统复位后 所有中断源均设定为低优先级中断 61 中断的优先级 自然优先级 INT0T0INT1T1串行口中断 高 低 62 中断的处理过程 中断处理过程分为三个阶段 中断响应 中断处理和中断返回 中断响应中断处理 又称中断服务 中断返回中断请求的撤除 63 中断响应 在满足CPU的中断响应条件之后 CPU对中断源中断请求予以处理 中断响应过程 保护断点地址 把程序转向中断服务程序的入口地址 通常称矢量地址 特别注意 这些工作是硬件自动完成的 断点地址 中断服务子程序的入口地址 外部中断0入口地址 AJMPZD0 ZD0 中断响应 64 中断服务子程序入口地址又称为中断矢量或中断向量 单片机中5个中断源的矢量地址是固定的 不能改动 断点地址 中断服务子程序的入口地址 中断响应 65 程序存储器ROM 0000H 复位后 程序的入口地址 PC 0000H 0023H 串行口中断入口 0003H 外部中断0入口 000BH 定时器0溢出中断入口 0013H 外部中断1入口 001BH 定时器1溢出中断入口 002AH 使用时 通常在这些入口地址处存放一条跳转指令 使程序跳转到用户安排的中断服务程序起始地址上去 66 程序存储器ROM 0000H 复位后 程序的入口地址 PC 0000H 0023H 串行口中断入口 0003H 外部中断0入口 000BH 定时器0溢出中断入口 0013H 外部中断1入口 001BH 定时器1溢出中断入口 002AH 包含T0中断服务子程序的程序结构 ORG0000HAJMPMAINORG000BHAJMPINTT0ORG0100HMAIN INTT0 RETIEND AJMPMAIN AJMPINTT0 67 中断处理 中断服务程序从中断子程序入口地址开始执行 直到返回指令RETI为止 这个过程称为中断处理 或中断服务 中断服务子程序一般包括两部分内容 一是保护和恢复现场 二是处理中断源的请求 入口地址 RETI 68 中断处理 INTT0 PUSHACCPUSHDPHPUSHDPLPUSHPSW中断源服务POPPSWPOPDPLPOPDPHPOPACCRETI 保护现场 恢复现场 69 中断返回是指中断服务完后 计算机返回到原来暂停的位置 即断点 继续执行原来的程序 中断返回由专门的中断返回指令RETI来实现 中断返回 70 RETI指令功能 把断点地址取出 送回到程序计数器PC中去 另外 它还通知中断系统已完成中断处理 将清除优先级状态触发器 特别注意 不能用RET指令代替RETI指令 中断返回 71 中断源发中断请求 中断响应条件是否满足 中断是否受阻 把PC断点地址压入堆栈 相应中断源的中断入口地址送入PC 转向中断服务程序 N Y Y N 由硬件自动完成 中断处理过程示意图 72 关中断 保护现场 中断服务 开中断 关中断 恢复现场 开中断 中断返回 断点地址由堆栈弹入PC 中断服务程序 73 CPU响应某中断请求后 在中断返回前 应该撤除该中断请求 否则会引起另一次中断 定时器0或1溢出 CPU在响应中断后 硬件清除了有关的中断请求标志TFO或TF1 即中断请求是自动撤除的 边沿激活的外部中断 CPU在响应中断后 也是用硬件自动清除有关的中断请求标志IE0或IE1 串行口中断 CPU响应中断后 没有用硬件清除T1 R1 故这些中断不能自动撤除 而要靠软件来清除相应的标志 中断请求的撤除 74 电平触发外部中断撤除方法较复杂 因为在电平触发方式中 CPU响应中断时不会自动清除IE1或IE0标志 所以在响应中断后应立即撤除INT0或INT1引脚上的低电平 在硬件上 CPU对INT0和INT1引脚的信号不能控制 所以这个问题要通过硬件 再配合软件来解决 电平激活的外部中断源中断标志的撤除 75 单片机仅有两个外部中断输入端 可用两种方法扩展 1 定时器T0 T1 工作在计数方式下 2 中断和查询结合 外部中断源的扩展 76 1 用定时器作外部中断源例将定时器T0扩展为外部中断源 解 将定时器T0设定为方式2 自动恢复计数初值 TH0和TF0的初值均设置为FFH 允许T0中断 CPU开放中断 源程序如下 MOVTMOD 06HMOVTH0 0FFHMOVTL0 0FFHSETBTR0SETBET0SETBEA T0引脚每输入一个负跳变 TF0都会置1 向CPU请求中断T0脚相当于边沿触发的外部中断源输入线 77 2 中断和查询相结合 图 一个外中断扩展成多个外中断的原理图 78 中断服务程序如下 ORG0003H 外部中断0入口AJMPINT0 转向中断服务程序入口 INT0 PUSHPSW 保护现场PUSHACCJBP1 0 EXT0 中断源查询并转相应中断服务程序JBP1 1 EXT1JBP1 2 EXT2JBP1 3 EXT3EXIT POPACC 恢复现场POPPSWRETI 79 EXT0 EXINT0中断服务程序AJMPEXITEXT1 EXINT1中断服务程序AJMPEXITEXT2 EXINT2中断服务程序AJMPEXITEXT3 EXINT3中断服务程序AJMPEXIT同样 外部中断1也可作相应的扩展 80 中断的处理即为用户根据自己的需要编写的中断服务程序 在编写时应该注意 中断现场保护和恢复中断的现场保护主要是在中断时刻单片机的存储单元中的数据和状态的存储 中断的恢复是恢复单片机在被中断前存储单元中的数据和状态 开中断和关中断对于一个不允许在执行中断服务程序时被打扰的重要中断 可以在进入中断时关闭中断系统 在执行完后 再开放中断系统 中断的处理 81 中断返回是在中断服务程序的最后一句指令 RETI 执行时进行的 它的主要功能是 中断响应时压入堆栈的程序计数器 PC 的值从堆栈中取出 重新赋予 PC 使程序重新执行被中断前的程序 中断返回 82 MCS 51单片机具有两个外中断源 INT0 外中断0中断入口地址 0003H中断允许控制位 EX0中断请求标志 IE0中断触发方式选择位 IT0优先级设置位 PX0INT1 外中断1中断入口地址 0013H中断允许控制位 EX1中断请求标志 IE1中断触发方式选择位 IT1优先级设置位 PX1 初始化时设置 初始化时设置 MCS 51单片机的外中断 83 外中断的初始化内容设定中断的优先级 在大部分情况下 可以使用默认方式 设定中断的触发方式开中断允许开总中断允许 外中断的初始化 84 方法1CLRPX0 设定外中断0为低优先级SETBIT0 设定外中断0为边沿触发方式SETBEX0 开放外中断0允许SETBEA 开CPU中断允许方法2MOVIP 00H 设定外中断0为低优先级MOVTCON 01H 设定外中断0为边沿触发方式MOVIE 81H 开外中断0和CPU中断允许 外中断的初始化 85 在如图所示的电路中 用P1口输出控制的8只发光二极管 实现8位二进制计数器 对INT0上出现的脉冲进行计数 脉冲产生电路 显示电路 外中断应用举例1 86 在该电路中 有两个与非门构成硬件去抖动电路 开关S每动作一次 在单片机的INT0引脚上就会收到一个脉冲信号 如果把外中断0设定为脉冲触发方式 则每当S动作一次 则外中断触发一次在外中断的中断服务程序中计数 并把计数的结果从P1口输出 问题分析 87 ORG0000HAJMPMAIN 转主程序ORG0003H 外中断入口地址AJMPSER 中断服务程序ORG0500HMAIN SETBIT0 设定外中断0为边沿触发SETBEX0 开外中断0允许SETBEA 开CPU中断允许CLRA 计数单元清0MOVP1 A 清显示HERE SJM

温馨提示

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

评论

0/150

提交评论