PIC12F615 电平中断调试注意

   昨天调试电平中断,想实现GP1按下,GP4上的LED灯状态改变。程序按步就班,GP1启用弱上拉,再接按钮到地线。可是接PICKit3上调试时,PCB上的LED灯就是不灭。一直以为是代码的问题,后来才发现,是PICKit3供电不足。接上5V电后就正常了。调试时怕麻烦,GP1可以接个1K~4.7K的电阻上拉也能正常使用。

    相关程序代码如下:

unsigned char GPtemp;//电平中断读取用

void DebounceDelay(unsigned char us)
{
    while(us--);
}

void InitGPINT(void)    //电平变化中断 查看Datasheet 44页
{
    nGPPU=0;            //必须使能全局 GPPU 位才能使能单独的上拉功能。
    CMCON0=0B00000101;
    TRISIO1=1;
    AN1=0;  
    WPU1=1;            //输入模式中,可设置内部弱上拉
    GPtemp=GP1;
    IOC1=1;           //允许电平变化中断        
    GPIF=0;
    GPIE=1;
}

void interrupt ISR(void)    //中断处理函数
{

/*
    if(T0IF)//定时间隔5mS
    {
        T0IF=0;
        MS++;
        PWMDelay++;
        if(MS>=200)      //1秒到了。    
        {
           MS=0;
           SEC++;
           if(SEC>59)
           {
               SEC=0;
               MIN++;
           }
        }
        TMR0=T0Value;                    //重新赋值,进入下轮循环
    }
  */  
    if(GPIF)            //电平中断
    { 
        GPIE=0;
        GPtemp=GP1;
        DebounceDelay(255);  //延时消抖   
        if(GP1==0)
        {
            GP4=!GP4;
        }
        GPIF=0; 
        GPIE=1;
    }
    GIE=1;  //开启总中断
}

void main(void) 
{
    InitMCU();
    InitSW();
    InitGPINT();
    InitPWM();
    InitAD();
    InitT0();

//    PEIE=1;
    GIE=1;
    
    while(1)
    {
        LEDBreathe();
    }
    return;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河湾边的一亩三分地

来点实在的鼓励吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值