#include /* The firware entry point is defined to be at 0x4000 */ #define FW_ENTRY 0x4000 #define LGOTO(x) {_asm movlw high (x) movwf PCLATH movlw (x) movwf PCL _endasm} void load_firmware( void ); void load_firmware( void ) { /* Do whatever needs to be done to load in the firmware * into external memory. */ } void main( void ) { load_firmware(); LGOTO( FW_ENTRY ); } /* We'll provide a function for the firmware to call to output a character * to an LCD display. * * We need the function at a hard address so we can define the entry * point in the firmware. */ #pragma code out_lcd=0x1000 void out_lcd( unsigned char ); void out_lcd( unsigned char ch ) { /* Do whatever needs doing */ } #pragma romdata CONFIG // The following config bit definitions are from the P17C44.INC header file: #define _PMC_MODE 0x7FAF #define _XMC_MODE 0xFFBF #define _MC_MODE 0xFFEF #define _MP_MODE 0xFFFF #define _WDT_NORM 0xFFF3 #define _WDT_OFF 0xFFF3 #define _WDT_64 0xFFF7 #define _WDT_256 0xFFF #define _WDT_1 0xFFFF #define _LF_OSC 0xFFFC #define _RC_OSC 0xFFFD #define _XT_OSC 0xFFFE #define _EC_OSC 0xFFFF rom const unsigned int my_config = _MC_MODE & _WDT_OFF & _XT_OSC ;