C51中断系统和定时器(堪称经典必看).ppt

上传人:max****ui 文档编号:8289092 上传时间:2020-03-28 格式:PPT 页数:41 大小:640KB
返回 下载 相关 举报
C51中断系统和定时器(堪称经典必看).ppt_第1页
第1页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第2页
第2页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
本章学习目标 理解中断概念 能正确描绘单片机中断响应过程熟记80C51单片机的5个中断源及其中断入口地址能按要求正确设置特殊功能寄存器IE IP TCON SCON和TMOD熟悉中断优先控制的方法能正确描绘定时 计数器的4种工作方式 重点掌握方式1 方式2的应用学会定时 计数初值的计算能读懂教材中的控制实例 学会编写同等难度的中断 定时 计数程序 第2章单片机的指令系统 第四章80C51中断系统和定时器 4 1中断系统 1 中断的概念CPU在处理某一事件A时 发生了另一事件B请求CPU迅速去处理 中断发生或中断请求 CPU暂时中断当前的工作 转去处理事件B 中断响应和中断服务 待CPU将事件B处理完毕后 再回到原来事件A被中断的地方继续处理事件A 中断返回 4 1 1中断系统的基本概念 4 1中断系统 2 中断技术的应用并行处理CPU可以与多台外设并行工作 并分时与他们进行信息交换 提高了CPU的工作效率 实时控制单片机应用系统可能随机请求CPU提供服务 有了中断系统 CPU就可以立即响应并予以处理 故障处理单片机系统在工作时可能会出现一些突发故障 如电源断电 存储器出错 程序执行错误 如除数为0 等 一旦出现故障 CPU就可及时转去执行故障处理程序 而不必停机 3 中断系统为实现中断功能而配置的硬件和编写的软件就是中断系统 4 1 1中断系统的基本概念 4 1中断系统 能够向CPU发出中断申请的部件称为中断源 80C51单片机有5个中断源 见下表 4 1 2中断源 4 1中断系统 单片机通过对4个特殊功能寄存器实施中断控制 1 中断允许寄存器IE2 中断优先级寄存器IP3 定时 计数器及外部中断控制寄存器TCON4 串口控制寄存器SCON 4 1 3中断控制 4 1中断系统 1 中断允许寄存器IE功能 控制单片机是否接受中断申请 以及接受哪一种中断申请字节地址 A8H其格式和每位的含义如下 位操作指令实现 4 1 3中断控制 4 1中断系统 1 中断允许寄存器IE例 同时打开外部中断0和串行口中断 可设置为 方法1 MOVIE 10010001B方法2 SETBEASETBESSETBEX0方法3 ORLIE 10010001B 4 1 3中断控制 4 1中断系统 2 中断优先级寄存器IP功能 对80C51单片机进行高级别或低级别中断的设置IP的字节地址 B8H格式和每位的含义如下 4 1 3中断控制 4 1中断系统 2 中断优先级寄存器IP例 令串行口为高优先级中断 外部中断0为低优先级中断 设置方法 法1 MOVIE 10010001B 开中断MOVIP 00010000B 设优先级法2 MOVIE 10010001BSETBPS 假设单片机之前进行了初始化说明 此时串口的优先级高于外部中断0的优先级 4 1 3中断控制 4 1中断系统 2 中断优先级寄存器IP如果几个相同级别的中断源同时申请中断 则根据以下自然顺序响应 4 1 3中断控制 4 1中断系统 3 定时 计数器及外部中断控制寄存器TCON功能 可设置外部中断申请的形式 低电平触发还是下降沿触发 控制定时 计数器的计时开始或停止 是各中断源 串口中断除外 是否申请中断的标志位TCON的字节地址 88H格式和每位的含义如下 4 1 3中断控制 4 1中断系统 3 定时 计数器及外部中断控制寄存器TCON 4 1 3中断控制 4 1中断系统 3 定时 计数器及外部中断控制寄存器TCON 4 1 3中断控制 4 1中断系统 4 串口控制寄存器SCON功能 只有D1和D0位用于中断 作为串口中断请求标志 即串口中断请求寄存器TCON的字节地址 98H格式和每位的含义如下 RI为接收中断请求标志位 当串口接收完一帧串行数据时 RI自动置1 CPU响应中断后 用软件对RI清0 TI为发送中断请求标志 当串口发送完一帧串行数据时 TI自动置1 请求中断 CPU响应中断后 由软件对TI清零 4 1 3中断控制 4 1中断系统 4 1 4中断响应 现场保护与恢复 4 1中断系统 4 1 4中断响应 二级中断嵌套 4 1中断系统 编程实例软件构成 主程序 中断服务程序程序编制的关键点 要对题目要求进行精确分析 明确哪些环节应该安排在主程序中 哪些环节应该安排在中断服务程序中 再分别编制主程序和中断服务程序 例 在程序正常运行时P1口的8个LED灯作单灯左移8次而后单灯右移7次 如此循环 中断时 即按键按下 则P1口的8个LED闪烁3次 即全亮全灭3次 1 中断程序的设计主要涉及开中断 设定优先级 外中断还涉及触发方式的设定 2 在软件设计中 首先要对主程序和中断服务程序所完成的任务进行划分 根据该课题提出的要求 在主程序中应该完成的任务是8个LED循环左移右移 在中断服务程序中应该完成的功能是8个LED闪烁3次 4 1中断系统 4 1中断系统 ORG0000HLJMPSTARTORG0003HLJMPINT0ORG0100HSTART MOVSP 60HMOVIE 81H 开INT0中断SETBIT0 INT0下降沿触发L1 MOVA 0FFH 设初值MOVR0 8 设定左移八次CLRC 将CY清0L2 RLCA 带进位位循环左移一位MOVP1 A 送P1口 P1 0灯亮ACALLDELAY 延时0 2秒DJNZR0 L2 判断是否左移8次MOVR0 7 移动7次L3 RRCA 带进位位循环右移 4 1中断系统 MOVP1 A 送P1口ACALLDELAYDJNZR0 L3 是否右移7次 AJMPL1 重新开始DELAY MOVR5 4 延时0 2秒D1 MOVR6 200D2 MOVR7 123NOPDJNZR7 DJNZR6 D2DJNZR5 D1RETINT0 PUSHPSW 保护PSW ACC值PUSHACCMOVA 00H 使8个LED全亮MOVR2 6 闪烁3次 全亮全灭各3次 L4 MOVP1 A A值送出 4 1中断系统 LCALLDELAY 延时0 2秒CPLA A值取反DJNZR2 L4 闪烁3次 POPACC 恢复保护的A值POPPSW 恢复保护的PSW值RETI 返回主程序END 4 2定时器 计数器 4 2 1定时器计数器概述1 日常生活中定时 计数的例子 如闹钟 画 正 统计选票 家用水表对水量的计数 2 单片机应用系统中定时计数的需求 如用单片机控制的打铃器 空调的定时开关 啤酒自动生产线上对酒瓶的计数装置等 3 80C51单片机片内的定时 计数器 两个 位可编程的定时 计数器 T0和T1 都能定时和对外部事件进行计数 此外 T1还可以作为串行接口的波特率发生器 4 如何理解定时和计数的概念 单片机中的定时器和计数器其实是一个器件 计数器 是对外部发生的事件进行计数 定时器 是对单片机内部的标准时钟 fosc 12 脉冲进行计数 4 2定时器 计数器 4 2 2定时器 计数器的结构单片机内部的16位定时 计数器由高8位和低8位两个寄存器组成 T0由TH0和TL0组成 T1由TH1和TL1组成 定时 计数器的计数值就存放在这里面 定时 计数器T1的结构与T0相同 定时 计数器T0的结构示意图 4 2定时器 计数器 4 2 3定时器 计数器基本原理定时 计数器溢出后标志位TF0 或TF1 由0变1 由此能够引发定时中断 如果采用12 的晶振 对应的脉冲周期是 微秒 计满65536个脉冲所对应的时间就是65 536ms 思考 如何设置指定时间的定时 预设初值在主频为12MHz的情况下 每个时钟脉冲是1微秒 则计满5536个脉冲需65 536毫秒 如要定时10毫秒则存入初值55536 10毫秒是10000微秒 需计数10000个脉冲 可见 定时器的定时时间长短与系统时钟和定时器初值有关 说明1 当定时 计数器用作计数器时 通过引脚P3 4 P3 5 对外部输入脉冲计数 2 定时 计数器T0 T1 启动运行后 会按设定的工作方式独立进行计数 不再占用CPU时间 当计数器T0 T1 计满溢出时 TF0 TF1 置1 向CPU发出中断请求信号 4 2定时器 计数器 4 2 4定时器 计数器控制在单片机中有两个特殊功能寄存器与定时 计数有关 它们就是TMOD和TCON 定时 计数器T0 T1就由它们来控制 TMOD用于设置工作方式 TCON用于控制其启动 停止和中断申请 1 定时器工作方式寄存器TMODTMOD用于设置T0和T1的工作方式 字节地址为89H 不能按位寻址 其格式和各位的含义如下 4 2定时器 计数器 4 2 4定时器 计数器控制 4 2定时器 计数器 4 2 4定时器 计数器控制 4 2定时器 计数器 4 2 4定时器 计数器控制2 定时 计数器控制寄存器TCONTCON的低4位用于控制外部中断 高4位用于控制定时 计数器的启动和中断申请 当计数溢出时 TF0 或TF1 会自动由0变1 告诉我们计数已满 我们可以通过查询TF0 或TF1 位的状态来判断计时时间是否已到 如果采用定时中断方式 则TF0 或TF1 由0变1时 能自动引发中断 4 2定时器 计数器 4 2 4定时器 计数器控制 由右图可知 只有当TR0 或TR1 为1时 开关1才能闭合 计数脉冲才能进入计数器 故TR0 或TR1 称为运行控制位 可用指令 SETBTR0 或TR1 来置位以启动定时 计数器运行 或用指令 CLRTR0 或TR1 来关闭定时 计数器的工作 一切全靠编程人员控制 4 2定时器 计数器 4 2 5定时器 计数器工作方式 80C51单片机定时 计数器T0有4种工作方式 方式0 1 2 3 T1有3种工作方式 方式0 1 2 1 方式0当TMOD的M1M0 00时 定时 计数器工作于方式0 方式0为13位定时 计数器 由TL0的低5位和TH0 8位 共同完成计数功能 TL0的高3位可忽略 当TL0的低5位溢出时 向TH0产生进位 TH0溢出时 将定时器中断请求标志位TF0置1 可申请中断 也可对TF0进行查询 方式0下 定时 计数器为13位 原因是当时的51设计者需要兼容48系列单片机 所以方式0容量受限 计数深度为8K 4 2定时器 计数器 4 2 5定时器 计数器工作方式 4 2定时器 计数器 4 2 5定时器 计数器工作方式 80C51单片机定时 计数器T0有4种工作方式 方式0 1 2 3 T1有3种工作方式 方式0 1 2 2 方式1当M1M0 01时 定时 计数器工作于方式1 方式1的计数位数是16位 由TL0作为低8位 TH0作为高8位共同构成 其余操作同方式0 4 2定时器 计数器 4 2 5定时器 计数器工作方式 4 2定时器 计数器 4 2 5定时器 计数器工作方式 80C51单片机定时 计数器T0有4种工作方式 方式0 1 2 3 T1有3种工作方式 方式0 1 2 3 方式2当M1M0 10时 定时 计数器工作于方式2 这是自动重装初值的8位计数方式 它省去了方式0和方式1在多次重复计数状态下必须重新设定计数初值的麻烦 但是却付出了减小定时时间的代价 4 2定时器 计数器 4 2 5定时器 计数器工作方式 4 2定时器 计数器 4 2 5定时器 计数器工作方式 80C51单片机定时 计数器T0有4种工作方式 方式0 1 2 3 T1有3种工作方式 方式0 1 2 4 方式3方式3只适用于定时 计数器T0 当T1被设定为方式3状态时 将停止计数 当M1M0 11时 T0工作于方式3 此时TL0和TH0作为两个相互独立的8位定时 计数器使用 TL0既可定时又可计数 它使用T0的各控制位 引脚和中断源 即C GATE TR0 TF0 T0 P3 4引脚 P3 2引脚 TH0此时只能用作内部定时功能 它借用了定时 计数器T1的控制位TR1和T1的中断标志位TF1 其启动和停止只受TR1控制 4 2定时器 计数器 4 2 5定时器 计数器工作方式 定时 计数器初始化步骤 向工作方式寄存器TMOD写入工作方式控制字以确定 A 启动方式是TR0 TR1启动还是TR0 TR1和 配合一起启动 B 是定时方式还是计数方式 C 是工作方式0还是工作方式1 2或3 向计数器TH0 TL0 或TH1 TL1 装入初值 启动定时器 计数器 将运行控制位TR0 TR1置位 如果采用中断方式 还要将IE中的中断允许控制位ET0 或ET1 中断允许总控位EA置位 4 2定时器 计数器 4 2 6定时器 计数器举例 例1 利用定时器T0方式0产生定时脉冲 要求 每隔2ms产生宽度为一个机器周期的正脉冲 由P1 0输出此定时序列脉冲信号 设时钟频率为6MHz 解 首先要求出T0的初值 已知 时钟频率为6MHz 则可求得每个机器周期为2 s 正脉冲的宽度 定时的时间公式为 所以当定时时间为t 2ms时 4 2定时器 计数器 4 2 6定时器 计数器举例 解法一 采用查询工作方式编程ORG0000H 起始程序的地址AJMPMAIN 转到主程序地址去ORG0100H 主程序的起始地址MAIN CLRP1 0 将输出口P1的第0位清0 输出脉冲的起始值 MOVTMOD 00H 将T0设置为 由TR0启动 定时方式 工作方式0MOVTH0 0E0H 给定时器中计数器的高8位送入初值MOVTL0 18H 给定时器中计数器的低5位送入初值SETBTR0 将TR0位置1 启动T0工作LOOP JNBTF0 LOOP 进行查询 若TF0为0 计数器未溢出 程序转到当前指令地址若TF0为1 计数器溢出 发出中断请求 程序往下走CLRTF0 溢出中断请求标志位清0 中断请求响应之前 对TF0进行清0 SETBP1 0 将P1 0位置1 输出正脉冲CLRP1 0 这是单机器周期的指令 所以正脉冲宽度为2 s 正脉冲消失MOVTH0 0E0H 重新装载高8位的初值MOVTL0 18H 重新装载低5位的初值SJMPLOOP 转到LOOP处继续查询定时2ms的初始化程序 而且考虑中断END 4 2定时器 计数器 4 2 6定时器 计数器举例 解法二 采用中断工作方式编程ORG0000H 起始程序的地址AJMPMAIN 转到主程序地址去ORG000BH 中断服务程序的矢量地址 中断源是T0 AJMPTOINT 转到中断服务程序的入口地址TOINTORG0100H 主程序的入口地址MAIN CLRP1 0 将P1口的第0位清0 输出脉冲的起始值 MOVTMOD 00H 将T0设置为 由TR0启动 定时方式 工作方式0MOVTH0 0E0H 给定时器中计数器的高8位送入初值MOVTL0 18H 给定时器中计数器的低5位送入初值MOVIE 82H T0中断允许ET0 1 允许T0中断 并将总允许控制位EA置1SETBTR0 将TR0位置1 启动T0工作LOOP SJMPLOOP LOOP为指令的当前地址 等待中断 ORG0300H 中断服务程序的入口地址T0INT SETBP1 0 将P1 0位置1 输出正脉冲CLRP1 0 这是单机器周期的指令 所以正脉冲宽度为2 s 正脉冲消失MOVTH0 0E0H 重新装载高8位的初值MOVTL0 18H 重新装载低5位的初值RETI 4 2定时器 计数器 4 2 6定时器 计数器举例
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!