Rev 64 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Oct 31 13:06:25 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: Main.c F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canBoot\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBoot\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) 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 <Tick.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <boot.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 0x2008 _asm goto RM_HIGH_INTERRUPT_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00000a f01000000c 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 0x2018 _asm goto RM_LOW_INTERRUPT_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00001a f01000001c 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 BYTE ful=0; 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.c000038 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBoot\Source\Main.c00003a ffe600003c cfe1 MOVFF 0xfe1,0xfd900003e ffd9000040 0e18 MOVLW 0x18000042 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 = 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.cstatic BYTE tmp; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Inits F:\MCP\projects\CAN\canBoot\Source\Main.c000044 db7e RCALL 0x742 mainInit(); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.c000046 db83 RCALL 0x74e canInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000048 ec6b CALL 0xad6,0x0 tBoot = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00004a f00500004c c010 MOVFF 0x10,0xfde00004e ffde000050 c011 MOVFF 0x11,0xfde000052 ffde000054 c012 MOVFF 0x12,0xfde000056 ffde000058 c013 MOVFF 0x13,0xfdd00005a ffdd00005c 52dd MOVF 0xdd,0x1,0x000005e 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00072c d499 BRA 0x60 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.c000060 db9f RCALL 0x7a0 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c000062 6ee7 MOVWF 0xe7,0x0000064 0e15 MOVLW 0x15000066 cfe7 MOVFF 0xfe7,0xfdb000068 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c00006a 0100 MOVLB 0x0 tickSubCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c00006c 2bba INCF 0xba,0x1,0x100006e 0e00 MOVLW 0x0000070 23bb ADDWFC 0xbb,0x1,0x1000072 23bc ADDWFC 0xbc,0x1,0x1000074 23bd ADDWFC 0xbd,0x1,0x1000076 80d8 BSF 0xd8,0x0,0x0 if (tickSubCounter>TICK_SUB_COUNTER_10MS) F:\MCP\projects\CAN\canBoot\Source\Main.c000078 0e38 MOVLW 0x3800007a 0100 MOVLB 0x000007c 55ba SUBFWB 0xba,0x0,0x100007e 0e01 MOVLW 0x1000080 55bb SUBFWB 0xbb,0x0,0x1000082 0e00 MOVLW 0x0000084 55bc SUBFWB 0xbc,0x0,0x1000086 0e00 MOVLW 0x0000088 55bd SUBFWB 0xbd,0x0,0x100008a e20b BC 0xa2{ F:\MCP\projects\CAN\canBoot\Source\Main.c00008c 0100 MOVLB 0x0 tickCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c00008e 2bb6 INCF 0xb6,0x1,0x1000090 0e00 MOVLW 0x0000092 23b7 ADDWFC 0xb7,0x1,0x1000094 23b8 ADDWFC 0xb8,0x1,0x1000096 23b9 ADDWFC 0xb9,0x1,0x1000098 0100 MOVLB 0x0 tickSubCounter=0; F:\MCP\projects\CAN\canBoot\Source\Main.c00009a 6bba CLRF 0xba,0x100009c 6bbb CLRF 0xbb,0x100009e 6bbc CLRF 0xbc,0x10000a0 6bbd CLRF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0000a2 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c0000a4 51be MOVF 0xbe,0x0,0x10000a6 0a05 XORLW 0x50000a8 e101 BNZ 0xac0000aa d33a BRA 0x7200000ac 0a01 XORLW 0x10000ae e101 BNZ 0xb20000b0 d299 BRA 0x5e40000b2 0a07 XORLW 0x70000b4 e101 BNZ 0xb80000b6 d1ad BRA 0x4120000b8 0a01 XORLW 0x10000ba e101 BNZ 0xbe0000bc d102 BRA 0x2c20000be 0a03 XORLW 0x30000c0 e101 BNZ 0xc40000c2 d0a7 BRA 0x2120000c4 0a01 XORLW 0x10000c6 e001 BZ 0xca0000c8 d32e BRA 0x726{ 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.c0000ca 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_INIT && cm.data[RID_INDEX]==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c0000cc 04db DECF 0xdb,0x0,0x00000ce e161 BNZ 0x1920000d0 0100 MOVLB 0x00000d2 5160 MOVF 0x60,0x0,0x10000d4 e15e BNZ 0x1920000d6 0100 MOVLB 0x00000d8 0e01 MOVLW 0x10000da 1961 XORWF 0x61,0x0,0x10000dc e101 BNZ 0xe00000de 5162 MOVF 0x62,0x0,0x10000e0 e158 BNZ 0x1920000e2 0e78 MOVLW 0x780000e4 0100 MOVLB 0x00000e6 5d6c SUBWF 0x6c,0x0,0x10000e8 e154 BNZ 0x1920000ea 0100 MOVLB 0x00000ec 5163 MOVF 0x63,0x0,0x10000ee e151 BNZ 0x192{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c0000f0 c06a MOVFF 0x6a,0x0 pgmAddress = (((DWORD)cm.data[ADDRU_INDEX])<<16)+(((DWORD)cm.data[ADDRH_INDEX])<<8)+((DWORD)cm.data[ADDRL_INDEX]); F:\MCP\projects\CAN\canBoot\Source\Main.c0000f2 f0000000f4 6a01 CLRF 0x1,0x00000f6 6a02 CLRF 0x2,0x00000f8 6a03 CLRF 0x3,0x00000fa 0e10 MOVLW 0x100000fc 0b1f ANDLW 0x1f0000fe e007 BZ 0x10e000100 90d8 BCF 0xd8,0x0,0x0000102 3600 RLCF 0x0,0x1,0x0000104 3601 RLCF 0x1,0x1,0x0000106 3602 RLCF 0x2,0x1,0x0000108 3603 RLCF 0x3,0x1,0x000010a 06e8 DECF 0xe8,0x1,0x000010c e1f9 BNZ 0x10000010e c069 MOVFF 0x69,0x4000110 f004000112 6a05 CLRF 0x5,0x0000114 6a06 CLRF 0x6,0x0000116 6a07 CLRF 0x7,0x0000118 0e08 MOVLW 0x800011a 0b1f ANDLW 0x1f00011c e007 BZ 0x12c00011e 90d8 BCF 0xd8,0x0,0x0000120 3604 RLCF 0x4,0x1,0x0000122 3605 RLCF 0x5,0x1,0x0000124 3606 RLCF 0x6,0x1,0x0000126 3607 RLCF 0x7,0x1,0x0000128 06e8 DECF 0xe8,0x1,0x000012a e1f9 BNZ 0x11e00012c 5004 MOVF 0x4,0x0,0x000012e 2600 ADDWF 0x0,0x1,0x0000130 5005 MOVF 0x5,0x0,0x0000132 2201 ADDWFC 0x1,0x1,0x0000134 5006 MOVF 0x6,0x0,0x0000136 2202 ADDWFC 0x2,0x1,0x0000138 5007 MOVF 0x7,0x0,0x000013a 2203 ADDWFC 0x3,0x1,0x000013c c068 MOVFF 0x68,0x800013e f008000140 6a09 CLRF 0x9,0x0000142 6a0a CLRF 0xa,0x0000144 6a0b CLRF 0xb,0x0000146 5000 MOVF 0x0,0x0,0x0000148 2408 ADDWF 0x8,0x0,0x000014a 0100 MOVLB 0x000014c 6fc7 MOVWF 0xc7,0x100014e 5001 MOVF 0x1,0x0,0x0000150 2009 ADDWFC 0x9,0x0,0x0000152 0100 MOVLB 0x0000154 6fc8 MOVWF 0xc8,0x1000156 5002 MOVF 0x2,0x0,0x0000158 200a ADDWFC 0xa,0x0,0x000015a 0100 MOVLB 0x000015c 6fc9 MOVWF 0xc9,0x100015e 5003 MOVF 0x3,0x0,0x0000160 200b ADDWFC 0xb,0x0,0x0000162 0100 MOVLB 0x0000164 6fca MOVWF 0xca,0x1000166 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000168 f0c300016a c065 MOVFF 0x65,0xc400016c f0c400016e ec6b CALL 0xad6,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000170 f005000172 c010 MOVFF 0x10,0xbf000174 f0bf000176 c011 MOVFF 0x11,0xc0000178 f0c000017a c012 MOVFF 0x12,0xc100017c f0c100017e c013 MOVFF 0x13,0xc2000180 f0c2000182 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000184 6bc5 CLRF 0xc5,0x1000186 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000188 0e02 MOVLW 0x200018a 6fc6 MOVWF 0xc6,0x100018c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00018e 0e01 MOVLW 0x1000190 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.c000192 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c000194 ffe9000196 cfda MOVFF 0xfda,0xfea000198 ffea00019a cfee MOVFF 0xfee,0x400019c f00400019e cfee MOVFF 0xfee,0x50001a0 f0050001a2 cfee MOVFF 0xfee,0x60001a4 f0060001a6 cfef MOVFF 0xfef,0x70001a8 f0070001aa c004 MOVFF 0x4,0xfe60001ac ffe60001ae c005 MOVFF 0x5,0xfe60001b0 ffe60001b2 c006 MOVFF 0x6,0xfe60001b4 ffe60001b6 c007 MOVFF 0x7,0xfe60001b8 ffe60001ba ec6b CALL 0xad6,0x00001bc f0050001be 52e5 MOVF 0xe5,0x1,0x00001c0 cfe7 MOVFF 0xfe7,0x70001c2 f0070001c4 52e5 MOVF 0xe5,0x1,0x00001c6 cfe7 MOVFF 0xfe7,0x60001c8 f0060001ca 52e5 MOVF 0xe5,0x1,0x00001cc cfe7 MOVFF 0xfe7,0x50001ce f0050001d0 52e5 MOVF 0xe5,0x1,0x00001d2 cfe7 MOVFF 0xfe7,0x40001d4 f0040001d6 0100 MOVLB 0x00001d8 5004 MOVF 0x4,0x0,0x00001da 5c10 SUBWF 0x10,0x0,0x00001dc 6e00 MOVWF 0x0,0x00001de 0100 MOVLB 0x00001e0 5005 MOVF 0x5,0x0,0x00001e2 5811 SUBWFB 0x11,0x0,0x00001e4 6e01 MOVWF 0x1,0x00001e6 0100 MOVLB 0x00001e8 5006 MOVF 0x6,0x0,0x00001ea 5812 SUBWFB 0x12,0x0,0x00001ec 6e02 MOVWF 0x2,0x00001ee 0100 MOVLB 0x00001f0 5007 MOVF 0x7,0x0,0x00001f2 5813 SUBWFB 0x13,0x0,0x00001f4 6e03 MOVWF 0x3,0x00001f6 80d8 BSF 0xd8,0x0,0x00001f8 0ef4 MOVLW 0xf40001fa 5400 SUBFWB 0x0,0x0,0x00001fc 0e01 MOVLW 0x10001fe 5401 SUBFWB 0x1,0x0,0x0000200 0e00 MOVLW 0x0000202 5402 SUBFWB 0x2,0x0,0x0000204 0e00 MOVLW 0x0000206 5403 SUBFWB 0x3,0x0,0x0000208 e203 BC 0x210{ F:\MCP\projects\CAN\canBoot\Source\Main.c00020a 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00020c 0e05 MOVLW 0x500020e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000210 d28d BRA 0x72c 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.c000212 0e05 MOVLW 0x5 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000214 6adb CLRF 0xdb,0x0000216 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000218 6ef3 MOVWF 0xf3,0x000021a 0e06 MOVLW 0x600021c cff3 MOVFF 0xff3,0xfdb00021e ffdb000220 0e07 MOVLW 0x7000222 6adb CLRF 0xdb,0x0000224 0e08 MOVLW 0x8 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000226 6adb CLRF 0xdb,0x0000228 0e78 MOVLW 0x78 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c00022a 6ef3 MOVWF 0xf3,0x000022c 0e09 MOVLW 0x900022e cff3 MOVFF 0xff3,0xfdb000230 ffdb000232 0e0a MOVLW 0xa000234 6adb CLRF 0xdb,0x0000236 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000238 6ef3 MOVWF 0xf3,0x000023a 0e0b MOVLW 0xb00023c cff3 MOVFF 0xff3,0xfdb00023e ffdb000240 0e0c MOVLW 0xc outCm.remote_request = FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000242 6adb CLRF 0xdb,0x0000244 0e11 MOVLW 0x11 outCm.data[ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000246 c0c5 MOVFF 0xc5,0xfdb000248 ffdb00024a ec6b CALL 0xad6,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00024c f00500024e c010 MOVFF 0x10,0xbf000250 f0bf000252 c011 MOVFF 0x11,0xc0000254 f0c0000256 c012 MOVFF 0x12,0xc1000258 f0c100025a c013 MOVFF 0x13,0xc200025c f0c200025e c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c000260 f0beF:\MCP\projects\CAN\canBoot\Source\Main.c000262 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000264 6ee6 MOVWF 0xe6,0x0000266 50d9 MOVF 0xd9,0x0,0x0000268 0f05 ADDLW 0x500026a 6ee9 MOVWF 0xe9,0x000026c cfda MOVFF 0xfda,0xfea00026e ffea000270 cfee MOVFF 0xfee,0xfe6000272 ffe6000274 cfee MOVFF 0xfee,0xfe6000276 ffe6000278 cfee MOVFF 0xfee,0xfe600027a ffe600027c cfee MOVFF 0xfee,0xfe600027e ffe6000280 cfee MOVFF 0xfee,0xfe6000282 ffe6000284 cfee MOVFF 0xfee,0xfe6000286 ffe6000288 cfee MOVFF 0xfee,0xfe600028a ffe600028c cfee MOVFF 0xfee,0xfe600028e ffe6000290 cfee MOVFF 0xfee,0xfe6000292 ffe6000294 cfee MOVFF 0xfee,0xfe6000296 ffe6000298 cfee MOVFF 0xfee,0xfe600029a ffe600029c cfee MOVFF 0xfee,0xfe600029e ffe60002a0 cfee MOVFF 0xfee,0xfe60002a2 ffe60002a4 cfee MOVFF 0xfee,0xfe60002a6 ffe60002a8 cfee MOVFF 0xfee,0xfe60002aa ffe60002ac cfee MOVFF 0xfee,0xfe60002ae ffe60002b0 db37 RCALL 0x9200002b2 6e00 MOVWF 0x0,0x00002b4 0e11 MOVLW 0x110002b6 5ee1 SUBWF 0xe1,0x1,0x00002b8 5000 MOVF 0x0,0x0,0x00002ba 0900 IORLW 0x00002bc e101 BNZ 0x2c00002be d7d1 BRA 0x2620002c0 d235 BRA 0x72c 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.c0002c2 ec6b CALL 0xad6,0x0 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002c4 f0050002c6 0100 MOVLB 0x00002c8 51bf MOVF 0xbf,0x0,0x10002ca 5c10 SUBWF 0x10,0x0,0x00002cc 6e00 MOVWF 0x0,0x00002ce 0100 MOVLB 0x00002d0 51c0 MOVF 0xc0,0x0,0x10002d2 5811 SUBWFB 0x11,0x0,0x00002d4 6e01 MOVWF 0x1,0x00002d6 0100 MOVLB 0x00002d8 51c1 MOVF 0xc1,0x0,0x10002da 5812 SUBWFB 0x12,0x0,0x00002dc 6e02 MOVWF 0x2,0x00002de 0100 MOVLB 0x00002e0 51c2 MOVF 0xc2,0x0,0x10002e2 5813 SUBWFB 0x13,0x0,0x00002e4 6e03 MOVWF 0x3,0x00002e6 80d8 BSF 0xd8,0x0,0x00002e8 0e0e MOVLW 0xe0002ea 5400 SUBFWB 0x0,0x0,0x00002ec 0e00 MOVLW 0x00002ee 5401 SUBFWB 0x1,0x0,0x00002f0 0e00 MOVLW 0x00002f2 5402 SUBFWB 0x2,0x0,0x00002f4 0e00 MOVLW 0x00002f6 5403 SUBFWB 0x3,0x0,0x00002f8 e208 BC 0x30a{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c0002fa 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0002fc 6bc5 CLRF 0xc5,0x10002fe 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000300 0e02 MOVLW 0x2000302 6fc6 MOVWF 0xc6,0x1000304 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000306 0e01 MOVLW 0x1000308 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.c00030a 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c00030c 04db DECF 0xdb,0x0,0x000030e e001 BZ 0x312000310 d07f BRA 0x410000312 0100 MOVLB 0x0000314 5160 MOVF 0x60,0x0,0x1000316 e001 BZ 0x31a000318 d07b BRA 0x41000031a 0e03 MOVLW 0x300031c 0100 MOVLB 0x000031e 1561 ANDWF 0x61,0x0,0x1000320 6e00 MOVWF 0x0,0x0000322 6a01 CLRF 0x1,0x0000324 0e03 MOVLW 0x3000326 1800 XORWF 0x0,0x0,0x0000328 e101 BNZ 0x32c00032a 5001 MOVF 0x1,0x0,0x000032c e171 BNZ 0x41000032e 0100 MOVLB 0x0000330 5163 MOVF 0x63,0x0,0x1000332 e16e BNZ 0x410000334 0100 MOVLB 0x0000336 51c3 MOVF 0xc3,0x0,0x1000338 0100 MOVLB 0x000033a 1964 XORWF 0x64,0x0,0x100033c e104 BNZ 0x34600033e 0100 MOVLB 0x0000340 51c4 MOVF 0xc4,0x0,0x1000342 0100 MOVLB 0x0000344 1965 XORWF 0x65,0x0,0x1000346 e164 BNZ 0x410{ F:\MCP\projects\CAN\canBoot\Source\Main.c000348 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00034a 0100 MOVLB 0x000034c 1561 ANDWF 0x61,0x0,0x100034e 6e00 MOVWF 0x0,0x0000350 6a01 CLRF 0x1,0x0000352 90d8 BCF 0xd8,0x0,0x0000354 3201 RRCF 0x1,0x1,0x0000356 3200 RRCF 0x0,0x1,0x0000358 90d8 BCF 0xd8,0x0,0x000035a 3201 RRCF 0x1,0x1,0x000035c 3200 RRCF 0x0,0x1,0x000035e 0e08 MOVLW 0x8000360 0200 MULWF 0x0,0x0000362 0e16 MOVLW 0x16000364 cff3 MOVFF 0xff3,0xfdb000366 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c000368 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00036a 0e08 MOVLW 0x800036c 6fcb MOVWF 0xcb,0x100036e 0e16 MOVLW 0x16 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.c000370 50db MOVF 0xdb,0x0,0x0000372 6aea CLRF 0xea,0x0000374 0f70 ADDLW 0x70000376 6ee9 MOVWF 0xe9,0x0000378 0e00 MOVLW 0x000037a 22ea ADDWFC 0xea,0x1,0x000037c c068 MOVFF 0x68,0xfef00037e ffef000380 0e16 MOVLW 0x16000382 28db INCF 0xdb,0x0,0x0000384 6aea CLRF 0xea,0x0000386 0f70 ADDLW 0x70000388 6ee9 MOVWF 0xe9,0x000038a 0e00 MOVLW 0x000038c 22ea ADDWFC 0xea,0x1,0x000038e c069 MOVFF 0x69,0xfef000390 ffef000392 0e16 MOVLW 0x16000394 50db MOVF 0xdb,0x0,0x0000396 0f02 ADDLW 0x2000398 6aea CLRF 0xea,0x000039a 0f70 ADDLW 0x7000039c 6ee9 MOVWF 0xe9,0x000039e 0e00 MOVLW 0x00003a0 22ea ADDWFC 0xea,0x1,0x00003a2 c06a MOVFF 0x6a,0xfef0003a4 ffef0003a6 0e16 MOVLW 0x160003a8 50db MOVF 0xdb,0x0,0x00003aa 0f03 ADDLW 0x30003ac 6aea CLRF 0xea,0x00003ae 0f70 ADDLW 0x700003b0 6ee9 MOVWF 0xe9,0x00003b2 0e00 MOVLW 0x00003b4 22ea ADDWFC 0xea,0x1,0x00003b6 c06b MOVFF 0x6b,0xfef0003b8 ffef0003ba 0e16 MOVLW 0x16 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.c0003bc 50db MOVF 0xdb,0x0,0x00003be 0f04 ADDLW 0x40003c0 6aea CLRF 0xea,0x00003c2 0f70 ADDLW 0x700003c4 6ee9 MOVWF 0xe9,0x00003c6 0e00 MOVLW 0x00003c8 22ea ADDWFC 0xea,0x1,0x00003ca c06c MOVFF 0x6c,0xfef0003cc ffef0003ce 0e16 MOVLW 0x160003d0 50db MOVF 0xdb,0x0,0x00003d2 0f05 ADDLW 0x50003d4 6aea CLRF 0xea,0x00003d6 0f70 ADDLW 0x700003d8 6ee9 MOVWF 0xe9,0x00003da 0e00 MOVLW 0x00003dc 22ea ADDWFC 0xea,0x1,0x00003de c06d MOVFF 0x6d,0xfef0003e0 ffef0003e2 0e16 MOVLW 0x160003e4 50db MOVF 0xdb,0x0,0x00003e6 0f06 ADDLW 0x60003e8 6aea CLRF 0xea,0x00003ea 0f70 ADDLW 0x700003ec 6ee9 MOVWF 0xe9,0x00003ee 0e00 MOVLW 0x00003f0 22ea ADDWFC 0xea,0x1,0x00003f2 c06e MOVFF 0x6e,0xfef0003f4 ffef0003f6 0e16 MOVLW 0x160003f8 50db MOVF 0xdb,0x0,0x00003fa 0f07 ADDLW 0x70003fc 6aea CLRF 0xea,0x00003fe 0f70 ADDLW 0x70000400 6ee9 MOVWF 0xe9,0x0000402 0e00 MOVLW 0x0000404 22ea ADDWFC 0xea,0x1,0x0000406 c06f MOVFF 0x6f,0xfef000408 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00040a 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00040c 0e03 MOVLW 0x300040e 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.c000410 d18d BRA 0x72c 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.c000412 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000414 04db DECF 0xdb,0x0,0x0000416 e001 BZ 0x41a000418 d07f BRA 0x51800041a 0100 MOVLB 0x000041c 5160 MOVF 0x60,0x0,0x100041e e001 BZ 0x422000420 d07b BRA 0x518000422 0e03 MOVLW 0x3000424 0100 MOVLB 0x0000426 1561 ANDWF 0x61,0x0,0x1000428 6e00 MOVWF 0x0,0x000042a 6a01 CLRF 0x1,0x000042c 0e03 MOVLW 0x300042e 1800 XORWF 0x0,0x0,0x0000430 e101 BNZ 0x434000432 5001 MOVF 0x1,0x0,0x0000434 e171 BNZ 0x518000436 0100 MOVLB 0x0000438 5163 MOVF 0x63,0x0,0x100043a e16e BNZ 0x51800043c 0100 MOVLB 0x000043e 51c3 MOVF 0xc3,0x0,0x1000440 0100 MOVLB 0x0000442 1964 XORWF 0x64,0x0,0x1000444 e104 BNZ 0x44e000446 0100 MOVLB 0x0000448 51c4 MOVF 0xc4,0x0,0x100044a 0100 MOVLB 0x000044c 1965 XORWF 0x65,0x0,0x100044e e164 BNZ 0x518{ F:\MCP\projects\CAN\canBoot\Source\Main.c000450 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000452 0100 MOVLB 0x0000454 1561 ANDWF 0x61,0x0,0x1000456 6e00 MOVWF 0x0,0x0000458 6a01 CLRF 0x1,0x000045a 90d8 BCF 0xd8,0x0,0x000045c 3201 RRCF 0x1,0x1,0x000045e 3200 RRCF 0x0,0x1,0x0000460 90d8 BCF 0xd8,0x0,0x0000462 3201 RRCF 0x1,0x1,0x0000464 3200 RRCF 0x0,0x1,0x0000466 0e08 MOVLW 0x8000468 0200 MULWF 0x0,0x000046a 0e17 MOVLW 0x1700046c cff3 MOVFF 0xff3,0xfdb00046e ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c000470 0e17 MOVLW 0x17 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.c000472 50db MOVF 0xdb,0x0,0x0000474 6aea CLRF 0xea,0x0000476 0f70 ADDLW 0x70000478 6ee9 MOVWF 0xe9,0x000047a 0e00 MOVLW 0x000047c 22ea ADDWFC 0xea,0x1,0x000047e c068 MOVFF 0x68,0xfef000480 ffef000482 0e17 MOVLW 0x17000484 28db INCF 0xdb,0x0,0x0000486 6aea CLRF 0xea,0x0000488 0f70 ADDLW 0x7000048a 6ee9 MOVWF 0xe9,0x000048c 0e00 MOVLW 0x000048e 22ea ADDWFC 0xea,0x1,0x0000490 c069 MOVFF 0x69,0xfef000492 ffef000494 0e17 MOVLW 0x17000496 50db MOVF 0xdb,0x0,0x0000498 0f02 ADDLW 0x200049a 6aea CLRF 0xea,0x000049c 0f70 ADDLW 0x7000049e 6ee9 MOVWF 0xe9,0x00004a0 0e00 MOVLW 0x00004a2 22ea ADDWFC 0xea,0x1,0x00004a4 c06a MOVFF 0x6a,0xfef0004a6 ffef0004a8 0e17 MOVLW 0x170004aa 50db MOVF 0xdb,0x0,0x00004ac 0f03 ADDLW 0x30004ae 6aea CLRF 0xea,0x00004b0 0f70 ADDLW 0x700004b2 6ee9 MOVWF 0xe9,0x00004b4 0e00 MOVLW 0x00004b6 22ea ADDWFC 0xea,0x1,0x00004b8 c06b MOVFF 0x6b,0xfef0004ba ffef0004bc 0e17 MOVLW 0x17 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.c0004be 50db MOVF 0xdb,0x0,0x00004c0 0f04 ADDLW 0x40004c2 6aea CLRF 0xea,0x00004c4 0f70 ADDLW 0x700004c6 6ee9 MOVWF 0xe9,0x00004c8 0e00 MOVLW 0x00004ca 22ea ADDWFC 0xea,0x1,0x00004cc c06c MOVFF 0x6c,0xfef0004ce ffef0004d0 0e17 MOVLW 0x170004d2 50db MOVF 0xdb,0x0,0x00004d4 0f05 ADDLW 0x50004d6 6aea CLRF 0xea,0x00004d8 0f70 ADDLW 0x700004da 6ee9 MOVWF 0xe9,0x00004dc 0e00 MOVLW 0x00004de 22ea ADDWFC 0xea,0x1,0x00004e0 c06d MOVFF 0x6d,0xfef0004e2 ffef0004e4 0e17 MOVLW 0x170004e6 50db MOVF 0xdb,0x0,0x00004e8 0f06 ADDLW 0x60004ea 6aea CLRF 0xea,0x00004ec 0f70 ADDLW 0x700004ee 6ee9 MOVWF 0xe9,0x00004f0 0e00 MOVLW 0x00004f2 22ea ADDWFC 0xea,0x1,0x00004f4 c06e MOVFF 0x6e,0xfef0004f6 ffef0004f8 0e17 MOVLW 0x170004fa 50db MOVF 0xdb,0x0,0x00004fc 0f07 ADDLW 0x70004fe 6aea CLRF 0xea,0x0000500 0f70 ADDLW 0x70000502 6ee9 MOVWF 0xe9,0x0000504 0e00 MOVLW 0x0000506 22ea ADDWFC 0xea,0x1,0x0000508 c06f MOVFF 0x6f,0xfef00050a ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00050c 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00050e 0100 MOVLB 0x0000510 27cb ADDWF 0xcb,0x1,0x1000512 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000514 0e03 MOVLW 0x3000516 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.c000518 0e15 MOVLW 0x15 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.c00051a 04db DECF 0xdb,0x0,0x000051c e11e BNZ 0x55a00051e 0100 MOVLB 0x0000520 5160 MOVF 0x60,0x0,0x1000522 e11b BNZ 0x55a000524 0100 MOVLB 0x0000526 0e02 MOVLW 0x2000528 1961 XORWF 0x61,0x0,0x100052a e101 BNZ 0x52e00052c 5162 MOVF 0x62,0x0,0x100052e e115 BNZ 0x55a000530 0100 MOVLB 0x0000532 5163 MOVF 0x63,0x0,0x1000534 e112 BNZ 0x55a000536 0100 MOVLB 0x0000538 51c3 MOVF 0xc3,0x0,0x100053a 0100 MOVLB 0x000053c 1964 XORWF 0x64,0x0,0x100053e e104 BNZ 0x548000540 0100 MOVLB 0x0000542 51c4 MOVF 0xc4,0x0,0x1000544 0100 MOVLB 0x0000546 1965 XORWF 0x65,0x0,0x1000548 e108 BNZ 0x55a{ 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.c00054a 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00054c 6bc5 CLRF 0xc5,0x100054e 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000550 0e02 MOVLW 0x2000552 6fc6 MOVWF 0xc6,0x1000554 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000556 0e01 MOVLW 0x1000558 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.c00055a 0e15 MOVLW 0x15 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.c00055c 04db DECF 0xdb,0x0,0x000055e e136 BNZ 0x5cc000560 0100 MOVLB 0x0000562 5160 MOVF 0x60,0x0,0x1000564 e133 BNZ 0x5cc000566 0100 MOVLB 0x0000568 0e05 MOVLW 0x500056a 1961 XORWF 0x61,0x0,0x100056c e101 BNZ 0x57000056e 5162 MOVF 0x62,0x0,0x1000570 e12d BNZ 0x5cc000572 0100 MOVLB 0x0000574 5163 MOVF 0x63,0x0,0x1000576 e12a BNZ 0x5cc000578 0100 MOVLB 0x000057a 51c3 MOVF 0xc3,0x0,0x100057c 0100 MOVLB 0x000057e 1964 XORWF 0x64,0x0,0x1000580 e104 BNZ 0x58a000582 0100 MOVLB 0x0000584 51c4 MOVF 0xc4,0x0,0x1000586 0100 MOVLB 0x0000588 1965 XORWF 0x65,0x0,0x100058a e120 BNZ 0x5cc{ 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.c00058c 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c00058e 51cb MOVF 0xcb,0x0,0x1000590 e109 BNZ 0x5a4{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c000592 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000594 6bc5 CLRF 0xc5,0x1000596 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000598 0e05 MOVLW 0x500059a 6fc6 MOVWF 0xc6,0x100059c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00059e 0e01 MOVLW 0x10005a0 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005a2 d014 BRA 0x5cc else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005a4 0e40 MOVLW 0x400005a6 0100 MOVLB 0x00005a8 5dcb SUBWF 0xcb,0x0,0x10005aa e00a BZ 0x5c0{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005ac 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ae 0e01 MOVLW 0x10005b0 6fc5 MOVWF 0xc5,0x10005b2 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b4 0e02 MOVLW 0x20005b6 6fc6 MOVWF 0xc6,0x10005b8 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ba 0e01 MOVLW 0x10005bc 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005be d006 BRA 0x5cc else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005c0 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c2 0e04 MOVLW 0x40005c4 6fbe MOVWF 0xbe,0x10005c6 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c8 0e05 MOVLW 0x50005ca 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.c0005cc 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005ce 0100 MOVLB 0x00005d0 5dcb SUBWF 0xcb,0x0,0x10005d2 e107 BNZ 0x5e2{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005d4 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d6 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d8 0e04 MOVLW 0x40005da 6fbe MOVWF 0xbe,0x10005dc 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005de 0e03 MOVLW 0x30005e0 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.c0005e2 d0a4 BRA 0x72c 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.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//Load Table pointer registers with base address to erase. F:\MCP\projects\CAN\canBoot\Source\Main.c0005e4 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c0005e6 f0000005e8 c0c8 MOVFF 0xc8,0x10005ea f0010005ec c0c9 MOVFF 0xc9,0x20005ee f0020005f0 c0ca MOVFF 0xca,0x30005f2 f0030005f4 6a00 CLRF 0x0,0x00005f6 6a01 CLRF 0x1,0x00005f8 6a03 CLRF 0x3,0x00005fa 0e10 MOVLW 0x100005fc 90d8 BCF 0xd8,0x0,0x00005fe 3203 RRCF 0x3,0x1,0x0000600 3202 RRCF 0x2,0x1,0x0000602 3201 RRCF 0x1,0x1,0x0000604 3200 RRCF 0x0,0x1,0x0000606 06e8 DECF 0xe8,0x1,0x0000608 e1f9 BNZ 0x5fc00060a 5000 MOVF 0x0,0x0,0x000060c 6ef8 MOVWF 0xf8,0x000060e c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000610 f000000612 c0c8 MOVFF 0xc8,0x1000614 f001000616 c0c9 MOVFF 0xc9,0x2000618 f00200061a c0ca MOVFF 0xca,0x300061c f00300061e 6a00 CLRF 0x0,0x0000620 6a02 CLRF 0x2,0x0000622 6a03 CLRF 0x3,0x0000624 0e08 MOVLW 0x8000626 90d8 BCF 0xd8,0x0,0x0000628 3203 RRCF 0x3,0x1,0x000062a 3202 RRCF 0x2,0x1,0x000062c 3201 RRCF 0x1,0x1,0x000062e 3200 RRCF 0x0,0x1,0x0000630 06e8 DECF 0xe8,0x1,0x0000632 e1f9 BNZ 0x626000634 5000 MOVF 0x0,0x0,0x0000636 6ef7 MOVWF 0xf7,0x0000638 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c00063a 51c7 MOVF 0xc7,0x0,0x100063c 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c00063e 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.c000640 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.c000642 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.c000644 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.c000646 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.c000648 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c00064a 6ea7 MOVWF 0xa7,0x000064c 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c00064e 6ea7 MOVWF 0xa7,0x0000650 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.c000652 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.c000654 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000656 f000000658 c0c8 MOVFF 0xc8,0x100065a f00100065c c0c9 MOVFF 0xc9,0x200065e f002000660 c0ca MOVFF 0xca,0x3000662 f003000664 6a00 CLRF 0x0,0x0000666 6a01 CLRF 0x1,0x0000668 6a03 CLRF 0x3,0x000066a 0e10 MOVLW 0x1000066c 90d8 BCF 0xd8,0x0,0x000066e 3203 RRCF 0x3,0x1,0x0000670 3202 RRCF 0x2,0x1,0x0000672 3201 RRCF 0x1,0x1,0x0000674 3200 RRCF 0x0,0x1,0x0000676 06e8 DECF 0xe8,0x1,0x0000678 e1f9 BNZ 0x66c00067a 5000 MOVF 0x0,0x0,0x000067c 6ef8 MOVWF 0xf8,0x000067e c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000680 f000000682 c0c8 MOVFF 0xc8,0x1000684 f001000686 c0c9 MOVFF 0xc9,0x2000688 f00200068a c0ca MOVFF 0xca,0x300068c f00300068e 6a00 CLRF 0x0,0x0000690 6a02 CLRF 0x2,0x0000692 6a03 CLRF 0x3,0x0000694 0e08 MOVLW 0x8000696 90d8 BCF 0xd8,0x0,0x0000698 3203 RRCF 0x3,0x1,0x000069a 3202 RRCF 0x2,0x1,0x000069c 3201 RRCF 0x1,0x1,0x000069e 3200 RRCF 0x0,0x1,0x00006a0 06e8 DECF 0xe8,0x1,0x00006a2 e1f9 BNZ 0x6960006a4 5000 MOVF 0x0,0x0,0x00006a6 6ef7 MOVWF 0xf7,0x00006a8 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006aa 51c7 MOVF 0xc7,0x0,0x10006ac 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c0006ae 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c0006b0 6adb CLRF 0xdb,0x00006b2 0e3f MOVLW 0x3f0006b4 6ef3 MOVWF 0xf3,0x00006b6 0e04 MOVLW 0x40006b8 cfdb MOVFF 0xfdb,0xff40006ba fff40006bc 50f3 MOVF 0xf3,0x0,0x00006be 5cf4 SUBWF 0xf4,0x0,0x00006c0 e20d BC 0x6dc0006d6 0e04 MOVLW 0x40006d8 2adb INCF 0xdb,0x1,0x00006da d7eb BRA 0x6b2{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006c2 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006c4 50db MOVF 0xdb,0x0,0x00006c6 6aea CLRF 0xea,0x00006c8 0f70 ADDLW 0x700006ca 6ee9 MOVWF 0xe9,0x00006cc 0e00 MOVLW 0x00006ce 22ea ADDWFC 0xea,0x1,0x00006d0 50ef MOVF 0xef,0x0,0x00006d2 6ef5 MOVWF 0xf5,0x00006d4 d9fe RCALL 0xad2 TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c0006dc c0af MOVFF 0xaf,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006de fff50006e0 d9f6 RCALL 0xace 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.c0006e2 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.c0006e4 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.c0006e6 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.c0006e8 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.c0006ea 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ec 6ea7 MOVWF 0xa7,0x00006ee 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c0006f0 6ea7 MOVWF 0xa7,0x00006f2 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.c0006f4 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.c0006f6 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0006f8 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fa 0100 MOVLB 0x00006fc 27c7 ADDWF 0xc7,0x1,0x10006fe 0e00 MOVLW 0x0000700 0100 MOVLB 0x0000702 23c8 ADDWFC 0xc8,0x1,0x1000704 0e00 MOVLW 0x0000706 0100 MOVLB 0x0000708 23c9 ADDWFC 0xc9,0x1,0x100070a 0e00 MOVLW 0x000070c 0100 MOVLB 0x000070e 23ca ADDWFC 0xca,0x1,0x1000710 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000712 6bcb CLRF 0xcb,0x1000714 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000716 6bc5 CLRF 0xc5,0x1000718 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00071a 0e01 MOVLW 0x100071c 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c00071e d006 BRA 0x72c 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.c000720 ef00 GOTO 0x2000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000722 f010000724 d003 BRA 0x72c 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.c000726 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000728 6bbe CLRF 0xbe,0x100072a d000 BRA 0x72c 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.c00072e 0e18 MOVLW 0x18 } F:\MCP\projects\CAN\canBoot\Source\Main.c000730 5ce1 SUBWF 0xe1,0x0,0x0000732 e202 BC 0x738000734 6ae1 CLRF 0xe1,0x0000736 52e5 MOVF 0xe5,0x1,0x0000738 6ee1 MOVWF 0xe1,0x000073a 52e5 MOVF 0xe5,0x1,0x000073c cfe7 MOVFF 0xfe7,0xfd900073e ffd9000740 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.c000742 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.c000744 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.c000746 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c000748 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.c00074a 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.c00074c 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.c00074e 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000750 6e6f MOVWF 0x6f,0x0000752 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c000754 146e ANDWF 0x6e,0x0,0x0000756 0880 SUBLW 0x80000758 e001 BZ 0x75c00075a d7fb BRA 0x752F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00075c 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.c00075e 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000760 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.c000762 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c000764 1070 IORWF 0x70,0x0,0x0000766 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c000768 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.c00076a 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00076c 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00076e 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.c000770 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000772 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000774 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.c000776 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.c000778 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.c00077a 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00077c 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00077e 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000780 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000782 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000784 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; 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.c000786 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c000788 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.c00078a 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00078c 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c00078e 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000790 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.c000792 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.c000794 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c000796 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c000798 146e ANDWF 0x6e,0x0,0x000079a e001 BZ 0x79e00079c d7fc BRA 0x796#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00079e 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.c0007a0 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 d005 BRA 0x7ae0007a4 0e00 MOVLW 0x00007a6 1477 ANDWF 0x77,0x0,0x00007a8 0910 IORLW 0x100007aa 6e77 MOVWF 0x77,0x00007ac d035 BRA 0x818 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 010f MOVLB 0xf0007b0 af50 BTFSS 0x50,0x7,0x10007b2 d005 BRA 0x7be0007b4 0e00 MOVLW 0x00007b6 1477 ANDWF 0x77,0x0,0x00007b8 0911 IORLW 0x110007ba 6e77 MOVWF 0x77,0x00007bc d02d BRA 0x818 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007be 010e MOVLB 0xe0007c0 af20 BTFSS 0x20,0x7,0x10007c2 d005 BRA 0x7ce0007c4 0e00 MOVLW 0x00007c6 1477 ANDWF 0x77,0x0,0x00007c8 0912 IORLW 0x120007ca 6e77 MOVWF 0x77,0x00007cc d025 BRA 0x818 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ce af30 BTFSS 0x30,0x7,0x10007d0 d005 BRA 0x7dc0007d2 0e00 MOVLW 0x00007d4 1477 ANDWF 0x77,0x0,0x00007d6 0913 IORLW 0x130007d8 6e77 MOVWF 0x77,0x00007da d01e BRA 0x818 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007dc af40 BTFSS 0x40,0x7,0x10007de d005 BRA 0x7ea0007e0 0e00 MOVLW 0x00007e2 1477 ANDWF 0x77,0x0,0x00007e4 0914 IORLW 0x140007e6 6e77 MOVWF 0x77,0x00007e8 d017 BRA 0x818 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ea af50 BTFSS 0x50,0x7,0x10007ec d005 BRA 0x7f80007ee 0e00 MOVLW 0x00007f0 1477 ANDWF 0x77,0x0,0x00007f2 0915 IORLW 0x150007f4 6e77 MOVWF 0x77,0x00007f6 d010 BRA 0x818 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007f8 af60 BTFSS 0x60,0x7,0x10007fa d005 BRA 0x8060007fc 0e00 MOVLW 0x00007fe 1477 ANDWF 0x77,0x0,0x0000800 0916 IORLW 0x16000802 6e77 MOVWF 0x77,0x0000804 d009 BRA 0x818 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; } F:\MCP\projects\CAN\canBoot\Source\Main.c000806 af70 BTFSS 0x70,0x7,0x1000808 d005 BRA 0x81400080a 0e00 MOVLW 0x000080c 1477 ANDWF 0x77,0x0,0x000080e 0917 IORLW 0x17000810 6e77 MOVWF 0x77,0x0000812 d002 BRA 0x818 else return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000814 0e00 MOVLW 0x0000816 d083 BRA 0x91eF:\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.c000818 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c00081a 1461 ANDWF 0x61,0x0,0x000081c 38e8 SWAPF 0xe8,0x0,0x000081e 0b0f ANDLW 0xf000820 0100 MOVLB 0x0000822 6f60 MOVWF 0x60,0x1000824 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.c000826 1461 ANDWF 0x61,0x0,0x0000828 6e04 MOVWF 0x4,0x000082a 6a05 CLRF 0x5,0x000082c 0e06 MOVLW 0x600082e 90d8 BCF 0xd8,0x0,0x0000830 3604 RLCF 0x4,0x1,0x0000832 3605 RLCF 0x5,0x1,0x0000834 04e8 DECF 0xe8,0x0,0x0000836 e1fb BNZ 0x82e000838 0ee0 MOVLW 0xe000083a 1462 ANDWF 0x62,0x0,0x000083c 6e06 MOVWF 0x6,0x000083e 6a07 CLRF 0x7,0x0000840 90d8 BCF 0xd8,0x0,0x0000842 3207 RRCF 0x7,0x1,0x0000844 3206 RRCF 0x6,0x1,0x0000846 90d8 BCF 0xd8,0x0,0x0000848 3207 RRCF 0x7,0x1,0x000084a 3206 RRCF 0x6,0x1,0x000084c 5004 MOVF 0x4,0x0,0x000084e 2406 ADDWF 0x6,0x0,0x0000850 6e02 MOVWF 0x2,0x0000852 5005 MOVF 0x5,0x0,0x0000854 2007 ADDWFC 0x7,0x0,0x0000856 6e03 MOVWF 0x3,0x0000858 0e03 MOVLW 0x300085a 1462 ANDWF 0x62,0x0,0x000085c 6e08 MOVWF 0x8,0x000085e 6a09 CLRF 0x9,0x0000860 90d8 BCF 0xd8,0x0,0x0000862 3608 RLCF 0x8,0x1,0x0000864 3609 RLCF 0x9,0x1,0x0000866 5002 MOVF 0x2,0x0,0x0000868 2408 ADDWF 0x8,0x0,0x000086a 6e00 MOVWF 0x0,0x000086c 5003 MOVF 0x3,0x0,0x000086e 2009 ADDWFC 0x9,0x0,0x0000870 6e01 MOVWF 0x1,0x0000872 0e80 MOVLW 0x80000874 1463 ANDWF 0x63,0x0,0x0000876 6e0a MOVWF 0xa,0x0000878 6a0b CLRF 0xb,0x000087a 0e07 MOVLW 0x700087c 90d8 BCF 0xd8,0x0,0x000087e 320b RRCF 0xb,0x1,0x0000880 320a RRCF 0xa,0x1,0x0000882 04e8 DECF 0xe8,0x0,0x0000884 e1fb BNZ 0x87c000886 5000 MOVF 0x0,0x0,0x0000888 240a ADDWF 0xa,0x0,0x000088a 0100 MOVLB 0x000088c 6f61 MOVWF 0x61,0x100088e 5001 MOVF 0x1,0x0,0x0000890 200b ADDWFC 0xb,0x0,0x0000892 6f62 MOVWF 0x62,0x1000894 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000896 1463 ANDWF 0x63,0x0,0x0000898 40e8 RRNCF 0xe8,0x0,0x000089a 0b7f ANDLW 0x7f00089c 6f63 MOVWF 0x63,0x100089e 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0008a0 1463 ANDWF 0x63,0x0,0x00008a2 6e00 MOVWF 0x0,0x00008a4 c000 MOVFF 0x0,0x10008a6 f0010008a8 6a00 CLRF 0x0,0x00008aa 5064 MOVF 0x64,0x0,0x00008ac 2400 ADDWF 0x0,0x0,0x00008ae 6f64 MOVWF 0x64,0x10008b0 0e00 MOVLW 0x00008b2 2001 ADDWFC 0x1,0x0,0x00008b4 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.c0008b6 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.c0008b8 0b01 ANDLW 0x10008ba 6e02 MOVWF 0x2,0x00008bc 5065 MOVF 0x65,0x0,0x00008be 0b02 ANDLW 0x20008c0 e001 BZ 0x8c40008c2 0e01 MOVLW 0x10008c4 24e8 ADDWF 0xe8,0x0,0x00008c6 6e01 MOVWF 0x1,0x00008c8 5065 MOVF 0x65,0x0,0x00008ca 0b04 ANDLW 0x40008cc e001 BZ 0x8d00008ce 0e01 MOVLW 0x10008d0 0d04 MULLW 0x40008d2 cff3 MOVFF 0xff3,0x00008d4 f0000008d6 5065 MOVF 0x65,0x0,0x00008d8 0b08 ANDLW 0x80008da e001 BZ 0x8de0008dc 0e01 MOVLW 0x10008de 0d08 MULLW 0x80008e0 50f3 MOVF 0xf3,0x0,0x00008e2 2400 ADDWF 0x0,0x0,0x00008e4 2401 ADDWF 0x1,0x0,0x00008e6 2402 ADDWF 0x2,0x0,0x00008e8 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c0008ea 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\Main.c0008ec 0b40 ANDLW 0x400008ee e102 BNZ 0x8f40008f0 0e00 MOVLW 0x00008f2 d001 BRA 0x8f60008f4 0e01 MOVLW 0x10008f6 6f67 MOVWF 0x67,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c0008f8 cf66 MOVFF 0xf66,0x68 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008fa f0680008fc cf67 MOVFF 0xf67,0x690008fe f069000900 cf68 MOVFF 0xf68,0x6a cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c000902 f06a000904 cf69 MOVFF 0xf69,0x6b000906 f06b000908 cf6a MOVFF 0xf6a,0x6c cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c00090a f06c00090c cf6b MOVFF 0xf6b,0x6d00090e f06d000910 cf6c MOVFF 0xf6c,0x6e cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c000912 f06e000914 cf6d MOVFF 0xf6d,0x6f000916 f06fF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c000918 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00091a 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c00091c d000 BRA 0x91e00091e 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.c000920 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c000922 ffe6000924 cfe1 MOVFF 0xfe1,0xfd9000926 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000928 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c00092a b740 BTFSC 0x40,0x3,0x100092c d004 BRA 0x93600092e 0e00 MOVLW 0x0000930 1477 ANDWF 0x77,0x0,0x0000932 0903 IORLW 0x3000934 6e77 MOVWF 0x77,0x0000936 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000938 b730 BTFSC 0x30,0x3,0x100093a d004 BRA 0x94400093c 0e00 MOVLW 0x000093e 1477 ANDWF 0x77,0x0,0x0000940 0904 IORLW 0x4000942 6e77 MOVWF 0x77,0x0000944 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000946 b720 BTFSC 0x20,0x3,0x1000948 d005 BRA 0x95400094a 0e00 MOVLW 0x000094c 1477 ANDWF 0x77,0x0,0x000094e 0905 IORLW 0x5000950 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c000952 d002 BRA 0x958 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c000954 0e00 MOVLW 0x0000956 d0b5 BRA 0xac2F:\MCP\projects\CAN\canBoot\Source\Main.c000958 0eee MOVLW 0xee if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00095a cfdb MOVFF 0xfdb,0x000095c f00000095e 3400 RLCF 0x0,0x0,0x0000960 e20e BC 0x97e000962 0eee MOVLW 0xee000964 cfdb MOVFF 0xfdb,0x1000966 f001000968 0e03 MOVLW 0x300096a 6ee7 MOVWF 0xe7,0x000096c 1801 XORWF 0x1,0x0,0x000096e aee8 BTFSS 0xe8,0x7,0x0000970 d002 BRA 0x976000972 3401 RLCF 0x1,0x0,0x0000974 d003 BRA 0x97c000976 50e7 MOVF 0xe7,0x0,0x0000978 80d8 BSF 0xd8,0x0,0x000097a 5401 SUBFWB 0x1,0x0,0x000097c e202 BC 0x98200097e 0eee MOVLW 0xee000980 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.c000982 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c000984 cfdb MOVFF 0xfdb,0x0000986 f000000988 0ef1 MOVLW 0xf100098a cfdb MOVFF 0xfdb,0x100098c f00100098e 0ec0 MOVLW 0xc0000990 1600 ANDWF 0x0,0x1,0x0000992 0e03 MOVLW 0x3000994 1601 ANDWF 0x1,0x1,0x0000996 0e06 MOVLW 0x6000998 90d8 BCF 0xd8,0x0,0x000099a 3201 RRCF 0x1,0x1,0x000099c 3200 RRCF 0x0,0x1,0x000099e 04e8 DECF 0xe8,0x0,0x00009a0 e1fb BNZ 0x9980009a2 0eef MOVLW 0xef0009a4 50db MOVF 0xdb,0x0,0x00009a6 0b0f ANDLW 0xf0009a8 0d10 MULLW 0x100009aa 50f3 MOVF 0xf3,0x0,0x00009ac 2400 ADDWF 0x0,0x0,0x00009ae 6e61 MOVWF 0x61,0x00009b0 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0009b2 6ee7 MOVWF 0xe7,0x00009b4 0ef0 MOVLW 0xf00009b6 cfdb MOVFF 0xfdb,0x20009b8 f0020009ba 0ef1 MOVLW 0xf10009bc cfdb MOVFF 0xfdb,0x30009be f0030009c0 50e7 MOVF 0xe7,0x0,0x00009c2 1602 ANDWF 0x2,0x1,0x00009c4 6a03 CLRF 0x3,0x00009c6 90d8 BCF 0xd8,0x0,0x00009c8 3203 RRCF 0x3,0x1,0x00009ca 3202 RRCF 0x2,0x1,0x00009cc 0e3f MOVLW 0x3f0009ce 6ee7 MOVWF 0xe7,0x00009d0 0ef0 MOVLW 0xf00009d2 cfdb MOVFF 0xfdb,0x00009d4 f0000009d6 0ef1 MOVLW 0xf10009d8 cfdb MOVFF 0xfdb,0x10009da f0010009dc 50e7 MOVF 0xe7,0x0,0x00009de 1600 ANDWF 0x0,0x1,0x00009e0 6a01 CLRF 0x1,0x00009e2 90d8 BCF 0xd8,0x0,0x00009e4 3600 RLCF 0x0,0x1,0x00009e6 3601 RLCF 0x1,0x1,0x00009e8 90d8 BCF 0xd8,0x0,0x00009ea 3600 RLCF 0x0,0x1,0x00009ec 3601 RLCF 0x1,0x1,0x00009ee 5000 MOVF 0x0,0x0,0x00009f0 2402 ADDWF 0x2,0x0,0x00009f2 6e62 MOVWF 0x62,0x00009f4 0ef3 MOVLW 0xf3 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0009f6 cfdb MOVFF 0xfdb,0x20009f8 f0020009fa 0ef4 MOVLW 0xf40009fc cfdb MOVFF 0xfdb,0x30009fe f003000a00 0e00 MOVLW 0x0000a02 1602 ANDWF 0x2,0x1,0x0000a04 0e01 MOVLW 0x1000a06 1603 ANDWF 0x3,0x1,0x0000a08 c003 MOVFF 0x3,0x2000a0a f002000a0c 6a03 CLRF 0x3,0x0000a0e 0e01 MOVLW 0x1000a10 6ee7 MOVWF 0xe7,0x0000a12 0ef0 MOVLW 0xf0000a14 cfdb MOVFF 0xfdb,0x0000a16 f000000a18 0ef1 MOVLW 0xf1000a1a cfdb MOVFF 0xfdb,0x1000a1c f001000a1e 50e7 MOVF 0xe7,0x0,0x0000a20 1600 ANDWF 0x0,0x1,0x0000a22 6a01 CLRF 0x1,0x0000a24 0e07 MOVLW 0x7000a26 90d8 BCF 0xd8,0x0,0x0000a28 3600 RLCF 0x0,0x1,0x0000a2a 3601 RLCF 0x1,0x1,0x0000a2c 04e8 DECF 0xe8,0x0,0x0000a2e e1fb BNZ 0xa26000a30 0ef2 MOVLW 0xf2000a32 50db MOVF 0xdb,0x0,0x0000a34 0b3f ANDLW 0x3f000a36 24e8 ADDWF 0xe8,0x0,0x0000a38 2400 ADDWF 0x0,0x0,0x0000a3a 2402 ADDWF 0x2,0x0,0x0000a3c 6e63 MOVWF 0x63,0x0000a3e 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a40 6ee7 MOVWF 0xe7,0x0000a42 0ef3 MOVLW 0xf3000a44 cfdb MOVFF 0xfdb,0x0000a46 f000000a48 0ef4 MOVLW 0xf4000a4a cfdb MOVFF 0xfdb,0x1000a4c f001000a4e 50e7 MOVF 0xe7,0x0,0x0000a50 1600 ANDWF 0x0,0x1,0x0000a52 6a01 CLRF 0x1,0x0000a54 5000 MOVF 0x0,0x0,0x0000a56 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000a58 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a5a 0ef5 MOVLW 0xf5 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000a5c 50db MOVF 0xdb,0x0,0x0000a5e 0808 SUBLW 0x8000a60 e203 BC 0xa68000a62 0e08 MOVLW 0x8000a64 6e65 MOVWF 0x65,0x0000a66 d003 BRA 0xa6e000a68 0ef5 MOVLW 0xf5000a6a 50db MOVF 0xdb,0x0,0x0000a6c 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c000a6e 0ef6 MOVLW 0xf6 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBoot\Source\Main.c000a70 04db DECF 0xdb,0x0,0x0000a72 e102 BNZ 0xa78{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000a74 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000a76 d001 BRA 0xa7a else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000a78 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.c} F:\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.c000a7a 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a7c 50db MOVF 0xdb,0x0,0x0000a7e 6e66 MOVWF 0x66,0x0000a80 0ef8 MOVLW 0xf8000a82 50db MOVF 0xdb,0x0,0x0000a84 6e67 MOVWF 0x67,0x0000a86 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a88 50db MOVF 0xdb,0x0,0x0000a8a 6e68 MOVWF 0x68,0x0000a8c 0efa MOVLW 0xfa000a8e 50db MOVF 0xdb,0x0,0x0000a90 6e69 MOVWF 0x69,0x0000a92 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a94 50db MOVF 0xdb,0x0,0x0000a96 6e6a MOVWF 0x6a,0x0000a98 0efc MOVLW 0xfc000a9a 50db MOVF 0xdb,0x0,0x0000a9c 6e6b MOVWF 0x6b,0x0000a9e 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000aa0 50db MOVF 0xdb,0x0,0x0000aa2 6e6c MOVWF 0x6c,0x0000aa4 0efe MOVLW 0xfe000aa6 50db MOVF 0xdb,0x0,0x0000aa8 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000aaa 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.c000aac 0eee MOVLW 0xee RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000aae cfdb MOVFF 0xfdb,0xfe6000ab0 ffe6000ab2 0efc MOVLW 0xfc000ab4 1460 ANDWF 0x60,0x0,0x0000ab6 52e5 MOVF 0xe5,0x1,0x0000ab8 10e7 IORWF 0xe7,0x0,0x0000aba 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.c000abc 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.c000abe 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000ac0 d000 BRA 0xac2F:\MCP\projects\CAN\canBoot\Source\Main.c000ac2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000ac4 cfe7 MOVFF 0xfe7,0xfd9000ac6 ffd9000ac8 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.c000aca 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000acc 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.c000ace 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000ad0 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.c000ad2 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000ad4 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.c000ad6 c0b6 MOVFF 0xb6,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000ad8 f010000ada c0b7 MOVFF 0xb7,0x11000adc f011000ade c0b8 MOVFF 0xb8,0x12000ae0 f012000ae2 c0b9 MOVFF 0xb9,0x13000ae4 f013000ae6 d000 BRA 0xae8000ae8 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