c语言 - 当我的 INT0 初始化为数字输入时,它仍然发出 2.8V,这使得按钮并没有真正做出改变



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

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

INTCON2 = 0xE4;

相关内容

  • 没有找到相关文章

最新更新