我的问题是我在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
PIC控制器在PORTB上有内部上拉电阻,通常,它们远小于100kOhm。您可以将所有这些只是将INTCON2初始化更改为:
INTCON2 = 0xE4;