Rev 129 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Jan 28 14:41:29 2007Address 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 ec4d CALL 0x89a,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 ec53 CALL 0x8a6,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 eccf CALL 0xb9e,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 ecd9 CALL 0xbb2,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 ecd9 CALL 0xbb2,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 ecd9 CALL 0xbb2,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 ecd9 CALL 0xbb2,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.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 ecf9 CALL 0x9f2,0x000014a f00400014c 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.c00015a 8282 BSF 0x82,0x1,0x0 LED0_IO= 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000884 d46b BRA 0x15c 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.c00015c dbc1 RCALL 0x8e0 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c00015e 6ee7 MOVWF 0xe7,0x0000160 0e23 MOVLW 0x23000162 cfe7 MOVFF 0xfe7,0xfdb000164 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c000166 0100 MOVLB 0x0 tickSubCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c000168 2bb7 INCF 0xb7,0x1,0x100016a 0e00 MOVLW 0x000016c 23b8 ADDWFC 0xb8,0x1,0x100016e 23b9 ADDWFC 0xb9,0x1,0x1000170 23ba ADDWFC 0xba,0x1,0x1000172 80d8 BSF 0xd8,0x0,0x0 if (tickSubCounter>TICK_SUB_COUNTER_10MS) F:\MCP\projects\CAN\canBoot\Source\Main.c000174 0e38 MOVLW 0x38000176 0100 MOVLB 0x0000178 55b7 SUBFWB 0xb7,0x0,0x100017a 0e01 MOVLW 0x100017c 55b8 SUBFWB 0xb8,0x0,0x100017e 0e00 MOVLW 0x0000180 55b9 SUBFWB 0xb9,0x0,0x1000182 0e00 MOVLW 0x0000184 55ba SUBFWB 0xba,0x0,0x1000186 e20c BC 0x1a0{ F:\MCP\projects\CAN\canBoot\Source\Main.c000188 0100 MOVLB 0x0 tickCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c00018a 2bb3 INCF 0xb3,0x1,0x100018c 0e00 MOVLW 0x000018e 23b4 ADDWFC 0xb4,0x1,0x1000190 23b5 ADDWFC 0xb5,0x1,0x1000192 23b6 ADDWFC 0xb6,0x1,0x1000194 0100 MOVLB 0x0 tickSubCounter=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000196 6bb7 CLRF 0xb7,0x1000198 6bb8 CLRF 0xb8,0x100019a 6bb9 CLRF 0xb9,0x100019c 6bba CLRF 0xba,0x100019e 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.c0001a0 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c0001a2 51be MOVF 0xbe,0x0,0x10001a4 0a05 XORLW 0x50001a6 e101 BNZ 0x1aa0001a8 d367 BRA 0x8780001aa 0a01 XORLW 0x10001ac e101 BNZ 0x1b00001ae d2b5 BRA 0x71a0001b0 0a07 XORLW 0x70001b2 e101 BNZ 0x1b60001b4 d1c0 BRA 0x5360001b6 0a01 XORLW 0x10001b8 e101 BNZ 0x1bc0001ba d111 BRA 0x3de0001bc 0a03 XORLW 0x30001be e101 BNZ 0x1c20001c0 d0ba BRA 0x3360001c2 0a01 XORLW 0x10001c4 e001 BZ 0x1c80001c6 d35b BRA 0x87e{ 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.c0001c8 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.c0001ca 04db DECF 0xdb,0x0,0x00001cc e173 BNZ 0x2b40001ce 0100 MOVLB 0x00001d0 5160 MOVF 0x60,0x0,0x10001d2 e170 BNZ 0x2b40001d4 0100 MOVLB 0x00001d6 0e01 MOVLW 0x10001d8 1961 XORWF 0x61,0x0,0x10001da e101 BNZ 0x1de0001dc 5162 MOVF 0x62,0x0,0x10001de e16a BNZ 0x2b40001e0 c06c MOVFF 0x6c,0x20001e2 f0020001e4 c002 MOVFF 0x2,0x30001e6 f0030001e8 6a02 CLRF 0x2,0x00001ea 0100 MOVLB 0x00001ec 516b MOVF 0x6b,0x0,0x10001ee 0100 MOVLB 0x00001f0 2402 ADDWF 0x2,0x0,0x00001f2 6e00 MOVWF 0x0,0x00001f4 0e00 MOVLW 0x00001f6 2003 ADDWFC 0x3,0x0,0x00001f8 6e01 MOVWF 0x1,0x00001fa 0100 MOVLB 0x00001fc 51bb MOVF 0xbb,0x0,0x10001fe 1800 XORWF 0x0,0x0,0x0000200 e102 BNZ 0x206000202 51bc MOVF 0xbc,0x0,0x1000204 1801 XORWF 0x1,0x0,0x0000206 e156 BNZ 0x2b4000208 0100 MOVLB 0x000020a 51bd MOVF 0xbd,0x0,0x100020c 0100 MOVLB 0x000020e 5d63 SUBWF 0x63,0x0,0x1000210 e151 BNZ 0x2b4{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c000212 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.c000214 f000000216 6a01 CLRF 0x1,0x0000218 6a02 CLRF 0x2,0x000021a 6a03 CLRF 0x3,0x000021c 0e10 MOVLW 0x1000021e 0b1f ANDLW 0x1f000220 e007 BZ 0x230000222 90d8 BCF 0xd8,0x0,0x0000224 3600 RLCF 0x0,0x1,0x0000226 3601 RLCF 0x1,0x1,0x0000228 3602 RLCF 0x2,0x1,0x000022a 3603 RLCF 0x3,0x1,0x000022c 06e8 DECF 0xe8,0x1,0x000022e e1f9 BNZ 0x222000230 c068 MOVFF 0x68,0x4000232 f004000234 6a05 CLRF 0x5,0x0000236 6a06 CLRF 0x6,0x0000238 6a07 CLRF 0x7,0x000023a 0e08 MOVLW 0x800023c 0b1f ANDLW 0x1f00023e e007 BZ 0x24e000240 90d8 BCF 0xd8,0x0,0x0000242 3604 RLCF 0x4,0x1,0x0000244 3605 RLCF 0x5,0x1,0x0000246 3606 RLCF 0x6,0x1,0x0000248 3607 RLCF 0x7,0x1,0x000024a 06e8 DECF 0xe8,0x1,0x000024c e1f9 BNZ 0x24000024e 5004 MOVF 0x4,0x0,0x0000250 2600 ADDWF 0x0,0x1,0x0000252 5005 MOVF 0x5,0x0,0x0000254 2201 ADDWFC 0x1,0x1,0x0000256 5006 MOVF 0x6,0x0,0x0000258 2202 ADDWFC 0x2,0x1,0x000025a 5007 MOVF 0x7,0x0,0x000025c 2203 ADDWFC 0x3,0x1,0x000025e c067 MOVFF 0x67,0x8000260 f008000262 6a09 CLRF 0x9,0x0000264 6a0a CLRF 0xa,0x0000266 6a0b CLRF 0xb,0x0000268 5000 MOVF 0x0,0x0,0x000026a 2408 ADDWF 0x8,0x0,0x000026c 0100 MOVLB 0x000026e 6fc7 MOVWF 0xc7,0x1000270 5001 MOVF 0x1,0x0,0x0000272 2009 ADDWFC 0x9,0x0,0x0000274 0100 MOVLB 0x0000276 6fc8 MOVWF 0xc8,0x1000278 5002 MOVF 0x2,0x0,0x000027a 200a ADDWFC 0xa,0x0,0x000027c 0100 MOVLB 0x000027e 6fc9 MOVWF 0xc9,0x1000280 5003 MOVF 0x3,0x0,0x0000282 200b ADDWFC 0xb,0x0,0x0000284 0100 MOVLB 0x0000286 6fca MOVWF 0xca,0x1000288 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c00028a f0c300028c c065 MOVFF 0x65,0xc400028e f0c4000290 eccf CALL 0xb9e,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000292 f005000294 c010 MOVFF 0x10,0xbf000296 f0bf000298 c011 MOVFF 0x11,0xc000029a f0c000029c c012 MOVFF 0x12,0xc100029e f0c10002a0 c013 MOVFF 0x13,0xc20002a2 f0c20002a4 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a6 6bc5 CLRF 0xc5,0x10002a8 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0002aa 0e02 MOVLW 0x20002ac 6fc6 MOVWF 0xc6,0x10002ae 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0002b0 0e01 MOVLW 0x10002b2 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.c0002b4 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002b6 ffe90002b8 cfda MOVFF 0xfda,0xfea0002ba ffea0002bc cfee MOVFF 0xfee,0x40002be f0040002c0 cfee MOVFF 0xfee,0x50002c2 f0050002c4 cfee MOVFF 0xfee,0x60002c6 f0060002c8 cfef MOVFF 0xfef,0x70002ca f0070002cc c004 MOVFF 0x4,0xfe60002ce ffe60002d0 c005 MOVFF 0x5,0xfe60002d2 ffe60002d4 c006 MOVFF 0x6,0xfe60002d6 ffe60002d8 c007 MOVFF 0x7,0xfe60002da ffe60002dc eccf CALL 0xb9e,0x00002de f0050002e0 52e5 MOVF 0xe5,0x1,0x00002e2 cfe7 MOVFF 0xfe7,0x70002e4 f0070002e6 52e5 MOVF 0xe5,0x1,0x00002e8 cfe7 MOVFF 0xfe7,0x60002ea f0060002ec 52e5 MOVF 0xe5,0x1,0x00002ee cfe7 MOVFF 0xfe7,0x50002f0 f0050002f2 52e5 MOVF 0xe5,0x1,0x00002f4 cfe7 MOVFF 0xfe7,0x40002f6 f0040002f8 0100 MOVLB 0x00002fa 5004 MOVF 0x4,0x0,0x00002fc 5c10 SUBWF 0x10,0x0,0x00002fe 6e00 MOVWF 0x0,0x0000300 0100 MOVLB 0x0000302 5005 MOVF 0x5,0x0,0x0000304 5811 SUBWFB 0x11,0x0,0x0000306 6e01 MOVWF 0x1,0x0000308 0100 MOVLB 0x000030a 5006 MOVF 0x6,0x0,0x000030c 5812 SUBWFB 0x12,0x0,0x000030e 6e02 MOVWF 0x2,0x0000310 0100 MOVLB 0x0000312 5007 MOVF 0x7,0x0,0x0000314 5813 SUBWFB 0x13,0x0,0x0000316 6e03 MOVWF 0x3,0x0000318 80d8 BSF 0xd8,0x0,0x000031a 0ef4 MOVLW 0xf400031c 5400 SUBFWB 0x0,0x0,0x000031e 0e01 MOVLW 0x1000320 5401 SUBFWB 0x1,0x0,0x0000322 0e00 MOVLW 0x0000324 5402 SUBFWB 0x2,0x0,0x0000326 0e00 MOVLW 0x0000328 5403 SUBFWB 0x3,0x0,0x000032a e204 BC 0x334{ F:\MCP\projects\CAN\canBoot\Source\Main.c00032c 9282 BCF 0x82,0x1,0x0 LED0_IO= 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00032e 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000330 0e05 MOVLW 0x5000332 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000334 d2a7 BRA 0x884 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.c000336 0e14 MOVLW 0x14 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000338 6adb CLRF 0xdb,0x000033a 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00033c 6ef3 MOVWF 0xf3,0x000033e 0e15 MOVLW 0x15000340 cff3 MOVFF 0xff3,0xfdb000342 ffdb000344 0e16 MOVLW 0x16000346 6adb CLRF 0xdb,0x0000348 0e17 MOVLW 0x17 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c00034a c0bd MOVFF 0xbd,0xfdb00034c ffdb00034e 0e18 MOVLW 0x18 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c000350 c0bb MOVFF 0xbb,0xfdb000352 ffdb000354 0e19 MOVLW 0x19000356 c0bc MOVFF 0xbc,0xfdb000358 ffdb00035a 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00035c 6ef3 MOVWF 0xf3,0x000035e 0e1a MOVLW 0x1a000360 cff3 MOVFF 0xff3,0xfdb000362 ffdb000364 0e1f MOVLW 0x1f outCm.data[BOOT_DATA_ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000366 c0c5 MOVFF 0xc5,0xfdb000368 ffdb00036a eccf CALL 0xb9e,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00036c f00500036e c010 MOVFF 0x10,0xbf000370 f0bf000372 c011 MOVFF 0x11,0xc0000374 f0c0000376 c012 MOVFF 0x12,0xc1000378 f0c100037a c013 MOVFF 0x13,0xc200037c f0c200037e c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c000380 f0beF:\MCP\projects\CAN\canBoot\Source\Main.c000382 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000384 6ee6 MOVWF 0xe6,0x0000386 50d9 MOVF 0xd9,0x0,0x0000388 0f14 ADDLW 0x1400038a 6ee9 MOVWF 0xe9,0x000038c cfda MOVFF 0xfda,0xfea00038e ffea000390 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 cfee MOVFF 0xfee,0xfe60003ca ffe60003cc db12 RCALL 0x9f20003ce 6e00 MOVWF 0x0,0x00003d0 0e10 MOVLW 0x100003d2 5ee1 SUBWF 0xe1,0x1,0x00003d4 5000 MOVF 0x0,0x0,0x00003d6 0900 IORLW 0x00003d8 e101 BNZ 0x3dc0003da d7d3 BRA 0x3820003dc d253 BRA 0x884 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.c0003de dbdf RCALL 0xb9e if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0003e0 0100 MOVLB 0x00003e2 51bf MOVF 0xbf,0x0,0x10003e4 5c10 SUBWF 0x10,0x0,0x00003e6 6e00 MOVWF 0x0,0x00003e8 0100 MOVLB 0x00003ea 51c0 MOVF 0xc0,0x0,0x10003ec 5811 SUBWFB 0x11,0x0,0x00003ee 6e01 MOVWF 0x1,0x00003f0 0100 MOVLB 0x00003f2 51c1 MOVF 0xc1,0x0,0x10003f4 5812 SUBWFB 0x12,0x0,0x00003f6 6e02 MOVWF 0x2,0x00003f8 0100 MOVLB 0x00003fa 51c2 MOVF 0xc2,0x0,0x10003fc 5813 SUBWFB 0x13,0x0,0x00003fe 6e03 MOVWF 0x3,0x0000400 80d8 BSF 0xd8,0x0,0x0000402 0e0e MOVLW 0xe000404 5400 SUBFWB 0x0,0x0,0x0000406 0e00 MOVLW 0x0000408 5401 SUBFWB 0x1,0x0,0x000040a 0e00 MOVLW 0x000040c 5402 SUBFWB 0x2,0x0,0x000040e 0e00 MOVLW 0x0000410 5403 SUBFWB 0x3,0x0,0x0000412 e208 BC 0x424{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c000414 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000416 6bc5 CLRF 0xc5,0x1000418 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00041a 0e02 MOVLW 0x200041c 6fc6 MOVWF 0xc6,0x100041e 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000420 0e01 MOVLW 0x1000422 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.c000424 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.c000426 04db DECF 0xdb,0x0,0x0000428 e001 BZ 0x42c00042a d084 BRA 0x53400042c 0100 MOVLB 0x000042e 5160 MOVF 0x60,0x0,0x1000430 e001 BZ 0x434000432 d080 BRA 0x534000434 0ee3 MOVLW 0xe3000436 0100 MOVLB 0x0000438 1561 ANDWF 0x61,0x0,0x100043a 6e00 MOVWF 0x0,0x000043c 0e03 MOVLW 0x300043e 0100 MOVLB 0x0000440 1562 ANDWF 0x62,0x0,0x1000442 6e01 MOVWF 0x1,0x0000444 0e03 MOVLW 0x3000446 1800 XORWF 0x0,0x0,0x0000448 e101 BNZ 0x44c00044a 5001 MOVF 0x1,0x0,0x000044c e173 BNZ 0x53400044e 0100 MOVLB 0x0000450 51bd MOVF 0xbd,0x0,0x1000452 0100 MOVLB 0x0000454 5d63 SUBWF 0x63,0x0,0x1000456 e16e BNZ 0x534000458 0100 MOVLB 0x000045a 51c3 MOVF 0xc3,0x0,0x100045c 0100 MOVLB 0x000045e 1964 XORWF 0x64,0x0,0x1000460 e104 BNZ 0x46a000462 0100 MOVLB 0x0000464 51c4 MOVF 0xc4,0x0,0x1000466 0100 MOVLB 0x0000468 1965 XORWF 0x65,0x0,0x100046a e164 BNZ 0x534{ F:\MCP\projects\CAN\canBoot\Source\Main.c00046c 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00046e 0100 MOVLB 0x0000470 1561 ANDWF 0x61,0x0,0x1000472 6e00 MOVWF 0x0,0x0000474 6a01 CLRF 0x1,0x0000476 90d8 BCF 0xd8,0x0,0x0000478 3201 RRCF 0x1,0x1,0x000047a 3200 RRCF 0x0,0x1,0x000047c 90d8 BCF 0xd8,0x0,0x000047e 3201 RRCF 0x1,0x1,0x0000480 3200 RRCF 0x0,0x1,0x0000482 0e08 MOVLW 0x8000484 0200 MULWF 0x0,0x0000486 0e24 MOVLW 0x24000488 cff3 MOVFF 0xff3,0xfdb00048a ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c00048c 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00048e 0e08 MOVLW 0x8000490 6fcb MOVWF 0xcb,0x1000492 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.c000494 50db MOVF 0xdb,0x0,0x0000496 6aea CLRF 0xea,0x0000498 0f6f ADDLW 0x6f00049a 6ee9 MOVWF 0xe9,0x000049c 0e00 MOVLW 0x000049e 22ea ADDWFC 0xea,0x1,0x00004a0 c067 MOVFF 0x67,0xfef0004a2 ffef0004a4 0e24 MOVLW 0x240004a6 28db INCF 0xdb,0x0,0x00004a8 6aea CLRF 0xea,0x00004aa 0f6f ADDLW 0x6f0004ac 6ee9 MOVWF 0xe9,0x00004ae 0e00 MOVLW 0x00004b0 22ea ADDWFC 0xea,0x1,0x00004b2 c068 MOVFF 0x68,0xfef0004b4 ffef0004b6 0e24 MOVLW 0x240004b8 50db MOVF 0xdb,0x0,0x00004ba 0f02 ADDLW 0x20004bc 6aea CLRF 0xea,0x00004be 0f6f ADDLW 0x6f0004c0 6ee9 MOVWF 0xe9,0x00004c2 0e00 MOVLW 0x00004c4 22ea ADDWFC 0xea,0x1,0x00004c6 c069 MOVFF 0x69,0xfef0004c8 ffef0004ca 0e24 MOVLW 0x240004cc 50db MOVF 0xdb,0x0,0x00004ce 0f03 ADDLW 0x30004d0 6aea CLRF 0xea,0x00004d2 0f6f ADDLW 0x6f0004d4 6ee9 MOVWF 0xe9,0x00004d6 0e00 MOVLW 0x00004d8 22ea ADDWFC 0xea,0x1,0x00004da c06a MOVFF 0x6a,0xfef0004dc ffef0004de 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.c0004e0 50db MOVF 0xdb,0x0,0x00004e2 0f04 ADDLW 0x40004e4 6aea CLRF 0xea,0x00004e6 0f6f ADDLW 0x6f0004e8 6ee9 MOVWF 0xe9,0x00004ea 0e00 MOVLW 0x00004ec 22ea ADDWFC 0xea,0x1,0x00004ee c06b MOVFF 0x6b,0xfef0004f0 ffef0004f2 0e24 MOVLW 0x240004f4 50db MOVF 0xdb,0x0,0x00004f6 0f05 ADDLW 0x50004f8 6aea CLRF 0xea,0x00004fa 0f6f ADDLW 0x6f0004fc 6ee9 MOVWF 0xe9,0x00004fe 0e00 MOVLW 0x0000500 22ea ADDWFC 0xea,0x1,0x0000502 c06c MOVFF 0x6c,0xfef000504 ffef000506 0e24 MOVLW 0x24000508 50db MOVF 0xdb,0x0,0x000050a 0f06 ADDLW 0x600050c 6aea CLRF 0xea,0x000050e 0f6f ADDLW 0x6f000510 6ee9 MOVWF 0xe9,0x0000512 0e00 MOVLW 0x0000514 22ea ADDWFC 0xea,0x1,0x0000516 c06d MOVFF 0x6d,0xfef000518 ffef00051a 0e24 MOVLW 0x2400051c 50db MOVF 0xdb,0x0,0x000051e 0f07 ADDLW 0x7000520 6aea CLRF 0xea,0x0000522 0f6f ADDLW 0x6f000524 6ee9 MOVWF 0xe9,0x0000526 0e00 MOVLW 0x0000528 22ea ADDWFC 0xea,0x1,0x000052a c06e MOVFF 0x6e,0xfef00052c ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00052e 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000530 0e03 MOVLW 0x3000532 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.c000534 d1a7 BRA 0x884 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.c000536 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.c000538 04db DECF 0xdb,0x0,0x000053a e001 BZ 0x53e00053c d084 BRA 0x64600053e 0100 MOVLB 0x0000540 5160 MOVF 0x60,0x0,0x1000542 e001 BZ 0x546000544 d080 BRA 0x646000546 0ee3 MOVLW 0xe3000548 0100 MOVLB 0x000054a 1561 ANDWF 0x61,0x0,0x100054c 6e00 MOVWF 0x0,0x000054e 0e03 MOVLW 0x3000550 0100 MOVLB 0x0000552 1562 ANDWF 0x62,0x0,0x1000554 6e01 MOVWF 0x1,0x0000556 0e03 MOVLW 0x3000558 1800 XORWF 0x0,0x0,0x000055a e101 BNZ 0x55e00055c 5001 MOVF 0x1,0x0,0x000055e e173 BNZ 0x646000560 0100 MOVLB 0x0000562 51bd MOVF 0xbd,0x0,0x1000564 0100 MOVLB 0x0000566 5d63 SUBWF 0x63,0x0,0x1000568 e16e BNZ 0x64600056a 0100 MOVLB 0x000056c 51c3 MOVF 0xc3,0x0,0x100056e 0100 MOVLB 0x0000570 1964 XORWF 0x64,0x0,0x1000572 e104 BNZ 0x57c000574 0100 MOVLB 0x0000576 51c4 MOVF 0xc4,0x0,0x1000578 0100 MOVLB 0x000057a 1965 XORWF 0x65,0x0,0x100057c e164 BNZ 0x646{ F:\MCP\projects\CAN\canBoot\Source\Main.c00057e 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000580 0100 MOVLB 0x0000582 1561 ANDWF 0x61,0x0,0x1000584 6e00 MOVWF 0x0,0x0000586 6a01 CLRF 0x1,0x0000588 90d8 BCF 0xd8,0x0,0x000058a 3201 RRCF 0x1,0x1,0x000058c 3200 RRCF 0x0,0x1,0x000058e 90d8 BCF 0xd8,0x0,0x0000590 3201 RRCF 0x1,0x1,0x0000592 3200 RRCF 0x0,0x1,0x0000594 0e08 MOVLW 0x8000596 0200 MULWF 0x0,0x0000598 0e25 MOVLW 0x2500059a cff3 MOVFF 0xff3,0xfdb00059c ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c00059e 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.c0005a0 50db MOVF 0xdb,0x0,0x00005a2 6aea CLRF 0xea,0x00005a4 0f6f ADDLW 0x6f0005a6 6ee9 MOVWF 0xe9,0x00005a8 0e00 MOVLW 0x00005aa 22ea ADDWFC 0xea,0x1,0x00005ac c067 MOVFF 0x67,0xfef0005ae ffef0005b0 0e25 MOVLW 0x250005b2 28db INCF 0xdb,0x0,0x00005b4 6aea CLRF 0xea,0x00005b6 0f6f ADDLW 0x6f0005b8 6ee9 MOVWF 0xe9,0x00005ba 0e00 MOVLW 0x00005bc 22ea ADDWFC 0xea,0x1,0x00005be c068 MOVFF 0x68,0xfef0005c0 ffef0005c2 0e25 MOVLW 0x250005c4 50db MOVF 0xdb,0x0,0x00005c6 0f02 ADDLW 0x20005c8 6aea CLRF 0xea,0x00005ca 0f6f ADDLW 0x6f0005cc 6ee9 MOVWF 0xe9,0x00005ce 0e00 MOVLW 0x00005d0 22ea ADDWFC 0xea,0x1,0x00005d2 c069 MOVFF 0x69,0xfef0005d4 ffef0005d6 0e25 MOVLW 0x250005d8 50db MOVF 0xdb,0x0,0x00005da 0f03 ADDLW 0x30005dc 6aea CLRF 0xea,0x00005de 0f6f ADDLW 0x6f0005e0 6ee9 MOVWF 0xe9,0x00005e2 0e00 MOVLW 0x00005e4 22ea ADDWFC 0xea,0x1,0x00005e6 c06a MOVFF 0x6a,0xfef0005e8 ffef0005ea 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.c0005ec 50db MOVF 0xdb,0x0,0x00005ee 0f04 ADDLW 0x40005f0 6aea CLRF 0xea,0x00005f2 0f6f ADDLW 0x6f0005f4 6ee9 MOVWF 0xe9,0x00005f6 0e00 MOVLW 0x00005f8 22ea ADDWFC 0xea,0x1,0x00005fa c06b MOVFF 0x6b,0xfef0005fc ffef0005fe 0e25 MOVLW 0x25000600 50db MOVF 0xdb,0x0,0x0000602 0f05 ADDLW 0x5000604 6aea CLRF 0xea,0x0000606 0f6f ADDLW 0x6f000608 6ee9 MOVWF 0xe9,0x000060a 0e00 MOVLW 0x000060c 22ea ADDWFC 0xea,0x1,0x000060e c06c MOVFF 0x6c,0xfef000610 ffef000612 0e25 MOVLW 0x25000614 50db MOVF 0xdb,0x0,0x0000616 0f06 ADDLW 0x6000618 6aea CLRF 0xea,0x000061a 0f6f ADDLW 0x6f00061c 6ee9 MOVWF 0xe9,0x000061e 0e00 MOVLW 0x0000620 22ea ADDWFC 0xea,0x1,0x0000622 c06d MOVFF 0x6d,0xfef000624 ffef000626 0e25 MOVLW 0x25000628 50db MOVF 0xdb,0x0,0x000062a 0f07 ADDLW 0x700062c 6aea CLRF 0xea,0x000062e 0f6f ADDLW 0x6f000630 6ee9 MOVWF 0xe9,0x0000632 0e00 MOVLW 0x0000634 22ea ADDWFC 0xea,0x1,0x0000636 c06e MOVFF 0x6e,0xfef000638 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00063a 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00063c 0100 MOVLB 0x000063e 27cb ADDWF 0xcb,0x1,0x1000640 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000642 0e03 MOVLW 0x3000644 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.c000646 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.c000648 04db DECF 0xdb,0x0,0x000064a e120 BNZ 0x68c00064c 0100 MOVLB 0x000064e 5160 MOVF 0x60,0x0,0x1000650 e11d BNZ 0x68c000652 0100 MOVLB 0x0000654 0e02 MOVLW 0x2000656 1961 XORWF 0x61,0x0,0x1000658 e101 BNZ 0x65c00065a 5162 MOVF 0x62,0x0,0x100065c e117 BNZ 0x68c00065e 0100 MOVLB 0x0000660 51bd MOVF 0xbd,0x0,0x1000662 0100 MOVLB 0x0000664 5d63 SUBWF 0x63,0x0,0x1000666 e112 BNZ 0x68c000668 0100 MOVLB 0x000066a 51c3 MOVF 0xc3,0x0,0x100066c 0100 MOVLB 0x000066e 1964 XORWF 0x64,0x0,0x1000670 e104 BNZ 0x67a000672 0100 MOVLB 0x0000674 51c4 MOVF 0xc4,0x0,0x1000676 0100 MOVLB 0x0000678 1965 XORWF 0x65,0x0,0x100067a e108 BNZ 0x68c{ 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.c00067c 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00067e 6bc5 CLRF 0xc5,0x1000680 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000682 0e02 MOVLW 0x2000684 6fc6 MOVWF 0xc6,0x1000686 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000688 0e01 MOVLW 0x100068a 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.c00068c 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.c00068e 04db DECF 0xdb,0x0,0x0000690 e138 BNZ 0x702000692 0100 MOVLB 0x0000694 5160 MOVF 0x60,0x0,0x1000696 e135 BNZ 0x702000698 0100 MOVLB 0x000069a 0e05 MOVLW 0x500069c 1961 XORWF 0x61,0x0,0x100069e e101 BNZ 0x6a20006a0 5162 MOVF 0x62,0x0,0x10006a2 e12f BNZ 0x7020006a4 0100 MOVLB 0x00006a6 51bd MOVF 0xbd,0x0,0x10006a8 0100 MOVLB 0x00006aa 5d63 SUBWF 0x63,0x0,0x10006ac e12a BNZ 0x7020006ae 0100 MOVLB 0x00006b0 51c3 MOVF 0xc3,0x0,0x10006b2 0100 MOVLB 0x00006b4 1964 XORWF 0x64,0x0,0x10006b6 e104 BNZ 0x6c00006b8 0100 MOVLB 0x00006ba 51c4 MOVF 0xc4,0x0,0x10006bc 0100 MOVLB 0x00006be 1965 XORWF 0x65,0x0,0x10006c0 e120 BNZ 0x702{ 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.c0006c2 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c0006c4 51cb MOVF 0xcb,0x0,0x10006c6 e109 BNZ 0x6da{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c0006c8 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ca 6bc5 CLRF 0xc5,0x10006cc 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ce 0e05 MOVLW 0x50006d0 6fc6 MOVWF 0xc6,0x10006d2 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0006d4 0e01 MOVLW 0x10006d6 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0006d8 d014 BRA 0x702 else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0006da 0e40 MOVLW 0x400006dc 0100 MOVLB 0x00006de 5dcb SUBWF 0xcb,0x0,0x10006e0 e00a BZ 0x6f6{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006e2 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0006e4 0e01 MOVLW 0x10006e6 6fc5 MOVWF 0xc5,0x10006e8 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ea 0e02 MOVLW 0x20006ec 6fc6 MOVWF 0xc6,0x10006ee 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0006f0 0e01 MOVLW 0x10006f2 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0006f4 d006 BRA 0x702 else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006f6 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0006f8 0e04 MOVLW 0x40006fa 6fbe MOVWF 0xbe,0x10006fc 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fe 0e05 MOVLW 0x5000700 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.c000702 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c000704 0100 MOVLB 0x0000706 5dcb SUBWF 0xcb,0x0,0x1000708 e107 BNZ 0x718{ F:\MCP\projects\CAN\canBoot\Source\Main.c00070a 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c00070c 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c00070e 0e04 MOVLW 0x4000710 6fbe MOVWF 0xbe,0x1000712 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000714 0e03 MOVLW 0x3000716 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.c000718 d0b5 BRA 0x884 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.c00071a 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.c00071c 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c00071e 0100 MOVLB 0x0000720 5dc7 SUBWF 0xc7,0x0,0x1000722 0e10 MOVLW 0x10000724 59c8 SUBWFB 0xc8,0x0,0x1000726 0e00 MOVLW 0x0000728 59c9 SUBWFB 0xc9,0x0,0x100072a 0e00 MOVLW 0x000072c 59ca SUBWFB 0xca,0x0,0x100072e e206 BC 0x73c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000730 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000732 0e01 MOVLW 0x1000734 6fc5 MOVWF 0xc5,0x1000736 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000738 0e01 MOVLW 0x100073a 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.c00073c c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00073e f000000740 c0c8 MOVFF 0xc8,0x1000742 f001000744 c0c9 MOVFF 0xc9,0x2000746 f002000748 c0ca MOVFF 0xca,0x300074a f00300074c 6a00 CLRF 0x0,0x000074e 6a01 CLRF 0x1,0x0000750 6a03 CLRF 0x3,0x0000752 0e10 MOVLW 0x10000754 90d8 BCF 0xd8,0x0,0x0000756 3203 RRCF 0x3,0x1,0x0000758 3202 RRCF 0x2,0x1,0x000075a 3201 RRCF 0x1,0x1,0x000075c 3200 RRCF 0x0,0x1,0x000075e 06e8 DECF 0xe8,0x1,0x0000760 e1f9 BNZ 0x754000762 5000 MOVF 0x0,0x0,0x0000764 6ef8 MOVWF 0xf8,0x0000766 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000768 f00000076a c0c8 MOVFF 0xc8,0x100076c f00100076e c0c9 MOVFF 0xc9,0x2000770 f002000772 c0ca MOVFF 0xca,0x3000774 f003000776 6a00 CLRF 0x0,0x0000778 6a02 CLRF 0x2,0x000077a 6a03 CLRF 0x3,0x000077c 0e08 MOVLW 0x800077e 90d8 BCF 0xd8,0x0,0x0000780 3203 RRCF 0x3,0x1,0x0000782 3202 RRCF 0x2,0x1,0x0000784 3201 RRCF 0x1,0x1,0x0000786 3200 RRCF 0x0,0x1,0x0000788 06e8 DECF 0xe8,0x1,0x000078a e1f9 BNZ 0x77e00078c 5000 MOVF 0x0,0x0,0x000078e 6ef7 MOVWF 0xf7,0x0000790 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000792 51c7 MOVF 0xc7,0x0,0x1000794 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000796 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.c000798 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.c00079a 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.c00079c 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.c00079e 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.c0007a0 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 6ea7 MOVWF 0xa7,0x00007a4 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a6 6ea7 MOVWF 0xa7,0x00007a8 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.c0007aa 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.c0007ac c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae f0000007b0 c0c8 MOVFF 0xc8,0x10007b2 f0010007b4 c0c9 MOVFF 0xc9,0x20007b6 f0020007b8 c0ca MOVFF 0xca,0x30007ba f0030007bc 6a00 CLRF 0x0,0x00007be 6a01 CLRF 0x1,0x00007c0 6a03 CLRF 0x3,0x00007c2 0e10 MOVLW 0x100007c4 90d8 BCF 0xd8,0x0,0x00007c6 3203 RRCF 0x3,0x1,0x00007c8 3202 RRCF 0x2,0x1,0x00007ca 3201 RRCF 0x1,0x1,0x00007cc 3200 RRCF 0x0,0x1,0x00007ce 06e8 DECF 0xe8,0x1,0x00007d0 e1f9 BNZ 0x7c40007d2 5000 MOVF 0x0,0x0,0x00007d4 6ef8 MOVWF 0xf8,0x00007d6 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0007d8 f0000007da c0c8 MOVFF 0xc8,0x10007dc f0010007de c0c9 MOVFF 0xc9,0x20007e0 f0020007e2 c0ca MOVFF 0xca,0x30007e4 f0030007e6 6a00 CLRF 0x0,0x00007e8 6a02 CLRF 0x2,0x00007ea 6a03 CLRF 0x3,0x00007ec 0e08 MOVLW 0x80007ee 90d8 BCF 0xd8,0x0,0x00007f0 3203 RRCF 0x3,0x1,0x00007f2 3202 RRCF 0x2,0x1,0x00007f4 3201 RRCF 0x1,0x1,0x00007f6 3200 RRCF 0x0,0x1,0x00007f8 06e8 DECF 0xe8,0x1,0x00007fa e1f9 BNZ 0x7ee0007fc 5000 MOVF 0x0,0x0,0x00007fe 6ef7 MOVWF 0xf7,0x0000800 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000802 51c7 MOVF 0xc7,0x0,0x1000804 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c000806 0e13 MOVLW 0x13 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c000808 6adb CLRF 0xdb,0x000080a 0e3f MOVLW 0x3f00080c 6ef3 MOVWF 0xf3,0x000080e 0e13 MOVLW 0x13000810 cfdb MOVFF 0xfdb,0xff4000812 fff4000814 50f3 MOVF 0xf3,0x0,0x0000816 5cf4 SUBWF 0xf4,0x0,0x0000818 e20d BC 0x83400082e 0e13 MOVLW 0x13000830 2adb INCF 0xdb,0x1,0x0000832 d7eb BRA 0x80a{ F:\MCP\projects\CAN\canBoot\Source\Main.c00081a 0e13 MOVLW 0x13 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c00081c 50db MOVF 0xdb,0x0,0x000081e 6aea CLRF 0xea,0x0000820 0f6f ADDLW 0x6f000822 6ee9 MOVWF 0xe9,0x0000824 0e00 MOVLW 0x0000826 22ea ADDWFC 0xea,0x1,0x0000828 50ef MOVF 0xef,0x0,0x000082a 6ef5 MOVWF 0xf5,0x000082c d9b6 RCALL 0xb9a TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000834 c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c000836 fff5000838 d9ae RCALL 0xb96 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.c00083a 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.c00083c 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.c00083e 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.c000840 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.c000842 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000844 6ea7 MOVWF 0xa7,0x0000846 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000848 6ea7 MOVWF 0xa7,0x000084a 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.c00084c 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.c00084e 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000850 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c000852 0100 MOVLB 0x0000854 27c7 ADDWF 0xc7,0x1,0x1000856 0e00 MOVLW 0x0000858 0100 MOVLB 0x000085a 23c8 ADDWFC 0xc8,0x1,0x100085c 0e00 MOVLW 0x000085e 0100 MOVLB 0x0000860 23c9 ADDWFC 0xc9,0x1,0x1000862 0e00 MOVLW 0x0000864 0100 MOVLB 0x0000866 23ca ADDWFC 0xca,0x1,0x1000868 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00086a 6bcb CLRF 0xcb,0x100086c 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00086e 6bc5 CLRF 0xc5,0x1000870 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000872 0e01 MOVLW 0x1000874 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c000876 d006 BRA 0x884 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.c000878 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00087a f00800087c d003 BRA 0x884 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.c00087e 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000880 6bbe CLRF 0xbe,0x1000882 d000 BRA 0x884 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.c000886 0e26 MOVLW 0x26 } F:\MCP\projects\CAN\canBoot\Source\Main.c000888 5ce1 SUBWF 0xe1,0x0,0x000088a e202 BC 0x89000088c 6ae1 CLRF 0xe1,0x000088e 52e5 MOVF 0xe5,0x1,0x0000890 6ee1 MOVWF 0xe1,0x0000892 52e5 MOVF 0xe5,0x1,0x0000894 cfe7 MOVFF 0xfe7,0xfd9000896 ffd9000898 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.c00089a 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.c00089c 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.c00089e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008a0 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.c0008a2 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.c0008a4 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.c0008a6 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008a8 6e6f MOVWF 0x6f,0x00008aa 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c0008ac 146e ANDWF 0x6e,0x0,0x00008ae 0880 SUBLW 0x800008b0 e001 BZ 0x8b40008b2 d7fb BRA 0x8aaF:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// 500Khz@40Mhz (new by the book) F:\MCP\projects\CAN\canBoot\Source\Main.c0008b4 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBoot\Source\Main.c0008b6 6e70 MOVWF 0x70,0x00008b8 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008ba 6e71 MOVWF 0x71,0x00008bc 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBoot\Source\Main.c0008be 6e72 MOVWF 0x72,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c//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.c//BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c//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.c//BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c//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.c//BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//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.c//BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//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.c//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.c//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.c//BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c//BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008c0 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c2 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c4 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.c0008c6 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c8 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.c0008ca 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008cc 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0008ce 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d0 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.c0008d2 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.c0008d4 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008d6 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0008d8 146e ANDWF 0x6e,0x0,0x00008da e001 BZ 0x8de0008dc d7fc BRA 0x8d6#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008de 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.c0008e0 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBoot\Source\Main.c0008e2 146f ANDWF 0x6f,0x0,0x00008e4 0910 IORLW 0x100008e6 6e00 MOVWF 0x0,0x00008e8 0e00 MOVLW 0x00008ea 1477 ANDWF 0x77,0x0,0x00008ec 1000 IORWF 0x0,0x0,0x00008ee 6e77 MOVWF 0x77,0x00008f0 be60 BTFSC 0x60,0x7,0x0 if (!RXB0CONbits.RXFUL) return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c0008f2 d002 BRA 0x8f80008f4 0e00 MOVLW 0x00008f6 d07c BRA 0x9f0F:\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.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008f8 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c0008fa 1461 ANDWF 0x61,0x0,0x00008fc 38e8 SWAPF 0xe8,0x0,0x00008fe 0b0f ANDLW 0xf000900 0100 MOVLB 0x0000902 6f60 MOVWF 0x60,0x1000904 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.c000906 1461 ANDWF 0x61,0x0,0x0000908 6e04 MOVWF 0x4,0x000090a 6a05 CLRF 0x5,0x000090c 0e06 MOVLW 0x600090e 90d8 BCF 0xd8,0x0,0x0000910 3604 RLCF 0x4,0x1,0x0000912 3605 RLCF 0x5,0x1,0x0000914 04e8 DECF 0xe8,0x0,0x0000916 e1fb BNZ 0x90e000918 0ee0 MOVLW 0xe000091a 1462 ANDWF 0x62,0x0,0x000091c 6e06 MOVWF 0x6,0x000091e 6a07 CLRF 0x7,0x0000920 90d8 BCF 0xd8,0x0,0x0000922 3207 RRCF 0x7,0x1,0x0000924 3206 RRCF 0x6,0x1,0x0000926 90d8 BCF 0xd8,0x0,0x0000928 3207 RRCF 0x7,0x1,0x000092a 3206 RRCF 0x6,0x1,0x000092c 5004 MOVF 0x4,0x0,0x000092e 2406 ADDWF 0x6,0x0,0x0000930 6e02 MOVWF 0x2,0x0000932 5005 MOVF 0x5,0x0,0x0000934 2007 ADDWFC 0x7,0x0,0x0000936 6e03 MOVWF 0x3,0x0000938 0e03 MOVLW 0x300093a 1462 ANDWF 0x62,0x0,0x000093c 6e08 MOVWF 0x8,0x000093e 6a09 CLRF 0x9,0x0000940 90d8 BCF 0xd8,0x0,0x0000942 3608 RLCF 0x8,0x1,0x0000944 3609 RLCF 0x9,0x1,0x0000946 5002 MOVF 0x2,0x0,0x0000948 2408 ADDWF 0x8,0x0,0x000094a 6e00 MOVWF 0x0,0x000094c 5003 MOVF 0x3,0x0,0x000094e 2009 ADDWFC 0x9,0x0,0x0000950 6e01 MOVWF 0x1,0x0000952 0e80 MOVLW 0x80000954 1463 ANDWF 0x63,0x0,0x0000956 6e0a MOVWF 0xa,0x0000958 6a0b CLRF 0xb,0x000095a 0e07 MOVLW 0x700095c 90d8 BCF 0xd8,0x0,0x000095e 320b RRCF 0xb,0x1,0x0000960 320a RRCF 0xa,0x1,0x0000962 04e8 DECF 0xe8,0x0,0x0000964 e1fb BNZ 0x95c000966 5000 MOVF 0x0,0x0,0x0000968 240a ADDWF 0xa,0x0,0x000096a 0100 MOVLB 0x000096c 6f61 MOVWF 0x61,0x100096e 5001 MOVF 0x1,0x0,0x0000970 200b ADDWFC 0xb,0x0,0x0000972 6f62 MOVWF 0x62,0x1000974 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000976 1463 ANDWF 0x63,0x0,0x0000978 40e8 RRNCF 0xe8,0x0,0x000097a 0b7f ANDLW 0x7f00097c 6f63 MOVWF 0x63,0x100097e 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c000980 1463 ANDWF 0x63,0x0,0x0000982 6e00 MOVWF 0x0,0x0000984 c000 MOVFF 0x0,0x1000986 f001000988 6a00 CLRF 0x0,0x000098a 5064 MOVF 0x64,0x0,0x000098c 2400 ADDWF 0x0,0x0,0x000098e 6f64 MOVWF 0x64,0x1000990 0e00 MOVLW 0x0000992 2001 ADDWFC 0x1,0x0,0x0000994 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.c000996 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.c000998 0b01 ANDLW 0x100099a 6e02 MOVWF 0x2,0x000099c 5065 MOVF 0x65,0x0,0x000099e 0b02 ANDLW 0x20009a0 e001 BZ 0x9a40009a2 0e01 MOVLW 0x10009a4 24e8 ADDWF 0xe8,0x0,0x00009a6 6e01 MOVWF 0x1,0x00009a8 5065 MOVF 0x65,0x0,0x00009aa 0b04 ANDLW 0x40009ac e001 BZ 0x9b00009ae 0e01 MOVLW 0x10009b0 0d04 MULLW 0x40009b2 cff3 MOVFF 0xff3,0x00009b4 f0000009b6 5065 MOVF 0x65,0x0,0x00009b8 0b08 ANDLW 0x80009ba e001 BZ 0x9be0009bc 0e01 MOVLW 0x10009be 0d08 MULLW 0x80009c0 50f3 MOVF 0xf3,0x0,0x00009c2 2400 ADDWF 0x0,0x0,0x00009c4 2401 ADDWF 0x1,0x0,0x00009c6 2402 ADDWF 0x2,0x0,0x00009c8 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c0009ca cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c0009cc f0670009ce cf67 MOVFF 0xf67,0x680009d0 f0680009d2 cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c0009d4 f0690009d6 cf69 MOVFF 0xf69,0x6a0009d8 f06a0009da cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c0009dc f06b0009de cf6b MOVFF 0xf6b,0x6c0009e0 f06c0009e2 cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c0009e4 f06d0009e6 cf6d MOVFF 0xf6d,0x6e0009e8 f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c0009ea 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0009ec 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c0009ee d000 BRA 0x9f00009f0 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.c0009f2 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c0009f4 ffe60009f6 cfe1 MOVFF 0xfe1,0xfd90009f8 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0009fa 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c0009fc b740 BTFSC 0x40,0x3,0x10009fe d004 BRA 0xa08000a00 0e00 MOVLW 0x0000a02 1477 ANDWF 0x77,0x0,0x0000a04 0903 IORLW 0x3000a06 6e77 MOVWF 0x77,0x0000a08 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000a0a b730 BTFSC 0x30,0x3,0x1000a0c d004 BRA 0xa16000a0e 0e00 MOVLW 0x0000a10 1477 ANDWF 0x77,0x0,0x0000a12 0904 IORLW 0x4000a14 6e77 MOVWF 0x77,0x0000a16 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000a18 b720 BTFSC 0x20,0x3,0x1000a1a d005 BRA 0xa26000a1c 0e00 MOVLW 0x0000a1e 1477 ANDWF 0x77,0x0,0x0000a20 0905 IORLW 0x5000a22 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c000a24 d002 BRA 0xa2a else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c000a26 0e00 MOVLW 0x0000a28 d0b0 BRA 0xb8aF:\MCP\projects\CAN\canBoot\Source\Main.c000a2a 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a2c cfdb MOVFF 0xfdb,0x0000a2e f000000a30 3400 RLCF 0x0,0x0,0x0000a32 e20e BC 0xa50000a34 0eef MOVLW 0xef000a36 cfdb MOVFF 0xfdb,0x1000a38 f001000a3a 0e03 MOVLW 0x3000a3c 6ee7 MOVWF 0xe7,0x0000a3e 1801 XORWF 0x1,0x0,0x0000a40 aee8 BTFSS 0xe8,0x7,0x0000a42 d002 BRA 0xa48000a44 3401 RLCF 0x1,0x0,0x0000a46 d003 BRA 0xa4e000a48 50e7 MOVF 0xe7,0x0,0x0000a4a 80d8 BSF 0xd8,0x0,0x0000a4c 5401 SUBFWB 0x1,0x0,0x0000a4e e202 BC 0xa54000a50 0eef MOVLW 0xef000a52 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.c000a54 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c000a56 cfdb MOVFF 0xfdb,0x0000a58 f000000a5a 0ef2 MOVLW 0xf2000a5c cfdb MOVFF 0xfdb,0x1000a5e f001000a60 0ec0 MOVLW 0xc0000a62 1600 ANDWF 0x0,0x1,0x0000a64 0e03 MOVLW 0x3000a66 1601 ANDWF 0x1,0x1,0x0000a68 0e06 MOVLW 0x6000a6a 90d8 BCF 0xd8,0x0,0x0000a6c 3201 RRCF 0x1,0x1,0x0000a6e 3200 RRCF 0x0,0x1,0x0000a70 04e8 DECF 0xe8,0x0,0x0000a72 e1fb BNZ 0xa6a000a74 0ef0 MOVLW 0xf0000a76 50db MOVF 0xdb,0x0,0x0000a78 0b0f ANDLW 0xf000a7a 0d10 MULLW 0x10000a7c 50f3 MOVF 0xf3,0x0,0x0000a7e 2400 ADDWF 0x0,0x0,0x0000a80 6e61 MOVWF 0x61,0x0000a82 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000a84 6ee7 MOVWF 0xe7,0x0000a86 0ef1 MOVLW 0xf1000a88 cfdb MOVFF 0xfdb,0x2000a8a f002000a8c 0ef2 MOVLW 0xf2000a8e cfdb MOVFF 0xfdb,0x3000a90 f003000a92 50e7 MOVF 0xe7,0x0,0x0000a94 1602 ANDWF 0x2,0x1,0x0000a96 6a03 CLRF 0x3,0x0000a98 90d8 BCF 0xd8,0x0,0x0000a9a 3203 RRCF 0x3,0x1,0x0000a9c 3202 RRCF 0x2,0x1,0x0000a9e 0e3f MOVLW 0x3f000aa0 6ee7 MOVWF 0xe7,0x0000aa2 0ef1 MOVLW 0xf1000aa4 cfdb MOVFF 0xfdb,0x0000aa6 f000000aa8 0ef2 MOVLW 0xf2000aaa cfdb MOVFF 0xfdb,0x1000aac f001000aae 50e7 MOVF 0xe7,0x0,0x0000ab0 1600 ANDWF 0x0,0x1,0x0000ab2 6a01 CLRF 0x1,0x0000ab4 90d8 BCF 0xd8,0x0,0x0000ab6 3600 RLCF 0x0,0x1,0x0000ab8 3601 RLCF 0x1,0x1,0x0000aba 90d8 BCF 0xd8,0x0,0x0000abc 3600 RLCF 0x0,0x1,0x0000abe 3601 RLCF 0x1,0x1,0x0000ac0 5000 MOVF 0x0,0x0,0x0000ac2 2402 ADDWF 0x2,0x0,0x0000ac4 6e62 MOVWF 0x62,0x0000ac6 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.c000ac8 cfdb MOVFF 0xfdb,0x2000aca f002000acc 0ef5 MOVLW 0xf5000ace cfdb MOVFF 0xfdb,0x3000ad0 f003000ad2 0e00 MOVLW 0x0000ad4 1602 ANDWF 0x2,0x1,0x0000ad6 0e01 MOVLW 0x1000ad8 1603 ANDWF 0x3,0x1,0x0000ada c003 MOVFF 0x3,0x2000adc f002000ade 6a03 CLRF 0x3,0x0000ae0 0e01 MOVLW 0x1000ae2 6ee7 MOVWF 0xe7,0x0000ae4 0ef1 MOVLW 0xf1000ae6 cfdb MOVFF 0xfdb,0x0000ae8 f000000aea 0ef2 MOVLW 0xf2000aec cfdb MOVFF 0xfdb,0x1000aee f001000af0 50e7 MOVF 0xe7,0x0,0x0000af2 1600 ANDWF 0x0,0x1,0x0000af4 6a01 CLRF 0x1,0x0000af6 0e07 MOVLW 0x7000af8 90d8 BCF 0xd8,0x0,0x0000afa 3600 RLCF 0x0,0x1,0x0000afc 3601 RLCF 0x1,0x1,0x0000afe 04e8 DECF 0xe8,0x0,0x0000b00 e1fb BNZ 0xaf8000b02 0ef3 MOVLW 0xf3000b04 50db MOVF 0xdb,0x0,0x0000b06 0b3f ANDLW 0x3f000b08 24e8 ADDWF 0xe8,0x0,0x0000b0a 2400 ADDWF 0x0,0x0,0x0000b0c 2402 ADDWF 0x2,0x0,0x0000b0e 6e63 MOVWF 0x63,0x0000b10 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000b12 6ee7 MOVWF 0xe7,0x0000b14 0ef4 MOVLW 0xf4000b16 cfdb MOVFF 0xfdb,0x0000b18 f000000b1a 0ef5 MOVLW 0xf5000b1c cfdb MOVFF 0xfdb,0x1000b1e f001000b20 50e7 MOVF 0xe7,0x0,0x0000b22 1600 ANDWF 0x0,0x1,0x0000b24 6a01 CLRF 0x1,0x0000b26 5000 MOVF 0x0,0x0,0x0000b28 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000b2a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000b2c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000b2e 50db MOVF 0xdb,0x0,0x0000b30 0808 SUBLW 0x8000b32 e203 BC 0xb3a000b34 0e08 MOVLW 0x8000b36 6e65 MOVWF 0x65,0x0000b38 d003 BRA 0xb40000b3a 0ef6 MOVLW 0xf6000b3c 50db MOVF 0xdb,0x0,0x0000b3e 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.c000b40 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.c000b42 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b44 50db MOVF 0xdb,0x0,0x0000b46 6e66 MOVWF 0x66,0x0000b48 0ef8 MOVLW 0xf8000b4a 50db MOVF 0xdb,0x0,0x0000b4c 6e67 MOVWF 0x67,0x0000b4e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b50 50db MOVF 0xdb,0x0,0x0000b52 6e68 MOVWF 0x68,0x0000b54 0efa MOVLW 0xfa000b56 50db MOVF 0xdb,0x0,0x0000b58 6e69 MOVWF 0x69,0x0000b5a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b5c 50db MOVF 0xdb,0x0,0x0000b5e 6e6a MOVWF 0x6a,0x0000b60 0efc MOVLW 0xfc000b62 50db MOVF 0xdb,0x0,0x0000b64 6e6b MOVWF 0x6b,0x0000b66 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000b68 50db MOVF 0xdb,0x0,0x0000b6a 6e6c MOVWF 0x6c,0x0000b6c 0efe MOVLW 0xfe000b6e 50db MOVF 0xdb,0x0,0x0000b70 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000b72 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.c000b74 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000b76 cfdb MOVFF 0xfdb,0xfe6000b78 ffe6000b7a 0efc MOVLW 0xfc000b7c 1460 ANDWF 0x60,0x0,0x0000b7e 52e5 MOVF 0xe5,0x1,0x0000b80 10e7 IORWF 0xe7,0x0,0x0000b82 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.c000b84 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.c000b86 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000b88 d000 BRA 0xb8aF:\MCP\projects\CAN\canBoot\Source\Main.c000b8a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000b8c cfe7 MOVFF 0xfe7,0xfd9000b8e ffd9000b90 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.c000b92 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b94 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.c000b96 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b98 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.c000b9a 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b9c 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.c000b9e c0b3 MOVFF 0xb3,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000ba0 f010000ba2 c0b4 MOVFF 0xb4,0x11000ba4 f011000ba6 c0b5 MOVFF 0xb5,0x12000ba8 f012000baa c0b6 MOVFF 0xb6,0x13000bac f013000bae d000 BRA 0xbb0000bb0 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-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 139 $ 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.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EERead F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to read from. F:\MCP\projects\CAN\Include\EEAccess.c* Output: Byte read. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c000bb2 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c000bb4 ffe6000bb6 cfe1 MOVFF 0xfe1,0xfd9000bb8 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000bba 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000bbc cfdb MOVFF 0xfdb,0x0000bbe f000000bc0 0efe MOVLW 0xfe000bc2 cfdb MOVFF 0xfdb,0x1000bc4 f001000bc6 c001 MOVFF 0x1,0x0000bc8 f000000bca 6a01 CLRF 0x1,0x0000bcc 5000 MOVF 0x0,0x0,0x0000bce 6eaa MOVWF 0xaa,0x0000bd0 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000bd2 6ee7 MOVWF 0xe7,0x0000bd4 0efd MOVLW 0xfd000bd6 cfdb MOVFF 0xfdb,0x0000bd8 f000000bda 0efe MOVLW 0xfe000bdc cfdb MOVFF 0xfdb,0x1000bde f001000be0 50e7 MOVF 0xe7,0x0,0x0000be2 1600 ANDWF 0x0,0x1,0x0000be4 6a01 CLRF 0x1,0x0000be6 5000 MOVF 0x0,0x0,0x0000be8 6ea9 MOVWF 0xa9,0x0000bea 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000bec 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000bee 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c000bf0 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c000bf2 d000 BRA 0xbf4000bf4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000bf6 cfe7 MOVFF 0xfe7,0xfd9000bf8 ffd9000bfa 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EEWrite F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to write to and BYTE data to write. F:\MCP\projects\CAN\Include\EEAccess.c* Output: none. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c000bfc cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c000bfe ffe6000c00 cfe1 MOVFF 0xfe1,0xfd9000c02 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000c04 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c000c06 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000c08 cfdb MOVFF 0xfdb,0x0000c0a f000000c0c 0efe MOVLW 0xfe000c0e cfdb MOVFF 0xfdb,0x1000c10 f001000c12 c001 MOVFF 0x1,0x0000c14 f000000c16 6a01 CLRF 0x1,0x0000c18 5000 MOVF 0x0,0x0,0x0000c1a 6eaa MOVWF 0xaa,0x0000c1c 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000c1e 6ee7 MOVWF 0xe7,0x0000c20 0efd MOVLW 0xfd000c22 cfdb MOVFF 0xfdb,0x0000c24 f000000c26 0efe MOVLW 0xfe000c28 cfdb MOVFF 0xfdb,0x1000c2a f001000c2c 50e7 MOVF 0xe7,0x0,0x0000c2e 1600 ANDWF 0x0,0x1,0x0000c30 6a01 CLRF 0x1,0x0000c32 5000 MOVF 0x0,0x0,0x0000c34 6ea9 MOVWF 0xa9,0x0000c36 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c000c38 50db MOVF 0xdb,0x0,0x0000c3a 6ea8 MOVWF 0xa8,0x0000c3c 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000c3e 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000c40 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c000c42 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c000c44 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c000c46 6ea7 MOVWF 0xa7,0x0000c48 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c000c4a 6ea7 MOVWF 0xa7,0x0000c4c 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c000c4e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c000c50 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c000c52 d7fe BRA 0xc50000c54 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c000c56 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000c58 cfe7 MOVFF 0xfe7,0xfd9000c5a ffd9000c5c 0012 RETURN 0x0