Mucho gusto. Esta es mi primera pregunta, espero no hacer nada mal. 
Soy novato con PICs, pero sé que son muy potentes y versátiles, quiero aprender a usarlos, por eso estoy aprendiendo a usar el PIC C Compiler (en vez de entrar directo con ensamblador), porque tengo algo de experiencia en C, y porque aprender ensamblador es un poco más tardado.
Estoy aprendiendo del libro Compilador C CCS y simulador proteus para microcontroladores PIC, de Eduardo Garcia Breijo, editado por alfaomega.
Concretamente, he intentado hacer muchos programas pero ninguno ha funcionado.
Creo que el problema es la gestión de puertos, por lo que para ensayar hice este sencillo programa (guiado por las indicaciones del texto) para ver si esta era la manera (o al menos se acercaba):
Adjunto la imagen de la simulacion.
Pero, al ejecutar, no ocurre absolutamente nada, cada que se aprieta un botón se ve como su estado pasa de 0 a 1, pero en la salida, no prende ningún led.
No tengo idea de qué más hacer, pensé en cambiar cada sentencia del switch por if-else, y en vez de usar una variable int8 para conocer el estado del PIC, usar bit_test() como los argumentos de las condicionales, cosa que haría el programa más pesado y difícil de redactar.
He visto cosas geniales hechas con PICs, obras de arte y grandes piezas de ingeniería.
Quisiera llegar a hacer algo bueno, pero debo de aprender por principio a comunicar el micro
con el mundo exterior.
Cualquier ayuda es bienvenida y cualquier consejo será escuchado.
Saludos a todos y gracias por su interés.
Soy novato con PICs, pero sé que son muy potentes y versátiles, quiero aprender a usarlos, por eso estoy aprendiendo a usar el PIC C Compiler (en vez de entrar directo con ensamblador), porque tengo algo de experiencia en C, y porque aprender ensamblador es un poco más tardado.
Estoy aprendiendo del libro Compilador C CCS y simulador proteus para microcontroladores PIC, de Eduardo Garcia Breijo, editado por alfaomega.
Concretamente, he intentado hacer muchos programas pero ninguno ha funcionado.
Creo que el problema es la gestión de puertos, por lo que para ensayar hice este sencillo programa (guiado por las indicaciones del texto) para ver si esta era la manera (o al menos se acercaba):
PHP:
#include <16f887.h>
#use delay (clock = 4000000)
#BYTE PORTB = 0x06
#BYTE TRISB = 0X86
#BYTE OPTION_REG = 0x81
void main(void)
{
int8 valor = 0;
TRISB = 0x0F;
bit_clear(OPTION_REG,7);
bit_clear(PORTB,4);
bit_clear(PORTB,5);
bit_clear(PORTB,6);
bit_clear(PORTB,7);
do{
valor = PORTB;
switch (valor)
{
case 0b11111110:
bit_set(PORTB,4);
bit_set(PORTB,5);
delay_ms(500);
bit_clear(PORTB,4);
bit_clear(PORTB,5);
break;
case 0b11111101:
bit_set(PORTB,5);
delay_ms(500);
bit_clear(PORTB,5);
break;
case 0b11111100:
bit_set(PORTB,PIN_B6);
delay_ms(500);
bit_clear(PORTB,PIN_B6);
break;
case 0b11111011:
bit_set(PORTB,6);
bit_set(PORTB,7);
delay_ms(500);
bit_clear(PORTB,6);
bit_clear(PORTB,7);
break;
default:
bit_clear(PORTB,4);
bit_clear(PORTB,5);
bit_clear(PORTB,6);
bit_clear(PORTB,7);
break;
}
}while(TRUE);
}
Pero, al ejecutar, no ocurre absolutamente nada, cada que se aprieta un botón se ve como su estado pasa de 0 a 1, pero en la salida, no prende ningún led.
No tengo idea de qué más hacer, pensé en cambiar cada sentencia del switch por if-else, y en vez de usar una variable int8 para conocer el estado del PIC, usar bit_test() como los argumentos de las condicionales, cosa que haría el programa más pesado y difícil de redactar.
He visto cosas geniales hechas con PICs, obras de arte y grandes piezas de ingeniería.
Quisiera llegar a hacer algo bueno, pero debo de aprender por principio a comunicar el micro
con el mundo exterior.
Cualquier ayuda es bienvenida y cualquier consejo será escuchado.
Saludos a todos y gracias por su interés.
Adjuntos
Última edición por un moderador: