基本信息
文件名称:Microchip 系列:PIC18 系列_(7).中断系统.docx
文件大小:23.89 KB
总页数:20 页
更新时间:2025-06-23
总字数:约9.95千字
文档摘要

PAGE1

PAGE1

中断系统

中断概述

中断系统是单片机中一个非常重要的特性,它允许单片机在执行当前任务时,能够响应外部或内部的突发事件,从而临时中断当前任务,处理这些事件,然后再返回到中断前的任务。中断系统提高了单片机的实时性和多任务处理能力,使得单片机能够更高效地管理各种资源和事件。

PIC18系列单片机的中断系统较为复杂,支持多个中断源和中断优先级。中断源可以是外部中断、定时器中断、串行通信中断、ADC中断等。每个中断源都可以通过配置寄存器来启用或禁用,并且可以选择中断的优先级。

中断配置

中断配置主要包括以下几个步骤:

启用全局中断:通过设置INTCON寄存器中的GIE位(全局中断使能位)来启用全局中断。

启用外围中断:通过设置INTCON寄存器中的PEIE位(外围中断使能位)来启用外围中断。

配置中断源:通过设置相应的中断标志和中断使能位来启用或禁用特定的中断源。

配置中断优先级:对于支持优先级的中断源,通过设置相应的优先级位来配置中断的优先级。

全局中断使能

全局中断使能位GIE位于INTCON寄存器中。将GIE位设置为1可以使能全局中断,设置为0则禁用全局中断。

//启用全局中断

INTCONbits.GIE=1;

//禁用全局中断

INTCONbits.GIE=0;

外围中断使能

外围中断使能位PEIE也位于INTCON寄存器中。将PEIE位设置为1可以使能外围中断,设置为0则禁用外围中断。

//启用外围中断

INTCONbits.PEIE=1;

//禁用外围中断

INTCONbits.PEIE=0;

配置中断源

每个中断源都有对应的中断标志位和使能位。中断标志位用于指示中断是否发生,使能位用于启用或禁用该中断源。

外部中断配置

外部中断可以通过配置INTCON寄存器中的INTE位和INTF位来启用或禁用。INTE位用于使能外部中断,INTF位用于指示外部中断是否发生。

//启用外部中断

INTCONbits.INTE=1;

//禁用外部中断

INTCONbits.INTE=0;

//清除外部中断标志位

INTCONbits.INTF=0;

定时器中断配置

定时器中断可以通过配置T1CON寄存器中的TMR1IE位和TMR1IF位来启用或禁用。TMR1IE位用于使能定时器中断,TMR1IF位用于指示定时器中断是否发生。

//启用定时器中断

PIE1bits.TMR1IE=1;

//禁用定时器中断

PIE1bits.TMR1IE=0;

//清除定时器中断标志位

PIR1bits.TMR1IF=0;

配置中断优先级

PIC18系列单片机支持中断优先级配置,可以通过设置IPR寄存器中的相应位来配置中断的优先级。例如,定时器中断的优先级可以通过IPR1寄存器中的TMR1IP位来配置。

//设置定时器中断为高优先级

IPR1bits.TMR1IP=1;

//设置定时器中断为低优先级

IPR1bits.TMR1IP=0;

中断向量表

PIC18系列单片机的中断向量表指定了每个中断源对应的中断向量地址。中断向量表如下:

中断源|中断向量地址|处理函数|

|——–|————–|———-|

高优先级中断|0x0008|__high_isr|

低优先级中断|0x0018|__low_isr|

在编写中断服务程序时,需要在相应的中断向量地址处放置中断处理函数。例如,对于高优先级中断,可以使用__high_isr关键字来定义中断处理函数。

void__interrupt(high_priority)high_isr(void){

//处理高优先级中断

if(INTCONbits.INTF){

//外部中断处理

INTCONbits.INTF=0;//清除中断标志位

}

if(PIR1bits.TMR1IF){

//定时器中断处理

PIR1bits.TMR1IF=0;//清除中断标志位

}

}

void__interrupt(low_priority)low_isr(void){

//处理低优先级中断

if(PIR1bits.TXIF){

//串行通信发送中断处理

PIR1bits.TXIF=