Hola amigos del foro, estoy comenzando un proyecto de la uni, y el primer paso es conseguir que presionando cualquier entrada del puerto b se active una salida por el puerto d, lo estuve realizando en ccs, use la sentencia case, el programa lo compila, pero en el proteus no funciona, no se cual es mi error, tengo dudas con la sentencia case, se pueden ingresar datos de esta forma como lo he hecho en binario? y lo otro estoy leyendo directamente el portb, no es necesario guardarlo en otra variable?,estee s el codigo :
#include <16F877A.h> /// libreria para el manejo del pic16f877a
#use delay(clock=4000000) /// declara la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#byte portb = 0x06 // se definen las direcciones de memoria
#byte portd = 0x08
void main(void){
set_tris_b(0xff); // se configura el puerto b como entrada
set_tris_d(0x00); // puerto d como salida para el speaker
output_d(0x00); //limpiamos los pines del puerto d
switch(portb){
case 0b00000001:
output_high(PIN_D0);
output_high(PIN_D3);
delay_ms(500);
break;
case 0b00000010:
output_high(PIN_D0);
break;
case 0b00000100:
output_high(PIN_D0);
break;
case 0b00001000:
output_high(PIN_D0);
break;
case 0b00010000:
output_high(PIN_D0);
break;
case 0b00100000:
output_high(PIN_D0);
break;
case 0b01000000:
output_high(PIN_D0);
break;
case 0b10000000:
output_high(PIN_D0);
break;
}while(true);
}
#include <16F877A.h> /// libreria para el manejo del pic16f877a
#use delay(clock=4000000) /// declara la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#byte portb = 0x06 // se definen las direcciones de memoria
#byte portd = 0x08
void main(void){
set_tris_b(0xff); // se configura el puerto b como entrada
set_tris_d(0x00); // puerto d como salida para el speaker
output_d(0x00); //limpiamos los pines del puerto d
switch(portb){
case 0b00000001:
output_high(PIN_D0);
output_high(PIN_D3);
delay_ms(500);
break;
case 0b00000010:
output_high(PIN_D0);
break;
case 0b00000100:
output_high(PIN_D0);
break;
case 0b00001000:
output_high(PIN_D0);
break;
case 0b00010000:
output_high(PIN_D0);
break;
case 0b00100000:
output_high(PIN_D0);
break;
case 0b01000000:
output_high(PIN_D0);
break;
case 0b10000000:
output_high(PIN_D0);
break;
}while(true);
}