He estado aprendiendo cómo codificar para el PIC 16f628A y escribí un código muy simple para encender un LED, que está conectado a RB0, y mantenerlo encendido. Mi intención original era usar SDCC y GPUTILS para compilar los proyectos. Sin embargo, parece que SDCC o GPUTILS están generando archivos hexadecimales no válidos, ya que el programa no actúa como se esperaba cuando lo subo al chip, el LED permanece apagado durante toda la ejecución del programa. Un código similar compilado con el compilador de CSC se ejecuta sin ningún problema. Además, no tuve éxito en la ejecución de un programa simple compilado con GPASM. Cabe destacar que GPSIM ejecuta todos esos programas perfectamente y muestra que los pines funcionan como se esperaba. Estoy usando K150 como programador. No sé qué está pasando con SDCC y GPUTILS.
#include "pic16f628a.h"
//#include "tsmtypes.h"
//#include "tsmpic.h"
#include <stdint.h>
//CONFIG:__config (_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT)
uint16_t __at 0x2007 __CONFIG = _CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT;
#define CLOCK_8MHZ 0
#define CLOCK_4MHZ 1
void main(void)
{
//SCS = 1;
TRISA = 0x00;
TRISB = 0x00;
#ifdef __16f628a // Only compile this section for PIC16f628a
CMCON = 0x07; /** Disable comparators. NEEDED FOR NORMAL PORTA
* BEHAVIOR ON PIC16f628a! */
#endif
// Loop forever.
while(1) {
RB0 = 1;
}
}