一下是我的一个小的测试CN按键中断模块的测试代码,问题是我在按键前面板的按键时中断没反应,没发生中断,程序不能进入中断处理程序,不知道是不是我的main函数里面的中断初始化有问题,请高手指点。我的按键连接的是 RB2引脚,配置成输入,CN4。
贴上代码,向高手求救:
#pragma config POSCMOD = XT, FNOSC = PRIPLL
#pragma config FPLLIDIV = DIV_2, FPLLMUL = MUL_18, FPLLODIV = DIV_1
#pragma config FPBDIV= DIV_2,FWDTEN = OFF,CP =OFF,BWP =OFF
#include <p32xxxx.h>
#include<plib.h>
#include <stdio.h>
#define delayms(x)
{
int i;
i = x*10;
while((--i) != 0);
}
static int count =0;
void __ISR(_CHANGE_NOTICE_VECTOR, ipl1) CNIntHandler( void )
{
int i =0;
if(!_RB2)
{//延时检测跳变前沿
do
{
delayms(5);
if(!_RB2)
i++;
else
i = 0;
}
while(i < 10);
while(!_RB2);
//延时检测跳变后沿
do
{
delayms(5);
if(_RB2)
i++;
else
i = 0;
}
while(i < 10);
count++;
}
mCNClearIntFlag();
}
int main(void)
{
TRISB = 1;
AD1PCFG = 0xffff;
CNENbits.CNEN4 =1;
CNCONbits.ON =1;
INTEnableSystemSingleVectoredInt();
mCNSetIntPriority( 1);
mCNIntEnable( 1);
while(1);
}
顺便帮我看下我的中断处理程序里面的防止按键抖动的程序这样处理看可以不?
此帖出自
小平头技术问答
另外,中断程序中那么多延时是不合理的。
TRISB =0;才是配置成输出吧;延时我也知道不合理,可是我想防止按键抖动不用延时没办法,请教高手
一周热门 更多>