




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 外部中断应用实例 例7 1用按键控制的一位LED数码管显示系统1 硬件电路图7 2为硬件原理图 其中LED数码管的控制显示连接与例6 4相同 PA口工作于输出方式 作为LED数码管的段码输出 LED数码管的位信号接地 因此这个一位的LED数码管工作于静态显示方式 图中使用了两个按键K1 K2 按键的一端分别与PD2 INT0 PD3 INT1 连接 INT0和INT1作为外部中断的输入 采用电平变化的下降沿触发方式 当K1 K2 按下时 会在PD2 PD3 引脚上产生一个高电平到低电平的跳变 触发INT0或NT1中断 2 3 系统的功能还是控制一个8段数码管显示 0 F 16个十六进制的数字 当系统上电时 显示 0 K1键的作用是加 1 控制键 按1次K1键 显示数字加1 依次类推 当第15次按K1键时 显示 F 第16次按K1键 显示又从 0 开始 K2键的作用是减1控制键 按1次K1键 显示数字减1 减到 0 后 再从 F 开始 4 includeflashcharled 7 16 0 x3F 0 x06 0 x5B 0 x4F 0 x66 0 x6D 0 x7D 0 x07 0 x7F 0 x6F 0 x77 0 x7C 0 x39 0 x5E 0 x79 0 x71 charcounter INT0中断服务程序interrupt EXT INT0 voidext int0 isr void if counter 16 counter 0 INT1中断服务程序interrupt EXT INT1 voidext int1 isr void 5 if counter counter elsecounter 15 voidmain void PORTA 0 xFF DDRA 0 xFF GICR 0 xC0 允许INT0 INT1中断MCUCR 0 x0A INT0 INT1下降沿触发GIFR 0 xC0 清除INT0 INT1中断标志位counter 0 计数单元初始化为0 asm sei 全局中断允许while 1 PORTA led 7 counter 显示计数单元 6 建议使用CVAVR中的程序生成向导功能来帮助你建立整个程序的框架 以及芯片的初始化部分的语句 可以省掉你过多的查看器件手册和考虑寄存器的设置值等 上面的程序 就是先利用CVAVR的程序生成向导功能进行配置 然后在它生成的程序框架基础上完成的 程序中定义了一个计数变量counter 执行一次INT0中断服务程序 counter加1 而执行一次INT1中断服务程序 counter减1 在主程序中只是显示counter的值 INT0 INT1初始化为电平变化的下降沿触发 7 上机练习 显示两位数0 99 按K1键 加一 按K2键 减一 8 9 10 AVR有不同的中断源 每个中断和复位在程序空间都有独立的中断向量 所有的中断事件都有自己的使能位 当使能位置位 且状态寄存器的全局中断使能位I也置位时 中断可以发生 根据程序计数器PC的不同 在引导锁定位BLB02或BLB12被编程的情况下 中断可能被自动禁止 这个特性提高了软件的安全性 程序存储区的最低地址缺省为复位向量和中断向量 完整的向量列表见下页 列表也决定了不同中断的优先级 向量所在的地址越低 优先级越高 RESET具有最高的优先级 第二个为INT0 外部中断请求0 通过置位MCU控制寄存器 MCUCR 的IVSEL 中断向量可以移至引导Flash的起始处 编程熔丝位BOOTRST也可以将复位向量移至引导Flash的起始处 任一中断发生时全局中断使能位I被清零 从而禁止了所有其他的中断 用户软件可以在中断程序里置位I来实现中断嵌套 此时所有的中断都可以中断当前的中断服务程序 执行RETI指令后I自动置位 中断与定时 11 从根本上说有两种类型的中断 第一种由事件触发并置位中断标志 对于这些中断 程序计数器跳转到实际的中断向量以执行中断处理程序 同时硬件将清除相应的中断标志 中断标志也可以通过对其写 1 的方式来清除 当中断发生后 如果相应的中断使能位为 0 则中断标志位置位 并一直保持到中断执行 或者被软件清除 类似的 如果全局中断标志被清零 则所有已发生的中断都不会被执行 直到I置位 然后挂起的各个中断按中断优先级依次执行 第二种类型的中断则是只要中断条件满足 就会一直触发 这些中断不需要中断标志 若中断条件在中断使能之前就消失了 中断不会被触发 12 AVR退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断 要注意的是 进入中断服务程序时状态寄存器不会自动保存 中断返回时也不会自动恢复 这些工作必须由用户通过软件来完成 使用CLI指令来禁止中断时 中断禁止立即生效 没有中断可以在执行CLI指令后发生 即使它是在执行CLI指令的同时发生的 下面的例子说明了如何在写EEPROM时使用这个指令来防止中断发生以避免对EEPROM内容的可能破坏 13 14 15 16 通用中断控制寄存器 GICR Bit1 IVSEL 中断向量选择当IVSEL为 0 时 中断向量位于Flash存储器的起始地址 当IVSEL为 1 时 中断向量转移到Boot区的起始地址 实际的Boot区起始地址由熔丝位BOOTSZ确定 为了防止无意识地改变中断向量表 修改IVSEL时需要遵照如下过程 1 置位中断向量修改使能位IVCE2 在紧接的4个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流服务合作协议书
- 2025年北京市智能手机买卖合同
- 2025年标准个人房屋买卖合同正式版
- 公司财税知识培训方案课件
- 公司组织财务知识培训课件
- 2025授权招生代理合同模板
- 提高科室间转介PDCA课件
- 2025年进出口代理合同范本
- MyBatis面试实战题库:金融、IT、销售等职业面试题
- 求职路上康平社区面试题全攻略
- 乡村基地代运营合同范本
- 2025年烟叶生产考试题库
- 安徽省2025年公需科目培训测验答案(科目一)
- 浙江省衢州市2024-2025学年高二下学期6月教学质量检测数学试卷(含答案)
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 老年肌肉衰减综合征(肌少症)课件
- PCB全制程培训教材
- 应急保障措施及处置方案
- 烟草配送车辆GPS管理方案
- 电力设备预防性试验及维护保养方案
- 融资性担保贷款保后检查表
评论
0/150
提交评论