PIC16F84 TM R0溢出中断与定时器实战教程

需积分: 11 10 下载量 46 浏览量 更新于2024-09-15 1 收藏 236KB PDF 举报
本文档主要介绍了如何利用PIC16F84单片机的TMRO(定时器/计数器0)溢出中断编写中断和定时程序。对于初学者来说,理解和编写中断程序可能会有一定的挑战,尤其是对于像TMRO这样复杂的定时器。TMRO是一个8位加计数器,当计数值从FFH(255)递减到00H(0)时,它会产生一个中断信号,这在工业控制和实时系统中非常有用。 在程序设计过程中,涉及的关键寄存器包括TMRO、OPTION(选择寄存器)和INTCON(中断控制寄存器)。TMRO用于定时和计数,通过Option寄存器可以配置预分频器,以调整定时精度。Option寄存器的D0、D1和D2位被设置为111,以达到最大预分频值,从而提供较长的定时时间。INTCON则负责中断的触发和控制,包括清除溢出标志位和设置中断允许状态。 以下是具体的步骤: 1. 初始化TMRO:设置计数器为0,确保计数过程从0开始。同时,设置预分频器参数以匹配所需的定时精度。 2. 初始化OPTION寄存器:清零Option寄存器,然后设置特定的D0、D1和D2位以配置预分频器。这一步非常重要,因为它直接影响到定时器的工作模式。 3. 初始化INTCON寄存器:通过BCF(位清除)操作,将INTCON的第2位清零,可能会影响其他中断源。同时,通过BSF(位设置)操作,将第5位和第7位置1,以便于处理TMRO溢出中断。 以下是一个简化的PIC16F84定时中断源程序示例: ```asm ; PIC16F84中断程序清单 LISTP = PIC16F84 #include "config.h" ; 引入芯片配置文件 ; TMRO初始化 MOVLW 0x00 ; TMRO计数器清零 MOVWF TMRO ; OPTION寄存器初始化 MOVLW 0x00 ; 清除Option寄存器 MOVWF OPTION MOVLW 0b11101111 ; 设置预分频器参数 MOVWF OPTION ; INTCON寄存器初始化 BCF INTCON, 2 ; 清除溢出标志 BSF INTCON, 5 ; 允许TMRO中断 BSF INTCON, 7 ; 设置中断允许 ; 主程序入口 MAIN: ; 循环代码 goto MAIN ; TMRO溢出中断服务子程序 TMRO_OVF_vect: ; 在这里处理TMRO溢出事件 ; 可能的处理包括计数重置、延时结束或其他任务 RETI ``` 理解并掌握这些步骤后,用户可以根据实际需求调整参数,编写出满足特定应用的中断和定时程序。编写中断程序时,正确设置寄存器和理解它们的功能是关键,这样才能充分发挥PIC16F84TMRO定时器的优势。