中断功能的应用举例ppt课件

上传人:夏** 文档编号:593468452 上传时间:2024-09-25 格式:PPT 页数:15 大小:395KB
返回 下载 相关 举报
中断功能的应用举例ppt课件_第1页
第1页 / 共15页
中断功能的应用举例ppt课件_第2页
第2页 / 共15页
中断功能的应用举例ppt课件_第3页
第3页 / 共15页
中断功能的应用举例ppt课件_第4页
第4页 / 共15页
中断功能的应用举例ppt课件_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《中断功能的应用举例ppt课件》由会员分享,可在线阅读,更多相关《中断功能的应用举例ppt课件(15页珍藏版)》请在金锄头文库上搜索。

1、9.6 中断功能的运用举例 由于中断功能是一种运用比较广发的功能,在绝大多数的单片机控制工程中几乎都会用到此功能,因此,我们在本节中尽量利用ICD配套演示板上不算很多的硬件资源,经过灵敏配置和辅以必要的附加条件,尽能够多样化的设计几个实验范例,以便充分展现中断功能的不同用法和编程技巧。 下面的3个范例中,第1个范例中着重运用的一个中断源是TMR0;第2个实验中那么重运用的中断源是外部中断INT;第3个实验中着重应用RB端口电平变化中断,并且有2个中断源(外部INT和端口RB)同时在活动.9.6.1 TMR0溢出中断 如何以中断方式利用模块产生延时?与查询方式相比,以中断方式利用TMR0模块产生

2、延时是如何分解CPU负担的?下面的实验范例会使读者得到答案。例9.1闪烁跑马灯 实验工程实现的功能 把演示板上的8只LED发光二极管,规划为跑马等方式轮番闪烁发光。也就是8只LED中只需一只点亮,亮灯的位置以循环方式不停的挪动,挪动的速度取决于在各个位置上停留的时间,即在两步之间插入一个约96ms的延时,并且在每一个位置上LED都坚持快速闪烁。 硬件电路规划 流水灯电路如图9.3所示(电路图总各个元器件的标号坚持与中提供的电路图中各元器件标号一致)。利用端口RC上现有的8只发光二极管LED作为显示部件,各只LED均有限流电阻,主要为的是对单片机端口引脚内部电路起维护作用。单片机的时钟振荡器任务

3、方式选用RC阻容振荡方式(将跳线JP1插接到演示板标有RC一侧的接线针上),根据电路中给定的R3和R4阻容值,时钟频率大约为4MHz。万一单片机脱离正常任务形状,而进入失控形状(或出现非正常景象),就可以利用复位按钮SW2,对单片机实施人工强行复位。利用片内的定时器/计数器TMR0模块和中断逻辑功能部件,让TMR0任务于定时器方式,并且在超时溢出时向CPU发送中断恳求信号。PIC16F87XRC0RC1RC2RC3RC4RC5RC6RC7470*8D1D0D2D3D4D5D6D7LED*8_MCLRVDDVDDVDDC422pF47KR3R13R2047K470R5R6R7R8R9R10R11

4、R12VSSOSC1图9.3 闪烁式跑马灯电路 软件设计思绪 驱动8只LED的显示码的构成,采用一次性向端口存放器赋初值,然后循环挪动的方式。在本例的程序中,需求参与2段延时,一个使LED灯每向前挪动一步都要延迟一会(记为T1),另一个是LED还要亮、灭频繁切换构成闪烁,在亮态和灭态上都保管一个延时(记为T2)。我们计划T1延时用软件手段实现,T2延时以硬件措施完成,分频器配置给TMR0运用,并且分频比设定为最大(1:256),利用TMR0编制一段大约66ms的延时子程序。 TMR0延时时长的计算式为256*(256-0)指令周期=65536指令周期=65536 s =65.536ms。 其中

5、,前面的256是分频比,括号内的256是TMR0的最大技术值;0是每次循环累加计数开场时需求向TMR0填写的初始值,直到计数到256时产生溢出。即从00H开场经过256次加1后,累计到100H便产生高位溢出,并且发出中断恳求。 程序流程图 如图9.4所是,包含主程序和中断效力子程序的流程图,延时子程序再次不再赘述,可以参见“PIC汇编言语程序设计根底一部分中关于岩石子程序的引见。主程序设定C口全部输出 设分频器归TMR0,分频比为1:256开放TMR0中断使能位和总使能位消除TMR0中断标志位给TMR0赋初值启动定时器显示缓冲器赋初始显示码调用延时子程序显示缓冲器带进位标志循环右移中断效力子程

6、序维护W存放器去除TMR0溢出标志位亮灭标志位=1?中断前往YN修正亮灭标志位显示缓冲器送显令灯LED熄灭TMR0赋初值重新启动恢复W存放器图 9.4 程序流程图 程序清单 ;* ; ;程序文件名为“INTEXP.ASM ;* tmr0 equ 01h ;定义定时器/计数器0存放器地址 pcl equ 02h ;定义程序计数器低字节存放器地址 status equ 3h ;定义形状存放器地址 option_reg equ 81h ;定义选项存放器地址 intcon equ 0bh ;定义中断控制存放器地址 portc equ 07h ;定义端口C的数据存放器地址 trisc equ 87h ;

