基本信息
文件名称:Microchip 系列:PIC18F 系列_(14).PIC18F系列的中断系统.docx
文件大小:27.16 KB
总页数:26 页
更新时间:2025-06-19
总字数:约1.38万字
文档摘要

PAGE1

PAGE1

PIC18F系列的中断系统

中断概述

中断是一种机制,允许单片机在执行正常程序时,能够响应外部或内部的突发事件,暂时中止当前任务,转而处理这些事件,处理完毕后,再返回到原来的任务继续执行。中断系统在嵌入式系统中扮演着至关重要的角色,因为它可以提高系统的响应速度和效率,同时减少不必要的处理器占用时间。

PIC18F系列单片机的中断系统非常强大,支持多种中断源,包括外部中断、定时器中断、通信中断等。通过合理配置中断,可以实现对各种外设的高效管理。本节将详细介绍PIC18F系列单片机的中断系统,包括中断源、中断向量、中断优先级、中断使能和中断处理程序的编写。

中断源

PIC18F系列单片机支持多种中断源,每种中断源都对应一个特定的中断标志位。常见的中断源包括:

外部中断(INT0,INT1,INT2)

定时器中断(TMR0,TMR1,TMR2,TMR3)

通信中断(USART,SPI,I2C)

ADC中断

捕捉/比较/PWM中断(CCP)

变更通知中断(CN)

看门狗定时器中断(WDT)

每种中断源都有对应的中断标志位和中断使能位,这些标志位和使能位通常位于特殊的寄存器中。例如,外部中断INT0的中断标志位为INTCON.INTF,中断使能位为INTCON.INTE。

外部中断

外部中断通常通过外部引脚触发,可以配置为上升沿或下降沿触发。PIC18F系列单片机支持多个外部中断引脚,如INT0、INT1和INT2。配置外部中断的步骤如下:

配置引脚:将外部中断引脚配置为输入模式。

设置中断边沿:配置中断触发边沿(上升沿或下降沿)。

使能中断:设置中断使能位。

清除中断标志位:在中断处理程序中清除中断标志位,避免中断被重复触发。

代码示例:外部中断INT0配置

//配置INT0引脚为输入模式

TRISBbits.TRISB0=1;//设置RB0为输入

//配置INT0中断为下降沿触发

INTCONbits.INTEDG=0;//下降沿触发

//使能INT0中断

INTCONbits.INTE=1;//使能INT0中断

INTCONbits.GIE=1;//使能全局中断

//中断处理程序

voidinterrupthigh_priorityISR(){

if(INTCONbits.INTF){//检查INT0中断标志位

//处理INT0中断

//例如:点亮一个LED

LATBbits.LATB1=1;//设置RB1为高电平

//清除中断标志位

INTCONbits.INTF=0;

}

}

定时器中断

定时器中断用于在特定的定时周期内生成中断。PIC18F系列单片机支持多个定时器,如TMR0、TMR1、TMR2和TMR3。每个定时器都有对应的中断标志位和中断使能位。

代码示例:TMR0定时器中断配置

//配置TMR0定时器

T0CON=0x00;//关闭定时器,选择内部时钟源,8位模式

T0CONbits.T08BIT=1;//8位模式

T0CONbits.TMR0CS=0;//选择内部时钟源

T0CONbits.T0SE=0;//增加计数

T0CONbits.PSA=0;//预分频器分配给定时器

T0CONbits.T0PS=0b111;//设置预分频器为1:256

TMR0=0x00;//初始化定时器值

//使能TMR0中断

INTCONbits.TMR0IE=1;//使能TMR0中断

INTCONbits.GIE=1;//使能全局中断

//中断处理程序

voidinterrupthigh_priorityISR(){

if(INTCONbits.TMR0IF){//检查TMR0中断标志位

//处理TMR0中断

//例如:计数器增加

staticunsignedcharcount=0;

count++;

//重新设置定时器值

TMR0=0x00;

//清除中断标志位

INTCONbits.TMR0IF=0;

}

}

通信中断

通信中断用于处理通信外设(如USART、SPI、I2C)的中断事件。例如,USART中断可以用于处理接收和发送数据的事件。