虽然我的INT0初始化为数字输入,但它仍然提供2.8V,这使得Button没有真正改变

问题描述 投票:0回答:1

我的问题是我在PORTB.0上初始化了数字输入。在那个引脚上,我有一个按钮和一个100k的下拉电阻。当我运行我的Pic时几乎没有任何东西(void main(){while(1){}})此引脚上的电压电平按我想要的那样工作(0到3.3V)。但在我测试我的程序并初始化如下面的代码所示之后,它的范围从2.8到3.3V。

我正在使用PIC18LF2520进行毕业工作。我使用XC8 1.45编译器在MPlab V5.10中进行编程。我只想要一个中断我的按钮位于uP的RB0引脚上。我所做的初始化将在下面的代码中显示。我已经用这个特殊的PIC工作了很多,但我之前从未遇到过这样的错误。

void main() {

    init();

    while(1) {    
        /*
        if(isEXT0Set()) {   //If the Button gets pushed
            EXT0Int();      //Interrupt Function call
        }
        */
    }    
}

void init() {

   //PORT Definitions

    TRISA = 0x00;
    TRISB = 0xC3;
    TRISC = 0x00;

    //Oscillator Settings

    OSCCON = 0x7F;  //8Mhz; Internal Oscillator; INTOSC stable

    //Interrupt Settings

    INTCON = 0xF0;  //Global Enable; Peripherals Enable; TMR0 Enable; INT0 Enable
    INTCON2 = 0x64; //INT0 rising Edge; INT1 rising Edge; TMR0 High Priority
    INTCON3 = 0x08; //INT1 Enable
    ADCON1 = 0x0F; //set all Inputs to Digital ones.

    //Timer Settings

    T0CON = 0x86;   //16-Bit; LtoH; 1/128
    T1CON = 0x31;   //2 8-Bit; FOSC/4; 1/8
    T2CON = 0x07;   //Postscaler 1/1; Prescaler 1/16;

    TMR0H = 0xE1;   //Setting TMR0 to 1 Second
    TMR0L = 0x7B;  

    TMR1IE = 1;
    TMR2IE = 0;
}

我希望当我按下按钮时将设置INt0IF,但这不会发生。我在硬件上测试它,结果在上面描述。我希望有人看到我错过的东西。提前致谢。 :d

c interrupt pic xc8
1个回答
1
投票

PIC控制器在PORTB上有内部上拉电阻,通常,它们远小于100kOhm。您可以将所有这些只是将INTCON2初始化更改为:

INTCON2 = 0xE4;
© www.soinside.com 2019 - 2024. All rights reserved.