Estoy programando un PIC16F877a con 3 interruptores y un LCD de 20 x 4. Los 3 interruptores están soldados a los pines B0 - B2 en el PIC. El otro extremo de los interruptores está conectado a + 5v (PortsB tiene resistencias de extracción internas). Estoy programando usando CCS y el problema que he encontrado es que, por alguna razón, los puertos B0 - B2 siempre leen verdadero e ignoran los botones. El problema podría ser un problema de software, así que aquí está mi programa:
#include <16f877a.h>
#fuses XT,NOWDT,BROWNOUT,PUT,NOLVP
#use delay (crystal=4000000)
#include <Flex_LCD420.c>
#include <7segDisp.c>
#define btn_A PIN_B0
#define btn_B PIN_B1
#define btn_C PIN_B2
int i;
void main() {
output_low(LCD_RW);
lcd_init();
printf(lcd_putc, "\fPress Any Button");
while(1){
if(input(btn_A) == 0 || input(btn_B) == 1 || input(btn_C) == 1) {
break;
}
}
printf(lcd_putc, "\fChecking Btns..A");
while(1){
if(input(btn_A) == 1) {
break;
}
}
printf(lcd_putc, "\fChecking Btns..B");
while(1){
if(input(btn_B) == 1) {
break;
}
}
printf(lcd_putc, "\fChecking Btns..C");
while(1){
if(input(btn_C) == 1) {
break;
}
}
printf(lcd_putc, "\f\nEnd Check");
while(1);
}
Necesito ayuda con urgencia ya que esto es para un proyecto que vence hoy.
Gracias de antemano.