OK. Lo que está mal es la palabra de configuración.
Este es el programa para el Bootloader que yo uso:
PHP:
#include <18f2550.h>
#fuses NOUSBDIV,PLL2,NOVREGEN,NOFCMEN
#use delay(internal = 8MHz)
#use rs232(UART1)
#define PUSH_BUTTON PIN_A0
#ignore_warnings 205
#define _bootloader
//#define BOOTLOADER_MODE2X
#include <bootloader.h>
#include <loader.c>
#org LOADER_END + 2,LOADER_END + 4
void bucle_programa (void)
{
while (true);
}
void main(void)
{
delay_ms(2000); // Dar un tiempo para que se presione el botón.
if(!input(PUSH_BUTTON))
{
printf("\r\nCCS Bootloader V1.0\r\n");
// Indicar al usuario que se está listo para recibir una descarga.
printf("\r\nEsperando la descarga del programa...\r\n");
load_program();
}
bucle_programa();
}
#int_global
void isr(void)
{
jump_to_isr(LOADER_END + 5 * (getenv("BITS_PER_INSTRUCTION") / 8));
}
Lo modifiqué un poco, pero un detalle importante es el retardo que puse para dar tiempo de que se presione el pulsador después de dar el reset.
Sin ese retardo, recuerdo que el SIOW mostraba varios mensajes de error.
Como programa de prueba, usé este:
PHP:
#include <18f2550.h>
#fuses NOUSBDIV,PLL2,NOVREGEN,NOFCMEN
#use delay(internal = 8MHz)
#use rs232(UART1)
//#define BOOTLOADER_MODE2X
#include <bootloader.h>
void main (void)
{
delay_ms(100);
puts("\r\nPrograma de prueba ejecutandose.\r\n");
puts("Debe destellar un LED por el pin RA3 cada 250 ms.\r\n");
while(TRUE)
{
output_toggle(PIN_A3);
delay_ms(250);
}
}
Así como están funcionan correctamente a 8 MHz con oscilador interno y también usando un adaptador de USB a RS-232 (TTL)
Suerte.