如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
NOTE-PIC24FJ系列中断函数的使用
介绍PIC24系列中断函数的基本结构及使用方法。
1、PICF系列单片机所有中断服务程序的汇编入口和C程序的中断函数入口,MPLABC30均已在芯片的链接描述文件(gld文件)定义好,编程时直接引用即可。例如处理INT1的汇编程序的入口为_INT1Interrupt,C程序的中断函数为:
void__attribute__((interrupt,no_auto_psv))_INT1Interrupt(void)
{
//以下为用户自己代码
Int1_Clear_Intr_Status_Bit;
DataAvailable=1;
}
编译后,中断向量表中INT1的入口单元的代码(中断向量)为其中断服务程序的首地址_INT1Interrupt。
在程序设计中值得注意的是,MPLABC30编译器对程序总未使用的中断服务程序的各个中断向量均填充为:_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改变一次电平。
程序如下:
intCounter;
intmain(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的中断标志
}
my****25
实名认证
内容提供者
最近下载