中断功能应用示例.pptVIP

  • 5
  • 0
  • 约5.47千字
  • 约 15页
  • 2017-07-14 发布于河南
  • 举报
中断功能应用示例

9.6 中断功能的应用举例; 把演示板上的8只LED发光二极管,规划为跑马等方式轮流闪烁 发光。也就是8只LED中只有一只点亮,亮灯的位置以循环方式不停 的移动,移动的速度取决于在各个位置上停留的时间,即在两步之 间插入一个约96ms的延时,并且在每一个位置上LED都保持快速闪 烁。 ※硬件电路规划 流水灯电路如图9.3所示(电路图总各个元器件的标号保持与《M APLAB—ICD用户指南》中提供的电路图中各元器件标号一致)。利 用端口RC上现有的8只发光二极管LED作为显示部件,各只LED均有 限流电阻,主要为的是对单片机端口引脚内部电路起保护作用。单 片机的时钟振荡器工作模式选用RC阻容振荡方式(将跳线JP1插接到 演示板标有RC一侧的接线针上),根据电路中给定的R3和R4阻容值, 时钟频率大约为4MHz。万一单片机脱离正常工作状态,而进入失控 状态(或出现非正常现象),就可以利用复位按钮SW2,对单片机实施 人工强行复位。利用片内的定时器/计数器TMR0模块和中断逻辑功 能部件,让TMR0工作于定时器模式,并且在超时溢出时向CPU发送 中断请求信号。;PIC16F87X; ※软件设计思路 驱动8只LED的显示码的形成,采用一次性向端口寄存器赋初值, 然后循环移动的方式。在本例的程序中,需要加入2段延时,一个使 LED灯每向前移动一步都要延迟一会(记为T1),另一个是LED还要亮、 灭频繁切换形成闪烁,在亮态和灭态上都保留一个延时(记为T2)。我 们打算T1延时用软件手段实现,T2延时以硬件措施完成,分频器配 置给TMR0使用,并且分频比设定为最大(1:256),利用TMR0编制一 段大约66ms的延时子程序。 TMR0延时时长的计算式为256*(256-0)指令周期=65536指令周期 =65536 μs =65.536ms。 其中,前面的256是分频比,,括号内的256是TMR0的最大技术 值;0是每次循环累加计数开始时需要向TMR0填写的初始值,直到 计数到256时产生溢出。即从00H开始经过256次加1后,累计到100H 便产生高位溢出,并且发出中断请求。 ※程序流程图 如图9.4所是,包含主程序和中断服务子程序的流程图,延时子程序再次不再赘述,可以参见“PIC汇编语言程序设计基础”一部分中关于岩石子程序的介绍。;主程序; ※程序清单 ;******************************************************* ;《闪烁式跑马灯》 ;程序文件名为“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 ;定义端口C的方向控制寄存器地址 tmer0_b equ 0 ;定义TMR0寄存器初始值(256=256-0) dly1 equ 20h ;定义一个延时变量寄存器 dly2 equ 21h ;定义另一个延时变量寄存器 w equ 0 ;定义传送目标寄存器为W的指示位 f

文档评论(0)

1亿VIP精品文档

相关文档