我的问题是我在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;