Rev 110 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Nov 20 17:42:27 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Main application F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBoot/Source/Main.c $ F:\MCP\projects\CAN\canBoot\Source\Main.c* Last changed: $LastChangedDate: 2006-11-15 18:53:04 +0100 (on, 15 nov 2006) $ F:\MCP\projects\CAN\canBoot\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBoot\Source\Main.c* Revision: $Revision: 110 $ F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CANdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <boot.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/** V E C T O R R E M A P P I N G *******************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x000008 F:\MCP\projects\CAN\canBoot\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000008 ef04 GOTO 0x1008 _asm goto RM_HIGH_INTERRUPT_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00000a f00800000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x000018 F:\MCP\projects\CAN\canBoot\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000018 ef0c GOTO 0x1018 _asm goto RM_LOW_INTERRUPT_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00001a f00800001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic CAN_PROTO_MESSAGE cm; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic DWORD cnt =0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BOOL canGetPacket(void); F:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLWT_Func(void); F:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLWTPOSTINC_Func (void); F:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLRD_Func(void); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#define TICK_SUB_COUNTER_10MS 312 F:\MCP\projects\CAN\canBoot\Source\Main.c#define PACKET_TIMEOUT 14 F:\MCP\projects\CAN\canBoot\Source\Main.c#define BOOTLOADER_INIT_TIMOUT 500 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cDWORD tickCounter = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cDWORD tickSubCounter = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cDWORD tickGet(void); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000038 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBoot\Source\Main.c00003a ffe600003c cfe1 MOVFF 0xfe1,0xfd900003e ffd9000040 0e26 MOVLW 0x26000042 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\Main.cstatic PROGRAM_STATE pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic DWORD t = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic WORD programmerSid=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic PROGRAM_STATE afterAckPgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic DWORD pgmAddress = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cDWORD tBoot; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE pgmData[64]; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cCAN_PROTO_MESSAGE outCmHeart; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Inits F:\MCP\projects\CAN\canBoot\Source\Main.c000044 ec4b CALL 0x896,0x0 mainInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c000046 f004F:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.c000048 ec51 CALL 0x8a2,0x0 canInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c00004a f004#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00004c ecd9 CALL 0xbb2,0x0 tBoot = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00004e f005000050 c010 MOVFF 0x10,0xfde000052 ffde000054 c011 MOVFF 0x11,0xfde000056 ffde000058 c012 MOVFF 0x12,0xfde00005a ffde00005c c013 MOVFF 0x13,0xfdd00005e ffdd000060 52dd MOVF 0xdd,0x1,0x0000062 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBoot\Source\Main.c000064 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBoot\Source\Main.c000066 6ee6 MOVWF 0xe6,0x0000068 6ae6 CLRF 0xe6,0x000006a ece3 CALL 0xbc6,0x000006c f00500006e 52e5 MOVF 0xe5,0x1,0x0000070 52e5 MOVF 0xe5,0x1,0x0000072 082a SUBLW 0x2a000074 e12b BNZ 0xcc{ F:\MCP\projects\CAN\canBoot\Source\Main.c000076 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBoot\Source\Main.c000078 6ee6 MOVWF 0xe6,0x000007a 6ae6 CLRF 0xe6,0x000007c ece3 CALL 0xbc6,0x000007e f005000080 52e5 MOVF 0xe5,0x1,0x0000082 52e5 MOVF 0xe5,0x1,0x0000084 6e00 MOVWF 0x0,0x0000086 c000 MOVFF 0x0,0x1000088 f00100008a 6a00 CLRF 0x0,0x000008c c000 MOVFF 0x0,0xfe600008e ffe6000090 c001 MOVFF 0x1,0xfe6000092 ffe6000094 0e02 MOVLW 0x2000096 6ee6 MOVWF 0xe6,0x0000098 6ae6 CLRF 0xe6,0x000009a ece3 CALL 0xbc6,0x000009c f00500009e 52e5 MOVF 0xe5,0x1,0x00000a0 52e5 MOVF 0xe5,0x1,0x00000a2 52e5 MOVF 0xe5,0x1,0x00000a4 cfe7 MOVFF 0xfe7,0x10000a6 f0010000a8 52e5 MOVF 0xe5,0x1,0x00000aa cfe7 MOVFF 0xfe7,0x00000ac f0000000ae 0100 MOVLB 0x00000b0 2400 ADDWF 0x0,0x0,0x00000b2 6fbb MOVWF 0xbb,0x10000b4 0e00 MOVLW 0x00000b6 2001 ADDWFC 0x1,0x0,0x00000b8 6fbc MOVWF 0xbc,0x10000ba 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBoot\Source\Main.c0000bc 6ee6 MOVWF 0xe6,0x00000be 6ae6 CLRF 0xe6,0x00000c0 ece3 CALL 0xbc6,0x00000c2 f0050000c4 52e5 MOVF 0xe5,0x1,0x00000c6 52e5 MOVF 0xe5,0x1,0x00000c8 0100 MOVLB 0x00000ca 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Send bootloader startup heatbeat F:\MCP\projects\CAN\canBoot\Source\Main.c0000cc 0e04 MOVLW 0x4 outCmHeart.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c0000ce 6adb CLRF 0xdb,0x00000d0 0e08 MOVLW 0x8 outCmHeart.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBoot\Source\Main.c0000d2 6ef3 MOVWF 0xf3,0x00000d4 0e05 MOVLW 0x50000d6 cff3 MOVFF 0xff3,0xfdb0000d8 ffdb0000da 0e06 MOVLW 0x60000dc 6adb CLRF 0xdb,0x00000de 0e07 MOVLW 0x7 outCmHeart.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c0000e0 c0bd MOVFF 0xbd,0xfdb0000e2 ffdb0000e4 0e08 MOVLW 0x8 outCmHeart.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c0000e6 c0bb MOVFF 0xbb,0xfdb0000e8 ffdb0000ea 0e09 MOVLW 0x90000ec c0bc MOVFF 0xbc,0xfdb0000ee ffdb0000f0 0e01 MOVLW 0x1 outCmHeart.data_length = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0000f2 6ef3 MOVWF 0xf3,0x00000f4 0e0a MOVLW 0xa0000f6 cff3 MOVFF 0xff3,0xfdb0000f8 ffdb0000fa 0e0b MOVLW 0xb outCmHeart.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_BOOT_STARTUP; F:\MCP\projects\CAN\canBoot\Source\Main.c0000fc 6adb CLRF 0xdb,0x00000fe 0e02 MOVLW 0x2 while(!canSendMessage(outCmHeart,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000100 6ee6 MOVWF 0xe6,0x0000102 50d9 MOVF 0xd9,0x0,0x0000104 0f04 ADDLW 0x4000106 6ee9 MOVWF 0xe9,0x0000108 cfda MOVFF 0xfda,0xfea00010a ffea00010c cfee MOVFF 0xfee,0xfe600010e ffe6000110 cfee MOVFF 0xfee,0xfe6000112 ffe6000114 cfee MOVFF 0xfee,0xfe6000116 ffe6000118 cfee MOVFF 0xfee,0xfe600011a ffe600011c cfee MOVFF 0xfee,0xfe600011e ffe6000120 cfee MOVFF 0xfee,0xfe6000122 ffe6000124 cfee MOVFF 0xfee,0xfe6000126 ffe6000128 cfee MOVFF 0xfee,0xfe600012a ffe600012c cfee MOVFF 0xfee,0xfe600012e ffe6000130 cfee MOVFF 0xfee,0xfe6000132 ffe6000134 cfee MOVFF 0xfee,0xfe6000136 ffe6000138 cfee MOVFF 0xfee,0xfe600013a ffe600013c cfee MOVFF 0xfee,0xfe600013e ffe6000140 cfee MOVFF 0xfee,0xfe6000142 ffe6000144 cfee MOVFF 0xfee,0xfe6000146 ffe6000148 ec03 CALL 0xa06,0x000014a f00500014c 6e00 MOVWF 0x0,0x000014e 0e10 MOVLW 0x10000150 5ee1 SUBWF 0xe1,0x1,0x0000152 5000 MOVF 0x0,0x0,0x0000154 0900 IORLW 0x0000156 e101 BNZ 0x15a000158 d7d2 BRA 0xfeF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000880 d46c BRA 0x15a for(;;) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.cBYTE i; F:\MCP\projects\CAN\canBoot\Source\Main.cCAN_PROTO_MESSAGE outCm; F:\MCP\projects\CAN\canBoot\Source\Main.c00015a dbcc RCALL 0x8f4 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c00015c 6ee7 MOVWF 0xe7,0x000015e 0e23 MOVLW 0x23000160 cfe7 MOVFF 0xfe7,0xfdb000162 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c000164 0100 MOVLB 0x0 tickSubCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c000166 2bb7 INCF 0xb7,0x1,0x1000168 0e00 MOVLW 0x000016a 23b8 ADDWFC 0xb8,0x1,0x100016c 23b9 ADDWFC 0xb9,0x1,0x100016e 23ba ADDWFC 0xba,0x1,0x1000170 80d8 BSF 0xd8,0x0,0x0 if (tickSubCounter>TICK_SUB_COUNTER_10MS) F:\MCP\projects\CAN\canBoot\Source\Main.c000172 0e38 MOVLW 0x38000174 0100 MOVLB 0x0000176 55b7 SUBFWB 0xb7,0x0,0x1000178 0e01 MOVLW 0x100017a 55b8 SUBFWB 0xb8,0x0,0x100017c 0e00 MOVLW 0x000017e 55b9 SUBFWB 0xb9,0x0,0x1000180 0e00 MOVLW 0x0000182 55ba SUBFWB 0xba,0x0,0x1000184 e20c BC 0x19e{ F:\MCP\projects\CAN\canBoot\Source\Main.c000186 0100 MOVLB 0x0 tickCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c000188 2bb3 INCF 0xb3,0x1,0x100018a 0e00 MOVLW 0x000018c 23b4 ADDWFC 0xb4,0x1,0x100018e 23b5 ADDWFC 0xb5,0x1,0x1000190 23b6 ADDWFC 0xb6,0x1,0x1000192 0100 MOVLB 0x0 tickSubCounter=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000194 6bb7 CLRF 0xb7,0x1000196 6bb8 CLRF 0xb8,0x1000198 6bb9 CLRF 0xb9,0x100019a 6bba CLRF 0xba,0x100019c 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00019e 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c0001a0 51be MOVF 0xbe,0x0,0x10001a2 0a05 XORLW 0x50001a4 e101 BNZ 0x1a80001a6 d366 BRA 0x8740001a8 0a01 XORLW 0x10001aa e101 BNZ 0x1ae0001ac d2b4 BRA 0x7160001ae 0a07 XORLW 0x70001b0 e101 BNZ 0x1b40001b2 d1bf BRA 0x5320001b4 0a01 XORLW 0x10001b6 e101 BNZ 0x1ba0001b8 d110 BRA 0x3da0001ba 0a03 XORLW 0x30001bc e101 BNZ 0x1c00001be d0b9 BRA 0x3320001c0 0a01 XORLW 0x10001c2 e001 BZ 0x1c60001c4 d35a BRA 0x87a{ F:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWATING_START: F:\MCP\projects\CAN\canBoot\Source\Main.c// Check if there is bootloader start packet F:\MCP\projects\CAN\canBoot\Source\Main.c0001c6 0e23 MOVLW 0x23 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_INIT && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c0001c8 04db DECF 0xdb,0x0,0x00001ca e173 BNZ 0x2b20001cc 0100 MOVLB 0x00001ce 5160 MOVF 0x60,0x0,0x10001d0 e170 BNZ 0x2b20001d2 0100 MOVLB 0x00001d4 0e01 MOVLW 0x10001d6 1961 XORWF 0x61,0x0,0x10001d8 e101 BNZ 0x1dc0001da 5162 MOVF 0x62,0x0,0x10001dc e16a BNZ 0x2b20001de c06c MOVFF 0x6c,0x20001e0 f0020001e2 c002 MOVFF 0x2,0x30001e4 f0030001e6 6a02 CLRF 0x2,0x00001e8 0100 MOVLB 0x00001ea 516b MOVF 0x6b,0x0,0x10001ec 0100 MOVLB 0x00001ee 2402 ADDWF 0x2,0x0,0x00001f0 6e00 MOVWF 0x0,0x00001f2 0e00 MOVLW 0x00001f4 2003 ADDWFC 0x3,0x0,0x00001f6 6e01 MOVWF 0x1,0x00001f8 0100 MOVLB 0x00001fa 51bb MOVF 0xbb,0x0,0x10001fc 1800 XORWF 0x0,0x0,0x00001fe e102 BNZ 0x204000200 51bc MOVF 0xbc,0x0,0x1000202 1801 XORWF 0x1,0x0,0x0000204 e156 BNZ 0x2b2000206 0100 MOVLB 0x0000208 51bd MOVF 0xbd,0x0,0x100020a 0100 MOVLB 0x000020c 5d63 SUBWF 0x63,0x0,0x100020e e151 BNZ 0x2b2{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c000210 c069 MOVFF 0x69,0x0 pgmAddress = (((DWORD)cm.data[BOOT_DATA_ADDRU_INDEX])<<16)+(((DWORD)cm.data[BOOT_DATA_ADDRH_INDEX])<<8)+((DWORD)cm.data[BOOT_DATA_ADDRL_INDEX]); F:\MCP\projects\CAN\canBoot\Source\Main.c000212 f000000214 6a01 CLRF 0x1,0x0000216 6a02 CLRF 0x2,0x0000218 6a03 CLRF 0x3,0x000021a 0e10 MOVLW 0x1000021c 0b1f ANDLW 0x1f00021e e007 BZ 0x22e000220 90d8 BCF 0xd8,0x0,0x0000222 3600 RLCF 0x0,0x1,0x0000224 3601 RLCF 0x1,0x1,0x0000226 3602 RLCF 0x2,0x1,0x0000228 3603 RLCF 0x3,0x1,0x000022a 06e8 DECF 0xe8,0x1,0x000022c e1f9 BNZ 0x22000022e c068 MOVFF 0x68,0x4000230 f004000232 6a05 CLRF 0x5,0x0000234 6a06 CLRF 0x6,0x0000236 6a07 CLRF 0x7,0x0000238 0e08 MOVLW 0x800023a 0b1f ANDLW 0x1f00023c e007 BZ 0x24c00023e 90d8 BCF 0xd8,0x0,0x0000240 3604 RLCF 0x4,0x1,0x0000242 3605 RLCF 0x5,0x1,0x0000244 3606 RLCF 0x6,0x1,0x0000246 3607 RLCF 0x7,0x1,0x0000248 06e8 DECF 0xe8,0x1,0x000024a e1f9 BNZ 0x23e00024c 5004 MOVF 0x4,0x0,0x000024e 2600 ADDWF 0x0,0x1,0x0000250 5005 MOVF 0x5,0x0,0x0000252 2201 ADDWFC 0x1,0x1,0x0000254 5006 MOVF 0x6,0x0,0x0000256 2202 ADDWFC 0x2,0x1,0x0000258 5007 MOVF 0x7,0x0,0x000025a 2203 ADDWFC 0x3,0x1,0x000025c c067 MOVFF 0x67,0x800025e f008000260 6a09 CLRF 0x9,0x0000262 6a0a CLRF 0xa,0x0000264 6a0b CLRF 0xb,0x0000266 5000 MOVF 0x0,0x0,0x0000268 2408 ADDWF 0x8,0x0,0x000026a 0100 MOVLB 0x000026c 6fc7 MOVWF 0xc7,0x100026e 5001 MOVF 0x1,0x0,0x0000270 2009 ADDWFC 0x9,0x0,0x0000272 0100 MOVLB 0x0000274 6fc8 MOVWF 0xc8,0x1000276 5002 MOVF 0x2,0x0,0x0000278 200a ADDWFC 0xa,0x0,0x000027a 0100 MOVLB 0x000027c 6fc9 MOVWF 0xc9,0x100027e 5003 MOVF 0x3,0x0,0x0000280 200b ADDWFC 0xb,0x0,0x0000282 0100 MOVLB 0x0000284 6fca MOVWF 0xca,0x1000286 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000288 f0c300028a c065 MOVFF 0x65,0xc400028c f0c400028e ecd9 CALL 0xbb2,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000290 f005000292 c010 MOVFF 0x10,0xbf000294 f0bf000296 c011 MOVFF 0x11,0xc0000298 f0c000029a c012 MOVFF 0x12,0xc100029c f0c100029e c013 MOVFF 0x13,0xc20002a0 f0c20002a2 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a4 6bc5 CLRF 0xc5,0x10002a6 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a8 0e02 MOVLW 0x20002aa 6fc6 MOVWF 0xc6,0x10002ac 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0002ae 0e01 MOVLW 0x10002b0 6fbe MOVWF 0xbe,0x1// save pgm adress. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Bootloader timeout F:\MCP\projects\CAN\canBoot\Source\Main.c0002b2 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002b4 ffe90002b6 cfda MOVFF 0xfda,0xfea0002b8 ffea0002ba cfee MOVFF 0xfee,0x40002bc f0040002be cfee MOVFF 0xfee,0x50002c0 f0050002c2 cfee MOVFF 0xfee,0x60002c4 f0060002c6 cfef MOVFF 0xfef,0x70002c8 f0070002ca c004 MOVFF 0x4,0xfe60002cc ffe60002ce c005 MOVFF 0x5,0xfe60002d0 ffe60002d2 c006 MOVFF 0x6,0xfe60002d4 ffe60002d6 c007 MOVFF 0x7,0xfe60002d8 ffe60002da ecd9 CALL 0xbb2,0x00002dc f0050002de 52e5 MOVF 0xe5,0x1,0x00002e0 cfe7 MOVFF 0xfe7,0x70002e2 f0070002e4 52e5 MOVF 0xe5,0x1,0x00002e6 cfe7 MOVFF 0xfe7,0x60002e8 f0060002ea 52e5 MOVF 0xe5,0x1,0x00002ec cfe7 MOVFF 0xfe7,0x50002ee f0050002f0 52e5 MOVF 0xe5,0x1,0x00002f2 cfe7 MOVFF 0xfe7,0x40002f4 f0040002f6 0100 MOVLB 0x00002f8 5004 MOVF 0x4,0x0,0x00002fa 5c10 SUBWF 0x10,0x0,0x00002fc 6e00 MOVWF 0x0,0x00002fe 0100 MOVLB 0x0000300 5005 MOVF 0x5,0x0,0x0000302 5811 SUBWFB 0x11,0x0,0x0000304 6e01 MOVWF 0x1,0x0000306 0100 MOVLB 0x0000308 5006 MOVF 0x6,0x0,0x000030a 5812 SUBWFB 0x12,0x0,0x000030c 6e02 MOVWF 0x2,0x000030e 0100 MOVLB 0x0000310 5007 MOVF 0x7,0x0,0x0000312 5813 SUBWFB 0x13,0x0,0x0000314 6e03 MOVWF 0x3,0x0000316 80d8 BSF 0xd8,0x0,0x0000318 0ef4 MOVLW 0xf400031a 5400 SUBFWB 0x0,0x0,0x000031c 0e01 MOVLW 0x100031e 5401 SUBFWB 0x1,0x0,0x0000320 0e00 MOVLW 0x0000322 5402 SUBFWB 0x2,0x0,0x0000324 0e00 MOVLW 0x0000326 5403 SUBFWB 0x3,0x0,0x0000328 e203 BC 0x330{ F:\MCP\projects\CAN\canBoot\Source\Main.c00032a 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00032c 0e05 MOVLW 0x500032e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000330 d2a7 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsSEND_ACK: F:\MCP\projects\CAN\canBoot\Source\Main.c// send ack F:\MCP\projects\CAN\canBoot\Source\Main.c000332 0e14 MOVLW 0x14 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000334 6adb CLRF 0xdb,0x0000336 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000338 6ef3 MOVWF 0xf3,0x000033a 0e15 MOVLW 0x1500033c cff3 MOVFF 0xff3,0xfdb00033e ffdb000340 0e16 MOVLW 0x16000342 6adb CLRF 0xdb,0x0000344 0e17 MOVLW 0x17 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000346 c0bd MOVFF 0xbd,0xfdb000348 ffdb00034a 0e18 MOVLW 0x18 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c00034c c0bb MOVFF 0xbb,0xfdb00034e ffdb000350 0e19 MOVLW 0x19000352 c0bc MOVFF 0xbc,0xfdb000354 ffdb000356 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000358 6ef3 MOVWF 0xf3,0x000035a 0e1a MOVLW 0x1a00035c cff3 MOVFF 0xff3,0xfdb00035e ffdb000360 0e1f MOVLW 0x1f outCm.data[BOOT_DATA_ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000362 c0c5 MOVFF 0xc5,0xfdb000364 ffdb000366 ecd9 CALL 0xbb2,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000368 f00500036a c010 MOVFF 0x10,0xbf00036c f0bf00036e c011 MOVFF 0x11,0xc0000370 f0c0000372 c012 MOVFF 0x12,0xc1000374 f0c1000376 c013 MOVFF 0x13,0xc2000378 f0c200037a c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c00037c f0beF:\MCP\projects\CAN\canBoot\Source\Main.c00037e 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000380 6ee6 MOVWF 0xe6,0x0000382 50d9 MOVF 0xd9,0x0,0x0000384 0f14 ADDLW 0x14000386 6ee9 MOVWF 0xe9,0x0000388 cfda MOVFF 0xfda,0xfea00038a ffea00038c cfee MOVFF 0xfee,0xfe600038e ffe6000390 cfee MOVFF 0xfee,0xfe6000392 ffe6000394 cfee MOVFF 0xfee,0xfe6000396 ffe6000398 cfee MOVFF 0xfee,0xfe600039a ffe600039c cfee MOVFF 0xfee,0xfe600039e ffe60003a0 cfee MOVFF 0xfee,0xfe60003a2 ffe60003a4 cfee MOVFF 0xfee,0xfe60003a6 ffe60003a8 cfee MOVFF 0xfee,0xfe60003aa ffe60003ac cfee MOVFF 0xfee,0xfe60003ae ffe60003b0 cfee MOVFF 0xfee,0xfe60003b2 ffe60003b4 cfee MOVFF 0xfee,0xfe60003b6 ffe60003b8 cfee MOVFF 0xfee,0xfe60003ba ffe60003bc cfee MOVFF 0xfee,0xfe60003be ffe60003c0 cfee MOVFF 0xfee,0xfe60003c2 ffe60003c4 cfee MOVFF 0xfee,0xfe60003c6 ffe60003c8 db1e RCALL 0xa060003ca 6e00 MOVWF 0x0,0x00003cc 0e10 MOVLW 0x100003ce 5ee1 SUBWF 0xe1,0x1,0x00003d0 5000 MOVF 0x0,0x0,0x00003d2 0900 IORLW 0x00003d4 e101 BNZ 0x3d80003d6 d7d3 BRA 0x37e0003d8 d253 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWAIT_FIRST_PGM_PACKET: F:\MCP\projects\CAN\canBoot\Source\Main.c// wait for first pgm packet. F:\MCP\projects\CAN\canBoot\Source\Main.c0003da dbeb RCALL 0xbb2 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0003dc 0100 MOVLB 0x00003de 51bf MOVF 0xbf,0x0,0x10003e0 5c10 SUBWF 0x10,0x0,0x00003e2 6e00 MOVWF 0x0,0x00003e4 0100 MOVLB 0x00003e6 51c0 MOVF 0xc0,0x0,0x10003e8 5811 SUBWFB 0x11,0x0,0x00003ea 6e01 MOVWF 0x1,0x00003ec 0100 MOVLB 0x00003ee 51c1 MOVF 0xc1,0x0,0x10003f0 5812 SUBWFB 0x12,0x0,0x00003f2 6e02 MOVWF 0x2,0x00003f4 0100 MOVLB 0x00003f6 51c2 MOVF 0xc2,0x0,0x10003f8 5813 SUBWFB 0x13,0x0,0x00003fa 6e03 MOVWF 0x3,0x00003fc 80d8 BSF 0xd8,0x0,0x00003fe 0e0e MOVLW 0xe000400 5400 SUBFWB 0x0,0x0,0x0000402 0e00 MOVLW 0x0000404 5401 SUBFWB 0x1,0x0,0x0000406 0e00 MOVLW 0x0000408 5402 SUBFWB 0x2,0x0,0x000040a 0e00 MOVLW 0x000040c 5403 SUBFWB 0x3,0x0,0x000040e e208 BC 0x420{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c000410 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000412 6bc5 CLRF 0xc5,0x1000414 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000416 0e02 MOVLW 0x2000418 6fc6 MOVWF 0xc6,0x100041a 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00041c 0e01 MOVLW 0x100041e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If programming packet... F:\MCP\projects\CAN\canBoot\Source\Main.c000420 0e23 MOVLW 0x23 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3E3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000422 04db DECF 0xdb,0x0,0x0000424 e001 BZ 0x428000426 d084 BRA 0x530000428 0100 MOVLB 0x000042a 5160 MOVF 0x60,0x0,0x100042c e001 BZ 0x43000042e d080 BRA 0x530000430 0ee3 MOVLW 0xe3000432 0100 MOVLB 0x0000434 1561 ANDWF 0x61,0x0,0x1000436 6e00 MOVWF 0x0,0x0000438 0e03 MOVLW 0x300043a 0100 MOVLB 0x000043c 1562 ANDWF 0x62,0x0,0x100043e 6e01 MOVWF 0x1,0x0000440 0e03 MOVLW 0x3000442 1800 XORWF 0x0,0x0,0x0000444 e101 BNZ 0x448000446 5001 MOVF 0x1,0x0,0x0000448 e173 BNZ 0x53000044a 0100 MOVLB 0x000044c 51bd MOVF 0xbd,0x0,0x100044e 0100 MOVLB 0x0000450 5d63 SUBWF 0x63,0x0,0x1000452 e16e BNZ 0x530000454 0100 MOVLB 0x0000456 51c3 MOVF 0xc3,0x0,0x1000458 0100 MOVLB 0x000045a 1964 XORWF 0x64,0x0,0x100045c e104 BNZ 0x46600045e 0100 MOVLB 0x0000460 51c4 MOVF 0xc4,0x0,0x1000462 0100 MOVLB 0x0000464 1965 XORWF 0x65,0x0,0x1000466 e164 BNZ 0x530{ F:\MCP\projects\CAN\canBoot\Source\Main.c000468 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00046a 0100 MOVLB 0x000046c 1561 ANDWF 0x61,0x0,0x100046e 6e00 MOVWF 0x0,0x0000470 6a01 CLRF 0x1,0x0000472 90d8 BCF 0xd8,0x0,0x0000474 3201 RRCF 0x1,0x1,0x0000476 3200 RRCF 0x0,0x1,0x0000478 90d8 BCF 0xd8,0x0,0x000047a 3201 RRCF 0x1,0x1,0x000047c 3200 RRCF 0x0,0x1,0x000047e 0e08 MOVLW 0x8000480 0200 MULWF 0x0,0x0000482 0e24 MOVLW 0x24000484 cff3 MOVFF 0xff3,0xfdb000486 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c000488 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00048a 0e08 MOVLW 0x800048c 6fcb MOVWF 0xcb,0x100048e 0e24 MOVLW 0x24 pgmData[localIndex+0]=cm.data[0]; pgmData[localIndex+1]=cm.data[1]; pgmData[localIndex+2]=cm.data[2]; pgmData[localIndex+3]=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000490 50db MOVF 0xdb,0x0,0x0000492 6aea CLRF 0xea,0x0000494 0f6f ADDLW 0x6f000496 6ee9 MOVWF 0xe9,0x0000498 0e00 MOVLW 0x000049a 22ea ADDWFC 0xea,0x1,0x000049c c067 MOVFF 0x67,0xfef00049e ffef0004a0 0e24 MOVLW 0x240004a2 28db INCF 0xdb,0x0,0x00004a4 6aea CLRF 0xea,0x00004a6 0f6f ADDLW 0x6f0004a8 6ee9 MOVWF 0xe9,0x00004aa 0e00 MOVLW 0x00004ac 22ea ADDWFC 0xea,0x1,0x00004ae c068 MOVFF 0x68,0xfef0004b0 ffef0004b2 0e24 MOVLW 0x240004b4 50db MOVF 0xdb,0x0,0x00004b6 0f02 ADDLW 0x20004b8 6aea CLRF 0xea,0x00004ba 0f6f ADDLW 0x6f0004bc 6ee9 MOVWF 0xe9,0x00004be 0e00 MOVLW 0x00004c0 22ea ADDWFC 0xea,0x1,0x00004c2 c069 MOVFF 0x69,0xfef0004c4 ffef0004c6 0e24 MOVLW 0x240004c8 50db MOVF 0xdb,0x0,0x00004ca 0f03 ADDLW 0x30004cc 6aea CLRF 0xea,0x00004ce 0f6f ADDLW 0x6f0004d0 6ee9 MOVWF 0xe9,0x00004d2 0e00 MOVLW 0x00004d4 22ea ADDWFC 0xea,0x1,0x00004d6 c06a MOVFF 0x6a,0xfef0004d8 ffef0004da 0e24 MOVLW 0x24 pgmData[localIndex+4]=cm.data[4]; pgmData[localIndex+5]=cm.data[5]; pgmData[localIndex+6]=cm.data[6]; pgmData[localIndex+7]=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c0004dc 50db MOVF 0xdb,0x0,0x00004de 0f04 ADDLW 0x40004e0 6aea CLRF 0xea,0x00004e2 0f6f ADDLW 0x6f0004e4 6ee9 MOVWF 0xe9,0x00004e6 0e00 MOVLW 0x00004e8 22ea ADDWFC 0xea,0x1,0x00004ea c06b MOVFF 0x6b,0xfef0004ec ffef0004ee 0e24 MOVLW 0x240004f0 50db MOVF 0xdb,0x0,0x00004f2 0f05 ADDLW 0x50004f4 6aea CLRF 0xea,0x00004f6 0f6f ADDLW 0x6f0004f8 6ee9 MOVWF 0xe9,0x00004fa 0e00 MOVLW 0x00004fc 22ea ADDWFC 0xea,0x1,0x00004fe c06c MOVFF 0x6c,0xfef000500 ffef000502 0e24 MOVLW 0x24000504 50db MOVF 0xdb,0x0,0x0000506 0f06 ADDLW 0x6000508 6aea CLRF 0xea,0x000050a 0f6f ADDLW 0x6f00050c 6ee9 MOVWF 0xe9,0x000050e 0e00 MOVLW 0x0000510 22ea ADDWFC 0xea,0x1,0x0000512 c06d MOVFF 0x6d,0xfef000514 ffef000516 0e24 MOVLW 0x24000518 50db MOVF 0xdb,0x0,0x000051a 0f07 ADDLW 0x700051c 6aea CLRF 0xea,0x000051e 0f6f ADDLW 0x6f000520 6ee9 MOVWF 0xe9,0x0000522 0e00 MOVLW 0x0000524 22ea ADDWFC 0xea,0x1,0x0000526 c06e MOVFF 0x6e,0xfef000528 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00052a 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00052c 0e03 MOVLW 0x300052e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000530 d1a7 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWAIT_PGM_PACKET: F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If programming packet... F:\MCP\projects\CAN\canBoot\Source\Main.c000532 0e23 MOVLW 0x23 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3E3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000534 04db DECF 0xdb,0x0,0x0000536 e001 BZ 0x53a000538 d084 BRA 0x64200053a 0100 MOVLB 0x000053c 5160 MOVF 0x60,0x0,0x100053e e001 BZ 0x542000540 d080 BRA 0x642000542 0ee3 MOVLW 0xe3000544 0100 MOVLB 0x0000546 1561 ANDWF 0x61,0x0,0x1000548 6e00 MOVWF 0x0,0x000054a 0e03 MOVLW 0x300054c 0100 MOVLB 0x000054e 1562 ANDWF 0x62,0x0,0x1000550 6e01 MOVWF 0x1,0x0000552 0e03 MOVLW 0x3000554 1800 XORWF 0x0,0x0,0x0000556 e101 BNZ 0x55a000558 5001 MOVF 0x1,0x0,0x000055a e173 BNZ 0x64200055c 0100 MOVLB 0x000055e 51bd MOVF 0xbd,0x0,0x1000560 0100 MOVLB 0x0000562 5d63 SUBWF 0x63,0x0,0x1000564 e16e BNZ 0x642000566 0100 MOVLB 0x0000568 51c3 MOVF 0xc3,0x0,0x100056a 0100 MOVLB 0x000056c 1964 XORWF 0x64,0x0,0x100056e e104 BNZ 0x578000570 0100 MOVLB 0x0000572 51c4 MOVF 0xc4,0x0,0x1000574 0100 MOVLB 0x0000576 1965 XORWF 0x65,0x0,0x1000578 e164 BNZ 0x642{ F:\MCP\projects\CAN\canBoot\Source\Main.c00057a 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00057c 0100 MOVLB 0x000057e 1561 ANDWF 0x61,0x0,0x1000580 6e00 MOVWF 0x0,0x0000582 6a01 CLRF 0x1,0x0000584 90d8 BCF 0xd8,0x0,0x0000586 3201 RRCF 0x1,0x1,0x0000588 3200 RRCF 0x0,0x1,0x000058a 90d8 BCF 0xd8,0x0,0x000058c 3201 RRCF 0x1,0x1,0x000058e 3200 RRCF 0x0,0x1,0x0000590 0e08 MOVLW 0x8000592 0200 MULWF 0x0,0x0000594 0e25 MOVLW 0x25000596 cff3 MOVFF 0xff3,0xfdb000598 ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c00059a 0e25 MOVLW 0x25 pgmData[localIndex+0]=cm.data[0]; pgmData[localIndex+1]=cm.data[1]; pgmData[localIndex+2]=cm.data[2]; pgmData[localIndex+3]=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c00059c 50db MOVF 0xdb,0x0,0x000059e 6aea CLRF 0xea,0x00005a0 0f6f ADDLW 0x6f0005a2 6ee9 MOVWF 0xe9,0x00005a4 0e00 MOVLW 0x00005a6 22ea ADDWFC 0xea,0x1,0x00005a8 c067 MOVFF 0x67,0xfef0005aa ffef0005ac 0e25 MOVLW 0x250005ae 28db INCF 0xdb,0x0,0x00005b0 6aea CLRF 0xea,0x00005b2 0f6f ADDLW 0x6f0005b4 6ee9 MOVWF 0xe9,0x00005b6 0e00 MOVLW 0x00005b8 22ea ADDWFC 0xea,0x1,0x00005ba c068 MOVFF 0x68,0xfef0005bc ffef0005be 0e25 MOVLW 0x250005c0 50db MOVF 0xdb,0x0,0x00005c2 0f02 ADDLW 0x20005c4 6aea CLRF 0xea,0x00005c6 0f6f ADDLW 0x6f0005c8 6ee9 MOVWF 0xe9,0x00005ca 0e00 MOVLW 0x00005cc 22ea ADDWFC 0xea,0x1,0x00005ce c069 MOVFF 0x69,0xfef0005d0 ffef0005d2 0e25 MOVLW 0x250005d4 50db MOVF 0xdb,0x0,0x00005d6 0f03 ADDLW 0x30005d8 6aea CLRF 0xea,0x00005da 0f6f ADDLW 0x6f0005dc 6ee9 MOVWF 0xe9,0x00005de 0e00 MOVLW 0x00005e0 22ea ADDWFC 0xea,0x1,0x00005e2 c06a MOVFF 0x6a,0xfef0005e4 ffef0005e6 0e25 MOVLW 0x25 pgmData[localIndex+4]=cm.data[4]; pgmData[localIndex+5]=cm.data[5]; pgmData[localIndex+6]=cm.data[6]; pgmData[localIndex+7]=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c0005e8 50db MOVF 0xdb,0x0,0x00005ea 0f04 ADDLW 0x40005ec 6aea CLRF 0xea,0x00005ee 0f6f ADDLW 0x6f0005f0 6ee9 MOVWF 0xe9,0x00005f2 0e00 MOVLW 0x00005f4 22ea ADDWFC 0xea,0x1,0x00005f6 c06b MOVFF 0x6b,0xfef0005f8 ffef0005fa 0e25 MOVLW 0x250005fc 50db MOVF 0xdb,0x0,0x00005fe 0f05 ADDLW 0x5000600 6aea CLRF 0xea,0x0000602 0f6f ADDLW 0x6f000604 6ee9 MOVWF 0xe9,0x0000606 0e00 MOVLW 0x0000608 22ea ADDWFC 0xea,0x1,0x000060a c06c MOVFF 0x6c,0xfef00060c ffef00060e 0e25 MOVLW 0x25000610 50db MOVF 0xdb,0x0,0x0000612 0f06 ADDLW 0x6000614 6aea CLRF 0xea,0x0000616 0f6f ADDLW 0x6f000618 6ee9 MOVWF 0xe9,0x000061a 0e00 MOVLW 0x000061c 22ea ADDWFC 0xea,0x1,0x000061e c06d MOVFF 0x6d,0xfef000620 ffef000622 0e25 MOVLW 0x25000624 50db MOVF 0xdb,0x0,0x0000626 0f07 ADDLW 0x7000628 6aea CLRF 0xea,0x000062a 0f6f ADDLW 0x6f00062c 6ee9 MOVWF 0xe9,0x000062e 0e00 MOVLW 0x0000630 22ea ADDWFC 0xea,0x1,0x0000632 c06e MOVFF 0x6e,0xfef000634 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000636 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000638 0100 MOVLB 0x000063a 27cb ADDWF 0xcb,0x1,0x100063c 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00063e 0e03 MOVLW 0x3000640 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If adress packet (control packet).. F:\MCP\projects\CAN\canBoot\Source\Main.c000642 0e23 MOVLW 0x23 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_ADDR && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000644 04db DECF 0xdb,0x0,0x0000646 e120 BNZ 0x688000648 0100 MOVLB 0x000064a 5160 MOVF 0x60,0x0,0x100064c e11d BNZ 0x68800064e 0100 MOVLB 0x0000650 0e02 MOVLW 0x2000652 1961 XORWF 0x61,0x0,0x1000654 e101 BNZ 0x658000656 5162 MOVF 0x62,0x0,0x1000658 e117 BNZ 0x68800065a 0100 MOVLB 0x000065c 51bd MOVF 0xbd,0x0,0x100065e 0100 MOVLB 0x0000660 5d63 SUBWF 0x63,0x0,0x1000662 e112 BNZ 0x688000664 0100 MOVLB 0x0000666 51c3 MOVF 0xc3,0x0,0x1000668 0100 MOVLB 0x000066a 1964 XORWF 0x64,0x0,0x100066c e104 BNZ 0x67600066e 0100 MOVLB 0x0000670 51c4 MOVF 0xc4,0x0,0x1000672 0100 MOVLB 0x0000674 1965 XORWF 0x65,0x0,0x1000676 e108 BNZ 0x688{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Send ack and goto wait first packet. F:\MCP\projects\CAN\canBoot\Source\Main.c// save adress. F:\MCP\projects\CAN\canBoot\Source\Main.c000678 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00067a 6bc5 CLRF 0xc5,0x100067c 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00067e 0e02 MOVLW 0x2000680 6fc6 MOVWF 0xc6,0x1000682 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000684 0e01 MOVLW 0x1000686 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If end packet... F:\MCP\projects\CAN\canBoot\Source\Main.c000688 0e23 MOVLW 0x23 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_DONE && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c00068a 04db DECF 0xdb,0x0,0x000068c e138 BNZ 0x6fe00068e 0100 MOVLB 0x0000690 5160 MOVF 0x60,0x0,0x1000692 e135 BNZ 0x6fe000694 0100 MOVLB 0x0000696 0e05 MOVLW 0x5000698 1961 XORWF 0x61,0x0,0x100069a e101 BNZ 0x69e00069c 5162 MOVF 0x62,0x0,0x100069e e12f BNZ 0x6fe0006a0 0100 MOVLB 0x00006a2 51bd MOVF 0xbd,0x0,0x10006a4 0100 MOVLB 0x00006a6 5d63 SUBWF 0x63,0x0,0x10006a8 e12a BNZ 0x6fe0006aa 0100 MOVLB 0x00006ac 51c3 MOVF 0xc3,0x0,0x10006ae 0100 MOVLB 0x00006b0 1964 XORWF 0x64,0x0,0x10006b2 e104 BNZ 0x6bc0006b4 0100 MOVLB 0x00006b6 51c4 MOVF 0xc4,0x0,0x10006b8 0100 MOVLB 0x00006ba 1965 XORWF 0x65,0x0,0x10006bc e120 BNZ 0x6fe{ F:\MCP\projects\CAN\canBoot\Source\Main.c// write program. F:\MCP\projects\CAN\canBoot\Source\Main.c// If no bytes received at all, assume end. F:\MCP\projects\CAN\canBoot\Source\Main.c// If not 64 bytes received, send error ack and wait for first packet. F:\MCP\projects\CAN\canBoot\Source\Main.c// If 64, write. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0006be 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c0006c0 51cb MOVF 0xcb,0x0,0x10006c2 e109 BNZ 0x6d6{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c0006c4 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0006c6 6bc5 CLRF 0xc5,0x10006c8 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ca 0e05 MOVLW 0x50006cc 6fc6 MOVWF 0xc6,0x10006ce 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0006d0 0e01 MOVLW 0x10006d2 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0006d4 d014 BRA 0x6fe else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0006d6 0e40 MOVLW 0x400006d8 0100 MOVLB 0x00006da 5dcb SUBWF 0xcb,0x0,0x10006dc e00a BZ 0x6f2{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006de 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0006e0 0e01 MOVLW 0x10006e2 6fc5 MOVWF 0xc5,0x10006e4 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0006e6 0e02 MOVLW 0x20006e8 6fc6 MOVWF 0xc6,0x10006ea 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ec 0e01 MOVLW 0x10006ee 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0006f0 d006 BRA 0x6fe else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006f2 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0006f4 0e04 MOVLW 0x40006f6 6fbe MOVWF 0xbe,0x10006f8 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fa 0e05 MOVLW 0x50006fc 6fc6 MOVWF 0xc6,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If bytes received 64, write.. F:\MCP\projects\CAN\canBoot\Source\Main.c0006fe 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c000700 0100 MOVLB 0x0000702 5dcb SUBWF 0xcb,0x0,0x1000704 e107 BNZ 0x714{ F:\MCP\projects\CAN\canBoot\Source\Main.c000706 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c000708 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c00070a 0e04 MOVLW 0x400070c 6fbe MOVWF 0xbe,0x100070e 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000710 0e03 MOVLW 0x3000712 6fc6 MOVWF 0xc6,0x1// TODO! Send ack more than once.. F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000714 d0b5 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWRITE_PROGRAM: F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000716 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Write program and send ack. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Check addr limit F:\MCP\projects\CAN\canBoot\Source\Main.c000718 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c00071a 0100 MOVLB 0x000071c 5dc7 SUBWF 0xc7,0x0,0x100071e 0e10 MOVLW 0x10000720 59c8 SUBWFB 0xc8,0x0,0x1000722 0e00 MOVLW 0x0000724 59c9 SUBWFB 0xc9,0x0,0x1000726 0e00 MOVLW 0x0000728 59ca SUBWFB 0xca,0x0,0x100072a e206 BC 0x738{ F:\MCP\projects\CAN\canBoot\Source\Main.c00072c 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00072e 0e01 MOVLW 0x1000730 6fc5 MOVWF 0xc5,0x1000732 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000734 0e01 MOVLW 0x1000736 6fbe MOVWF 0xbe,0x1//Not allowed to write here! F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//Load Table pointer registers with base address to erase. F:\MCP\projects\CAN\canBoot\Source\Main.c000738 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00073a f00000073c c0c8 MOVFF 0xc8,0x100073e f001000740 c0c9 MOVFF 0xc9,0x2000742 f002000744 c0ca MOVFF 0xca,0x3000746 f003000748 6a00 CLRF 0x0,0x000074a 6a01 CLRF 0x1,0x000074c 6a03 CLRF 0x3,0x000074e 0e10 MOVLW 0x10000750 90d8 BCF 0xd8,0x0,0x0000752 3203 RRCF 0x3,0x1,0x0000754 3202 RRCF 0x2,0x1,0x0000756 3201 RRCF 0x1,0x1,0x0000758 3200 RRCF 0x0,0x1,0x000075a 06e8 DECF 0xe8,0x1,0x000075c e1f9 BNZ 0x75000075e 5000 MOVF 0x0,0x0,0x0000760 6ef8 MOVWF 0xf8,0x0000762 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000764 f000000766 c0c8 MOVFF 0xc8,0x1000768 f00100076a c0c9 MOVFF 0xc9,0x200076c f00200076e c0ca MOVFF 0xca,0x3000770 f003000772 6a00 CLRF 0x0,0x0000774 6a02 CLRF 0x2,0x0000776 6a03 CLRF 0x3,0x0000778 0e08 MOVLW 0x800077a 90d8 BCF 0xd8,0x0,0x000077c 3203 RRCF 0x3,0x1,0x000077e 3202 RRCF 0x2,0x1,0x0000780 3201 RRCF 0x1,0x1,0x0000782 3200 RRCF 0x0,0x1,0x0000784 06e8 DECF 0xe8,0x1,0x0000786 e1f9 BNZ 0x77a000788 5000 MOVF 0x0,0x0,0x000078a 6ef7 MOVWF 0xf7,0x000078c 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c00078e 51c7 MOVF 0xc7,0x0,0x1000790 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000792 8ea6 BSF 0xa6,0x7,0x0 EECON1bits.EEPGD = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c// access Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000794 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c// enable write to memory F:\MCP\projects\CAN\canBoot\Source\Main.c000796 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c// enable Row Erase operation F:\MCP\projects\CAN\canBoot\Source\Main.c000798 88a6 BSF 0xa6,0x4,0x0 EECON1bits.FREE = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c// disable interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c00079a 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Do it! F:\MCP\projects\CAN\canBoot\Source\Main.c00079c 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c00079e 6ea7 MOVWF 0xa7,0x00007a0 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 6ea7 MOVWF 0xa7,0x00007a4 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// enable interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c0007a6 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//Load Table pointer registers with base address to program. F:\MCP\projects\CAN\canBoot\Source\Main.c0007a8 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c0007aa f0000007ac c0c8 MOVFF 0xc8,0x10007ae f0010007b0 c0c9 MOVFF 0xc9,0x20007b2 f0020007b4 c0ca MOVFF 0xca,0x30007b6 f0030007b8 6a00 CLRF 0x0,0x00007ba 6a01 CLRF 0x1,0x00007bc 6a03 CLRF 0x3,0x00007be 0e10 MOVLW 0x100007c0 90d8 BCF 0xd8,0x0,0x00007c2 3203 RRCF 0x3,0x1,0x00007c4 3202 RRCF 0x2,0x1,0x00007c6 3201 RRCF 0x1,0x1,0x00007c8 3200 RRCF 0x0,0x1,0x00007ca 06e8 DECF 0xe8,0x1,0x00007cc e1f9 BNZ 0x7c00007ce 5000 MOVF 0x0,0x0,0x00007d0 6ef8 MOVWF 0xf8,0x00007d2 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0007d4 f0000007d6 c0c8 MOVFF 0xc8,0x10007d8 f0010007da c0c9 MOVFF 0xc9,0x20007dc f0020007de c0ca MOVFF 0xca,0x30007e0 f0030007e2 6a00 CLRF 0x0,0x00007e4 6a02 CLRF 0x2,0x00007e6 6a03 CLRF 0x3,0x00007e8 0e08 MOVLW 0x80007ea 90d8 BCF 0xd8,0x0,0x00007ec 3203 RRCF 0x3,0x1,0x00007ee 3202 RRCF 0x2,0x1,0x00007f0 3201 RRCF 0x1,0x1,0x00007f2 3200 RRCF 0x0,0x1,0x00007f4 06e8 DECF 0xe8,0x1,0x00007f6 e1f9 BNZ 0x7ea0007f8 5000 MOVF 0x0,0x0,0x00007fa 6ef7 MOVWF 0xf7,0x00007fc 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0007fe 51c7 MOVF 0xc7,0x0,0x1000800 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c000802 0e13 MOVLW 0x13 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c000804 6adb CLRF 0xdb,0x0000806 0e3f MOVLW 0x3f000808 6ef3 MOVWF 0xf3,0x000080a 0e13 MOVLW 0x1300080c cfdb MOVFF 0xfdb,0xff400080e fff4000810 50f3 MOVF 0xf3,0x0,0x0000812 5cf4 SUBWF 0xf4,0x0,0x0000814 e20d BC 0x83000082a 0e13 MOVLW 0x1300082c 2adb INCF 0xdb,0x1,0x000082e d7eb BRA 0x806{ F:\MCP\projects\CAN\canBoot\Source\Main.c000816 0e13 MOVLW 0x13 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c000818 50db MOVF 0xdb,0x0,0x000081a 6aea CLRF 0xea,0x000081c 0f6f ADDLW 0x6f00081e 6ee9 MOVWF 0xe9,0x0000820 0e00 MOVLW 0x0000822 22ea ADDWFC 0xea,0x1,0x0000824 50ef MOVF 0xef,0x0,0x0000826 6ef5 MOVWF 0xf5,0x0000828 d9c2 RCALL 0xbae TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000830 c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c000832 fff5000834 d9ba RCALL 0xbaa TBLWT_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000836 8ea6 BSF 0xa6,0x7,0x0 EECON1bits.EEPGD = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c// access Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000838 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c// enable write to memory F:\MCP\projects\CAN\canBoot\Source\Main.c00083a 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c// disable interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c00083c 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Do it! F:\MCP\projects\CAN\canBoot\Source\Main.c00083e 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000840 6ea7 MOVWF 0xa7,0x0000842 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000844 6ea7 MOVWF 0xa7,0x0000846 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// enable interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c000848 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// disable write to memory F:\MCP\projects\CAN\canBoot\Source\Main.c00084a 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00084c 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c00084e 0100 MOVLB 0x0000850 27c7 ADDWF 0xc7,0x1,0x1000852 0e00 MOVLW 0x0000854 0100 MOVLB 0x0000856 23c8 ADDWFC 0xc8,0x1,0x1000858 0e00 MOVLW 0x000085a 0100 MOVLB 0x000085c 23c9 ADDWFC 0xc9,0x1,0x100085e 0e00 MOVLW 0x0000860 0100 MOVLB 0x0000862 23ca ADDWFC 0xca,0x1,0x1000864 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000866 6bcb CLRF 0xcb,0x1000868 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00086a 6bc5 CLRF 0xc5,0x100086c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00086e 0e01 MOVLW 0x1000870 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c000872 d006 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsDONE: F:\MCP\projects\CAN\canBoot\Source\Main.c000874 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000876 f008000878 d003 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cdefault: F:\MCP\projects\CAN\canBoot\Source\Main.c00087a 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c00087c 6bbe CLRF 0xbe,0x100087e d000 BRA 0x880 break; F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000882 0e26 MOVLW 0x26 } F:\MCP\projects\CAN\canBoot\Source\Main.c000884 5ce1 SUBWF 0xe1,0x0,0x0000886 e202 BC 0x88c000888 6ae1 CLRF 0xe1,0x000088a 52e5 MOVF 0xe5,0x1,0x000088c 6ee1 MOVWF 0xe1,0x000088e 52e5 MOVF 0xe5,0x1,0x0000890 cfe7 MOVFF 0xfe7,0xfd9000892 ffd9000894 0012 RETURN 0x0F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/* F:\MCP\projects\CAN\canBoot\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Output: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canBoot\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canBoot\Source\Main.c*/ F:\MCP\projects\CAN\canBoot\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000896 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canBoot\Source\Main.c000898 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c00089a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00089c 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canBoot\Source\Main.c00089e 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008a0 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/// CAN------------------------------------------------------- F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/* F:\MCP\projects\CAN\canBoot\Source\Main.c* Function: canInit F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Output: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBoot\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canBoot\Source\Main.c*/ F:\MCP\projects\CAN\canBoot\Source\Main.cvoid canInit() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0008a2 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008a4 6e6f MOVWF 0x6f,0x00008a6 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c0008a8 146e ANDWF 0x6e,0x0,0x00008aa 0880 SUBLW 0x800008ac e001 BZ 0x8b00008ae d7fb BRA 0x8a6F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008b0 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\Main.c0008b2 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008b4 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Setting BRP. F:\MCP\projects\CAN\canBoot\Source\Main.c0008b6 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c0008b8 1070 IORWF 0x70,0x0,0x00008ba 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c0008bc 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\Main.c0008be 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c0 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c2 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\Main.c0008c4 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c6 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c8 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Enableing bus wake-up F:\MCP\projects\CAN\canBoot\Source\Main.c0008ca 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBoot\Source\Main.c0008cc 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\Main.c0008ce 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d0 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d2 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008d4 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d6 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d8 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBoot\Source\Main.c0008da 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008dc 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// INTERRUPTS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Diable transmit interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0008de 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008e0 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0008e2 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008e4 6aa3 CLRF 0xa3,0x0 PIE3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Programmable no buffers interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0008e6 6bfa CLRF 0xfa,0x1 BIE0 = 0x00; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//loopback mode or not F:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBoot\Source\Main.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBoot\Source\Main.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBoot\Source\Main.c#else F:\MCP\projects\CAN\canBoot\Source\Main.c0008e8 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008ea 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008ec 146e ANDWF 0x6e,0x0,0x00008ee e001 BZ 0x8f20008f0 d7fc BRA 0x8ea#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008f2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/* F:\MCP\projects\CAN\canBoot\Source\Main.c* Function: canGetPacket F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Output: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBoot\Source\Main.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBoot\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canBoot\Source\Main.c*/ F:\MCP\projects\CAN\canBoot\Source\Main.cBOOL canGetPacket() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Get which buffer that is ful. F:\MCP\projects\CAN\canBoot\Source\Main.c0008f4 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBoot\Source\Main.c0008f6 146f ANDWF 0x6f,0x0,0x00008f8 0910 IORLW 0x100008fa 6e00 MOVWF 0x0,0x00008fc 0e00 MOVLW 0x00008fe 1477 ANDWF 0x77,0x0,0x0000900 1000 IORWF 0x0,0x0,0x0000902 6e77 MOVWF 0x77,0x0000904 be60 BTFSC 0x60,0x7,0x0 if (!RXB0CONbits.RXFUL) return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000906 d002 BRA 0x90c000908 0e00 MOVLW 0x000090a d07c BRA 0xa04F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBoot\Source\Main.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBoot\Source\Main.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBoot\Source\Main.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00090c 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c00090e 1461 ANDWF 0x61,0x0,0x0000910 38e8 SWAPF 0xe8,0x0,0x0000912 0b0f ANDLW 0xf000914 0100 MOVLB 0x0000916 6f60 MOVWF 0x60,0x1000918 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBoot\Source\Main.c00091a 1461 ANDWF 0x61,0x0,0x000091c 6e04 MOVWF 0x4,0x000091e 6a05 CLRF 0x5,0x0000920 0e06 MOVLW 0x6000922 90d8 BCF 0xd8,0x0,0x0000924 3604 RLCF 0x4,0x1,0x0000926 3605 RLCF 0x5,0x1,0x0000928 04e8 DECF 0xe8,0x0,0x000092a e1fb BNZ 0x92200092c 0ee0 MOVLW 0xe000092e 1462 ANDWF 0x62,0x0,0x0000930 6e06 MOVWF 0x6,0x0000932 6a07 CLRF 0x7,0x0000934 90d8 BCF 0xd8,0x0,0x0000936 3207 RRCF 0x7,0x1,0x0000938 3206 RRCF 0x6,0x1,0x000093a 90d8 BCF 0xd8,0x0,0x000093c 3207 RRCF 0x7,0x1,0x000093e 3206 RRCF 0x6,0x1,0x0000940 5004 MOVF 0x4,0x0,0x0000942 2406 ADDWF 0x6,0x0,0x0000944 6e02 MOVWF 0x2,0x0000946 5005 MOVF 0x5,0x0,0x0000948 2007 ADDWFC 0x7,0x0,0x000094a 6e03 MOVWF 0x3,0x000094c 0e03 MOVLW 0x300094e 1462 ANDWF 0x62,0x0,0x0000950 6e08 MOVWF 0x8,0x0000952 6a09 CLRF 0x9,0x0000954 90d8 BCF 0xd8,0x0,0x0000956 3608 RLCF 0x8,0x1,0x0000958 3609 RLCF 0x9,0x1,0x000095a 5002 MOVF 0x2,0x0,0x000095c 2408 ADDWF 0x8,0x0,0x000095e 6e00 MOVWF 0x0,0x0000960 5003 MOVF 0x3,0x0,0x0000962 2009 ADDWFC 0x9,0x0,0x0000964 6e01 MOVWF 0x1,0x0000966 0e80 MOVLW 0x80000968 1463 ANDWF 0x63,0x0,0x000096a 6e0a MOVWF 0xa,0x000096c 6a0b CLRF 0xb,0x000096e 0e07 MOVLW 0x7000970 90d8 BCF 0xd8,0x0,0x0000972 320b RRCF 0xb,0x1,0x0000974 320a RRCF 0xa,0x1,0x0000976 04e8 DECF 0xe8,0x0,0x0000978 e1fb BNZ 0x97000097a 5000 MOVF 0x0,0x0,0x000097c 240a ADDWF 0xa,0x0,0x000097e 0100 MOVLB 0x0000980 6f61 MOVWF 0x61,0x1000982 5001 MOVF 0x1,0x0,0x0000984 200b ADDWFC 0xb,0x0,0x0000986 6f62 MOVWF 0x62,0x1000988 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c00098a 1463 ANDWF 0x63,0x0,0x000098c 40e8 RRNCF 0xe8,0x0,0x000098e 0b7f ANDLW 0x7f000990 6f63 MOVWF 0x63,0x1000992 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c000994 1463 ANDWF 0x63,0x0,0x0000996 6e00 MOVWF 0x0,0x0000998 c000 MOVFF 0x0,0x100099a f00100099c 6a00 CLRF 0x0,0x000099e 5064 MOVF 0x64,0x0,0x00009a0 2400 ADDWF 0x0,0x0,0x00009a2 6f64 MOVWF 0x64,0x10009a4 0e00 MOVLW 0x00009a6 2001 ADDWFC 0x1,0x0,0x00009a8 6f65 MOVWF 0x65,0x1F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c0009aa 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBoot\Source\Main.c0009ac 0b01 ANDLW 0x10009ae 6e02 MOVWF 0x2,0x00009b0 5065 MOVF 0x65,0x0,0x00009b2 0b02 ANDLW 0x20009b4 e001 BZ 0x9b80009b6 0e01 MOVLW 0x10009b8 24e8 ADDWF 0xe8,0x0,0x00009ba 6e01 MOVWF 0x1,0x00009bc 5065 MOVF 0x65,0x0,0x00009be 0b04 ANDLW 0x40009c0 e001 BZ 0x9c40009c2 0e01 MOVLW 0x10009c4 0d04 MULLW 0x40009c6 cff3 MOVFF 0xff3,0x00009c8 f0000009ca 5065 MOVF 0x65,0x0,0x00009cc 0b08 ANDLW 0x80009ce e001 BZ 0x9d20009d0 0e01 MOVLW 0x10009d2 0d08 MULLW 0x80009d4 50f3 MOVF 0xf3,0x0,0x00009d6 2400 ADDWF 0x0,0x0,0x00009d8 2401 ADDWF 0x1,0x0,0x00009da 2402 ADDWF 0x2,0x0,0x00009dc 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c0009de cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c0009e0 f0670009e2 cf67 MOVFF 0xf67,0x680009e4 f0680009e6 cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c0009e8 f0690009ea cf69 MOVFF 0xf69,0x6a0009ec f06a0009ee cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c0009f0 f06b0009f2 cf6b MOVFF 0xf6b,0x6c0009f4 f06c0009f6 cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c0009f8 f06d0009fa cf6d MOVFF 0xf6d,0x6e0009fc f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c0009fe 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000a00 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000a02 d000 BRA 0xa04000a04 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/* F:\MCP\projects\CAN\canBoot\Source\Main.c* Function: canSendMessage F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBoot\Source\Main.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBoot\Source\Main.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBoot\Source\Main.c* Affects: .. F:\MCP\projects\CAN\canBoot\Source\Main.c* Depends: .. F:\MCP\projects\CAN\canBoot\Source\Main.c*/ F:\MCP\projects\CAN\canBoot\Source\Main.c000a06 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c000a08 ffe6000a0a cfe1 MOVFF 0xfe1,0xfd9000a0c ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000a0e 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000a10 b740 BTFSC 0x40,0x3,0x1000a12 d004 BRA 0xa1c000a14 0e00 MOVLW 0x0000a16 1477 ANDWF 0x77,0x0,0x0000a18 0903 IORLW 0x3000a1a 6e77 MOVWF 0x77,0x0000a1c 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000a1e b730 BTFSC 0x30,0x3,0x1000a20 d004 BRA 0xa2a000a22 0e00 MOVLW 0x0000a24 1477 ANDWF 0x77,0x0,0x0000a26 0904 IORLW 0x4000a28 6e77 MOVWF 0x77,0x0000a2a 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000a2c b720 BTFSC 0x20,0x3,0x1000a2e d005 BRA 0xa3a000a30 0e00 MOVLW 0x0000a32 1477 ANDWF 0x77,0x0,0x0000a34 0905 IORLW 0x5000a36 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c000a38 d002 BRA 0xa3e else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c000a3a 0e00 MOVLW 0x0000a3c d0b0 BRA 0xb9eF:\MCP\projects\CAN\canBoot\Source\Main.c000a3e 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a40 cfdb MOVFF 0xfdb,0x0000a42 f000000a44 3400 RLCF 0x0,0x0,0x0000a46 e20e BC 0xa64000a48 0eef MOVLW 0xef000a4a cfdb MOVFF 0xfdb,0x1000a4c f001000a4e 0e03 MOVLW 0x3000a50 6ee7 MOVWF 0xe7,0x0000a52 1801 XORWF 0x1,0x0,0x0000a54 aee8 BTFSS 0xe8,0x7,0x0000a56 d002 BRA 0xa5c000a58 3401 RLCF 0x1,0x0,0x0000a5a d003 BRA 0xa62000a5c 50e7 MOVF 0xe7,0x0,0x0000a5e 80d8 BSF 0xd8,0x0,0x0000a60 5401 SUBFWB 0x1,0x0,0x0000a62 e202 BC 0xa68000a64 0eef MOVLW 0xef000a66 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBoot\Source\Main.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBoot\Source\Main.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBoot\Source\Main.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000a68 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c000a6a cfdb MOVFF 0xfdb,0x0000a6c f000000a6e 0ef2 MOVLW 0xf2000a70 cfdb MOVFF 0xfdb,0x1000a72 f001000a74 0ec0 MOVLW 0xc0000a76 1600 ANDWF 0x0,0x1,0x0000a78 0e03 MOVLW 0x3000a7a 1601 ANDWF 0x1,0x1,0x0000a7c 0e06 MOVLW 0x6000a7e 90d8 BCF 0xd8,0x0,0x0000a80 3201 RRCF 0x1,0x1,0x0000a82 3200 RRCF 0x0,0x1,0x0000a84 04e8 DECF 0xe8,0x0,0x0000a86 e1fb BNZ 0xa7e000a88 0ef0 MOVLW 0xf0000a8a 50db MOVF 0xdb,0x0,0x0000a8c 0b0f ANDLW 0xf000a8e 0d10 MULLW 0x10000a90 50f3 MOVF 0xf3,0x0,0x0000a92 2400 ADDWF 0x0,0x0,0x0000a94 6e61 MOVWF 0x61,0x0000a96 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000a98 6ee7 MOVWF 0xe7,0x0000a9a 0ef1 MOVLW 0xf1000a9c cfdb MOVFF 0xfdb,0x2000a9e f002000aa0 0ef2 MOVLW 0xf2000aa2 cfdb MOVFF 0xfdb,0x3000aa4 f003000aa6 50e7 MOVF 0xe7,0x0,0x0000aa8 1602 ANDWF 0x2,0x1,0x0000aaa 6a03 CLRF 0x3,0x0000aac 90d8 BCF 0xd8,0x0,0x0000aae 3203 RRCF 0x3,0x1,0x0000ab0 3202 RRCF 0x2,0x1,0x0000ab2 0e3f MOVLW 0x3f000ab4 6ee7 MOVWF 0xe7,0x0000ab6 0ef1 MOVLW 0xf1000ab8 cfdb MOVFF 0xfdb,0x0000aba f000000abc 0ef2 MOVLW 0xf2000abe cfdb MOVFF 0xfdb,0x1000ac0 f001000ac2 50e7 MOVF 0xe7,0x0,0x0000ac4 1600 ANDWF 0x0,0x1,0x0000ac6 6a01 CLRF 0x1,0x0000ac8 90d8 BCF 0xd8,0x0,0x0000aca 3600 RLCF 0x0,0x1,0x0000acc 3601 RLCF 0x1,0x1,0x0000ace 90d8 BCF 0xd8,0x0,0x0000ad0 3600 RLCF 0x0,0x1,0x0000ad2 3601 RLCF 0x1,0x1,0x0000ad4 5000 MOVF 0x0,0x0,0x0000ad6 2402 ADDWF 0x2,0x0,0x0000ad8 6e62 MOVWF 0x62,0x0000ada 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000adc cfdb MOVFF 0xfdb,0x2000ade f002000ae0 0ef5 MOVLW 0xf5000ae2 cfdb MOVFF 0xfdb,0x3000ae4 f003000ae6 0e00 MOVLW 0x0000ae8 1602 ANDWF 0x2,0x1,0x0000aea 0e01 MOVLW 0x1000aec 1603 ANDWF 0x3,0x1,0x0000aee c003 MOVFF 0x3,0x2000af0 f002000af2 6a03 CLRF 0x3,0x0000af4 0e01 MOVLW 0x1000af6 6ee7 MOVWF 0xe7,0x0000af8 0ef1 MOVLW 0xf1000afa cfdb MOVFF 0xfdb,0x0000afc f000000afe 0ef2 MOVLW 0xf2000b00 cfdb MOVFF 0xfdb,0x1000b02 f001000b04 50e7 MOVF 0xe7,0x0,0x0000b06 1600 ANDWF 0x0,0x1,0x0000b08 6a01 CLRF 0x1,0x0000b0a 0e07 MOVLW 0x7000b0c 90d8 BCF 0xd8,0x0,0x0000b0e 3600 RLCF 0x0,0x1,0x0000b10 3601 RLCF 0x1,0x1,0x0000b12 04e8 DECF 0xe8,0x0,0x0000b14 e1fb BNZ 0xb0c000b16 0ef3 MOVLW 0xf3000b18 50db MOVF 0xdb,0x0,0x0000b1a 0b3f ANDLW 0x3f000b1c 24e8 ADDWF 0xe8,0x0,0x0000b1e 2400 ADDWF 0x0,0x0,0x0000b20 2402 ADDWF 0x2,0x0,0x0000b22 6e63 MOVWF 0x63,0x0000b24 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000b26 6ee7 MOVWF 0xe7,0x0000b28 0ef4 MOVLW 0xf4000b2a cfdb MOVFF 0xfdb,0x0000b2c f000000b2e 0ef5 MOVLW 0xf5000b30 cfdb MOVFF 0xfdb,0x1000b32 f001000b34 50e7 MOVF 0xe7,0x0,0x0000b36 1600 ANDWF 0x0,0x1,0x0000b38 6a01 CLRF 0x1,0x0000b3a 5000 MOVF 0x0,0x0,0x0000b3c 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000b3e 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000b40 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000b42 50db MOVF 0xdb,0x0,0x0000b44 0808 SUBLW 0x8000b46 e203 BC 0xb4e000b48 0e08 MOVLW 0x8000b4a 6e65 MOVWF 0x65,0x0000b4c d003 BRA 0xb54000b4e 0ef6 MOVLW 0xf6000b50 50db MOVF 0xdb,0x0,0x0000b52 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// NOT Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000b54 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000b56 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b58 50db MOVF 0xdb,0x0,0x0000b5a 6e66 MOVWF 0x66,0x0000b5c 0ef8 MOVLW 0xf8000b5e 50db MOVF 0xdb,0x0,0x0000b60 6e67 MOVWF 0x67,0x0000b62 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b64 50db MOVF 0xdb,0x0,0x0000b66 6e68 MOVWF 0x68,0x0000b68 0efa MOVLW 0xfa000b6a 50db MOVF 0xdb,0x0,0x0000b6c 6e69 MOVWF 0x69,0x0000b6e 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b70 50db MOVF 0xdb,0x0,0x0000b72 6e6a MOVWF 0x6a,0x0000b74 0efc MOVLW 0xfc000b76 50db MOVF 0xdb,0x0,0x0000b78 6e6b MOVWF 0x6b,0x0000b7a 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b7c 50db MOVF 0xdb,0x0,0x0000b7e 6e6c MOVWF 0x6c,0x0000b80 0efe MOVLW 0xfe000b82 50db MOVF 0xdb,0x0,0x0000b84 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000b86 8662 BSF 0x62,0x3,0x0 RXB0SIDLbits.EXID=1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Priority F:\MCP\projects\CAN\canBoot\Source\Main.c000b88 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000b8a cfdb MOVFF 0xfdb,0xfe6000b8c ffe6000b8e 0efc MOVLW 0xfc000b90 1460 ANDWF 0x60,0x0,0x0000b92 52e5 MOVF 0xe5,0x1,0x0000b94 10e7 IORWF 0xe7,0x0,0x0000b96 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// mark as redy to transmit F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000b98 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000b9a 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000b9c d000 BRA 0xb9eF:\MCP\projects\CAN\canBoot\Source\Main.c000b9e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000ba0 cfe7 MOVFF 0xfe7,0xfd9000ba2 ffd9000ba4 0012 RETURN 0x0F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#endif //USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLRD_Func() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000ba6 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000ba8 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLWT_Func() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000baa 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000bac 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cvoid TBLWTPOSTINC_Func (void){ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000bae 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000bb0 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cDWORD tickGet() F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000bb2 c0b3 MOVFF 0xb3,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000bb4 f010000bb6 c0b4 MOVFF 0xb4,0x11000bb8 f011000bba c0b5 MOVFF 0xb5,0x12000bbc f012000bbe c0b6 MOVFF 0xb6,0x13000bc0 f013000bc2 d000 BRA 0xbc4000bc4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code user = RM_RESET_VECTOR F:\MCP\projects\CAN\canBoot\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-14 20:15:02 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 94 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c000bc6 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c000bc8 ffe6000bca cfe1 MOVFF 0xfe1,0xfd9000bcc ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000bce 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000bd0 cfdb MOVFF 0xfdb,0x0000bd2 f000000bd4 0efe MOVLW 0xfe000bd6 cfdb MOVFF 0xfdb,0x1000bd8 f001000bda c001 MOVFF 0x1,0x0000bdc f000000bde 6a01 CLRF 0x1,0x0000be0 5000 MOVF 0x0,0x0,0x0000be2 6eaa MOVWF 0xaa,0x0000be4 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000be6 6ee7 MOVWF 0xe7,0x0000be8 0efd MOVLW 0xfd000bea cfdb MOVFF 0xfdb,0x0000bec f000000bee 0efe MOVLW 0xfe000bf0 cfdb MOVFF 0xfdb,0x1000bf2 f001000bf4 50e7 MOVF 0xe7,0x0,0x0000bf6 1600 ANDWF 0x0,0x1,0x0000bf8 6a01 CLRF 0x1,0x0000bfa 5000 MOVF 0x0,0x0,0x0000bfc 6ea9 MOVWF 0xa9,0x0000bfe 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000c00 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000c02 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c000c04 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c000c06 d000 BRA 0xc08000c08 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000c0a cfe7 MOVFF 0xfe7,0xfd9000c0c ffd9000c0e 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c000c10 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c000c12 ffe6000c14 cfe1 MOVFF 0xfe1,0xfd9000c16 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000c18 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c000c1a 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000c1c cfdb MOVFF 0xfdb,0x0000c1e f000000c20 0efe MOVLW 0xfe000c22 cfdb MOVFF 0xfdb,0x1000c24 f001000c26 c001 MOVFF 0x1,0x0000c28 f000000c2a 6a01 CLRF 0x1,0x0000c2c 5000 MOVF 0x0,0x0,0x0000c2e 6eaa MOVWF 0xaa,0x0000c30 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000c32 6ee7 MOVWF 0xe7,0x0000c34 0efd MOVLW 0xfd000c36 cfdb MOVFF 0xfdb,0x0000c38 f000000c3a 0efe MOVLW 0xfe000c3c cfdb MOVFF 0xfdb,0x1000c3e f001000c40 50e7 MOVF 0xe7,0x0,0x0000c42 1600 ANDWF 0x0,0x1,0x0000c44 6a01 CLRF 0x1,0x0000c46 5000 MOVF 0x0,0x0,0x0000c48 6ea9 MOVWF 0xa9,0x0000c4a 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c000c4c 50db MOVF 0xdb,0x0,0x0000c4e 6ea8 MOVWF 0xa8,0x0000c50 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000c52 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000c54 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c000c56 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c000c58 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c000c5a 6ea7 MOVWF 0xa7,0x0000c5c 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c000c5e 6ea7 MOVWF 0xa7,0x0000c60 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c000c62 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c000c64 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c000c66 d7fe BRA 0xc64000c68 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c000c6a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000c6c cfe7 MOVFF 0xfe7,0xfd9000c6e ffd9000c70 0012 RETURN 0x0