7、定义端口C的方向控制存放器地址 tmer0_b equ 0 ;定义TMR0存放器初始值(256=256-0) dly1 equ 20h ;定义一个延时变量存放器 dly2 equ 21h ;定义另一个延时变量存放器 w equ 0 ;定义传送目的存放器为W的指示位 f equ 1 ;定义传送目的存放器为RAM的指示位 rp0 equ 5 ;定义形状存放器中的预选位RP0 t0if equ 2 ;定义TMR0的中断标志位 w_temp equ 7fh ;在体0上定义暂时备份存放器 portc_c equ 23h ;定义一个显示缓冲区存放器 flag equ 24h ;定义一个亮灭标志位(只用存放

8、器的末位) ;*复 位 向 量* org 000h ;定义程序存放区域的启示地址 nop ;设置一条ICD必需的空操作指令 goto main ; ;*中断向量和中断效力子程序* org 004h ;中断向量,中断效力程序入口地址 tmr0serv ;中断效力程序称号 movwf w_temp ;复制W到他的暂时备份存放器W_TEMP bcf intcon, t0if ;去除TMR0溢出中断标志位 incf flag, f ;亮灭标志位(存放器末位)反转 btfss flag, 0 ;标志位=1?是!跳一步到“熄灭 goto jump0 ;否!跳到“点亮 clrf portc ;熄灭 goto

9、 jump1 ;跳过下面的程序 jump0 movf portc_b ;点亮,即将缓冲区内容先传入W movwf portc ;再由W转入端口存放器,送显 jump1 movlw tmr0_b ;TMR0赋初值 movwf tmr0 ;并(重新)启动定时计算 movf w_temp, w :恢复现场 retfie :中断前往 ;*主程序* main bsf status, rp0 ;设置文件存放器的体1 movlw 0 ;将端口C的方向控制00h码先送W movwf trisc ;再转到方向存放器,RC全部设为输出 movlw 07h ;设置选项存放器内容:分频器给TMR0 movwf opt

10、ion_reg ;分频比值设为1:256 bcf status, rp0 ;恢复到文件存放器的体0 movlw 0a0h ;开放TMR0中断使能位 movwf intcon ;开放全局中断使能位 bcf intcon, t0if ;去除TMR0溢出中断标志位 movlw tmr0_b ;TMR0赋初值 movwf tmr0 ;并启动定时计数 movlw b10000000 ;显示驱动码送入W movwf portc_b ;将驱动码送入显示缓冲区存放器 loop cal l delay ;调用延时子程序 rrf portc_b, f ;带进位标志位右移缓冲区存放器 goto loop ;跳转回去

11、 ;*软件延时子程序* delay ;子程序名,也是子程序入口地址 movlw 0fh ;将外层循环参数值经过W movwf dly1 ;送入用作外循环变量的dly1 lp0 movlw offh ;将内层循环参数值FFH送入W movwf dly2 ;送入用作内循环变量的dly2 lp1 decfsz dly2, f ;内层变量dly2内容递减,假设为0腾跃 goto lp1 ;跳转到lp1处 decfsz dly1, f ;外层变量dly1内容递减,假设为0腾跃 goto lp0 ;跳转到lp0处 return ;前往主程序 end ;源程序终了Q1|Q2|Q3|Q4 Q1|Q2|Q3|Q

12、4 Q1|Q2|Q3|Q4 Q1|Q2|Q3|Q4 Q1|Q2|Q3|Q4PCPC+PC+10004H0005H指令(PC)指令(PC-1)指令(PC)指令(PC+1)空运转周期空运转周期指令(0004H)指令(0005H)指令(0004H)埋伏期指令周期一直OSC1指令周期INT引脚INTF标志位(INTCON)GIE比特 (INTCON) PC提取指令执行指令指令流图9.2 INT外部中断时序图TXIFTXIESSPIFSSPIETMR2IFTMR2IECCPIFCCPIERCIFRCIEADIFADIEPSPIFPSPIEEEIFEEIETMR1IFTMR1IECCP2IFCCP1IEB

13、CLIFBCLIERBIFRBIEINTFINTET0IFT0IEPEIEGIE中断CPU当前的程序唤醒CPU(假设处于方式)中断源第二梯队中断源第一梯队(a) PIC16F874/877中断逻辑TXIFTXIESSPIFSSPIETMR2IFTMR2IECCPIFCCPIERCIFRCIEADIFADIEEEIFEEIETMR1IFTMR1IECCP2IFCCP1IEBCLIFBCLIERBIFRBIEINTFINTET0IFT0IEPEIEGIE中断CPU当前的程序唤醒CPU(假设处于方式)中断源第二梯队中断源第一梯队(b) PIC16F873/876中断逻辑(c) PIC16F872中断

14、逻辑SSPIFSSPIETMR2IFTMR2IECCPIFCCPIEADIFADIEEEIFEEIETMR1IFTMR1IEBCLIFBCLIERBIFRBIEINTFINTET0IFT0IEPEIEGIE中断CPU当前的程序唤醒CPU(假设处于方式)中断源第二梯队中断源第一梯队TXIFTXIETMR2IFTMR2IECCPIFCCPIERCIFRCIEADIFADIEEEIFEEIETMR1IFTMR1IERBIFRBIEINTFINTET0IFT0IEPEIEGIE中断CPU当前的程序唤醒CPU(假设处于方式)中断源第二梯队中断源第一梯队(d) PIC16F871中断逻辑PSPIFPSPIETXIFTXIETMR2IFTMR2IECCPIFCCPIERCIFRCIEADIFADIEEEIFEEIETMR1IFTMR1IERBIFRBIEINTFINTET0IFT0IEPEIEGIE中断CPU当前的程序唤醒CPU(假设处于方式)中断源第二梯队中断源第一梯队(e) PIC16F870中断逻辑

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号