




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.6中断功能的应用举例,由于中断功能是一种应用比较广发的功能,在绝大多数的单片机控制项目中几乎都会用到此功能,因此,我们在本节中尽量利用ICD配套演示板上不算很多的硬件资源,通过灵活配置和辅以必要的附加条件,尽可能多样化的设计几个实验范例,以便充分展现中断功能的不同用法和编程技巧。下面的3个范例中,第1个范例中着重应用的一个中断源是TMR0;第2个实验中则重应用的中断源是外部中断INT;第3个实验中着重应用RB端口电平变化中断,并且有2个中断源(外部INT和端口RB)同时在活动.9.6.1TMR0溢出中断如何以中断方式利用模块产生延时?与查询方式相比,以中断方式利用TMR0模块产生延时是如何分解CPU负担的?下面的实验范例会使读者得到答案。例9.1闪烁跑马灯实验项目实现的功能,把演示板上的8只LED发光二极管,规划为跑马等方式轮流闪烁发光。也就是8只LED中只有一只点亮,亮灯的位置以循环方式不停的移动,移动的速度取决于在各个位置上停留的时间,即在两步之间插入一个约96ms的延时,并且在每一个位置上LED都保持快速闪烁。硬件电路规划流水灯电路如图9.3所示(电路图总各个元器件的标号保持与MAPLABICD用户指南中提供的电路图中各元器件标号一致)。利用端口RC上现有的8只发光二极管LED作为显示部件,各只LED均有限流电阻,主要为的是对单片机端口引脚内部电路起保护作用。单片机的时钟振荡器工作模式选用RC阻容振荡方式(将跳线JP1插接到演示板标有RC一侧的接线针上),根据电路中给定的R3和R4阻容值,时钟频率大约为4MHz。万一单片机脱离正常工作状态,而进入失控状态(或出现非正常现象),就可以利用复位按钮SW2,对单片机实施人工强行复位。利用片内的定时器/计数器TMR0模块和中断逻辑功能部件,让TMR0工作于定时器模式,并且在超时溢出时向CPU发送中断请求信号。,图9.3闪烁式跑马灯电路,软件设计思路驱动8只LED的显示码的形成,采用一次性向端口寄存器赋初值,然后循环移动的方式。在本例的程序中,需要加入2段延时,一个使LED灯每向前移动一步都要延迟一会(记为T1),另一个是LED还要亮、灭频繁切换形成闪烁,在亮态和灭态上都保留一个延时(记为T2)。我们打算T1延时用软件手段实现,T2延时以硬件措施完成,分频器配置给TMR0使用,并且分频比设定为最大(1:256),利用TMR0编制一段大约66ms的延时子程序。TMR0延时时长的计算式为256*(256-0)指令周期=65536指令周期=65536s=65.536ms。其中,前面的256是分频比,括号内的256是TMR0的最大技术值;0是每次循环累加计数开始时需要向TMR0填写的初始值,直到计数到256时产生溢出。即从00H开始经过256次加1后,累计到100H便产生高位溢出,并且发出中断请求。程序流程图如图9.4所是,包含主程序和中断服务子程序的流程图,延时子程序再次不再赘述,可以参见“PIC汇编语言程序设计基础”一部分中关于岩石子程序的介绍。,图9.4程序流程图,程序清单;*;闪烁式跑马灯;程序文件名为“INTEXP.ASM”;*tmr0equ01h;定义定时器/计数器0寄存器地址pclequ02h;定义程序计数器低字节寄存器地址statusequ3h;定义状态寄存器地址option_regequ81h;定义选项寄存器地址intconequ0bh;定义中断控制寄存器地址portcequ07h;定义端口C的数据寄存器地址triscequ87h;定义端口C的方向控制寄存器地址tmer0_bequ0;定义TMR0寄存器初始值(256=256-0)dly1equ20h;定义一个延时变量寄存器dly2equ21h;定义另一个延时变量寄存器wequ0;定义传送目标寄存器为W的指示位fequ1;定义传送目标寄存器为RAM的指示位rp0equ5;定义状态寄存器中的预选位RP0t0ifequ2;定义TMR0的中断标志位w_tempequ7fh;在体0上定义临时备份寄存器portc_cequ23h;定义一个显示缓冲区寄存器,flagequ24h;定义一个亮灭标志位(只用寄存器的末位);*复位向量*org000h;定义程序存放区域的启示地址nop;设置一条ICD必需的空操作指令gotomain;*中断向量和中断服务子程序*org004h;中断向量,中断服务程序入口地址tmr0serv;中断服务程序名称movwfw_temp;复制W到他的临时备份寄存器W_TEMPbcfintcon,t0if;清除TMR0溢出中断标志位incfflag,f;亮灭标志位(寄存器末位)反转btfssflag,0;标志位=1?是!跳一步到“熄灭”gotojump0;否!跳到“点亮”clrfportc;熄灭gotojump1;跳过下面的程序jump0movfportc_b;点亮,即将缓冲区内容先传入Wmovwfportc;再由W转入端口寄存器,送显jump1movlwtmr0_b;TMR0赋初值movwftmr0;并(重新)启动定时计算movfw_temp,w:恢复现场retfie:中断返回,;*主程序*mainbsfstatus,rp0;设置文件寄存器的体1movlw0;将端口C的方向控制00h码先送Wmovwftrisc;再转到方向寄存器,RC全部设为输出movlw07h;设置选项寄存器内容:分频器给TMR0movwfoption_reg;分频比值设为1:256bcfstatus,rp0;恢复到文件寄存器的体0movlw0a0h;开放TMR0中断使能位movwfintcon;开放全局中断使能位bcfintcon,t0if;清除TMR0溢出中断标志位movlwtmr0_b;TMR0赋初值movwftmr0;并启动定时计数movlwb10000000;显示驱动码送入Wmovwfportc_b;将驱动码送入显示缓冲区寄存器loopcalldelay;调用延时子程序rrfportc_b,f;带进位标志位右移缓冲区寄存器gotoloop;跳转回去;*软件延时子程序*delay;子程序名,也是子程序入口地址movlw0fh;将外层循环参数值经过W,movwfdly1;送入用作外循环变量的dly1lp0movlwoffh;将内层循环参数值FFH送入Wmovwfdly2;送入用作内循环变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电线路接地电阻测量方案
- 建筑工程钢筋绑扎施工方案
- 宿舍楼电气系统负荷均衡管理方案
- 实验室检查山东医学高等专科学校血液学检验52课件
- 输电线路抗震设计技术方案
- 鸡场节能减排技术
- 水电线路图基础知识培训课件
- 水电看图基础知识培训课件
- 水电暖安全知识培训课件
- 2025版债务偿还与子女抚养权离婚协议执行标准
- 肿瘤的诊断与治疗
- 【高朋律师事务所】RWA发展研究报告:法律、监管和前瞻(2025年)
- DB42∕T 2272-2024 微粒化岩沥青改性沥青路面施工技术规范
- 办公耗材应急方案(3篇)
- 新高中班级团建活动方案
- 护理执行医嘱制度
- 渠道拓展培训
- 动画场景设计流程
- 2025年山东省济南市中考英语模拟试题(含答案)
- 船舶拖带协议书
- 儿童血压测量课件
评论
0/150
提交评论