Rev 91 | 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 Nov 14 21:10:39 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Main application F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBoot/Source/Main.c $ F:\MCP\projects\CAN\canBoot\Source\Main.c* Last changed: $LastChangedDate: 2006-11-14 12:50:16 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBoot\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBoot\Source\Main.c* Revision: $Revision: 91 $ F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CANdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <boot.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.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 0e17 MOVLW 0x17000042 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 db99 RCALL 0x778 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 db9e RCALL 0x784 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 ec4a CALL 0xa94,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.c000762 d47e 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 dbba RCALL 0x7d6 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c000062 6ee7 MOVWF 0xe7,0x0000064 0e14 MOVLW 0x14000066 cfe7 MOVFF 0xfe7,0xfdb000068 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c00006a 0100 MOVLB 0x0 tickSubCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c00006c 2bb9 INCF 0xb9,0x1,0x100006e 0e00 MOVLW 0x0000070 23ba ADDWFC 0xba,0x1,0x1000072 23bb ADDWFC 0xbb,0x1,0x1000074 23bc ADDWFC 0xbc,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 55b9 SUBFWB 0xb9,0x0,0x100007e 0e01 MOVLW 0x1000080 55ba SUBFWB 0xba,0x0,0x1000082 0e00 MOVLW 0x0000084 55bb SUBFWB 0xbb,0x0,0x1000086 0e00 MOVLW 0x0000088 55bc SUBFWB 0xbc,0x0,0x100008a e20c BC 0xa4{ F:\MCP\projects\CAN\canBoot\Source\Main.c00008c 0100 MOVLB 0x0 tickCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c00008e 2bb5 INCF 0xb5,0x1,0x1000090 0e00 MOVLW 0x0000092 23b6 ADDWFC 0xb6,0x1,0x1000094 23b7 ADDWFC 0xb7,0x1,0x1000096 23b8 ADDWFC 0xb8,0x1,0x1000098 0100 MOVLB 0x0 tickSubCounter=0; F:\MCP\projects\CAN\canBoot\Source\Main.c00009a 6bb9 CLRF 0xb9,0x100009c 6bba CLRF 0xba,0x100009e 6bbb CLRF 0xbb,0x10000a0 6bbc CLRF 0xbc,0x10000a2 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0000a4 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c0000a6 51bd MOVF 0xbd,0x0,0x10000a8 0a05 XORLW 0x50000aa e101 BNZ 0xae0000ac d354 BRA 0x7560000ae 0a01 XORLW 0x10000b0 e101 BNZ 0xb40000b2 d2a2 BRA 0x5f80000b4 0a07 XORLW 0x70000b6 e101 BNZ 0xba0000b8 d1b6 BRA 0x4260000ba 0a01 XORLW 0x10000bc e101 BNZ 0xc00000be d10c BRA 0x2d80000c0 0a03 XORLW 0x30000c2 e101 BNZ 0xc60000c4 d0b5 BRA 0x2300000c6 0a01 XORLW 0x10000c8 e001 BZ 0xcc0000ca d348 BRA 0x75c{ 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.c0000cc 0e14 MOVLW 0x14 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.c0000ce 04db DECF 0xdb,0x0,0x00000d0 e16f BNZ 0x1b00000d2 0100 MOVLB 0x00000d4 5160 MOVF 0x60,0x0,0x10000d6 e16c BNZ 0x1b00000d8 0100 MOVLB 0x00000da 0e01 MOVLW 0x10000dc 1961 XORWF 0x61,0x0,0x10000de e101 BNZ 0xe20000e0 5162 MOVF 0x62,0x0,0x10000e2 e166 BNZ 0x1b00000e4 c06c MOVFF 0x6c,0x20000e6 f0020000e8 c002 MOVFF 0x2,0x30000ea f0030000ec 6a02 CLRF 0x2,0x00000ee 0100 MOVLB 0x00000f0 516b MOVF 0x6b,0x0,0x10000f2 0100 MOVLB 0x00000f4 2402 ADDWF 0x2,0x0,0x00000f6 6e00 MOVWF 0x0,0x00000f8 0e00 MOVLW 0x00000fa 2003 ADDWFC 0x3,0x0,0x00000fc 6e01 MOVWF 0x1,0x00000fe 0e78 MOVLW 0x78000100 1800 XORWF 0x0,0x0,0x0000102 e101 BNZ 0x106000104 5001 MOVF 0x1,0x0,0x0000106 e154 BNZ 0x1b0000108 0100 MOVLB 0x000010a 5163 MOVF 0x63,0x0,0x100010c e151 BNZ 0x1b0{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c00010e c069 MOVFF 0x69,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.c000110 f000000112 6a01 CLRF 0x1,0x0000114 6a02 CLRF 0x2,0x0000116 6a03 CLRF 0x3,0x0000118 0e10 MOVLW 0x1000011a 0b1f ANDLW 0x1f00011c e007 BZ 0x12c00011e 90d8 BCF 0xd8,0x0,0x0000120 3600 RLCF 0x0,0x1,0x0000122 3601 RLCF 0x1,0x1,0x0000124 3602 RLCF 0x2,0x1,0x0000126 3603 RLCF 0x3,0x1,0x0000128 06e8 DECF 0xe8,0x1,0x000012a e1f9 BNZ 0x11e00012c c068 MOVFF 0x68,0x400012e f004000130 6a05 CLRF 0x5,0x0000132 6a06 CLRF 0x6,0x0000134 6a07 CLRF 0x7,0x0000136 0e08 MOVLW 0x8000138 0b1f ANDLW 0x1f00013a e007 BZ 0x14a00013c 90d8 BCF 0xd8,0x0,0x000013e 3604 RLCF 0x4,0x1,0x0000140 3605 RLCF 0x5,0x1,0x0000142 3606 RLCF 0x6,0x1,0x0000144 3607 RLCF 0x7,0x1,0x0000146 06e8 DECF 0xe8,0x1,0x0000148 e1f9 BNZ 0x13c00014a 5004 MOVF 0x4,0x0,0x000014c 2600 ADDWF 0x0,0x1,0x000014e 5005 MOVF 0x5,0x0,0x0000150 2201 ADDWFC 0x1,0x1,0x0000152 5006 MOVF 0x6,0x0,0x0000154 2202 ADDWFC 0x2,0x1,0x0000156 5007 MOVF 0x7,0x0,0x0000158 2203 ADDWFC 0x3,0x1,0x000015a c067 MOVFF 0x67,0x800015c f00800015e 6a09 CLRF 0x9,0x0000160 6a0a CLRF 0xa,0x0000162 6a0b CLRF 0xb,0x0000164 5000 MOVF 0x0,0x0,0x0000166 2408 ADDWF 0x8,0x0,0x0000168 0100 MOVLB 0x000016a 6fc6 MOVWF 0xc6,0x100016c 5001 MOVF 0x1,0x0,0x000016e 2009 ADDWFC 0x9,0x0,0x0000170 0100 MOVLB 0x0000172 6fc7 MOVWF 0xc7,0x1000174 5002 MOVF 0x2,0x0,0x0000176 200a ADDWFC 0xa,0x0,0x0000178 0100 MOVLB 0x000017a 6fc8 MOVWF 0xc8,0x100017c 5003 MOVF 0x3,0x0,0x000017e 200b ADDWFC 0xb,0x0,0x0000180 0100 MOVLB 0x0000182 6fc9 MOVWF 0xc9,0x1000184 c064 MOVFF 0x64,0xc2 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000186 f0c2000188 c065 MOVFF 0x65,0xc300018a f0c300018c ec4a CALL 0xa94,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00018e f005000190 c010 MOVFF 0x10,0xbe000192 f0be000194 c011 MOVFF 0x11,0xbf000196 f0bf000198 c012 MOVFF 0x12,0xc000019a f0c000019c c013 MOVFF 0x13,0xc100019e f0c10001a0 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0001a2 6bc4 CLRF 0xc4,0x10001a4 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0001a6 0e02 MOVLW 0x20001a8 6fc5 MOVWF 0xc5,0x10001aa 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0001ac 0e01 MOVLW 0x10001ae 6fbd MOVWF 0xbd,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.c0001b0 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0001b2 ffe90001b4 cfda MOVFF 0xfda,0xfea0001b6 ffea0001b8 cfee MOVFF 0xfee,0x40001ba f0040001bc cfee MOVFF 0xfee,0x50001be f0050001c0 cfee MOVFF 0xfee,0x60001c2 f0060001c4 cfef MOVFF 0xfef,0x70001c6 f0070001c8 c004 MOVFF 0x4,0xfe60001ca ffe60001cc c005 MOVFF 0x5,0xfe60001ce ffe60001d0 c006 MOVFF 0x6,0xfe60001d2 ffe60001d4 c007 MOVFF 0x7,0xfe60001d6 ffe60001d8 ec4a CALL 0xa94,0x00001da f0050001dc 52e5 MOVF 0xe5,0x1,0x00001de cfe7 MOVFF 0xfe7,0x70001e0 f0070001e2 52e5 MOVF 0xe5,0x1,0x00001e4 cfe7 MOVFF 0xfe7,0x60001e6 f0060001e8 52e5 MOVF 0xe5,0x1,0x00001ea cfe7 MOVFF 0xfe7,0x50001ec f0050001ee 52e5 MOVF 0xe5,0x1,0x00001f0 cfe7 MOVFF 0xfe7,0x40001f2 f0040001f4 0100 MOVLB 0x00001f6 5004 MOVF 0x4,0x0,0x00001f8 5c10 SUBWF 0x10,0x0,0x00001fa 6e00 MOVWF 0x0,0x00001fc 0100 MOVLB 0x00001fe 5005 MOVF 0x5,0x0,0x0000200 5811 SUBWFB 0x11,0x0,0x0000202 6e01 MOVWF 0x1,0x0000204 0100 MOVLB 0x0000206 5006 MOVF 0x6,0x0,0x0000208 5812 SUBWFB 0x12,0x0,0x000020a 6e02 MOVWF 0x2,0x000020c 0100 MOVLB 0x000020e 5007 MOVF 0x7,0x0,0x0000210 5813 SUBWFB 0x13,0x0,0x0000212 6e03 MOVWF 0x3,0x0000214 80d8 BSF 0xd8,0x0,0x0000216 0ef4 MOVLW 0xf4000218 5400 SUBFWB 0x0,0x0,0x000021a 0e01 MOVLW 0x100021c 5401 SUBFWB 0x1,0x0,0x000021e 0e00 MOVLW 0x0000220 5402 SUBFWB 0x2,0x0,0x0000222 0e00 MOVLW 0x0000224 5403 SUBFWB 0x3,0x0,0x0000226 e203 BC 0x22e{ F:\MCP\projects\CAN\canBoot\Source\Main.c000228 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00022a 0e05 MOVLW 0x500022c 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c00022e d299 BRA 0x762 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.c000230 0e05 MOVLW 0x5 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000232 6adb CLRF 0xdb,0x0000234 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000236 6ef3 MOVWF 0xf3,0x0000238 0e06 MOVLW 0x600023a cff3 MOVFF 0xff3,0xfdb00023c ffdb00023e 0e07 MOVLW 0x7000240 6adb CLRF 0xdb,0x0000242 0e08 MOVLW 0x8 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000244 6adb CLRF 0xdb,0x0000246 0e78 MOVLW 0x78 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c000248 6ef3 MOVWF 0xf3,0x000024a 0e09 MOVLW 0x900024c cff3 MOVFF 0xff3,0xfdb00024e ffdb000250 0e0a MOVLW 0xa000252 6adb CLRF 0xdb,0x0000254 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000256 6ef3 MOVWF 0xf3,0x0000258 0e0b MOVLW 0xb00025a cff3 MOVFF 0xff3,0xfdb00025c ffdb00025e 0e10 MOVLW 0x10 outCm.data[ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000260 c0c4 MOVFF 0xc4,0xfdb000262 ffdb000264 ec4a CALL 0xa94,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000266 f005000268 c010 MOVFF 0x10,0xbe00026a f0be00026c c011 MOVFF 0x11,0xbf00026e f0bf000270 c012 MOVFF 0x12,0xc0000272 f0c0000274 c013 MOVFF 0x13,0xc1000276 f0c1000278 c0c5 MOVFF 0xc5,0xbd pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c00027a f0bdF:\MCP\projects\CAN\canBoot\Source\Main.c00027c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c00027e 6ee6 MOVWF 0xe6,0x0000280 50d9 MOVF 0xd9,0x0,0x0000282 0f05 ADDLW 0x5000284 6ee9 MOVWF 0xe9,0x0000286 cfda MOVFF 0xfda,0xfea000288 ffea00028a cfee MOVFF 0xfee,0xfe600028c ffe600028e cfee MOVFF 0xfee,0xfe6000290 ffe6000292 cfee MOVFF 0xfee,0xfe6000294 ffe6000296 cfee MOVFF 0xfee,0xfe6000298 ffe600029a cfee MOVFF 0xfee,0xfe600029c ffe600029e cfee MOVFF 0xfee,0xfe60002a0 ffe60002a2 cfee MOVFF 0xfee,0xfe60002a4 ffe60002a6 cfee MOVFF 0xfee,0xfe60002a8 ffe60002aa cfee MOVFF 0xfee,0xfe60002ac ffe60002ae cfee MOVFF 0xfee,0xfe60002b0 ffe60002b2 cfee MOVFF 0xfee,0xfe60002b4 ffe60002b6 cfee MOVFF 0xfee,0xfe60002b8 ffe60002ba cfee MOVFF 0xfee,0xfe60002bc ffe60002be cfee MOVFF 0xfee,0xfe60002c0 ffe60002c2 cfee MOVFF 0xfee,0xfe60002c4 ffe60002c6 db10 RCALL 0x8e80002c8 6e00 MOVWF 0x0,0x00002ca 0e10 MOVLW 0x100002cc 5ee1 SUBWF 0xe1,0x1,0x00002ce 5000 MOVF 0x0,0x0,0x00002d0 0900 IORLW 0x00002d2 e101 BNZ 0x2d60002d4 d7d3 BRA 0x27c0002d6 d245 BRA 0x762 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.c0002d8 dbdd RCALL 0xa94 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002da 0100 MOVLB 0x00002dc 51be MOVF 0xbe,0x0,0x10002de 5c10 SUBWF 0x10,0x0,0x00002e0 6e00 MOVWF 0x0,0x00002e2 0100 MOVLB 0x00002e4 51bf MOVF 0xbf,0x0,0x10002e6 5811 SUBWFB 0x11,0x0,0x00002e8 6e01 MOVWF 0x1,0x00002ea 0100 MOVLB 0x00002ec 51c0 MOVF 0xc0,0x0,0x10002ee 5812 SUBWFB 0x12,0x0,0x00002f0 6e02 MOVWF 0x2,0x00002f2 0100 MOVLB 0x00002f4 51c1 MOVF 0xc1,0x0,0x10002f6 5813 SUBWFB 0x13,0x0,0x00002f8 6e03 MOVWF 0x3,0x00002fa 80d8 BSF 0xd8,0x0,0x00002fc 0e0e MOVLW 0xe0002fe 5400 SUBFWB 0x0,0x0,0x0000300 0e00 MOVLW 0x0000302 5401 SUBFWB 0x1,0x0,0x0000304 0e00 MOVLW 0x0000306 5402 SUBFWB 0x2,0x0,0x0000308 0e00 MOVLW 0x000030a 5403 SUBFWB 0x3,0x0,0x000030c e208 BC 0x31e{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c00030e 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000310 6bc4 CLRF 0xc4,0x1000312 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000314 0e02 MOVLW 0x2000316 6fc5 MOVWF 0xc5,0x1000318 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00031a 0e01 MOVLW 0x100031c 6fbd MOVWF 0xbd,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.c00031e 0e14 MOVLW 0x14 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.c000320 04db DECF 0xdb,0x0,0x0000322 e001 BZ 0x326000324 d07f BRA 0x424000326 0100 MOVLB 0x0000328 5160 MOVF 0x60,0x0,0x100032a e001 BZ 0x32e00032c d07b BRA 0x42400032e 0e03 MOVLW 0x3000330 0100 MOVLB 0x0000332 1561 ANDWF 0x61,0x0,0x1000334 6e00 MOVWF 0x0,0x0000336 6a01 CLRF 0x1,0x0000338 0e03 MOVLW 0x300033a 1800 XORWF 0x0,0x0,0x000033c e101 BNZ 0x34000033e 5001 MOVF 0x1,0x0,0x0000340 e171 BNZ 0x424000342 0100 MOVLB 0x0000344 5163 MOVF 0x63,0x0,0x1000346 e16e BNZ 0x424000348 0100 MOVLB 0x000034a 51c2 MOVF 0xc2,0x0,0x100034c 0100 MOVLB 0x000034e 1964 XORWF 0x64,0x0,0x1000350 e104 BNZ 0x35a000352 0100 MOVLB 0x0000354 51c3 MOVF 0xc3,0x0,0x1000356 0100 MOVLB 0x0000358 1965 XORWF 0x65,0x0,0x100035a e164 BNZ 0x424{ F:\MCP\projects\CAN\canBoot\Source\Main.c00035c 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00035e 0100 MOVLB 0x0000360 1561 ANDWF 0x61,0x0,0x1000362 6e00 MOVWF 0x0,0x0000364 6a01 CLRF 0x1,0x0000366 90d8 BCF 0xd8,0x0,0x0000368 3201 RRCF 0x1,0x1,0x000036a 3200 RRCF 0x0,0x1,0x000036c 90d8 BCF 0xd8,0x0,0x000036e 3201 RRCF 0x1,0x1,0x0000370 3200 RRCF 0x0,0x1,0x0000372 0e08 MOVLW 0x8000374 0200 MULWF 0x0,0x0000376 0e15 MOVLW 0x15000378 cff3 MOVFF 0xff3,0xfdb00037a ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c00037c 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00037e 0e08 MOVLW 0x8000380 6fca MOVWF 0xca,0x1000382 0e15 MOVLW 0x15 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.c000384 50db MOVF 0xdb,0x0,0x0000386 6aea CLRF 0xea,0x0000388 0f6f ADDLW 0x6f00038a 6ee9 MOVWF 0xe9,0x000038c 0e00 MOVLW 0x000038e 22ea ADDWFC 0xea,0x1,0x0000390 c067 MOVFF 0x67,0xfef000392 ffef000394 0e15 MOVLW 0x15000396 28db INCF 0xdb,0x0,0x0000398 6aea CLRF 0xea,0x000039a 0f6f ADDLW 0x6f00039c 6ee9 MOVWF 0xe9,0x000039e 0e00 MOVLW 0x00003a0 22ea ADDWFC 0xea,0x1,0x00003a2 c068 MOVFF 0x68,0xfef0003a4 ffef0003a6 0e15 MOVLW 0x150003a8 50db MOVF 0xdb,0x0,0x00003aa 0f02 ADDLW 0x20003ac 6aea CLRF 0xea,0x00003ae 0f6f ADDLW 0x6f0003b0 6ee9 MOVWF 0xe9,0x00003b2 0e00 MOVLW 0x00003b4 22ea ADDWFC 0xea,0x1,0x00003b6 c069 MOVFF 0x69,0xfef0003b8 ffef0003ba 0e15 MOVLW 0x150003bc 50db MOVF 0xdb,0x0,0x00003be 0f03 ADDLW 0x30003c0 6aea CLRF 0xea,0x00003c2 0f6f ADDLW 0x6f0003c4 6ee9 MOVWF 0xe9,0x00003c6 0e00 MOVLW 0x00003c8 22ea ADDWFC 0xea,0x1,0x00003ca c06a MOVFF 0x6a,0xfef0003cc ffef0003ce 0e15 MOVLW 0x15 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.c0003d0 50db MOVF 0xdb,0x0,0x00003d2 0f04 ADDLW 0x40003d4 6aea CLRF 0xea,0x00003d6 0f6f ADDLW 0x6f0003d8 6ee9 MOVWF 0xe9,0x00003da 0e00 MOVLW 0x00003dc 22ea ADDWFC 0xea,0x1,0x00003de c06b MOVFF 0x6b,0xfef0003e0 ffef0003e2 0e15 MOVLW 0x150003e4 50db MOVF 0xdb,0x0,0x00003e6 0f05 ADDLW 0x50003e8 6aea CLRF 0xea,0x00003ea 0f6f ADDLW 0x6f0003ec 6ee9 MOVWF 0xe9,0x00003ee 0e00 MOVLW 0x00003f0 22ea ADDWFC 0xea,0x1,0x00003f2 c06c MOVFF 0x6c,0xfef0003f4 ffef0003f6 0e15 MOVLW 0x150003f8 50db MOVF 0xdb,0x0,0x00003fa 0f06 ADDLW 0x60003fc 6aea CLRF 0xea,0x00003fe 0f6f ADDLW 0x6f000400 6ee9 MOVWF 0xe9,0x0000402 0e00 MOVLW 0x0000404 22ea ADDWFC 0xea,0x1,0x0000406 c06d MOVFF 0x6d,0xfef000408 ffef00040a 0e15 MOVLW 0x1500040c 50db MOVF 0xdb,0x0,0x000040e 0f07 ADDLW 0x7000410 6aea CLRF 0xea,0x0000412 0f6f ADDLW 0x6f000414 6ee9 MOVWF 0xe9,0x0000416 0e00 MOVLW 0x0000418 22ea ADDWFC 0xea,0x1,0x000041a c06e MOVFF 0x6e,0xfef00041c ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00041e 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000420 0e03 MOVLW 0x3000422 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000424 d19e BRA 0x762 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.c000426 0e14 MOVLW 0x14 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.c000428 04db DECF 0xdb,0x0,0x000042a e001 BZ 0x42e00042c d07f BRA 0x52c00042e 0100 MOVLB 0x0000430 5160 MOVF 0x60,0x0,0x1000432 e001 BZ 0x436000434 d07b BRA 0x52c000436 0e03 MOVLW 0x3000438 0100 MOVLB 0x000043a 1561 ANDWF 0x61,0x0,0x100043c 6e00 MOVWF 0x0,0x000043e 6a01 CLRF 0x1,0x0000440 0e03 MOVLW 0x3000442 1800 XORWF 0x0,0x0,0x0000444 e101 BNZ 0x448000446 5001 MOVF 0x1,0x0,0x0000448 e171 BNZ 0x52c00044a 0100 MOVLB 0x000044c 5163 MOVF 0x63,0x0,0x100044e e16e BNZ 0x52c000450 0100 MOVLB 0x0000452 51c2 MOVF 0xc2,0x0,0x1000454 0100 MOVLB 0x0000456 1964 XORWF 0x64,0x0,0x1000458 e104 BNZ 0x46200045a 0100 MOVLB 0x000045c 51c3 MOVF 0xc3,0x0,0x100045e 0100 MOVLB 0x0000460 1965 XORWF 0x65,0x0,0x1000462 e164 BNZ 0x52c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000464 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000466 0100 MOVLB 0x0000468 1561 ANDWF 0x61,0x0,0x100046a 6e00 MOVWF 0x0,0x000046c 6a01 CLRF 0x1,0x000046e 90d8 BCF 0xd8,0x0,0x0000470 3201 RRCF 0x1,0x1,0x0000472 3200 RRCF 0x0,0x1,0x0000474 90d8 BCF 0xd8,0x0,0x0000476 3201 RRCF 0x1,0x1,0x0000478 3200 RRCF 0x0,0x1,0x000047a 0e08 MOVLW 0x800047c 0200 MULWF 0x0,0x000047e 0e16 MOVLW 0x16000480 cff3 MOVFF 0xff3,0xfdb000482 ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c000484 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.c000486 50db MOVF 0xdb,0x0,0x0000488 6aea CLRF 0xea,0x000048a 0f6f ADDLW 0x6f00048c 6ee9 MOVWF 0xe9,0x000048e 0e00 MOVLW 0x0000490 22ea ADDWFC 0xea,0x1,0x0000492 c067 MOVFF 0x67,0xfef000494 ffef000496 0e16 MOVLW 0x16000498 28db INCF 0xdb,0x0,0x000049a 6aea CLRF 0xea,0x000049c 0f6f ADDLW 0x6f00049e 6ee9 MOVWF 0xe9,0x00004a0 0e00 MOVLW 0x00004a2 22ea ADDWFC 0xea,0x1,0x00004a4 c068 MOVFF 0x68,0xfef0004a6 ffef0004a8 0e16 MOVLW 0x160004aa 50db MOVF 0xdb,0x0,0x00004ac 0f02 ADDLW 0x20004ae 6aea CLRF 0xea,0x00004b0 0f6f ADDLW 0x6f0004b2 6ee9 MOVWF 0xe9,0x00004b4 0e00 MOVLW 0x00004b6 22ea ADDWFC 0xea,0x1,0x00004b8 c069 MOVFF 0x69,0xfef0004ba ffef0004bc 0e16 MOVLW 0x160004be 50db MOVF 0xdb,0x0,0x00004c0 0f03 ADDLW 0x30004c2 6aea CLRF 0xea,0x00004c4 0f6f ADDLW 0x6f0004c6 6ee9 MOVWF 0xe9,0x00004c8 0e00 MOVLW 0x00004ca 22ea ADDWFC 0xea,0x1,0x00004cc c06a MOVFF 0x6a,0xfef0004ce ffef0004d0 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.c0004d2 50db MOVF 0xdb,0x0,0x00004d4 0f04 ADDLW 0x40004d6 6aea CLRF 0xea,0x00004d8 0f6f ADDLW 0x6f0004da 6ee9 MOVWF 0xe9,0x00004dc 0e00 MOVLW 0x00004de 22ea ADDWFC 0xea,0x1,0x00004e0 c06b MOVFF 0x6b,0xfef0004e2 ffef0004e4 0e16 MOVLW 0x160004e6 50db MOVF 0xdb,0x0,0x00004e8 0f05 ADDLW 0x50004ea 6aea CLRF 0xea,0x00004ec 0f6f ADDLW 0x6f0004ee 6ee9 MOVWF 0xe9,0x00004f0 0e00 MOVLW 0x00004f2 22ea ADDWFC 0xea,0x1,0x00004f4 c06c MOVFF 0x6c,0xfef0004f6 ffef0004f8 0e16 MOVLW 0x160004fa 50db MOVF 0xdb,0x0,0x00004fc 0f06 ADDLW 0x60004fe 6aea CLRF 0xea,0x0000500 0f6f ADDLW 0x6f000502 6ee9 MOVWF 0xe9,0x0000504 0e00 MOVLW 0x0000506 22ea ADDWFC 0xea,0x1,0x0000508 c06d MOVFF 0x6d,0xfef00050a ffef00050c 0e16 MOVLW 0x1600050e 50db MOVF 0xdb,0x0,0x0000510 0f07 ADDLW 0x7000512 6aea CLRF 0xea,0x0000514 0f6f ADDLW 0x6f000516 6ee9 MOVWF 0xe9,0x0000518 0e00 MOVLW 0x000051a 22ea ADDWFC 0xea,0x1,0x000051c c06e MOVFF 0x6e,0xfef00051e ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000520 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000522 0100 MOVLB 0x0000524 27ca ADDWF 0xca,0x1,0x1000526 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000528 0e03 MOVLW 0x300052a 6fbd MOVWF 0xbd,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.c00052c 0e14 MOVLW 0x14 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.c00052e 04db DECF 0xdb,0x0,0x0000530 e11e BNZ 0x56e000532 0100 MOVLB 0x0000534 5160 MOVF 0x60,0x0,0x1000536 e11b BNZ 0x56e000538 0100 MOVLB 0x000053a 0e02 MOVLW 0x200053c 1961 XORWF 0x61,0x0,0x100053e e101 BNZ 0x542000540 5162 MOVF 0x62,0x0,0x1000542 e115 BNZ 0x56e000544 0100 MOVLB 0x0000546 5163 MOVF 0x63,0x0,0x1000548 e112 BNZ 0x56e00054a 0100 MOVLB 0x000054c 51c2 MOVF 0xc2,0x0,0x100054e 0100 MOVLB 0x0000550 1964 XORWF 0x64,0x0,0x1000552 e104 BNZ 0x55c000554 0100 MOVLB 0x0000556 51c3 MOVF 0xc3,0x0,0x1000558 0100 MOVLB 0x000055a 1965 XORWF 0x65,0x0,0x100055c e108 BNZ 0x56e{ 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.c00055e 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000560 6bc4 CLRF 0xc4,0x1000562 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000564 0e02 MOVLW 0x2000566 6fc5 MOVWF 0xc5,0x1000568 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00056a 0e01 MOVLW 0x100056c 6fbd MOVWF 0xbd,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.c00056e 0e14 MOVLW 0x14 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.c000570 04db DECF 0xdb,0x0,0x0000572 e136 BNZ 0x5e0000574 0100 MOVLB 0x0000576 5160 MOVF 0x60,0x0,0x1000578 e133 BNZ 0x5e000057a 0100 MOVLB 0x000057c 0e05 MOVLW 0x500057e 1961 XORWF 0x61,0x0,0x1000580 e101 BNZ 0x584000582 5162 MOVF 0x62,0x0,0x1000584 e12d BNZ 0x5e0000586 0100 MOVLB 0x0000588 5163 MOVF 0x63,0x0,0x100058a e12a BNZ 0x5e000058c 0100 MOVLB 0x000058e 51c2 MOVF 0xc2,0x0,0x1000590 0100 MOVLB 0x0000592 1964 XORWF 0x64,0x0,0x1000594 e104 BNZ 0x59e000596 0100 MOVLB 0x0000598 51c3 MOVF 0xc3,0x0,0x100059a 0100 MOVLB 0x000059c 1965 XORWF 0x65,0x0,0x100059e e120 BNZ 0x5e0{ 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.c0005a0 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c0005a2 51ca MOVF 0xca,0x0,0x10005a4 e109 BNZ 0x5b8{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c0005a6 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005a8 6bc4 CLRF 0xc4,0x10005aa 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ac 0e05 MOVLW 0x50005ae 6fc5 MOVWF 0xc5,0x10005b0 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b2 0e01 MOVLW 0x10005b4 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005b6 d014 BRA 0x5e0 else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005b8 0e40 MOVLW 0x400005ba 0100 MOVLB 0x00005bc 5dca SUBWF 0xca,0x0,0x10005be e00a BZ 0x5d4{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005c0 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c2 0e01 MOVLW 0x10005c4 6fc4 MOVWF 0xc4,0x10005c6 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c8 0e02 MOVLW 0x20005ca 6fc5 MOVWF 0xc5,0x10005cc 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ce 0e01 MOVLW 0x10005d0 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005d2 d006 BRA 0x5e0 else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005d4 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d6 0e04 MOVLW 0x40005d8 6fbd MOVWF 0xbd,0x10005da 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005dc 0e05 MOVLW 0x50005de 6fc5 MOVWF 0xc5,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.c0005e0 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005e2 0100 MOVLB 0x00005e4 5dca SUBWF 0xca,0x0,0x10005e6 e107 BNZ 0x5f6{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005e8 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ea 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ec 0e04 MOVLW 0x40005ee 6fbd MOVWF 0xbd,0x10005f0 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f2 0e03 MOVLW 0x30005f4 6fc5 MOVWF 0xc5,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.c0005f6 d0b5 BRA 0x762 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.c0005f8 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Write program and send ack. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Check addr limit F:\MCP\projects\CAN\canBoot\Source\Main.c0005fa 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c0005fc 0100 MOVLB 0x00005fe 5dc6 SUBWF 0xc6,0x0,0x1000600 0e10 MOVLW 0x10000602 59c7 SUBWFB 0xc7,0x0,0x1000604 0e00 MOVLW 0x0000606 59c8 SUBWFB 0xc8,0x0,0x1000608 0e00 MOVLW 0x000060a 59c9 SUBWFB 0xc9,0x0,0x100060c e206 BC 0x61a{ F:\MCP\projects\CAN\canBoot\Source\Main.c00060e 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000610 0e01 MOVLW 0x1000612 6fc4 MOVWF 0xc4,0x1000614 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000616 0e01 MOVLW 0x1000618 6fbd MOVWF 0xbd,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.c00061a c0c6 MOVFF 0xc6,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00061c f00000061e c0c7 MOVFF 0xc7,0x1000620 f001000622 c0c8 MOVFF 0xc8,0x2000624 f002000626 c0c9 MOVFF 0xc9,0x3000628 f00300062a 6a00 CLRF 0x0,0x000062c 6a01 CLRF 0x1,0x000062e 6a03 CLRF 0x3,0x0000630 0e10 MOVLW 0x10000632 90d8 BCF 0xd8,0x0,0x0000634 3203 RRCF 0x3,0x1,0x0000636 3202 RRCF 0x2,0x1,0x0000638 3201 RRCF 0x1,0x1,0x000063a 3200 RRCF 0x0,0x1,0x000063c 06e8 DECF 0xe8,0x1,0x000063e e1f9 BNZ 0x632000640 5000 MOVF 0x0,0x0,0x0000642 6ef8 MOVWF 0xf8,0x0000644 c0c6 MOVFF 0xc6,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000646 f000000648 c0c7 MOVFF 0xc7,0x100064a f00100064c c0c8 MOVFF 0xc8,0x200064e f002000650 c0c9 MOVFF 0xc9,0x3000652 f003000654 6a00 CLRF 0x0,0x0000656 6a02 CLRF 0x2,0x0000658 6a03 CLRF 0x3,0x000065a 0e08 MOVLW 0x800065c 90d8 BCF 0xd8,0x0,0x000065e 3203 RRCF 0x3,0x1,0x0000660 3202 RRCF 0x2,0x1,0x0000662 3201 RRCF 0x1,0x1,0x0000664 3200 RRCF 0x0,0x1,0x0000666 06e8 DECF 0xe8,0x1,0x0000668 e1f9 BNZ 0x65c00066a 5000 MOVF 0x0,0x0,0x000066c 6ef7 MOVWF 0xf7,0x000066e 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000670 51c6 MOVF 0xc6,0x0,0x1000672 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000674 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.c000676 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.c000678 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.c00067a 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.c00067c 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.c00067e 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000680 6ea7 MOVWF 0xa7,0x0000682 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000684 6ea7 MOVWF 0xa7,0x0000686 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.c000688 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.c00068a c0c6 MOVFF 0xc6,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00068c f00000068e c0c7 MOVFF 0xc7,0x1000690 f001000692 c0c8 MOVFF 0xc8,0x2000694 f002000696 c0c9 MOVFF 0xc9,0x3000698 f00300069a 6a00 CLRF 0x0,0x000069c 6a01 CLRF 0x1,0x000069e 6a03 CLRF 0x3,0x00006a0 0e10 MOVLW 0x100006a2 90d8 BCF 0xd8,0x0,0x00006a4 3203 RRCF 0x3,0x1,0x00006a6 3202 RRCF 0x2,0x1,0x00006a8 3201 RRCF 0x1,0x1,0x00006aa 3200 RRCF 0x0,0x1,0x00006ac 06e8 DECF 0xe8,0x1,0x00006ae e1f9 BNZ 0x6a20006b0 5000 MOVF 0x0,0x0,0x00006b2 6ef8 MOVWF 0xf8,0x00006b4 c0c6 MOVFF 0xc6,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006b6 f0000006b8 c0c7 MOVFF 0xc7,0x10006ba f0010006bc c0c8 MOVFF 0xc8,0x20006be f0020006c0 c0c9 MOVFF 0xc9,0x30006c2 f0030006c4 6a00 CLRF 0x0,0x00006c6 6a02 CLRF 0x2,0x00006c8 6a03 CLRF 0x3,0x00006ca 0e08 MOVLW 0x80006cc 90d8 BCF 0xd8,0x0,0x00006ce 3203 RRCF 0x3,0x1,0x00006d0 3202 RRCF 0x2,0x1,0x00006d2 3201 RRCF 0x1,0x1,0x00006d4 3200 RRCF 0x0,0x1,0x00006d6 06e8 DECF 0xe8,0x1,0x00006d8 e1f9 BNZ 0x6cc0006da 5000 MOVF 0x0,0x0,0x00006dc 6ef7 MOVWF 0xf7,0x00006de 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006e0 51c6 MOVF 0xc6,0x0,0x10006e2 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c0006e4 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c0006e6 6adb CLRF 0xdb,0x00006e8 0e3f MOVLW 0x3f0006ea 6ef3 MOVWF 0xf3,0x00006ec 0e04 MOVLW 0x40006ee cfdb MOVFF 0xfdb,0xff40006f0 fff40006f2 50f3 MOVF 0xf3,0x0,0x00006f4 5cf4 SUBWF 0xf4,0x0,0x00006f6 e20d BC 0x71200070c 0e04 MOVLW 0x400070e 2adb INCF 0xdb,0x1,0x0000710 d7eb BRA 0x6e8{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006f8 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fa 50db MOVF 0xdb,0x0,0x00006fc 6aea CLRF 0xea,0x00006fe 0f6f ADDLW 0x6f000700 6ee9 MOVWF 0xe9,0x0000702 0e00 MOVLW 0x0000704 22ea ADDWFC 0xea,0x1,0x0000706 50ef MOVF 0xef,0x0,0x0000708 6ef5 MOVWF 0xf5,0x000070a d9c2 RCALL 0xa90 TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000712 c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c000714 fff5000716 d9ba RCALL 0xa8c 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.c000718 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.c00071a 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.c00071c 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.c00071e 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.c000720 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000722 6ea7 MOVWF 0xa7,0x0000724 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000726 6ea7 MOVWF 0xa7,0x0000728 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.c00072a 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.c00072c 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00072e 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c000730 0100 MOVLB 0x0000732 27c6 ADDWF 0xc6,0x1,0x1000734 0e00 MOVLW 0x0000736 0100 MOVLB 0x0000738 23c7 ADDWFC 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 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000748 6bca CLRF 0xca,0x100074a 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00074c 6bc4 CLRF 0xc4,0x100074e 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000750 0e01 MOVLW 0x1000752 6fbd MOVWF 0xbd,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c000754 d006 BRA 0x762 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.c000756 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000758 f00800075a d003 BRA 0x762 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.c00075c 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c00075e 6bbd CLRF 0xbd,0x1000760 d000 BRA 0x762 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.c000764 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canBoot\Source\Main.c000766 5ce1 SUBWF 0xe1,0x0,0x0000768 e202 BC 0x76e00076a 6ae1 CLRF 0xe1,0x000076c 52e5 MOVF 0xe5,0x1,0x000076e 6ee1 MOVWF 0xe1,0x0000770 52e5 MOVF 0xe5,0x1,0x0000772 cfe7 MOVFF 0xfe7,0xfd9000774 ffd9000776 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.c000778 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.c00077a 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.c00077c 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00077e 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.c000780 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.c000782 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.c000784 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000786 6e6f MOVWF 0x6f,0x0000788 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c00078a 146e ANDWF 0x6e,0x0,0x000078c 0880 SUBLW 0x8000078e e001 BZ 0x792000790 d7fb BRA 0x788F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000792 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.c000794 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000796 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.c000798 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c00079a 1070 IORWF 0x70,0x0,0x000079c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c00079e 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.c0007a0 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a4 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.c0007a6 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a8 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007aa 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.c0007ac 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.c0007ae 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.c0007b0 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b2 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b4 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007b6 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b8 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ba 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBoot\Source\Main.c0007bc 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007be 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.c0007c0 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c2 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0007c4 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c6 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.c0007c8 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.c0007ca 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007cc 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007ce 146e ANDWF 0x6e,0x0,0x00007d0 e001 BZ 0x7d40007d2 d7fc BRA 0x7cc#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007d4 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.c0007d6 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBoot\Source\Main.c0007d8 146f ANDWF 0x6f,0x0,0x00007da 0910 IORLW 0x100007dc 6e00 MOVWF 0x0,0x00007de 0e00 MOVLW 0x00007e0 1477 ANDWF 0x77,0x0,0x00007e2 1000 IORWF 0x0,0x0,0x00007e4 6e77 MOVWF 0x77,0x00007e6 be60 BTFSC 0x60,0x7,0x0 if (!RXB0CONbits.RXFUL) return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c0007e8 d002 BRA 0x7ee0007ea 0e00 MOVLW 0x00007ec d07c BRA 0x8e6F:\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.c0007ee 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c0007f0 1461 ANDWF 0x61,0x0,0x00007f2 38e8 SWAPF 0xe8,0x0,0x00007f4 0b0f ANDLW 0xf0007f6 0100 MOVLB 0x00007f8 6f60 MOVWF 0x60,0x10007fa 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.c0007fc 1461 ANDWF 0x61,0x0,0x00007fe 6e04 MOVWF 0x4,0x0000800 6a05 CLRF 0x5,0x0000802 0e06 MOVLW 0x6000804 90d8 BCF 0xd8,0x0,0x0000806 3604 RLCF 0x4,0x1,0x0000808 3605 RLCF 0x5,0x1,0x000080a 04e8 DECF 0xe8,0x0,0x000080c e1fb BNZ 0x80400080e 0ee0 MOVLW 0xe0000810 1462 ANDWF 0x62,0x0,0x0000812 6e06 MOVWF 0x6,0x0000814 6a07 CLRF 0x7,0x0000816 90d8 BCF 0xd8,0x0,0x0000818 3207 RRCF 0x7,0x1,0x000081a 3206 RRCF 0x6,0x1,0x000081c 90d8 BCF 0xd8,0x0,0x000081e 3207 RRCF 0x7,0x1,0x0000820 3206 RRCF 0x6,0x1,0x0000822 5004 MOVF 0x4,0x0,0x0000824 2406 ADDWF 0x6,0x0,0x0000826 6e02 MOVWF 0x2,0x0000828 5005 MOVF 0x5,0x0,0x000082a 2007 ADDWFC 0x7,0x0,0x000082c 6e03 MOVWF 0x3,0x000082e 0e03 MOVLW 0x3000830 1462 ANDWF 0x62,0x0,0x0000832 6e08 MOVWF 0x8,0x0000834 6a09 CLRF 0x9,0x0000836 90d8 BCF 0xd8,0x0,0x0000838 3608 RLCF 0x8,0x1,0x000083a 3609 RLCF 0x9,0x1,0x000083c 5002 MOVF 0x2,0x0,0x000083e 2408 ADDWF 0x8,0x0,0x0000840 6e00 MOVWF 0x0,0x0000842 5003 MOVF 0x3,0x0,0x0000844 2009 ADDWFC 0x9,0x0,0x0000846 6e01 MOVWF 0x1,0x0000848 0e80 MOVLW 0x8000084a 1463 ANDWF 0x63,0x0,0x000084c 6e0a MOVWF 0xa,0x000084e 6a0b CLRF 0xb,0x0000850 0e07 MOVLW 0x7000852 90d8 BCF 0xd8,0x0,0x0000854 320b RRCF 0xb,0x1,0x0000856 320a RRCF 0xa,0x1,0x0000858 04e8 DECF 0xe8,0x0,0x000085a e1fb BNZ 0x85200085c 5000 MOVF 0x0,0x0,0x000085e 240a ADDWF 0xa,0x0,0x0000860 0100 MOVLB 0x0000862 6f61 MOVWF 0x61,0x1000864 5001 MOVF 0x1,0x0,0x0000866 200b ADDWFC 0xb,0x0,0x0000868 6f62 MOVWF 0x62,0x100086a 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c00086c 1463 ANDWF 0x63,0x0,0x000086e 40e8 RRNCF 0xe8,0x0,0x0000870 0b7f ANDLW 0x7f000872 6f63 MOVWF 0x63,0x1000874 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c000876 1463 ANDWF 0x63,0x0,0x0000878 6e00 MOVWF 0x0,0x000087a c000 MOVFF 0x0,0x100087c f00100087e 6a00 CLRF 0x0,0x0000880 5064 MOVF 0x64,0x0,0x0000882 2400 ADDWF 0x0,0x0,0x0000884 6f64 MOVWF 0x64,0x1000886 0e00 MOVLW 0x0000888 2001 ADDWFC 0x1,0x0,0x000088a 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.c00088c 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.c00088e 0b01 ANDLW 0x1000890 6e02 MOVWF 0x2,0x0000892 5065 MOVF 0x65,0x0,0x0000894 0b02 ANDLW 0x2000896 e001 BZ 0x89a000898 0e01 MOVLW 0x100089a 24e8 ADDWF 0xe8,0x0,0x000089c 6e01 MOVWF 0x1,0x000089e 5065 MOVF 0x65,0x0,0x00008a0 0b04 ANDLW 0x40008a2 e001 BZ 0x8a60008a4 0e01 MOVLW 0x10008a6 0d04 MULLW 0x40008a8 cff3 MOVFF 0xff3,0x00008aa f0000008ac 5065 MOVF 0x65,0x0,0x00008ae 0b08 ANDLW 0x80008b0 e001 BZ 0x8b40008b2 0e01 MOVLW 0x10008b4 0d08 MULLW 0x80008b6 50f3 MOVF 0xf3,0x0,0x00008b8 2400 ADDWF 0x0,0x0,0x00008ba 2401 ADDWF 0x1,0x0,0x00008bc 2402 ADDWF 0x2,0x0,0x00008be 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c0008c0 cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c2 f0670008c4 cf67 MOVFF 0xf67,0x680008c6 f0680008c8 cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c0008ca f0690008cc cf69 MOVFF 0xf69,0x6a0008ce f06a0008d0 cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d2 f06b0008d4 cf6b MOVFF 0xf6b,0x6c0008d6 f06c0008d8 cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c0008da f06d0008dc cf6d MOVFF 0xf6d,0x6e0008de f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c0008e0 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008e2 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c0008e4 d000 BRA 0x8e60008e6 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.c0008e8 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c0008ea ffe60008ec cfe1 MOVFF 0xfe1,0xfd90008ee ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0008f0 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c0008f2 b740 BTFSC 0x40,0x3,0x10008f4 d004 BRA 0x8fe0008f6 0e00 MOVLW 0x00008f8 1477 ANDWF 0x77,0x0,0x00008fa 0903 IORLW 0x30008fc 6e77 MOVWF 0x77,0x00008fe 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000900 b730 BTFSC 0x30,0x3,0x1000902 d004 BRA 0x90c000904 0e00 MOVLW 0x0000906 1477 ANDWF 0x77,0x0,0x0000908 0904 IORLW 0x400090a 6e77 MOVWF 0x77,0x000090c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00090e b720 BTFSC 0x20,0x3,0x1000910 d005 BRA 0x91c000912 0e00 MOVLW 0x0000914 1477 ANDWF 0x77,0x0,0x0000916 0905 IORLW 0x5000918 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c00091a d002 BRA 0x920 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c00091c 0e00 MOVLW 0x000091e d0b0 BRA 0xa80F:\MCP\projects\CAN\canBoot\Source\Main.c000920 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000922 cfdb MOVFF 0xfdb,0x0000924 f000000926 3400 RLCF 0x0,0x0,0x0000928 e20e BC 0x94600092a 0eef MOVLW 0xef00092c cfdb MOVFF 0xfdb,0x100092e f001000930 0e03 MOVLW 0x3000932 6ee7 MOVWF 0xe7,0x0000934 1801 XORWF 0x1,0x0,0x0000936 aee8 BTFSS 0xe8,0x7,0x0000938 d002 BRA 0x93e00093a 3401 RLCF 0x1,0x0,0x000093c d003 BRA 0x94400093e 50e7 MOVF 0xe7,0x0,0x0000940 80d8 BSF 0xd8,0x0,0x0000942 5401 SUBFWB 0x1,0x0,0x0000944 e202 BC 0x94a000946 0eef MOVLW 0xef000948 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.c00094a 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c00094c cfdb MOVFF 0xfdb,0x000094e f000000950 0ef2 MOVLW 0xf2000952 cfdb MOVFF 0xfdb,0x1000954 f001000956 0ec0 MOVLW 0xc0000958 1600 ANDWF 0x0,0x1,0x000095a 0e03 MOVLW 0x300095c 1601 ANDWF 0x1,0x1,0x000095e 0e06 MOVLW 0x6000960 90d8 BCF 0xd8,0x0,0x0000962 3201 RRCF 0x1,0x1,0x0000964 3200 RRCF 0x0,0x1,0x0000966 04e8 DECF 0xe8,0x0,0x0000968 e1fb BNZ 0x96000096a 0ef0 MOVLW 0xf000096c 50db MOVF 0xdb,0x0,0x000096e 0b0f ANDLW 0xf000970 0d10 MULLW 0x10000972 50f3 MOVF 0xf3,0x0,0x0000974 2400 ADDWF 0x0,0x0,0x0000976 6e61 MOVWF 0x61,0x0000978 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c00097a 6ee7 MOVWF 0xe7,0x000097c 0ef1 MOVLW 0xf100097e cfdb MOVFF 0xfdb,0x2000980 f002000982 0ef2 MOVLW 0xf2000984 cfdb MOVFF 0xfdb,0x3000986 f003000988 50e7 MOVF 0xe7,0x0,0x000098a 1602 ANDWF 0x2,0x1,0x000098c 6a03 CLRF 0x3,0x000098e 90d8 BCF 0xd8,0x0,0x0000990 3203 RRCF 0x3,0x1,0x0000992 3202 RRCF 0x2,0x1,0x0000994 0e3f MOVLW 0x3f000996 6ee7 MOVWF 0xe7,0x0000998 0ef1 MOVLW 0xf100099a cfdb MOVFF 0xfdb,0x000099c f00000099e 0ef2 MOVLW 0xf20009a0 cfdb MOVFF 0xfdb,0x10009a2 f0010009a4 50e7 MOVF 0xe7,0x0,0x00009a6 1600 ANDWF 0x0,0x1,0x00009a8 6a01 CLRF 0x1,0x00009aa 90d8 BCF 0xd8,0x0,0x00009ac 3600 RLCF 0x0,0x1,0x00009ae 3601 RLCF 0x1,0x1,0x00009b0 90d8 BCF 0xd8,0x0,0x00009b2 3600 RLCF 0x0,0x1,0x00009b4 3601 RLCF 0x1,0x1,0x00009b6 5000 MOVF 0x0,0x0,0x00009b8 2402 ADDWF 0x2,0x0,0x00009ba 6e62 MOVWF 0x62,0x00009bc 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0009be cfdb MOVFF 0xfdb,0x20009c0 f0020009c2 0ef5 MOVLW 0xf50009c4 cfdb MOVFF 0xfdb,0x30009c6 f0030009c8 0e00 MOVLW 0x00009ca 1602 ANDWF 0x2,0x1,0x00009cc 0e01 MOVLW 0x10009ce 1603 ANDWF 0x3,0x1,0x00009d0 c003 MOVFF 0x3,0x20009d2 f0020009d4 6a03 CLRF 0x3,0x00009d6 0e01 MOVLW 0x10009d8 6ee7 MOVWF 0xe7,0x00009da 0ef1 MOVLW 0xf10009dc cfdb MOVFF 0xfdb,0x00009de f0000009e0 0ef2 MOVLW 0xf20009e2 cfdb MOVFF 0xfdb,0x10009e4 f0010009e6 50e7 MOVF 0xe7,0x0,0x00009e8 1600 ANDWF 0x0,0x1,0x00009ea 6a01 CLRF 0x1,0x00009ec 0e07 MOVLW 0x70009ee 90d8 BCF 0xd8,0x0,0x00009f0 3600 RLCF 0x0,0x1,0x00009f2 3601 RLCF 0x1,0x1,0x00009f4 04e8 DECF 0xe8,0x0,0x00009f6 e1fb BNZ 0x9ee0009f8 0ef3 MOVLW 0xf30009fa 50db MOVF 0xdb,0x0,0x00009fc 0b3f ANDLW 0x3f0009fe 24e8 ADDWF 0xe8,0x0,0x0000a00 2400 ADDWF 0x0,0x0,0x0000a02 2402 ADDWF 0x2,0x0,0x0000a04 6e63 MOVWF 0x63,0x0000a06 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a08 6ee7 MOVWF 0xe7,0x0000a0a 0ef4 MOVLW 0xf4000a0c cfdb MOVFF 0xfdb,0x0000a0e f000000a10 0ef5 MOVLW 0xf5000a12 cfdb MOVFF 0xfdb,0x1000a14 f001000a16 50e7 MOVF 0xe7,0x0,0x0000a18 1600 ANDWF 0x0,0x1,0x0000a1a 6a01 CLRF 0x1,0x0000a1c 5000 MOVF 0x0,0x0,0x0000a1e 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000a20 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a22 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000a24 50db MOVF 0xdb,0x0,0x0000a26 0808 SUBLW 0x8000a28 e203 BC 0xa30000a2a 0e08 MOVLW 0x8000a2c 6e65 MOVWF 0x65,0x0000a2e d003 BRA 0xa36000a30 0ef6 MOVLW 0xf6000a32 50db MOVF 0xdb,0x0,0x0000a34 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// NOT Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000a36 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000a38 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a3a 50db MOVF 0xdb,0x0,0x0000a3c 6e66 MOVWF 0x66,0x0000a3e 0ef8 MOVLW 0xf8000a40 50db MOVF 0xdb,0x0,0x0000a42 6e67 MOVWF 0x67,0x0000a44 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a46 50db MOVF 0xdb,0x0,0x0000a48 6e68 MOVWF 0x68,0x0000a4a 0efa MOVLW 0xfa000a4c 50db MOVF 0xdb,0x0,0x0000a4e 6e69 MOVWF 0x69,0x0000a50 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a52 50db MOVF 0xdb,0x0,0x0000a54 6e6a MOVWF 0x6a,0x0000a56 0efc MOVLW 0xfc000a58 50db MOVF 0xdb,0x0,0x0000a5a 6e6b MOVWF 0x6b,0x0000a5c 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a5e 50db MOVF 0xdb,0x0,0x0000a60 6e6c MOVWF 0x6c,0x0000a62 0efe MOVLW 0xfe000a64 50db MOVF 0xdb,0x0,0x0000a66 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000a68 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.c000a6a 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000a6c cfdb MOVFF 0xfdb,0xfe6000a6e ffe6000a70 0efc MOVLW 0xfc000a72 1460 ANDWF 0x60,0x0,0x0000a74 52e5 MOVF 0xe5,0x1,0x0000a76 10e7 IORWF 0xe7,0x0,0x0000a78 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.c000a7a 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.c000a7c 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000a7e d000 BRA 0xa80F:\MCP\projects\CAN\canBoot\Source\Main.c000a80 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000a82 cfe7 MOVFF 0xfe7,0xfd9000a84 ffd9000a86 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.c000a88 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000a8a 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.c000a8c 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000a8e 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.c000a90 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000a92 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.c000a94 c0b5 MOVFF 0xb5,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000a96 f010000a98 c0b6 MOVFF 0xb6,0x11000a9a f011000a9c c0b7 MOVFF 0xb7,0x12000a9e f012000aa0 c0b8 MOVFF 0xb8,0x13000aa2 f013000aa4 d000 BRA 0xaa6000aa6 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