Hola, buenas a todo el mundo.
Estoy realizando un proyecto en el que ya pregunté algunas dudas iniciales (https://www.forosdeelectronica.com/f24/entrenamiento-esgrima-pic-16f876a-22720/#post187787) y después de resolverlas, como no, siguen saliendo algunas cosas más, aunque ahora de diferente tipo.
Al grano.
El caso es que utilizo el PIC C Compiler para programar en C y simulo con el Proteus para el PIC 16F876A. Entonces, he simulado varios ejemplos y no me acaban de salir bien al 100%. Entonces, lo que haré, es poneros los ejemplos y a ver si me podéis ayudar en saber donde puedo tener el fallo, ya que tampoco sé si viene del programa en C, o fallo con el Proteus (además, es la primera vez que utilizo ambos programas). No vaya a ser que me falta por configurar algún dato o algo.
Decir que, en el PIC C Compiler, al iniciar un nuevo proyecto, hago los siguientes pasos:
- General:
Device PIC16F876A
Oscilator frequency: 4.000.000 Hz
Marco casillas: "Use 16 bit pointers for FULL RAM use" y "One fuse per line with comments".
Fuses Crystal osc <= 4 mhz
Marco casillas: "Reset when bronout detected" y "Low Voltage Programing on B3 or B5".
- Communication:
Baud 9600
Bits 8
- Options:
CCPX -> CCP1
- I/O Pins:
Los A y C en Input y los B en Output.
- Lo demás todo por defecto.
Esquema en Proteus:
(Decir que los Switch ya están modificados por pulsadores normales y corrientes y que haciendo doble clic en el PIC, lo pongo a 4 MHz).
Programa 1:
(Decir que aquí lo que me hace es que si no presiono ningún botón, los leds se me encienden y apagan a gran velocidad sin parar y cuando pulso, el led correspondiente se queda apagado y los otros siguen como una “discoteca”)
Programa 2:
(Me hace el contrario de lo que debería hacer, donde tiene que estar encendido, está apagado y viceversa).
En este punto, probando también otros programas, deduzco que a la salida, me sale lo contrario que quiero y no se si debo modificar o configurar algo del PIC o del Proteus.
Y finalmente Programa 3:
Decir que, aquí en cambio, la salida no me sale al revés de la que quiero, pero que por ejemplo, del paso 2 al 3, PIN_B1 lo ha de mantener encendido, y no lo hace. Y me pasa lo mismo con otro del mismo estilo. Es decir, como si no pudiera tener 2 LEDs encendidos a la vez).
Por cierto, lo programas en C están sacados de Internet, pero ahora mismo no recuerdo las fuentes de donde las saqué, ya que los archivos los tengo en TXT. Así que si el creador los ve, que me perdone por no citarlo, pero es que aquí en el trabajo no puedo mirarlo. Gracias.
En fin, estas son mis dudas de ahora. A ver si me podéis hechar una mano. Gracias a todos y saludos!
Estoy realizando un proyecto en el que ya pregunté algunas dudas iniciales (https://www.forosdeelectronica.com/f24/entrenamiento-esgrima-pic-16f876a-22720/#post187787) y después de resolverlas, como no, siguen saliendo algunas cosas más, aunque ahora de diferente tipo.
Al grano.
El caso es que utilizo el PIC C Compiler para programar en C y simulo con el Proteus para el PIC 16F876A. Entonces, he simulado varios ejemplos y no me acaban de salir bien al 100%. Entonces, lo que haré, es poneros los ejemplos y a ver si me podéis ayudar en saber donde puedo tener el fallo, ya que tampoco sé si viene del programa en C, o fallo con el Proteus (además, es la primera vez que utilizo ambos programas). No vaya a ser que me falta por configurar algún dato o algo.
Decir que, en el PIC C Compiler, al iniciar un nuevo proyecto, hago los siguientes pasos:
- General:
Device PIC16F876A
Oscilator frequency: 4.000.000 Hz
Marco casillas: "Use 16 bit pointers for FULL RAM use" y "One fuse per line with comments".
Fuses Crystal osc <= 4 mhz
Marco casillas: "Reset when bronout detected" y "Low Voltage Programing on B3 or B5".
- Communication:
Baud 9600
Bits 8
- Options:
CCPX -> CCP1
- I/O Pins:
Los A y C en Input y los B en Output.
- Lo demás todo por defecto.
Esquema en Proteus:
(Decir que los Switch ya están modificados por pulsadores normales y corrientes y que haciendo doble clic en el PIC, lo pongo a 4 MHz).
Programa 1:
(Decir que aquí lo que me hace es que si no presiono ningún botón, los leds se me encienden y apagan a gran velocidad sin parar y cuando pulso, el led correspondiente se queda apagado y los otros siguen como una “discoteca”)
Programa 2:
(Me hace el contrario de lo que debería hacer, donde tiene que estar encendido, está apagado y viceversa).
En este punto, probando también otros programas, deduzco que a la salida, me sale lo contrario que quiero y no se si debo modificar o configurar algo del PIC o del Proteus.
Y finalmente Programa 3:
Decir que, aquí en cambio, la salida no me sale al revés de la que quiero, pero que por ejemplo, del paso 2 al 3, PIN_B1 lo ha de mantener encendido, y no lo hace. Y me pasa lo mismo con otro del mismo estilo. Es decir, como si no pudiera tener 2 LEDs encendidos a la vez).
Por cierto, lo programas en C están sacados de Internet, pero ahora mismo no recuerdo las fuentes de donde las saqué, ya que los archivos los tengo en TXT. Así que si el creador los ve, que me perdone por no citarlo, pero es que aquí en el trabajo no puedo mirarlo. Gracias.
En fin, estas son mis dudas de ahora. A ver si me podéis hechar una mano. Gracias a todos y saludos!