我用的是PIC16F1823芯片,电平变化中断无法进入,很苦恼.希望能得到论坛上朋友们的帮助.以下是我的程序:
#include <htc.h> #include <pic16F1823.h>
//定义配置字 内部时钟 看门狗关闭 PLLEN禁止 内部复位引脚关闭 代码保护关闭 数据代码保护关闭 禁止内外时钟切换 计算溢出复位 掉电复位开启 __CONFIG(FOSC_INTOSC & WDTE_OFF & PLLEN_OFF & MCLRE_ON&CP_OFF &CPD_OFF&IESO_OFF& WRT_OFF & FCMEN_OFF & STVREN_OFF & BOREN_ON) ;
void interrupt ra5int(void); void Init(void){
TRISA=0b00101111; //RA5,RA3,RA2,RA1,RA0为输入 TRISC=0x00; //正常工作模式下 RC设置为输出
PORTA=0x00; // 清零 PORTC=0x00;
// Analog / Digital
ANSELA = 0b00000000; // RA<1:0> 为模拟输入 ANSELC = 0b00000000;
GIE=1; PEIE=1; IOCIE=1; IOCAP5=1; IOCAN5=1; OPTION_REG=0X00; WPUA5=1;
} void main(void) { OSCCON=0b01101010; Init(); while(1){PORTA=PORTA; } }
void interrupt ra5int(void){ //GIE=0; //禁止中断 if(IOCIE&&IOCAF5){ //电平中断 RA4=0; RC0=0; IOCAF5=0; } }
这是整个程序中的一部分,所以才有''//RA5,RA3,RA2,RA1,RA0为输入'' // RA<1:0> 为模拟输入''的设置,我想这个并不影响测试RA5的电平变化中断 所以就没删除了.程序运行的时候,我给RA5激励信号,通过WATCH中PORTA中引脚电平改变,然而中断标志位没有置1,中断也不进入.所以很奇怪.我想可能是中断设置不对,然而所有有关电平中断的设置都设置了.所以向论坛的朋友们求助来了.附件是我的程序包和PIC16F1823的中文资料.
|