Rev 73 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sat Nov 11 21:18:58 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.c// $IDI$ 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.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 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 db9c RCALL 0x77e 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 dba1 RCALL 0x78a 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 ec89 CALL 0xb12,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.c000768 d47b 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 dbbd RCALL 0x7dc 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 d358 BRA 0x75c0000ac 0a01 XORLW 0x10000ae e101 BNZ 0xb20000b0 d2a7 BRA 0x6000000b2 0a07 XORLW 0x70000b4 e101 BNZ 0xb80000b6 d1bb BRA 0x42e0000b8 0a01 XORLW 0x10000ba e101 BNZ 0xbe0000bc d110 BRA 0x2de0000be 0a03 XORLW 0x30000c0 e101 BNZ 0xc40000c2 d0b5 BRA 0x22e0000c4 0a01 XORLW 0x10000c6 e001 BZ 0xca0000c8 d34c BRA 0x762{ 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 && ((((unsigned int)cm.data[RID_HIGH_INDEX])<<8)+cm.data[RID_LOW_INDEX])==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c0000cc 04db DECF 0xdb,0x0,0x00000ce e16f BNZ 0x1ae0000d0 0100 MOVLB 0x00000d2 5160 MOVF 0x60,0x0,0x10000d4 e16c BNZ 0x1ae0000d6 0100 MOVLB 0x00000d8 0e01 MOVLW 0x10000da 1961 XORWF 0x61,0x0,0x10000dc e101 BNZ 0xe00000de 5162 MOVF 0x62,0x0,0x10000e0 e166 BNZ 0x1ae0000e2 c06d MOVFF 0x6d,0x20000e4 f0020000e6 c002 MOVFF 0x2,0x30000e8 f0030000ea 6a02 CLRF 0x2,0x00000ec 0100 MOVLB 0x00000ee 516c MOVF 0x6c,0x0,0x10000f0 0100 MOVLB 0x00000f2 2402 ADDWF 0x2,0x0,0x00000f4 6e00 MOVWF 0x0,0x00000f6 0e00 MOVLW 0x00000f8 2003 ADDWFC 0x3,0x0,0x00000fa 6e01 MOVWF 0x1,0x00000fc 0e78 MOVLW 0x780000fe 1800 XORWF 0x0,0x0,0x0000100 e101 BNZ 0x104000102 5001 MOVF 0x1,0x0,0x0000104 e154 BNZ 0x1ae000106 0100 MOVLB 0x0000108 5163 MOVF 0x63,0x0,0x100010a e151 BNZ 0x1ae{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c00010c 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.c00010e f000000110 6a01 CLRF 0x1,0x0000112 6a02 CLRF 0x2,0x0000114 6a03 CLRF 0x3,0x0000116 0e10 MOVLW 0x10000118 0b1f ANDLW 0x1f00011a e007 BZ 0x12a00011c 90d8 BCF 0xd8,0x0,0x000011e 3600 RLCF 0x0,0x1,0x0000120 3601 RLCF 0x1,0x1,0x0000122 3602 RLCF 0x2,0x1,0x0000124 3603 RLCF 0x3,0x1,0x0000126 06e8 DECF 0xe8,0x1,0x0000128 e1f9 BNZ 0x11c00012a c069 MOVFF 0x69,0x400012c f00400012e 6a05 CLRF 0x5,0x0000130 6a06 CLRF 0x6,0x0000132 6a07 CLRF 0x7,0x0000134 0e08 MOVLW 0x8000136 0b1f ANDLW 0x1f000138 e007 BZ 0x14800013a 90d8 BCF 0xd8,0x0,0x000013c 3604 RLCF 0x4,0x1,0x000013e 3605 RLCF 0x5,0x1,0x0000140 3606 RLCF 0x6,0x1,0x0000142 3607 RLCF 0x7,0x1,0x0000144 06e8 DECF 0xe8,0x1,0x0000146 e1f9 BNZ 0x13a000148 5004 MOVF 0x4,0x0,0x000014a 2600 ADDWF 0x0,0x1,0x000014c 5005 MOVF 0x5,0x0,0x000014e 2201 ADDWFC 0x1,0x1,0x0000150 5006 MOVF 0x6,0x0,0x0000152 2202 ADDWFC 0x2,0x1,0x0000154 5007 MOVF 0x7,0x0,0x0000156 2203 ADDWFC 0x3,0x1,0x0000158 c068 MOVFF 0x68,0x800015a f00800015c 6a09 CLRF 0x9,0x000015e 6a0a CLRF 0xa,0x0000160 6a0b CLRF 0xb,0x0000162 5000 MOVF 0x0,0x0,0x0000164 2408 ADDWF 0x8,0x0,0x0000166 0100 MOVLB 0x0000168 6fc7 MOVWF 0xc7,0x100016a 5001 MOVF 0x1,0x0,0x000016c 2009 ADDWFC 0x9,0x0,0x000016e 0100 MOVLB 0x0000170 6fc8 MOVWF 0xc8,0x1000172 5002 MOVF 0x2,0x0,0x0000174 200a ADDWFC 0xa,0x0,0x0000176 0100 MOVLB 0x0000178 6fc9 MOVWF 0xc9,0x100017a 5003 MOVF 0x3,0x0,0x000017c 200b ADDWFC 0xb,0x0,0x000017e 0100 MOVLB 0x0000180 6fca MOVWF 0xca,0x1000182 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000184 f0c3000186 c065 MOVFF 0x65,0xc4000188 f0c400018a ec89 CALL 0xb12,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00018c f00500018e c010 MOVFF 0x10,0xbf000190 f0bf000192 c011 MOVFF 0x11,0xc0000194 f0c0000196 c012 MOVFF 0x12,0xc1000198 f0c100019a c013 MOVFF 0x13,0xc200019c f0c200019e 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0001a0 6bc5 CLRF 0xc5,0x10001a2 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0001a4 0e02 MOVLW 0x20001a6 6fc6 MOVWF 0xc6,0x10001a8 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0001aa 0e01 MOVLW 0x10001ac 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.c0001ae cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0001b0 ffe90001b2 cfda MOVFF 0xfda,0xfea0001b4 ffea0001b6 cfee MOVFF 0xfee,0x40001b8 f0040001ba cfee MOVFF 0xfee,0x50001bc f0050001be cfee MOVFF 0xfee,0x60001c0 f0060001c2 cfef MOVFF 0xfef,0x70001c4 f0070001c6 c004 MOVFF 0x4,0xfe60001c8 ffe60001ca c005 MOVFF 0x5,0xfe60001cc ffe60001ce c006 MOVFF 0x6,0xfe60001d0 ffe60001d2 c007 MOVFF 0x7,0xfe60001d4 ffe60001d6 ec89 CALL 0xb12,0x00001d8 f0050001da 52e5 MOVF 0xe5,0x1,0x00001dc cfe7 MOVFF 0xfe7,0x70001de f0070001e0 52e5 MOVF 0xe5,0x1,0x00001e2 cfe7 MOVFF 0xfe7,0x60001e4 f0060001e6 52e5 MOVF 0xe5,0x1,0x00001e8 cfe7 MOVFF 0xfe7,0x50001ea f0050001ec 52e5 MOVF 0xe5,0x1,0x00001ee cfe7 MOVFF 0xfe7,0x40001f0 f0040001f2 0100 MOVLB 0x00001f4 5004 MOVF 0x4,0x0,0x00001f6 5c10 SUBWF 0x10,0x0,0x00001f8 6e00 MOVWF 0x0,0x00001fa 0100 MOVLB 0x00001fc 5005 MOVF 0x5,0x0,0x00001fe 5811 SUBWFB 0x11,0x0,0x0000200 6e01 MOVWF 0x1,0x0000202 0100 MOVLB 0x0000204 5006 MOVF 0x6,0x0,0x0000206 5812 SUBWFB 0x12,0x0,0x0000208 6e02 MOVWF 0x2,0x000020a 0100 MOVLB 0x000020c 5007 MOVF 0x7,0x0,0x000020e 5813 SUBWFB 0x13,0x0,0x0000210 6e03 MOVWF 0x3,0x0000212 80d8 BSF 0xd8,0x0,0x0000214 0ef4 MOVLW 0xf4000216 5400 SUBFWB 0x0,0x0,0x0000218 0e01 MOVLW 0x100021a 5401 SUBFWB 0x1,0x0,0x000021c 0e00 MOVLW 0x000021e 5402 SUBFWB 0x2,0x0,0x0000220 0e00 MOVLW 0x0000222 5403 SUBFWB 0x3,0x0,0x0000224 e203 BC 0x22c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000226 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000228 0e05 MOVLW 0x500022a 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c00022c d29d BRA 0x768 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.c00022e 0e05 MOVLW 0x5 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000230 6adb CLRF 0xdb,0x0000232 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000234 6ef3 MOVWF 0xf3,0x0000236 0e06 MOVLW 0x6000238 cff3 MOVFF 0xff3,0xfdb00023a ffdb00023c 0e07 MOVLW 0x700023e 6adb CLRF 0xdb,0x0000240 0e08 MOVLW 0x8 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000242 6adb CLRF 0xdb,0x0000244 0e78 MOVLW 0x78 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c000246 6ef3 MOVWF 0xf3,0x0000248 0e09 MOVLW 0x900024a cff3 MOVFF 0xff3,0xfdb00024c ffdb00024e 0e0a MOVLW 0xa000250 6adb CLRF 0xdb,0x0000252 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000254 6ef3 MOVWF 0xf3,0x0000256 0e0b MOVLW 0xb000258 cff3 MOVFF 0xff3,0xfdb00025a ffdb00025c 0e0c MOVLW 0xc outCm.remote_request = FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c00025e 6adb CLRF 0xdb,0x0000260 0e11 MOVLW 0x11 outCm.data[ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000262 c0c5 MOVFF 0xc5,0xfdb000264 ffdb000266 ec89 CALL 0xb12,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000268 f00500026a c010 MOVFF 0x10,0xbf00026c f0bf00026e c011 MOVFF 0x11,0xc0000270 f0c0000272 c012 MOVFF 0x12,0xc1000274 f0c1000276 c013 MOVFF 0x13,0xc2000278 f0c200027a c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c00027c f0beF:\MCP\projects\CAN\canBoot\Source\Main.c00027e 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000280 6ee6 MOVWF 0xe6,0x0000282 50d9 MOVF 0xd9,0x0,0x0000284 0f05 ADDLW 0x5000286 6ee9 MOVWF 0xe9,0x0000288 cfda MOVFF 0xfda,0xfea00028a ffea00028c 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 cfee MOVFF 0xfee,0xfe60002b2 ffe60002b4 cfee MOVFF 0xfee,0xfe60002b6 ffe60002b8 cfee MOVFF 0xfee,0xfe60002ba ffe60002bc cfee MOVFF 0xfee,0xfe60002be ffe60002c0 cfee MOVFF 0xfee,0xfe60002c2 ffe60002c4 cfee MOVFF 0xfee,0xfe60002c6 ffe60002c8 cfee MOVFF 0xfee,0xfe60002ca ffe60002cc db47 RCALL 0x95c0002ce 6e00 MOVWF 0x0,0x00002d0 0e11 MOVLW 0x110002d2 5ee1 SUBWF 0xe1,0x1,0x00002d4 5000 MOVF 0x0,0x0,0x00002d6 0900 IORLW 0x00002d8 e101 BNZ 0x2dc0002da d7d1 BRA 0x27e0002dc d245 BRA 0x768 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.c0002de ec89 CALL 0xb12,0x0 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002e0 f0050002e2 0100 MOVLB 0x00002e4 51bf MOVF 0xbf,0x0,0x10002e6 5c10 SUBWF 0x10,0x0,0x00002e8 6e00 MOVWF 0x0,0x00002ea 0100 MOVLB 0x00002ec 51c0 MOVF 0xc0,0x0,0x10002ee 5811 SUBWFB 0x11,0x0,0x00002f0 6e01 MOVWF 0x1,0x00002f2 0100 MOVLB 0x00002f4 51c1 MOVF 0xc1,0x0,0x10002f6 5812 SUBWFB 0x12,0x0,0x00002f8 6e02 MOVWF 0x2,0x00002fa 0100 MOVLB 0x00002fc 51c2 MOVF 0xc2,0x0,0x10002fe 5813 SUBWFB 0x13,0x0,0x0000300 6e03 MOVWF 0x3,0x0000302 80d8 BSF 0xd8,0x0,0x0000304 0e0e MOVLW 0xe000306 5400 SUBFWB 0x0,0x0,0x0000308 0e00 MOVLW 0x000030a 5401 SUBFWB 0x1,0x0,0x000030c 0e00 MOVLW 0x000030e 5402 SUBFWB 0x2,0x0,0x0000310 0e00 MOVLW 0x0000312 5403 SUBFWB 0x3,0x0,0x0000314 e208 BC 0x326{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c000316 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000318 6bc5 CLRF 0xc5,0x100031a 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00031c 0e02 MOVLW 0x200031e 6fc6 MOVWF 0xc6,0x1000320 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000322 0e01 MOVLW 0x1000324 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.c000326 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.c000328 04db DECF 0xdb,0x0,0x000032a e001 BZ 0x32e00032c d07f BRA 0x42c00032e 0100 MOVLB 0x0000330 5160 MOVF 0x60,0x0,0x1000332 e001 BZ 0x336000334 d07b BRA 0x42c000336 0e03 MOVLW 0x3000338 0100 MOVLB 0x000033a 1561 ANDWF 0x61,0x0,0x100033c 6e00 MOVWF 0x0,0x000033e 6a01 CLRF 0x1,0x0000340 0e03 MOVLW 0x3000342 1800 XORWF 0x0,0x0,0x0000344 e101 BNZ 0x348000346 5001 MOVF 0x1,0x0,0x0000348 e171 BNZ 0x42c00034a 0100 MOVLB 0x000034c 5163 MOVF 0x63,0x0,0x100034e e16e BNZ 0x42c000350 0100 MOVLB 0x0000352 51c3 MOVF 0xc3,0x0,0x1000354 0100 MOVLB 0x0000356 1964 XORWF 0x64,0x0,0x1000358 e104 BNZ 0x36200035a 0100 MOVLB 0x000035c 51c4 MOVF 0xc4,0x0,0x100035e 0100 MOVLB 0x0000360 1965 XORWF 0x65,0x0,0x1000362 e164 BNZ 0x42c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000364 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000366 0100 MOVLB 0x0000368 1561 ANDWF 0x61,0x0,0x100036a 6e00 MOVWF 0x0,0x000036c 6a01 CLRF 0x1,0x000036e 90d8 BCF 0xd8,0x0,0x0000370 3201 RRCF 0x1,0x1,0x0000372 3200 RRCF 0x0,0x1,0x0000374 90d8 BCF 0xd8,0x0,0x0000376 3201 RRCF 0x1,0x1,0x0000378 3200 RRCF 0x0,0x1,0x000037a 0e08 MOVLW 0x800037c 0200 MULWF 0x0,0x000037e 0e16 MOVLW 0x16000380 cff3 MOVFF 0xff3,0xfdb000382 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c000384 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000386 0e08 MOVLW 0x8000388 6fcb MOVWF 0xcb,0x100038a 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.c00038c 50db MOVF 0xdb,0x0,0x000038e 6aea CLRF 0xea,0x0000390 0f70 ADDLW 0x70000392 6ee9 MOVWF 0xe9,0x0000394 0e00 MOVLW 0x0000396 22ea ADDWFC 0xea,0x1,0x0000398 c068 MOVFF 0x68,0xfef00039a ffef00039c 0e16 MOVLW 0x1600039e 28db INCF 0xdb,0x0,0x00003a0 6aea CLRF 0xea,0x00003a2 0f70 ADDLW 0x700003a4 6ee9 MOVWF 0xe9,0x00003a6 0e00 MOVLW 0x00003a8 22ea ADDWFC 0xea,0x1,0x00003aa c069 MOVFF 0x69,0xfef0003ac ffef0003ae 0e16 MOVLW 0x160003b0 50db MOVF 0xdb,0x0,0x00003b2 0f02 ADDLW 0x20003b4 6aea CLRF 0xea,0x00003b6 0f70 ADDLW 0x700003b8 6ee9 MOVWF 0xe9,0x00003ba 0e00 MOVLW 0x00003bc 22ea ADDWFC 0xea,0x1,0x00003be c06a MOVFF 0x6a,0xfef0003c0 ffef0003c2 0e16 MOVLW 0x160003c4 50db MOVF 0xdb,0x0,0x00003c6 0f03 ADDLW 0x30003c8 6aea CLRF 0xea,0x00003ca 0f70 ADDLW 0x700003cc 6ee9 MOVWF 0xe9,0x00003ce 0e00 MOVLW 0x00003d0 22ea ADDWFC 0xea,0x1,0x00003d2 c06b MOVFF 0x6b,0xfef0003d4 ffef0003d6 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.c0003d8 50db MOVF 0xdb,0x0,0x00003da 0f04 ADDLW 0x40003dc 6aea CLRF 0xea,0x00003de 0f70 ADDLW 0x700003e0 6ee9 MOVWF 0xe9,0x00003e2 0e00 MOVLW 0x00003e4 22ea ADDWFC 0xea,0x1,0x00003e6 c06c MOVFF 0x6c,0xfef0003e8 ffef0003ea 0e16 MOVLW 0x160003ec 50db MOVF 0xdb,0x0,0x00003ee 0f05 ADDLW 0x50003f0 6aea CLRF 0xea,0x00003f2 0f70 ADDLW 0x700003f4 6ee9 MOVWF 0xe9,0x00003f6 0e00 MOVLW 0x00003f8 22ea ADDWFC 0xea,0x1,0x00003fa c06d MOVFF 0x6d,0xfef0003fc ffef0003fe 0e16 MOVLW 0x16000400 50db MOVF 0xdb,0x0,0x0000402 0f06 ADDLW 0x6000404 6aea CLRF 0xea,0x0000406 0f70 ADDLW 0x70000408 6ee9 MOVWF 0xe9,0x000040a 0e00 MOVLW 0x000040c 22ea ADDWFC 0xea,0x1,0x000040e c06e MOVFF 0x6e,0xfef000410 ffef000412 0e16 MOVLW 0x16000414 50db MOVF 0xdb,0x0,0x0000416 0f07 ADDLW 0x7000418 6aea CLRF 0xea,0x000041a 0f70 ADDLW 0x7000041c 6ee9 MOVWF 0xe9,0x000041e 0e00 MOVLW 0x0000420 22ea ADDWFC 0xea,0x1,0x0000422 c06f MOVFF 0x6f,0xfef000424 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000426 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000428 0e03 MOVLW 0x300042a 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.c00042c d19d BRA 0x768 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.c00042e 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.c000430 04db DECF 0xdb,0x0,0x0000432 e001 BZ 0x436000434 d07f BRA 0x534000436 0100 MOVLB 0x0000438 5160 MOVF 0x60,0x0,0x100043a e001 BZ 0x43e00043c d07b BRA 0x53400043e 0e03 MOVLW 0x3000440 0100 MOVLB 0x0000442 1561 ANDWF 0x61,0x0,0x1000444 6e00 MOVWF 0x0,0x0000446 6a01 CLRF 0x1,0x0000448 0e03 MOVLW 0x300044a 1800 XORWF 0x0,0x0,0x000044c e101 BNZ 0x45000044e 5001 MOVF 0x1,0x0,0x0000450 e171 BNZ 0x534000452 0100 MOVLB 0x0000454 5163 MOVF 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 0e17 MOVLW 0x17000488 cff3 MOVFF 0xff3,0xfdb00048a ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c00048c 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.c00048e 50db MOVF 0xdb,0x0,0x0000490 6aea CLRF 0xea,0x0000492 0f70 ADDLW 0x70000494 6ee9 MOVWF 0xe9,0x0000496 0e00 MOVLW 0x0000498 22ea ADDWFC 0xea,0x1,0x000049a c068 MOVFF 0x68,0xfef00049c ffef00049e 0e17 MOVLW 0x170004a0 28db INCF 0xdb,0x0,0x00004a2 6aea CLRF 0xea,0x00004a4 0f70 ADDLW 0x700004a6 6ee9 MOVWF 0xe9,0x00004a8 0e00 MOVLW 0x00004aa 22ea ADDWFC 0xea,0x1,0x00004ac c069 MOVFF 0x69,0xfef0004ae ffef0004b0 0e17 MOVLW 0x170004b2 50db MOVF 0xdb,0x0,0x00004b4 0f02 ADDLW 0x20004b6 6aea CLRF 0xea,0x00004b8 0f70 ADDLW 0x700004ba 6ee9 MOVWF 0xe9,0x00004bc 0e00 MOVLW 0x00004be 22ea ADDWFC 0xea,0x1,0x00004c0 c06a MOVFF 0x6a,0xfef0004c2 ffef0004c4 0e17 MOVLW 0x170004c6 50db MOVF 0xdb,0x0,0x00004c8 0f03 ADDLW 0x30004ca 6aea CLRF 0xea,0x00004cc 0f70 ADDLW 0x700004ce 6ee9 MOVWF 0xe9,0x00004d0 0e00 MOVLW 0x00004d2 22ea ADDWFC 0xea,0x1,0x00004d4 c06b MOVFF 0x6b,0xfef0004d6 ffef0004d8 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.c0004da 50db MOVF 0xdb,0x0,0x00004dc 0f04 ADDLW 0x40004de 6aea CLRF 0xea,0x00004e0 0f70 ADDLW 0x700004e2 6ee9 MOVWF 0xe9,0x00004e4 0e00 MOVLW 0x00004e6 22ea ADDWFC 0xea,0x1,0x00004e8 c06c MOVFF 0x6c,0xfef0004ea ffef0004ec 0e17 MOVLW 0x170004ee 50db MOVF 0xdb,0x0,0x00004f0 0f05 ADDLW 0x50004f2 6aea CLRF 0xea,0x00004f4 0f70 ADDLW 0x700004f6 6ee9 MOVWF 0xe9,0x00004f8 0e00 MOVLW 0x00004fa 22ea ADDWFC 0xea,0x1,0x00004fc c06d MOVFF 0x6d,0xfef0004fe ffef000500 0e17 MOVLW 0x17000502 50db MOVF 0xdb,0x0,0x0000504 0f06 ADDLW 0x6000506 6aea CLRF 0xea,0x0000508 0f70 ADDLW 0x7000050a 6ee9 MOVWF 0xe9,0x000050c 0e00 MOVLW 0x000050e 22ea ADDWFC 0xea,0x1,0x0000510 c06e MOVFF 0x6e,0xfef000512 ffef000514 0e17 MOVLW 0x17000516 50db MOVF 0xdb,0x0,0x0000518 0f07 ADDLW 0x700051a 6aea CLRF 0xea,0x000051c 0f70 ADDLW 0x7000051e 6ee9 MOVWF 0xe9,0x0000520 0e00 MOVLW 0x0000522 22ea ADDWFC 0xea,0x1,0x0000524 c06f MOVFF 0x6f,0xfef000526 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000528 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00052a 0100 MOVLB 0x000052c 27cb ADDWF 0xcb,0x1,0x100052e 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.c// If adress packet (control packet).. F:\MCP\projects\CAN\canBoot\Source\Main.c000534 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.c000536 04db DECF 0xdb,0x0,0x0000538 e11e BNZ 0x57600053a 0100 MOVLB 0x000053c 5160 MOVF 0x60,0x0,0x100053e e11b BNZ 0x576000540 0100 MOVLB 0x0000542 0e02 MOVLW 0x2000544 1961 XORWF 0x61,0x0,0x1000546 e101 BNZ 0x54a000548 5162 MOVF 0x62,0x0,0x100054a e115 BNZ 0x57600054c 0100 MOVLB 0x000054e 5163 MOVF 0x63,0x0,0x1000550 e112 BNZ 0x576000552 0100 MOVLB 0x0000554 51c3 MOVF 0xc3,0x0,0x1000556 0100 MOVLB 0x0000558 1964 XORWF 0x64,0x0,0x100055a e104 BNZ 0x56400055c 0100 MOVLB 0x000055e 51c4 MOVF 0xc4,0x0,0x1000560 0100 MOVLB 0x0000562 1965 XORWF 0x65,0x0,0x1000564 e108 BNZ 0x576{ 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.c000566 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000568 6bc5 CLRF 0xc5,0x100056a 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00056c 0e02 MOVLW 0x200056e 6fc6 MOVWF 0xc6,0x1000570 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000572 0e01 MOVLW 0x1000574 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.c000576 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.c000578 04db DECF 0xdb,0x0,0x000057a e136 BNZ 0x5e800057c 0100 MOVLB 0x000057e 5160 MOVF 0x60,0x0,0x1000580 e133 BNZ 0x5e8000582 0100 MOVLB 0x0000584 0e05 MOVLW 0x5000586 1961 XORWF 0x61,0x0,0x1000588 e101 BNZ 0x58c00058a 5162 MOVF 0x62,0x0,0x100058c e12d BNZ 0x5e800058e 0100 MOVLB 0x0000590 5163 MOVF 0x63,0x0,0x1000592 e12a BNZ 0x5e8000594 0100 MOVLB 0x0000596 51c3 MOVF 0xc3,0x0,0x1000598 0100 MOVLB 0x000059a 1964 XORWF 0x64,0x0,0x100059c e104 BNZ 0x5a600059e 0100 MOVLB 0x00005a0 51c4 MOVF 0xc4,0x0,0x10005a2 0100 MOVLB 0x00005a4 1965 XORWF 0x65,0x0,0x10005a6 e120 BNZ 0x5e8{ 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.c0005a8 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c0005aa 51cb MOVF 0xcb,0x0,0x10005ac e109 BNZ 0x5c0{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c0005ae 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b0 6bc5 CLRF 0xc5,0x10005b2 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b4 0e05 MOVLW 0x50005b6 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 d014 BRA 0x5e8 else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005c0 0e40 MOVLW 0x400005c2 0100 MOVLB 0x00005c4 5dcb SUBWF 0xcb,0x0,0x10005c6 e00a BZ 0x5dc{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005c8 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ca 0e01 MOVLW 0x10005cc 6fc5 MOVWF 0xc5,0x10005ce 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d0 0e02 MOVLW 0x20005d2 6fc6 MOVWF 0xc6,0x10005d4 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d6 0e01 MOVLW 0x10005d8 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005da d006 BRA 0x5e8 else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005dc 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005de 0e04 MOVLW 0x40005e0 6fbe MOVWF 0xbe,0x10005e2 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005e4 0e05 MOVLW 0x50005e6 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.c0005e8 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005ea 0100 MOVLB 0x00005ec 5dcb SUBWF 0xcb,0x0,0x10005ee e107 BNZ 0x5fe{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005f0 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f2 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f4 0e04 MOVLW 0x40005f6 6fbe MOVWF 0xbe,0x10005f8 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005fa 0e03 MOVLW 0x30005fc 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.c0005fe d0b4 BRA 0x768 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// Check addr limit F:\MCP\projects\CAN\canBoot\Source\Main.c000600 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c000602 0100 MOVLB 0x0000604 5dc7 SUBWF 0xc7,0x0,0x1000606 0e10 MOVLW 0x10000608 59c8 SUBWFB 0xc8,0x0,0x100060a 0e00 MOVLW 0x000060c 59c9 SUBWFB 0xc9,0x0,0x100060e 0e00 MOVLW 0x0000610 59ca SUBWFB 0xca,0x0,0x1000612 e206 BC 0x620{ F:\MCP\projects\CAN\canBoot\Source\Main.c000614 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000616 0e01 MOVLW 0x1000618 6fc5 MOVWF 0xc5,0x100061a 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00061c 0e01 MOVLW 0x100061e 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.c000620 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000622 f000000624 c0c8 MOVFF 0xc8,0x1000626 f001000628 c0c9 MOVFF 0xc9,0x200062a f00200062c c0ca MOVFF 0xca,0x300062e f003000630 6a00 CLRF 0x0,0x0000632 6a01 CLRF 0x1,0x0000634 6a03 CLRF 0x3,0x0000636 0e10 MOVLW 0x10000638 90d8 BCF 0xd8,0x0,0x000063a 3203 RRCF 0x3,0x1,0x000063c 3202 RRCF 0x2,0x1,0x000063e 3201 RRCF 0x1,0x1,0x0000640 3200 RRCF 0x0,0x1,0x0000642 06e8 DECF 0xe8,0x1,0x0000644 e1f9 BNZ 0x638000646 5000 MOVF 0x0,0x0,0x0000648 6ef8 MOVWF 0xf8,0x000064a c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c00064c f00000064e c0c8 MOVFF 0xc8,0x1000650 f001000652 c0c9 MOVFF 0xc9,0x2000654 f002000656 c0ca MOVFF 0xca,0x3000658 f00300065a 6a00 CLRF 0x0,0x000065c 6a02 CLRF 0x2,0x000065e 6a03 CLRF 0x3,0x0000660 0e08 MOVLW 0x8000662 90d8 BCF 0xd8,0x0,0x0000664 3203 RRCF 0x3,0x1,0x0000666 3202 RRCF 0x2,0x1,0x0000668 3201 RRCF 0x1,0x1,0x000066a 3200 RRCF 0x0,0x1,0x000066c 06e8 DECF 0xe8,0x1,0x000066e e1f9 BNZ 0x662000670 5000 MOVF 0x0,0x0,0x0000672 6ef7 MOVWF 0xf7,0x0000674 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000676 51c7 MOVF 0xc7,0x0,0x1000678 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c00067a 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.c00067c 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.c00067e 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.c000680 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.c000682 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.c000684 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000686 6ea7 MOVWF 0xa7,0x0000688 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c00068a 6ea7 MOVWF 0xa7,0x000068c 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.c00068e 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.c000690 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000692 f000000694 c0c8 MOVFF 0xc8,0x1000696 f001000698 c0c9 MOVFF 0xc9,0x200069a f00200069c c0ca MOVFF 0xca,0x300069e f0030006a0 6a00 CLRF 0x0,0x00006a2 6a01 CLRF 0x1,0x00006a4 6a03 CLRF 0x3,0x00006a6 0e10 MOVLW 0x100006a8 90d8 BCF 0xd8,0x0,0x00006aa 3203 RRCF 0x3,0x1,0x00006ac 3202 RRCF 0x2,0x1,0x00006ae 3201 RRCF 0x1,0x1,0x00006b0 3200 RRCF 0x0,0x1,0x00006b2 06e8 DECF 0xe8,0x1,0x00006b4 e1f9 BNZ 0x6a80006b6 5000 MOVF 0x0,0x0,0x00006b8 6ef8 MOVWF 0xf8,0x00006ba c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006bc f0000006be c0c8 MOVFF 0xc8,0x10006c0 f0010006c2 c0c9 MOVFF 0xc9,0x20006c4 f0020006c6 c0ca MOVFF 0xca,0x30006c8 f0030006ca 6a00 CLRF 0x0,0x00006cc 6a02 CLRF 0x2,0x00006ce 6a03 CLRF 0x3,0x00006d0 0e08 MOVLW 0x80006d2 90d8 BCF 0xd8,0x0,0x00006d4 3203 RRCF 0x3,0x1,0x00006d6 3202 RRCF 0x2,0x1,0x00006d8 3201 RRCF 0x1,0x1,0x00006da 3200 RRCF 0x0,0x1,0x00006dc 06e8 DECF 0xe8,0x1,0x00006de e1f9 BNZ 0x6d20006e0 5000 MOVF 0x0,0x0,0x00006e2 6ef7 MOVWF 0xf7,0x00006e4 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006e6 51c7 MOVF 0xc7,0x0,0x10006e8 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c0006ea 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c0006ec 6adb CLRF 0xdb,0x00006ee 0e3f MOVLW 0x3f0006f0 6ef3 MOVWF 0xf3,0x00006f2 0e04 MOVLW 0x40006f4 cfdb MOVFF 0xfdb,0xff40006f6 fff40006f8 50f3 MOVF 0xf3,0x0,0x00006fa 5cf4 SUBWF 0xf4,0x0,0x00006fc e20d BC 0x718000712 0e04 MOVLW 0x4000714 2adb INCF 0xdb,0x1,0x0000716 d7eb BRA 0x6ee{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006fe 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c000700 50db MOVF 0xdb,0x0,0x0000702 6aea CLRF 0xea,0x0000704 0f70 ADDLW 0x70000706 6ee9 MOVWF 0xe9,0x0000708 0e00 MOVLW 0x000070a 22ea ADDWFC 0xea,0x1,0x000070c 50ef MOVF 0xef,0x0,0x000070e 6ef5 MOVWF 0xf5,0x0000710 d9fe RCALL 0xb0e TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000718 c0af MOVFF 0xaf,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c00071a fff500071c d9f6 RCALL 0xb0a 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.c00071e 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.c000720 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.c000722 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.c000724 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.c000726 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000728 6ea7 MOVWF 0xa7,0x000072a 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c00072c 6ea7 MOVWF 0xa7,0x000072e 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.c000730 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.c000732 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000734 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c000736 0100 MOVLB 0x0000738 27c7 ADDWF 0xc7,0x1,0x100073a 0e00 MOVLW 0x000073c 0100 MOVLB 0x000073e 23c8 ADDWFC 0xc8,0x1,0x1000740 0e00 MOVLW 0x0000742 0100 MOVLB 0x0000744 23c9 ADDWFC 0xc9,0x1,0x1000746 0e00 MOVLW 0x0000748 0100 MOVLB 0x000074a 23ca ADDWFC 0xca,0x1,0x100074c 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00074e 6bcb CLRF 0xcb,0x1000750 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000752 6bc5 CLRF 0xc5,0x1000754 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000756 0e01 MOVLW 0x1000758 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c00075a d006 BRA 0x768 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.c00075c ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00075e f008000760 d003 BRA 0x768 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.c000762 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000764 6bbe CLRF 0xbe,0x1000766 d000 BRA 0x768 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.c00076a 0e18 MOVLW 0x18 } F:\MCP\projects\CAN\canBoot\Source\Main.c00076c 5ce1 SUBWF 0xe1,0x0,0x000076e e202 BC 0x774000770 6ae1 CLRF 0xe1,0x0000772 52e5 MOVF 0xe5,0x1,0x0000774 6ee1 MOVWF 0xe1,0x0000776 52e5 MOVF 0xe5,0x1,0x0000778 cfe7 MOVFF 0xfe7,0xfd900077a ffd900077c 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.c00077e 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.c000780 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.c000782 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c000784 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.c000786 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.c000788 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.c00078a 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c00078c 6e6f MOVWF 0x6f,0x000078e 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c000790 146e ANDWF 0x6e,0x0,0x0000792 0880 SUBLW 0x80000794 e001 BZ 0x798000796 d7fb BRA 0x78eF:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000798 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.c00079a 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c00079c 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.c00079e 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a0 1070 IORWF 0x70,0x0,0x00007a2 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c0007a4 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.c0007a6 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a8 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007aa 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.c0007ac 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b0 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.c0007b2 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.c0007b4 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.c0007b6 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b8 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ba 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007bc 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007be 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c0 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.c0007c2 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c4 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.c0007c6 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c8 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0007ca 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007cc 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.c0007ce 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.c0007d0 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007d2 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007d4 146e ANDWF 0x6e,0x0,0x00007d6 e001 BZ 0x7da0007d8 d7fc BRA 0x7d2#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007da 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.c0007dc ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007de d005 BRA 0x7ea0007e0 0e00 MOVLW 0x00007e2 1477 ANDWF 0x77,0x0,0x00007e4 0910 IORLW 0x100007e6 6e77 MOVWF 0x77,0x00007e8 d035 BRA 0x854 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ea 010f MOVLB 0xf0007ec af50 BTFSS 0x50,0x7,0x10007ee d005 BRA 0x7fa0007f0 0e00 MOVLW 0x00007f2 1477 ANDWF 0x77,0x0,0x00007f4 0911 IORLW 0x110007f6 6e77 MOVWF 0x77,0x00007f8 d02d BRA 0x854 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007fa 010e MOVLB 0xe0007fc af20 BTFSS 0x20,0x7,0x10007fe d005 BRA 0x80a000800 0e00 MOVLW 0x0000802 1477 ANDWF 0x77,0x0,0x0000804 0912 IORLW 0x12000806 6e77 MOVWF 0x77,0x0000808 d025 BRA 0x854 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; } F:\MCP\projects\CAN\canBoot\Source\Main.c00080a af30 BTFSS 0x30,0x7,0x100080c d005 BRA 0x81800080e 0e00 MOVLW 0x0000810 1477 ANDWF 0x77,0x0,0x0000812 0913 IORLW 0x13000814 6e77 MOVWF 0x77,0x0000816 d01e BRA 0x854 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000818 af40 BTFSS 0x40,0x7,0x100081a d005 BRA 0x82600081c 0e00 MOVLW 0x000081e 1477 ANDWF 0x77,0x0,0x0000820 0914 IORLW 0x14000822 6e77 MOVWF 0x77,0x0000824 d017 BRA 0x854 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000826 af50 BTFSS 0x50,0x7,0x1000828 d005 BRA 0x83400082a 0e00 MOVLW 0x000082c 1477 ANDWF 0x77,0x0,0x000082e 0915 IORLW 0x15000830 6e77 MOVWF 0x77,0x0000832 d010 BRA 0x854 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; } F:\MCP\projects\CAN\canBoot\Source\Main.c000834 af60 BTFSS 0x60,0x7,0x1000836 d005 BRA 0x842000838 0e00 MOVLW 0x000083a 1477 ANDWF 0x77,0x0,0x000083c 0916 IORLW 0x1600083e 6e77 MOVWF 0x77,0x0000840 d009 BRA 0x854 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; } F:\MCP\projects\CAN\canBoot\Source\Main.c000842 af70 BTFSS 0x70,0x7,0x1000844 d005 BRA 0x850000846 0e00 MOVLW 0x0000848 1477 ANDWF 0x77,0x0,0x000084a 0917 IORLW 0x1700084c 6e77 MOVWF 0x77,0x000084e d002 BRA 0x854 else return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000850 0e00 MOVLW 0x0000852 d083 BRA 0x95aF:\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.c000854 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c000856 1461 ANDWF 0x61,0x0,0x0000858 38e8 SWAPF 0xe8,0x0,0x000085a 0b0f ANDLW 0xf00085c 0100 MOVLB 0x000085e 6f60 MOVWF 0x60,0x1000860 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.c000862 1461 ANDWF 0x61,0x0,0x0000864 6e04 MOVWF 0x4,0x0000866 6a05 CLRF 0x5,0x0000868 0e06 MOVLW 0x600086a 90d8 BCF 0xd8,0x0,0x000086c 3604 RLCF 0x4,0x1,0x000086e 3605 RLCF 0x5,0x1,0x0000870 04e8 DECF 0xe8,0x0,0x0000872 e1fb BNZ 0x86a000874 0ee0 MOVLW 0xe0000876 1462 ANDWF 0x62,0x0,0x0000878 6e06 MOVWF 0x6,0x000087a 6a07 CLRF 0x7,0x000087c 90d8 BCF 0xd8,0x0,0x000087e 3207 RRCF 0x7,0x1,0x0000880 3206 RRCF 0x6,0x1,0x0000882 90d8 BCF 0xd8,0x0,0x0000884 3207 RRCF 0x7,0x1,0x0000886 3206 RRCF 0x6,0x1,0x0000888 5004 MOVF 0x4,0x0,0x000088a 2406 ADDWF 0x6,0x0,0x000088c 6e02 MOVWF 0x2,0x000088e 5005 MOVF 0x5,0x0,0x0000890 2007 ADDWFC 0x7,0x0,0x0000892 6e03 MOVWF 0x3,0x0000894 0e03 MOVLW 0x3000896 1462 ANDWF 0x62,0x0,0x0000898 6e08 MOVWF 0x8,0x000089a 6a09 CLRF 0x9,0x000089c 90d8 BCF 0xd8,0x0,0x000089e 3608 RLCF 0x8,0x1,0x00008a0 3609 RLCF 0x9,0x1,0x00008a2 5002 MOVF 0x2,0x0,0x00008a4 2408 ADDWF 0x8,0x0,0x00008a6 6e00 MOVWF 0x0,0x00008a8 5003 MOVF 0x3,0x0,0x00008aa 2009 ADDWFC 0x9,0x0,0x00008ac 6e01 MOVWF 0x1,0x00008ae 0e80 MOVLW 0x800008b0 1463 ANDWF 0x63,0x0,0x00008b2 6e0a MOVWF 0xa,0x00008b4 6a0b CLRF 0xb,0x00008b6 0e07 MOVLW 0x70008b8 90d8 BCF 0xd8,0x0,0x00008ba 320b RRCF 0xb,0x1,0x00008bc 320a RRCF 0xa,0x1,0x00008be 04e8 DECF 0xe8,0x0,0x00008c0 e1fb BNZ 0x8b80008c2 5000 MOVF 0x0,0x0,0x00008c4 240a ADDWF 0xa,0x0,0x00008c6 0100 MOVLB 0x00008c8 6f61 MOVWF 0x61,0x10008ca 5001 MOVF 0x1,0x0,0x00008cc 200b ADDWFC 0xb,0x0,0x00008ce 6f62 MOVWF 0x62,0x10008d0 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0008d2 1463 ANDWF 0x63,0x0,0x00008d4 40e8 RRNCF 0xe8,0x0,0x00008d6 0b7f ANDLW 0x7f0008d8 6f63 MOVWF 0x63,0x10008da 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0008dc 1463 ANDWF 0x63,0x0,0x00008de 6e00 MOVWF 0x0,0x00008e0 c000 MOVFF 0x0,0x10008e2 f0010008e4 6a00 CLRF 0x0,0x00008e6 5064 MOVF 0x64,0x0,0x00008e8 2400 ADDWF 0x0,0x0,0x00008ea 6f64 MOVWF 0x64,0x10008ec 0e00 MOVLW 0x00008ee 2001 ADDWFC 0x1,0x0,0x00008f0 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.c0008f2 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.c0008f4 0b01 ANDLW 0x10008f6 6e02 MOVWF 0x2,0x00008f8 5065 MOVF 0x65,0x0,0x00008fa 0b02 ANDLW 0x20008fc e001 BZ 0x9000008fe 0e01 MOVLW 0x1000900 24e8 ADDWF 0xe8,0x0,0x0000902 6e01 MOVWF 0x1,0x0000904 5065 MOVF 0x65,0x0,0x0000906 0b04 ANDLW 0x4000908 e001 BZ 0x90c00090a 0e01 MOVLW 0x100090c 0d04 MULLW 0x400090e cff3 MOVFF 0xff3,0x0000910 f000000912 5065 MOVF 0x65,0x0,0x0000914 0b08 ANDLW 0x8000916 e001 BZ 0x91a000918 0e01 MOVLW 0x100091a 0d08 MULLW 0x800091c 50f3 MOVF 0xf3,0x0,0x000091e 2400 ADDWF 0x0,0x0,0x0000920 2401 ADDWF 0x1,0x0,0x0000922 2402 ADDWF 0x2,0x0,0x0000924 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c000926 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\Main.c000928 0b40 ANDLW 0x4000092a e102 BNZ 0x93000092c 0e00 MOVLW 0x000092e d001 BRA 0x932000930 0e01 MOVLW 0x1000932 6f67 MOVWF 0x67,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000934 cf66 MOVFF 0xf66,0x68 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c000936 f068000938 cf67 MOVFF 0xf67,0x6900093a f06900093c cf68 MOVFF 0xf68,0x6a cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c00093e f06a000940 cf69 MOVFF 0xf69,0x6b000942 f06b000944 cf6a MOVFF 0xf6a,0x6c cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c000946 f06c000948 cf6b MOVFF 0xf6b,0x6d00094a f06d00094c cf6c MOVFF 0xf6c,0x6e cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c00094e f06e000950 cf6d MOVFF 0xf6d,0x6f000952 f06fF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c000954 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000956 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000958 d000 BRA 0x95a00095a 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.c00095c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c00095e ffe6000960 cfe1 MOVFF 0xfe1,0xfd9000962 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000964 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000966 b740 BTFSC 0x40,0x3,0x1000968 d004 BRA 0x97200096a 0e00 MOVLW 0x000096c 1477 ANDWF 0x77,0x0,0x000096e 0903 IORLW 0x3000970 6e77 MOVWF 0x77,0x0000972 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000974 b730 BTFSC 0x30,0x3,0x1000976 d004 BRA 0x980000978 0e00 MOVLW 0x000097a 1477 ANDWF 0x77,0x0,0x000097c 0904 IORLW 0x400097e 6e77 MOVWF 0x77,0x0000980 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000982 b720 BTFSC 0x20,0x3,0x1000984 d005 BRA 0x990000986 0e00 MOVLW 0x0000988 1477 ANDWF 0x77,0x0,0x000098a 0905 IORLW 0x500098c 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c00098e d002 BRA 0x994 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c000990 0e00 MOVLW 0x0000992 d0b5 BRA 0xafeF:\MCP\projects\CAN\canBoot\Source\Main.c000994 0eee MOVLW 0xee if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000996 cfdb MOVFF 0xfdb,0x0000998 f00000099a 3400 RLCF 0x0,0x0,0x000099c e20e BC 0x9ba00099e 0eee MOVLW 0xee0009a0 cfdb MOVFF 0xfdb,0x10009a2 f0010009a4 0e03 MOVLW 0x30009a6 6ee7 MOVWF 0xe7,0x00009a8 1801 XORWF 0x1,0x0,0x00009aa aee8 BTFSS 0xe8,0x7,0x00009ac d002 BRA 0x9b20009ae 3401 RLCF 0x1,0x0,0x00009b0 d003 BRA 0x9b80009b2 50e7 MOVF 0xe7,0x0,0x00009b4 80d8 BSF 0xd8,0x0,0x00009b6 5401 SUBFWB 0x1,0x0,0x00009b8 e202 BC 0x9be0009ba 0eee MOVLW 0xee0009bc 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.c0009be 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0009c0 cfdb MOVFF 0xfdb,0x00009c2 f0000009c4 0ef1 MOVLW 0xf10009c6 cfdb MOVFF 0xfdb,0x10009c8 f0010009ca 0ec0 MOVLW 0xc00009cc 1600 ANDWF 0x0,0x1,0x00009ce 0e03 MOVLW 0x30009d0 1601 ANDWF 0x1,0x1,0x00009d2 0e06 MOVLW 0x60009d4 90d8 BCF 0xd8,0x0,0x00009d6 3201 RRCF 0x1,0x1,0x00009d8 3200 RRCF 0x0,0x1,0x00009da 04e8 DECF 0xe8,0x0,0x00009dc e1fb BNZ 0x9d40009de 0eef MOVLW 0xef0009e0 50db MOVF 0xdb,0x0,0x00009e2 0b0f ANDLW 0xf0009e4 0d10 MULLW 0x100009e6 50f3 MOVF 0xf3,0x0,0x00009e8 2400 ADDWF 0x0,0x0,0x00009ea 6e61 MOVWF 0x61,0x00009ec 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0009ee 6ee7 MOVWF 0xe7,0x00009f0 0ef0 MOVLW 0xf00009f2 cfdb MOVFF 0xfdb,0x20009f4 f0020009f6 0ef1 MOVLW 0xf10009f8 cfdb MOVFF 0xfdb,0x30009fa f0030009fc 50e7 MOVF 0xe7,0x0,0x00009fe 1602 ANDWF 0x2,0x1,0x0000a00 6a03 CLRF 0x3,0x0000a02 90d8 BCF 0xd8,0x0,0x0000a04 3203 RRCF 0x3,0x1,0x0000a06 3202 RRCF 0x2,0x1,0x0000a08 0e3f MOVLW 0x3f000a0a 6ee7 MOVWF 0xe7,0x0000a0c 0ef0 MOVLW 0xf0000a0e cfdb MOVFF 0xfdb,0x0000a10 f000000a12 0ef1 MOVLW 0xf1000a14 cfdb MOVFF 0xfdb,0x1000a16 f001000a18 50e7 MOVF 0xe7,0x0,0x0000a1a 1600 ANDWF 0x0,0x1,0x0000a1c 6a01 CLRF 0x1,0x0000a1e 90d8 BCF 0xd8,0x0,0x0000a20 3600 RLCF 0x0,0x1,0x0000a22 3601 RLCF 0x1,0x1,0x0000a24 90d8 BCF 0xd8,0x0,0x0000a26 3600 RLCF 0x0,0x1,0x0000a28 3601 RLCF 0x1,0x1,0x0000a2a 5000 MOVF 0x0,0x0,0x0000a2c 2402 ADDWF 0x2,0x0,0x0000a2e 6e62 MOVWF 0x62,0x0000a30 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.c000a32 cfdb MOVFF 0xfdb,0x2000a34 f002000a36 0ef4 MOVLW 0xf4000a38 cfdb MOVFF 0xfdb,0x3000a3a f003000a3c 0e00 MOVLW 0x0000a3e 1602 ANDWF 0x2,0x1,0x0000a40 0e01 MOVLW 0x1000a42 1603 ANDWF 0x3,0x1,0x0000a44 c003 MOVFF 0x3,0x2000a46 f002000a48 6a03 CLRF 0x3,0x0000a4a 0e01 MOVLW 0x1000a4c 6ee7 MOVWF 0xe7,0x0000a4e 0ef0 MOVLW 0xf0000a50 cfdb MOVFF 0xfdb,0x0000a52 f000000a54 0ef1 MOVLW 0xf1000a56 cfdb MOVFF 0xfdb,0x1000a58 f001000a5a 50e7 MOVF 0xe7,0x0,0x0000a5c 1600 ANDWF 0x0,0x1,0x0000a5e 6a01 CLRF 0x1,0x0000a60 0e07 MOVLW 0x7000a62 90d8 BCF 0xd8,0x0,0x0000a64 3600 RLCF 0x0,0x1,0x0000a66 3601 RLCF 0x1,0x1,0x0000a68 04e8 DECF 0xe8,0x0,0x0000a6a e1fb BNZ 0xa62000a6c 0ef2 MOVLW 0xf2000a6e 50db MOVF 0xdb,0x0,0x0000a70 0b3f ANDLW 0x3f000a72 24e8 ADDWF 0xe8,0x0,0x0000a74 2400 ADDWF 0x0,0x0,0x0000a76 2402 ADDWF 0x2,0x0,0x0000a78 6e63 MOVWF 0x63,0x0000a7a 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a7c 6ee7 MOVWF 0xe7,0x0000a7e 0ef3 MOVLW 0xf3000a80 cfdb MOVFF 0xfdb,0x0000a82 f000000a84 0ef4 MOVLW 0xf4000a86 cfdb MOVFF 0xfdb,0x1000a88 f001000a8a 50e7 MOVF 0xe7,0x0,0x0000a8c 1600 ANDWF 0x0,0x1,0x0000a8e 6a01 CLRF 0x1,0x0000a90 5000 MOVF 0x0,0x0,0x0000a92 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000a94 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a96 0ef5 MOVLW 0xf5 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000a98 50db MOVF 0xdb,0x0,0x0000a9a 0808 SUBLW 0x8000a9c e203 BC 0xaa4000a9e 0e08 MOVLW 0x8000aa0 6e65 MOVWF 0x65,0x0000aa2 d003 BRA 0xaaa000aa4 0ef5 MOVLW 0xf5000aa6 50db MOVF 0xdb,0x0,0x0000aa8 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c000aaa 0ef6 MOVLW 0xf6 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBoot\Source\Main.c000aac 04db DECF 0xdb,0x0,0x0000aae e102 BNZ 0xab4{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000ab0 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.c000ab2 d001 BRA 0xab6 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.c000ab4 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.c000ab6 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ab8 50db MOVF 0xdb,0x0,0x0000aba 6e66 MOVWF 0x66,0x0000abc 0ef8 MOVLW 0xf8000abe 50db MOVF 0xdb,0x0,0x0000ac0 6e67 MOVWF 0x67,0x0000ac2 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ac4 50db MOVF 0xdb,0x0,0x0000ac6 6e68 MOVWF 0x68,0x0000ac8 0efa MOVLW 0xfa000aca 50db MOVF 0xdb,0x0,0x0000acc 6e69 MOVWF 0x69,0x0000ace 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ad0 50db MOVF 0xdb,0x0,0x0000ad2 6e6a MOVWF 0x6a,0x0000ad4 0efc MOVLW 0xfc000ad6 50db MOVF 0xdb,0x0,0x0000ad8 6e6b MOVWF 0x6b,0x0000ada 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000adc 50db MOVF 0xdb,0x0,0x0000ade 6e6c MOVWF 0x6c,0x0000ae0 0efe MOVLW 0xfe000ae2 50db MOVF 0xdb,0x0,0x0000ae4 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000ae6 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.c000ae8 0eee MOVLW 0xee RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000aea cfdb MOVFF 0xfdb,0xfe6000aec ffe6000aee 0efc MOVLW 0xfc000af0 1460 ANDWF 0x60,0x0,0x0000af2 52e5 MOVF 0xe5,0x1,0x0000af4 10e7 IORWF 0xe7,0x0,0x0000af6 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.c000af8 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.c000afa 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000afc d000 BRA 0xafeF:\MCP\projects\CAN\canBoot\Source\Main.c000afe 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000b00 cfe7 MOVFF 0xfe7,0xfd9000b02 ffd9000b04 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.c000b06 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b08 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.c000b0a 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b0c 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.c000b0e 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b10 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.c000b12 c0b6 MOVFF 0xb6,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000b14 f010000b16 c0b7 MOVFF 0xb7,0x11000b18 f011000b1a c0b8 MOVFF 0xb8,0x12000b1c f012000b1e c0b9 MOVFF 0xb9,0x13000b20 f013000b22 d000 BRA 0xb24000b24 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