PIC24FJ中断的使用

2019-08-31 12:58

NOTE-PIC24FJ系列中断函数的使用

介绍PIC24系列中断函数的基本结构及使用方法。

1、PICF系列单片机所有中断服务程序的汇编入口和C程序的中断函数入口,MPLAB C30均已

在芯片的链接描述文件(gld文件)定义好,编程时直接引用即可。例如处理INT1的汇编程序的入口为_INT1Interrupt,C程序的中断函数为:

void __attribute__((interrupt,no_auto_psv)) _INT1Interrupt(void) {

//以下为用户自己代码 Int1_Clear_Intr_Status_Bit;

DataAvailable = 1; }

编译后,中断向量表中INT1的入口单元的代码(中断向量)为其中断服务程序的首地址_INT1Interrupt。

在程序设计中值得注意的是,MPLAB C30编译器对程序总未使用的中断服务程序的各个中断向量均填充为:_DefaultInterrupt. _DefaultInterrupt地址处是一条软件复位指令“RESET”,也就是说一旦有未使用的中断服务程序的中断源产生了中断,且CPU又允许其中断,则会导致芯片复位。例如中断向量表中的算术运算错误入口为_DefaultInterrupt,当除法运算指令遇到分母为零时就会使芯片复位,用户在调试程序时应充分注意到这一点。 2、中断编程要点

芯片复位后所有的外设中断均是禁止的、优先级为 4,CPU 的优先级为 0、允许中断嵌 套。

外部中断编程的初始化:

? (1)将需使用外部中断功能引脚的 TRISx 寄存器中的相关位置“1’,使 INTx 引脚配 置为数字输入(可用复位时的默认输入配置);

? (2)将INTCON2 寄存器中相应的INTxEP位配置成上沿(0)或下沿(1)中断;

? (3)设置 CNIP<2:0> 控制位(IPC4<14:12>)为 INTx 中断选择所需的中断优先级; ? (4)清零所需 INTx 的中断标志; ? (5)使能所需 INTx 的中断 。 3、中断编程示例

例、设使用外部INT0的下沿中断,每中断100次使端口 RD 的 RD0 改变一次电平。 程序如下: int Counter; int main ( void )

{ Counter=0; LATDbits.LATD0=0; //RD0=0 TRISD=0xfffe; //RD0的方向为输出 SRbits.IPL = 3; //置 CPU 优先级为3

INTCON2bits.INT0EP=1; // INT0下沿中断 IPC0bits.INT0IP = 4; // 置INT0的优先级为4; IFS0bits.INT0IF=0; //清INT0的中断标志 IEC0bits.INT0IE = 1; //允许INT0中断 while(1){ ; } //死循环 }

// INT0的中断服务程序

void __attribute__((__interrupt__,no_auto_psv)) _INT0Interrupt(void) { Counter++; if(Counter==100) { Counter=0;

if(LATDbits.LATD0) //将RD0取反 LATDbits.LATD0=0; else

LATDbits.LATD0=1; }

IFS0bits.INT0IF=0; //清INT0的中断标志 }


PIC24FJ中断的使用.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:五年级数学寒假教材班第6次课 消去法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: