Rev 67 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Oct 31 13:43:43 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Main application F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canBoot\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBoot\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CANdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c//#include <Tick.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <boot.h> F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/** V E C T O R R E M A P P I N G *******************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x000008 F:\MCP\projects\CAN\canBoot\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000008 ef04 GOTO 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 db8e RCALL 0x762 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 db93 RCALL 0x76e 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 ec7b CALL 0xaf6,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.c00074c d489 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 dbaf RCALL 0x7c0 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 d34a BRA 0x7400000ac 0a01 XORLW 0x10000ae e101 BNZ 0xb20000b0 d299 BRA 0x5e40000b2 0a07 XORLW 0x70000b4 e101 BNZ 0xb80000b6 d1ad BRA 0x4120000b8 0a01 XORLW 0x10000ba e101 BNZ 0xbe0000bc d102 BRA 0x2c20000be 0a03 XORLW 0x30000c0 e101 BNZ 0xc40000c2 d0a7 BRA 0x2120000c4 0a01 XORLW 0x10000c6 e001 BZ 0xca0000c8 d33e BRA 0x746{ F:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWATING_START: F:\MCP\projects\CAN\canBoot\Source\Main.c// Check if there is bootloader start packet F:\MCP\projects\CAN\canBoot\Source\Main.c0000ca 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_INIT && cm.data[RID_INDEX]==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c0000cc 04db DECF 0xdb,0x0,0x00000ce e161 BNZ 0x1920000d0 0100 MOVLB 0x00000d2 5160 MOVF 0x60,0x0,0x10000d4 e15e BNZ 0x1920000d6 0100 MOVLB 0x00000d8 0e01 MOVLW 0x10000da 1961 XORWF 0x61,0x0,0x10000dc e101 BNZ 0xe00000de 5162 MOVF 0x62,0x0,0x10000e0 e158 BNZ 0x1920000e2 0e78 MOVLW 0x780000e4 0100 MOVLB 0x00000e6 5d6c SUBWF 0x6c,0x0,0x10000e8 e154 BNZ 0x1920000ea 0100 MOVLB 0x00000ec 5163 MOVF 0x63,0x0,0x10000ee e151 BNZ 0x192{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c0000f0 c06a MOVFF 0x6a,0x0 pgmAddress = (((DWORD)cm.data[ADDRU_INDEX])<<16)+(((DWORD)cm.data[ADDRH_INDEX])<<8)+((DWORD)cm.data[ADDRL_INDEX]); F:\MCP\projects\CAN\canBoot\Source\Main.c0000f2 f0000000f4 6a01 CLRF 0x1,0x00000f6 6a02 CLRF 0x2,0x00000f8 6a03 CLRF 0x3,0x00000fa 0e10 MOVLW 0x100000fc 0b1f ANDLW 0x1f0000fe e007 BZ 0x10e000100 90d8 BCF 0xd8,0x0,0x0000102 3600 RLCF 0x0,0x1,0x0000104 3601 RLCF 0x1,0x1,0x0000106 3602 RLCF 0x2,0x1,0x0000108 3603 RLCF 0x3,0x1,0x000010a 06e8 DECF 0xe8,0x1,0x000010c e1f9 BNZ 0x10000010e c069 MOVFF 0x69,0x4000110 f004000112 6a05 CLRF 0x5,0x0000114 6a06 CLRF 0x6,0x0000116 6a07 CLRF 0x7,0x0000118 0e08 MOVLW 0x800011a 0b1f ANDLW 0x1f00011c e007 BZ 0x12c00011e 90d8 BCF 0xd8,0x0,0x0000120 3604 RLCF 0x4,0x1,0x0000122 3605 RLCF 0x5,0x1,0x0000124 3606 RLCF 0x6,0x1,0x0000126 3607 RLCF 0x7,0x1,0x0000128 06e8 DECF 0xe8,0x1,0x000012a e1f9 BNZ 0x11e00012c 5004 MOVF 0x4,0x0,0x000012e 2600 ADDWF 0x0,0x1,0x0000130 5005 MOVF 0x5,0x0,0x0000132 2201 ADDWFC 0x1,0x1,0x0000134 5006 MOVF 0x6,0x0,0x0000136 2202 ADDWFC 0x2,0x1,0x0000138 5007 MOVF 0x7,0x0,0x000013a 2203 ADDWFC 0x3,0x1,0x000013c c068 MOVFF 0x68,0x800013e f008000140 6a09 CLRF 0x9,0x0000142 6a0a CLRF 0xa,0x0000144 6a0b CLRF 0xb,0x0000146 5000 MOVF 0x0,0x0,0x0000148 2408 ADDWF 0x8,0x0,0x000014a 0100 MOVLB 0x000014c 6fc7 MOVWF 0xc7,0x100014e 5001 MOVF 0x1,0x0,0x0000150 2009 ADDWFC 0x9,0x0,0x0000152 0100 MOVLB 0x0000154 6fc8 MOVWF 0xc8,0x1000156 5002 MOVF 0x2,0x0,0x0000158 200a ADDWFC 0xa,0x0,0x000015a 0100 MOVLB 0x000015c 6fc9 MOVWF 0xc9,0x100015e 5003 MOVF 0x3,0x0,0x0000160 200b ADDWFC 0xb,0x0,0x0000162 0100 MOVLB 0x0000164 6fca MOVWF 0xca,0x1000166 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000168 f0c300016a c065 MOVFF 0x65,0xc400016c f0c400016e ec7b CALL 0xaf6,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000170 f005000172 c010 MOVFF 0x10,0xbf000174 f0bf000176 c011 MOVFF 0x11,0xc0000178 f0c000017a c012 MOVFF 0x12,0xc100017c f0c100017e c013 MOVFF 0x13,0xc2000180 f0c2000182 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000184 6bc5 CLRF 0xc5,0x1000186 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000188 0e02 MOVLW 0x200018a 6fc6 MOVWF 0xc6,0x100018c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00018e 0e01 MOVLW 0x1000190 6fbe MOVWF 0xbe,0x1// save pgm adress. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Bootloader timeout F:\MCP\projects\CAN\canBoot\Source\Main.c000192 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c000194 ffe9000196 cfda MOVFF 0xfda,0xfea000198 ffea00019a cfee MOVFF 0xfee,0x400019c f00400019e cfee MOVFF 0xfee,0x50001a0 f0050001a2 cfee MOVFF 0xfee,0x60001a4 f0060001a6 cfef MOVFF 0xfef,0x70001a8 f0070001aa c004 MOVFF 0x4,0xfe60001ac ffe60001ae c005 MOVFF 0x5,0xfe60001b0 ffe60001b2 c006 MOVFF 0x6,0xfe60001b4 ffe60001b6 c007 MOVFF 0x7,0xfe60001b8 ffe60001ba ec7b CALL 0xaf6,0x00001bc f0050001be 52e5 MOVF 0xe5,0x1,0x00001c0 cfe7 MOVFF 0xfe7,0x70001c2 f0070001c4 52e5 MOVF 0xe5,0x1,0x00001c6 cfe7 MOVFF 0xfe7,0x60001c8 f0060001ca 52e5 MOVF 0xe5,0x1,0x00001cc cfe7 MOVFF 0xfe7,0x50001ce f0050001d0 52e5 MOVF 0xe5,0x1,0x00001d2 cfe7 MOVFF 0xfe7,0x40001d4 f0040001d6 0100 MOVLB 0x00001d8 5004 MOVF 0x4,0x0,0x00001da 5c10 SUBWF 0x10,0x0,0x00001dc 6e00 MOVWF 0x0,0x00001de 0100 MOVLB 0x00001e0 5005 MOVF 0x5,0x0,0x00001e2 5811 SUBWFB 0x11,0x0,0x00001e4 6e01 MOVWF 0x1,0x00001e6 0100 MOVLB 0x00001e8 5006 MOVF 0x6,0x0,0x00001ea 5812 SUBWFB 0x12,0x0,0x00001ec 6e02 MOVWF 0x2,0x00001ee 0100 MOVLB 0x00001f0 5007 MOVF 0x7,0x0,0x00001f2 5813 SUBWFB 0x13,0x0,0x00001f4 6e03 MOVWF 0x3,0x00001f6 80d8 BSF 0xd8,0x0,0x00001f8 0ef4 MOVLW 0xf40001fa 5400 SUBFWB 0x0,0x0,0x00001fc 0e01 MOVLW 0x10001fe 5401 SUBFWB 0x1,0x0,0x0000200 0e00 MOVLW 0x0000202 5402 SUBFWB 0x2,0x0,0x0000204 0e00 MOVLW 0x0000206 5403 SUBFWB 0x3,0x0,0x0000208 e203 BC 0x210{ F:\MCP\projects\CAN\canBoot\Source\Main.c00020a 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00020c 0e05 MOVLW 0x500020e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000210 d29d BRA 0x74c break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsSEND_ACK: F:\MCP\projects\CAN\canBoot\Source\Main.c// send ack F:\MCP\projects\CAN\canBoot\Source\Main.c000212 0e05 MOVLW 0x5 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000214 6adb CLRF 0xdb,0x0000216 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000218 6ef3 MOVWF 0xf3,0x000021a 0e06 MOVLW 0x600021c cff3 MOVFF 0xff3,0xfdb00021e ffdb000220 0e07 MOVLW 0x7000222 6adb CLRF 0xdb,0x0000224 0e08 MOVLW 0x8 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000226 6adb CLRF 0xdb,0x0000228 0e78 MOVLW 0x78 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c00022a 6ef3 MOVWF 0xf3,0x000022c 0e09 MOVLW 0x900022e cff3 MOVFF 0xff3,0xfdb000230 ffdb000232 0e0a MOVLW 0xa000234 6adb CLRF 0xdb,0x0000236 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000238 6ef3 MOVWF 0xf3,0x000023a 0e0b MOVLW 0xb00023c cff3 MOVFF 0xff3,0xfdb00023e ffdb000240 0e0c MOVLW 0xc outCm.remote_request = FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000242 6adb CLRF 0xdb,0x0000244 0e11 MOVLW 0x11 outCm.data[ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000246 c0c5 MOVFF 0xc5,0xfdb000248 ffdb00024a ec7b CALL 0xaf6,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00024c f00500024e c010 MOVFF 0x10,0xbf000250 f0bf000252 c011 MOVFF 0x11,0xc0000254 f0c0000256 c012 MOVFF 0x12,0xc1000258 f0c100025a c013 MOVFF 0x13,0xc200025c f0c200025e c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c000260 f0beF:\MCP\projects\CAN\canBoot\Source\Main.c000262 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c000264 6ee6 MOVWF 0xe6,0x0000266 50d9 MOVF 0xd9,0x0,0x0000268 0f05 ADDLW 0x500026a 6ee9 MOVWF 0xe9,0x000026c cfda MOVFF 0xfda,0xfea00026e ffea000270 cfee MOVFF 0xfee,0xfe6000272 ffe6000274 cfee MOVFF 0xfee,0xfe6000276 ffe6000278 cfee MOVFF 0xfee,0xfe600027a ffe600027c cfee MOVFF 0xfee,0xfe600027e ffe6000280 cfee MOVFF 0xfee,0xfe6000282 ffe6000284 cfee MOVFF 0xfee,0xfe6000286 ffe6000288 cfee MOVFF 0xfee,0xfe600028a ffe600028c cfee MOVFF 0xfee,0xfe600028e ffe6000290 cfee MOVFF 0xfee,0xfe6000292 ffe6000294 cfee MOVFF 0xfee,0xfe6000296 ffe6000298 cfee MOVFF 0xfee,0xfe600029a ffe600029c cfee MOVFF 0xfee,0xfe600029e ffe60002a0 cfee MOVFF 0xfee,0xfe60002a2 ffe60002a4 cfee MOVFF 0xfee,0xfe60002a6 ffe60002a8 cfee MOVFF 0xfee,0xfe60002aa ffe60002ac cfee MOVFF 0xfee,0xfe60002ae ffe60002b0 db47 RCALL 0x9400002b2 6e00 MOVWF 0x0,0x00002b4 0e11 MOVLW 0x110002b6 5ee1 SUBWF 0xe1,0x1,0x00002b8 5000 MOVF 0x0,0x0,0x00002ba 0900 IORLW 0x00002bc e101 BNZ 0x2c00002be d7d1 BRA 0x2620002c0 d245 BRA 0x74c break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWAIT_FIRST_PGM_PACKET: F:\MCP\projects\CAN\canBoot\Source\Main.c// wait for first pgm packet. F:\MCP\projects\CAN\canBoot\Source\Main.c0002c2 ec7b CALL 0xaf6,0x0 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002c4 f0050002c6 0100 MOVLB 0x00002c8 51bf MOVF 0xbf,0x0,0x10002ca 5c10 SUBWF 0x10,0x0,0x00002cc 6e00 MOVWF 0x0,0x00002ce 0100 MOVLB 0x00002d0 51c0 MOVF 0xc0,0x0,0x10002d2 5811 SUBWFB 0x11,0x0,0x00002d4 6e01 MOVWF 0x1,0x00002d6 0100 MOVLB 0x00002d8 51c1 MOVF 0xc1,0x0,0x10002da 5812 SUBWFB 0x12,0x0,0x00002dc 6e02 MOVWF 0x2,0x00002de 0100 MOVLB 0x00002e0 51c2 MOVF 0xc2,0x0,0x10002e2 5813 SUBWFB 0x13,0x0,0x00002e4 6e03 MOVWF 0x3,0x00002e6 80d8 BSF 0xd8,0x0,0x00002e8 0e0e MOVLW 0xe0002ea 5400 SUBFWB 0x0,0x0,0x00002ec 0e00 MOVLW 0x00002ee 5401 SUBFWB 0x1,0x0,0x00002f0 0e00 MOVLW 0x00002f2 5402 SUBFWB 0x2,0x0,0x00002f4 0e00 MOVLW 0x00002f6 5403 SUBFWB 0x3,0x0,0x00002f8 e208 BC 0x30a{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c0002fa 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0002fc 6bc5 CLRF 0xc5,0x10002fe 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000300 0e02 MOVLW 0x2000302 6fc6 MOVWF 0xc6,0x1000304 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000306 0e01 MOVLW 0x1000308 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If programming packet... F:\MCP\projects\CAN\canBoot\Source\Main.c00030a 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c00030c 04db DECF 0xdb,0x0,0x000030e e001 BZ 0x312000310 d07f BRA 0x410000312 0100 MOVLB 0x0000314 5160 MOVF 0x60,0x0,0x1000316 e001 BZ 0x31a000318 d07b BRA 0x41000031a 0e03 MOVLW 0x300031c 0100 MOVLB 0x000031e 1561 ANDWF 0x61,0x0,0x1000320 6e00 MOVWF 0x0,0x0000322 6a01 CLRF 0x1,0x0000324 0e03 MOVLW 0x3000326 1800 XORWF 0x0,0x0,0x0000328 e101 BNZ 0x32c00032a 5001 MOVF 0x1,0x0,0x000032c e171 BNZ 0x41000032e 0100 MOVLB 0x0000330 5163 MOVF 0x63,0x0,0x1000332 e16e BNZ 0x410000334 0100 MOVLB 0x0000336 51c3 MOVF 0xc3,0x0,0x1000338 0100 MOVLB 0x000033a 1964 XORWF 0x64,0x0,0x100033c e104 BNZ 0x34600033e 0100 MOVLB 0x0000340 51c4 MOVF 0xc4,0x0,0x1000342 0100 MOVLB 0x0000344 1965 XORWF 0x65,0x0,0x1000346 e164 BNZ 0x410{ F:\MCP\projects\CAN\canBoot\Source\Main.c000348 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c00034a 0100 MOVLB 0x000034c 1561 ANDWF 0x61,0x0,0x100034e 6e00 MOVWF 0x0,0x0000350 6a01 CLRF 0x1,0x0000352 90d8 BCF 0xd8,0x0,0x0000354 3201 RRCF 0x1,0x1,0x0000356 3200 RRCF 0x0,0x1,0x0000358 90d8 BCF 0xd8,0x0,0x000035a 3201 RRCF 0x1,0x1,0x000035c 3200 RRCF 0x0,0x1,0x000035e 0e08 MOVLW 0x8000360 0200 MULWF 0x0,0x0000362 0e16 MOVLW 0x16000364 cff3 MOVFF 0xff3,0xfdb000366 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c000368 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00036a 0e08 MOVLW 0x800036c 6fcb MOVWF 0xcb,0x100036e 0e16 MOVLW 0x16 pgmData[localIndex+0]=cm.data[0]; pgmData[localIndex+1]=cm.data[1]; pgmData[localIndex+2]=cm.data[2]; pgmData[localIndex+3]=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000370 50db MOVF 0xdb,0x0,0x0000372 6aea CLRF 0xea,0x0000374 0f70 ADDLW 0x70000376 6ee9 MOVWF 0xe9,0x0000378 0e00 MOVLW 0x000037a 22ea ADDWFC 0xea,0x1,0x000037c c068 MOVFF 0x68,0xfef00037e ffef000380 0e16 MOVLW 0x16000382 28db INCF 0xdb,0x0,0x0000384 6aea CLRF 0xea,0x0000386 0f70 ADDLW 0x70000388 6ee9 MOVWF 0xe9,0x000038a 0e00 MOVLW 0x000038c 22ea ADDWFC 0xea,0x1,0x000038e c069 MOVFF 0x69,0xfef000390 ffef000392 0e16 MOVLW 0x16000394 50db MOVF 0xdb,0x0,0x0000396 0f02 ADDLW 0x2000398 6aea CLRF 0xea,0x000039a 0f70 ADDLW 0x7000039c 6ee9 MOVWF 0xe9,0x000039e 0e00 MOVLW 0x00003a0 22ea ADDWFC 0xea,0x1,0x00003a2 c06a MOVFF 0x6a,0xfef0003a4 ffef0003a6 0e16 MOVLW 0x160003a8 50db MOVF 0xdb,0x0,0x00003aa 0f03 ADDLW 0x30003ac 6aea CLRF 0xea,0x00003ae 0f70 ADDLW 0x700003b0 6ee9 MOVWF 0xe9,0x00003b2 0e00 MOVLW 0x00003b4 22ea ADDWFC 0xea,0x1,0x00003b6 c06b MOVFF 0x6b,0xfef0003b8 ffef0003ba 0e16 MOVLW 0x16 pgmData[localIndex+4]=cm.data[4]; pgmData[localIndex+5]=cm.data[5]; pgmData[localIndex+6]=cm.data[6]; pgmData[localIndex+7]=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c0003bc 50db MOVF 0xdb,0x0,0x00003be 0f04 ADDLW 0x40003c0 6aea CLRF 0xea,0x00003c2 0f70 ADDLW 0x700003c4 6ee9 MOVWF 0xe9,0x00003c6 0e00 MOVLW 0x00003c8 22ea ADDWFC 0xea,0x1,0x00003ca c06c MOVFF 0x6c,0xfef0003cc ffef0003ce 0e16 MOVLW 0x160003d0 50db MOVF 0xdb,0x0,0x00003d2 0f05 ADDLW 0x50003d4 6aea CLRF 0xea,0x00003d6 0f70 ADDLW 0x700003d8 6ee9 MOVWF 0xe9,0x00003da 0e00 MOVLW 0x00003dc 22ea ADDWFC 0xea,0x1,0x00003de c06d MOVFF 0x6d,0xfef0003e0 ffef0003e2 0e16 MOVLW 0x160003e4 50db MOVF 0xdb,0x0,0x00003e6 0f06 ADDLW 0x60003e8 6aea CLRF 0xea,0x00003ea 0f70 ADDLW 0x700003ec 6ee9 MOVWF 0xe9,0x00003ee 0e00 MOVLW 0x00003f0 22ea ADDWFC 0xea,0x1,0x00003f2 c06e MOVFF 0x6e,0xfef0003f4 ffef0003f6 0e16 MOVLW 0x160003f8 50db MOVF 0xdb,0x0,0x00003fa 0f07 ADDLW 0x70003fc 6aea CLRF 0xea,0x00003fe 0f70 ADDLW 0x70000400 6ee9 MOVWF 0xe9,0x0000402 0e00 MOVLW 0x0000404 22ea ADDWFC 0xea,0x1,0x0000406 c06f MOVFF 0x6f,0xfef000408 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00040a 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00040c 0e03 MOVLW 0x300040e 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000410 d19d BRA 0x74c break; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.ccase pgsWAIT_PGM_PACKET: F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If programming packet... F:\MCP\projects\CAN\canBoot\Source\Main.c000412 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000414 04db DECF 0xdb,0x0,0x0000416 e001 BZ 0x41a000418 d07f BRA 0x51800041a 0100 MOVLB 0x000041c 5160 MOVF 0x60,0x0,0x100041e e001 BZ 0x422000420 d07b BRA 0x518000422 0e03 MOVLW 0x3000424 0100 MOVLB 0x0000426 1561 ANDWF 0x61,0x0,0x1000428 6e00 MOVWF 0x0,0x000042a 6a01 CLRF 0x1,0x000042c 0e03 MOVLW 0x300042e 1800 XORWF 0x0,0x0,0x0000430 e101 BNZ 0x434000432 5001 MOVF 0x1,0x0,0x0000434 e171 BNZ 0x518000436 0100 MOVLB 0x0000438 5163 MOVF 0x63,0x0,0x100043a e16e BNZ 0x51800043c 0100 MOVLB 0x000043e 51c3 MOVF 0xc3,0x0,0x1000440 0100 MOVLB 0x0000442 1964 XORWF 0x64,0x0,0x1000444 e104 BNZ 0x44e000446 0100 MOVLB 0x0000448 51c4 MOVF 0xc4,0x0,0x100044a 0100 MOVLB 0x000044c 1965 XORWF 0x65,0x0,0x100044e e164 BNZ 0x518{ F:\MCP\projects\CAN\canBoot\Source\Main.c000450 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000452 0100 MOVLB 0x0000454 1561 ANDWF 0x61,0x0,0x1000456 6e00 MOVWF 0x0,0x0000458 6a01 CLRF 0x1,0x000045a 90d8 BCF 0xd8,0x0,0x000045c 3201 RRCF 0x1,0x1,0x000045e 3200 RRCF 0x0,0x1,0x0000460 90d8 BCF 0xd8,0x0,0x0000462 3201 RRCF 0x1,0x1,0x0000464 3200 RRCF 0x0,0x1,0x0000466 0e08 MOVLW 0x8000468 0200 MULWF 0x0,0x000046a 0e17 MOVLW 0x1700046c cff3 MOVFF 0xff3,0xfdb00046e ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c000470 0e17 MOVLW 0x17 pgmData[localIndex+0]=cm.data[0]; pgmData[localIndex+1]=cm.data[1]; pgmData[localIndex+2]=cm.data[2]; pgmData[localIndex+3]=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000472 50db MOVF 0xdb,0x0,0x0000474 6aea CLRF 0xea,0x0000476 0f70 ADDLW 0x70000478 6ee9 MOVWF 0xe9,0x000047a 0e00 MOVLW 0x000047c 22ea ADDWFC 0xea,0x1,0x000047e c068 MOVFF 0x68,0xfef000480 ffef000482 0e17 MOVLW 0x17000484 28db INCF 0xdb,0x0,0x0000486 6aea CLRF 0xea,0x0000488 0f70 ADDLW 0x7000048a 6ee9 MOVWF 0xe9,0x000048c 0e00 MOVLW 0x000048e 22ea ADDWFC 0xea,0x1,0x0000490 c069 MOVFF 0x69,0xfef000492 ffef000494 0e17 MOVLW 0x17000496 50db MOVF 0xdb,0x0,0x0000498 0f02 ADDLW 0x200049a 6aea CLRF 0xea,0x000049c 0f70 ADDLW 0x7000049e 6ee9 MOVWF 0xe9,0x00004a0 0e00 MOVLW 0x00004a2 22ea ADDWFC 0xea,0x1,0x00004a4 c06a MOVFF 0x6a,0xfef0004a6 ffef0004a8 0e17 MOVLW 0x170004aa 50db MOVF 0xdb,0x0,0x00004ac 0f03 ADDLW 0x30004ae 6aea CLRF 0xea,0x00004b0 0f70 ADDLW 0x700004b2 6ee9 MOVWF 0xe9,0x00004b4 0e00 MOVLW 0x00004b6 22ea ADDWFC 0xea,0x1,0x00004b8 c06b MOVFF 0x6b,0xfef0004ba ffef0004bc 0e17 MOVLW 0x17 pgmData[localIndex+4]=cm.data[4]; pgmData[localIndex+5]=cm.data[5]; pgmData[localIndex+6]=cm.data[6]; pgmData[localIndex+7]=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c0004be 50db MOVF 0xdb,0x0,0x00004c0 0f04 ADDLW 0x40004c2 6aea CLRF 0xea,0x00004c4 0f70 ADDLW 0x700004c6 6ee9 MOVWF 0xe9,0x00004c8 0e00 MOVLW 0x00004ca 22ea ADDWFC 0xea,0x1,0x00004cc c06c MOVFF 0x6c,0xfef0004ce ffef0004d0 0e17 MOVLW 0x170004d2 50db MOVF 0xdb,0x0,0x00004d4 0f05 ADDLW 0x50004d6 6aea CLRF 0xea,0x00004d8 0f70 ADDLW 0x700004da 6ee9 MOVWF 0xe9,0x00004dc 0e00 MOVLW 0x00004de 22ea ADDWFC 0xea,0x1,0x00004e0 c06d MOVFF 0x6d,0xfef0004e2 ffef0004e4 0e17 MOVLW 0x170004e6 50db MOVF 0xdb,0x0,0x00004e8 0f06 ADDLW 0x60004ea 6aea CLRF 0xea,0x00004ec 0f70 ADDLW 0x700004ee 6ee9 MOVWF 0xe9,0x00004f0 0e00 MOVLW 0x00004f2 22ea ADDWFC 0xea,0x1,0x00004f4 c06e MOVFF 0x6e,0xfef0004f6 ffef0004f8 0e17 MOVLW 0x170004fa 50db MOVF 0xdb,0x0,0x00004fc 0f07 ADDLW 0x70004fe 6aea CLRF 0xea,0x0000500 0f70 ADDLW 0x70000502 6ee9 MOVWF 0xe9,0x0000504 0e00 MOVLW 0x0000506 22ea ADDWFC 0xea,0x1,0x0000508 c06f MOVFF 0x6f,0xfef00050a ffefF:\MCP\projects\CAN\canBoot\Source\Main.c00050c 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00050e 0100 MOVLB 0x0000510 27cb ADDWF 0xcb,0x1,0x1000512 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000514 0e03 MOVLW 0x3000516 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If adress packet (control packet).. F:\MCP\projects\CAN\canBoot\Source\Main.c000518 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_ADDR && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c00051a 04db DECF 0xdb,0x0,0x000051c e11e BNZ 0x55a00051e 0100 MOVLB 0x0000520 5160 MOVF 0x60,0x0,0x1000522 e11b BNZ 0x55a000524 0100 MOVLB 0x0000526 0e02 MOVLW 0x2000528 1961 XORWF 0x61,0x0,0x100052a e101 BNZ 0x52e00052c 5162 MOVF 0x62,0x0,0x100052e e115 BNZ 0x55a000530 0100 MOVLB 0x0000532 5163 MOVF 0x63,0x0,0x1000534 e112 BNZ 0x55a000536 0100 MOVLB 0x0000538 51c3 MOVF 0xc3,0x0,0x100053a 0100 MOVLB 0x000053c 1964 XORWF 0x64,0x0,0x100053e e104 BNZ 0x548000540 0100 MOVLB 0x0000542 51c4 MOVF 0xc4,0x0,0x1000544 0100 MOVLB 0x0000546 1965 XORWF 0x65,0x0,0x1000548 e108 BNZ 0x55a{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Send ack and goto wait first packet. F:\MCP\projects\CAN\canBoot\Source\Main.c// save adress. F:\MCP\projects\CAN\canBoot\Source\Main.c00054a 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00054c 6bc5 CLRF 0xc5,0x100054e 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000550 0e02 MOVLW 0x2000552 6fc6 MOVWF 0xc6,0x1000554 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000556 0e01 MOVLW 0x1000558 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If end packet... F:\MCP\projects\CAN\canBoot\Source\Main.c00055a 0e15 MOVLW 0x15 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_DONE && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c00055c 04db DECF 0xdb,0x0,0x000055e e136 BNZ 0x5cc000560 0100 MOVLB 0x0000562 5160 MOVF 0x60,0x0,0x1000564 e133 BNZ 0x5cc000566 0100 MOVLB 0x0000568 0e05 MOVLW 0x500056a 1961 XORWF 0x61,0x0,0x100056c e101 BNZ 0x57000056e 5162 MOVF 0x62,0x0,0x1000570 e12d BNZ 0x5cc000572 0100 MOVLB 0x0000574 5163 MOVF 0x63,0x0,0x1000576 e12a BNZ 0x5cc000578 0100 MOVLB 0x000057a 51c3 MOVF 0xc3,0x0,0x100057c 0100 MOVLB 0x000057e 1964 XORWF 0x64,0x0,0x1000580 e104 BNZ 0x58a000582 0100 MOVLB 0x0000584 51c4 MOVF 0xc4,0x0,0x1000586 0100 MOVLB 0x0000588 1965 XORWF 0x65,0x0,0x100058a e120 BNZ 0x5cc{ F:\MCP\projects\CAN\canBoot\Source\Main.c// write program. F:\MCP\projects\CAN\canBoot\Source\Main.c// If no bytes received at all, assume end. F:\MCP\projects\CAN\canBoot\Source\Main.c// If not 64 bytes received, send error ack and wait for first packet. F:\MCP\projects\CAN\canBoot\Source\Main.c// If 64, write. F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00058c 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c00058e 51cb MOVF 0xcb,0x0,0x1000590 e109 BNZ 0x5a4{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c000592 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000594 6bc5 CLRF 0xc5,0x1000596 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000598 0e05 MOVLW 0x500059a 6fc6 MOVWF 0xc6,0x100059c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00059e 0e01 MOVLW 0x10005a0 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005a2 d014 BRA 0x5cc else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005a4 0e40 MOVLW 0x400005a6 0100 MOVLB 0x00005a8 5dcb SUBWF 0xcb,0x0,0x10005aa e00a BZ 0x5c0{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005ac 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ae 0e01 MOVLW 0x10005b0 6fc5 MOVWF 0xc5,0x10005b2 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b4 0e02 MOVLW 0x20005b6 6fc6 MOVWF 0xc6,0x10005b8 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ba 0e01 MOVLW 0x10005bc 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005be d006 BRA 0x5cc else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005c0 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c2 0e04 MOVLW 0x40005c4 6fbe MOVWF 0xbe,0x10005c6 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c8 0e05 MOVLW 0x50005ca 6fc6 MOVWF 0xc6,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// If bytes received 64, write.. F:\MCP\projects\CAN\canBoot\Source\Main.c0005cc 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005ce 0100 MOVLB 0x00005d0 5dcb SUBWF 0xcb,0x0,0x10005d2 e107 BNZ 0x5e2{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005d4 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d6 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d8 0e04 MOVLW 0x40005da 6fbe MOVWF 0xbe,0x10005dc 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005de 0e03 MOVLW 0x30005e0 6fc6 MOVWF 0xc6,0x1// TODO! Send ack more than once.. F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0005e2 d0b4 BRA 0x74c 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.c0005e4 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c0005e6 0100 MOVLB 0x00005e8 5dc7 SUBWF 0xc7,0x0,0x10005ea 0e10 MOVLW 0x100005ec 59c8 SUBWFB 0xc8,0x0,0x10005ee 0e00 MOVLW 0x00005f0 59c9 SUBWFB 0xc9,0x0,0x10005f2 0e00 MOVLW 0x00005f4 59ca SUBWFB 0xca,0x0,0x10005f6 e206 BC 0x604{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005f8 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005fa 0e01 MOVLW 0x10005fc 6fc5 MOVWF 0xc5,0x10005fe 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000600 0e01 MOVLW 0x1000602 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.c000604 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000606 f000000608 c0c8 MOVFF 0xc8,0x100060a f00100060c c0c9 MOVFF 0xc9,0x200060e f002000610 c0ca MOVFF 0xca,0x3000612 f003000614 6a00 CLRF 0x0,0x0000616 6a01 CLRF 0x1,0x0000618 6a03 CLRF 0x3,0x000061a 0e10 MOVLW 0x1000061c 90d8 BCF 0xd8,0x0,0x000061e 3203 RRCF 0x3,0x1,0x0000620 3202 RRCF 0x2,0x1,0x0000622 3201 RRCF 0x1,0x1,0x0000624 3200 RRCF 0x0,0x1,0x0000626 06e8 DECF 0xe8,0x1,0x0000628 e1f9 BNZ 0x61c00062a 5000 MOVF 0x0,0x0,0x000062c 6ef8 MOVWF 0xf8,0x000062e c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000630 f000000632 c0c8 MOVFF 0xc8,0x1000634 f001000636 c0c9 MOVFF 0xc9,0x2000638 f00200063a c0ca MOVFF 0xca,0x300063c f00300063e 6a00 CLRF 0x0,0x0000640 6a02 CLRF 0x2,0x0000642 6a03 CLRF 0x3,0x0000644 0e08 MOVLW 0x8000646 90d8 BCF 0xd8,0x0,0x0000648 3203 RRCF 0x3,0x1,0x000064a 3202 RRCF 0x2,0x1,0x000064c 3201 RRCF 0x1,0x1,0x000064e 3200 RRCF 0x0,0x1,0x0000650 06e8 DECF 0xe8,0x1,0x0000652 e1f9 BNZ 0x646000654 5000 MOVF 0x0,0x0,0x0000656 6ef7 MOVWF 0xf7,0x0000658 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c00065a 51c7 MOVF 0xc7,0x0,0x100065c 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c00065e 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.c000660 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.c000662 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.c000664 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.c000666 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.c000668 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c00066a 6ea7 MOVWF 0xa7,0x000066c 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c00066e 6ea7 MOVWF 0xa7,0x0000670 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.c000672 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.c000674 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000676 f000000678 c0c8 MOVFF 0xc8,0x100067a f00100067c c0c9 MOVFF 0xc9,0x200067e f002000680 c0ca MOVFF 0xca,0x3000682 f003000684 6a00 CLRF 0x0,0x0000686 6a01 CLRF 0x1,0x0000688 6a03 CLRF 0x3,0x000068a 0e10 MOVLW 0x1000068c 90d8 BCF 0xd8,0x0,0x000068e 3203 RRCF 0x3,0x1,0x0000690 3202 RRCF 0x2,0x1,0x0000692 3201 RRCF 0x1,0x1,0x0000694 3200 RRCF 0x0,0x1,0x0000696 06e8 DECF 0xe8,0x1,0x0000698 e1f9 BNZ 0x68c00069a 5000 MOVF 0x0,0x0,0x000069c 6ef8 MOVWF 0xf8,0x000069e c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006a0 f0000006a2 c0c8 MOVFF 0xc8,0x10006a4 f0010006a6 c0c9 MOVFF 0xc9,0x20006a8 f0020006aa c0ca MOVFF 0xca,0x30006ac f0030006ae 6a00 CLRF 0x0,0x00006b0 6a02 CLRF 0x2,0x00006b2 6a03 CLRF 0x3,0x00006b4 0e08 MOVLW 0x80006b6 90d8 BCF 0xd8,0x0,0x00006b8 3203 RRCF 0x3,0x1,0x00006ba 3202 RRCF 0x2,0x1,0x00006bc 3201 RRCF 0x1,0x1,0x00006be 3200 RRCF 0x0,0x1,0x00006c0 06e8 DECF 0xe8,0x1,0x00006c2 e1f9 BNZ 0x6b60006c4 5000 MOVF 0x0,0x0,0x00006c6 6ef7 MOVWF 0xf7,0x00006c8 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006ca 51c7 MOVF 0xc7,0x0,0x10006cc 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c0006ce 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c0006d0 6adb CLRF 0xdb,0x00006d2 0e3f MOVLW 0x3f0006d4 6ef3 MOVWF 0xf3,0x00006d6 0e04 MOVLW 0x40006d8 cfdb MOVFF 0xfdb,0xff40006da fff40006dc 50f3 MOVF 0xf3,0x0,0x00006de 5cf4 SUBWF 0xf4,0x0,0x00006e0 e20d BC 0x6fc0006f6 0e04 MOVLW 0x40006f8 2adb INCF 0xdb,0x1,0x00006fa d7eb BRA 0x6d2{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006e2 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006e4 50db MOVF 0xdb,0x0,0x00006e6 6aea CLRF 0xea,0x00006e8 0f70 ADDLW 0x700006ea 6ee9 MOVWF 0xe9,0x00006ec 0e00 MOVLW 0x00006ee 22ea ADDWFC 0xea,0x1,0x00006f0 50ef MOVF 0xef,0x0,0x00006f2 6ef5 MOVWF 0xf5,0x00006f4 d9fe RCALL 0xaf2 TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c0006fc c0af MOVFF 0xaf,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fe fff5000700 d9f6 RCALL 0xaee 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.c000702 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.c000704 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.c000706 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.c000708 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.c00070a 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c00070c 6ea7 MOVWF 0xa7,0x000070e 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000710 6ea7 MOVWF 0xa7,0x0000712 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.c000714 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.c000716 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000718 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c00071a 0100 MOVLB 0x000071c 27c7 ADDWF 0xc7,0x1,0x100071e 0e00 MOVLW 0x0000720 0100 MOVLB 0x0000722 23c8 ADDWFC 0xc8,0x1,0x1000724 0e00 MOVLW 0x0000726 0100 MOVLB 0x0000728 23c9 ADDWFC 0xc9,0x1,0x100072a 0e00 MOVLW 0x000072c 0100 MOVLB 0x000072e 23ca ADDWFC 0xca,0x1,0x1000730 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000732 6bcb CLRF 0xcb,0x1000734 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000736 6bc5 CLRF 0xc5,0x1000738 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00073a 0e01 MOVLW 0x100073c 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c00073e d006 BRA 0x74c 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.c000740 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000742 f008000744 d003 BRA 0x74c 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.c000746 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000748 6bbe CLRF 0xbe,0x100074a d000 BRA 0x74c 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.c00074e 0e18 MOVLW 0x18 } F:\MCP\projects\CAN\canBoot\Source\Main.c000750 5ce1 SUBWF 0xe1,0x0,0x0000752 e202 BC 0x758000754 6ae1 CLRF 0xe1,0x0000756 52e5 MOVF 0xe5,0x1,0x0000758 6ee1 MOVWF 0xe1,0x000075a 52e5 MOVF 0xe5,0x1,0x000075c cfe7 MOVFF 0xfe7,0xfd900075e ffd9000760 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.c000762 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.c000764 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.c000766 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c000768 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.c00076a 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.c00076c 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.c00076e 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000770 6e6f MOVWF 0x6f,0x0000772 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c000774 146e ANDWF 0x6e,0x0,0x0000776 0880 SUBLW 0x80000778 e001 BZ 0x77c00077a d7fb BRA 0x772F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00077c 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.c00077e 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000780 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.c000782 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c000784 1070 IORWF 0x70,0x0,0x0000786 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c000788 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.c00078a 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00078c 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00078e 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.c000790 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000792 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000794 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.c000796 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.c000798 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.c00079a 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00079c 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00079e 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007a0 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a4 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.c0007a6 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a8 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.c0007aa 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ac 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b0 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.c0007b2 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.c0007b4 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007b6 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007b8 146e ANDWF 0x6e,0x0,0x00007ba e001 BZ 0x7be0007bc d7fc BRA 0x7b6#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007be 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.c0007c0 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007c2 d005 BRA 0x7ce0007c4 0e00 MOVLW 0x00007c6 1477 ANDWF 0x77,0x0,0x00007c8 0910 IORLW 0x100007ca 6e77 MOVWF 0x77,0x00007cc d035 BRA 0x838 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ce 010f MOVLB 0xf0007d0 af50 BTFSS 0x50,0x7,0x10007d2 d005 BRA 0x7de0007d4 0e00 MOVLW 0x00007d6 1477 ANDWF 0x77,0x0,0x00007d8 0911 IORLW 0x110007da 6e77 MOVWF 0x77,0x00007dc d02d BRA 0x838 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007de 010e MOVLB 0xe0007e0 af20 BTFSS 0x20,0x7,0x10007e2 d005 BRA 0x7ee0007e4 0e00 MOVLW 0x00007e6 1477 ANDWF 0x77,0x0,0x00007e8 0912 IORLW 0x120007ea 6e77 MOVWF 0x77,0x00007ec d025 BRA 0x838 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007ee af30 BTFSS 0x30,0x7,0x10007f0 d005 BRA 0x7fc0007f2 0e00 MOVLW 0x00007f4 1477 ANDWF 0x77,0x0,0x00007f6 0913 IORLW 0x130007f8 6e77 MOVWF 0x77,0x00007fa d01e BRA 0x838 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007fc af40 BTFSS 0x40,0x7,0x10007fe d005 BRA 0x80a000800 0e00 MOVLW 0x0000802 1477 ANDWF 0x77,0x0,0x0000804 0914 IORLW 0x14000806 6e77 MOVWF 0x77,0x0000808 d017 BRA 0x838 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00080a af50 BTFSS 0x50,0x7,0x100080c d005 BRA 0x81800080e 0e00 MOVLW 0x0000810 1477 ANDWF 0x77,0x0,0x0000812 0915 IORLW 0x15000814 6e77 MOVWF 0x77,0x0000816 d010 BRA 0x838 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; } F:\MCP\projects\CAN\canBoot\Source\Main.c000818 af60 BTFSS 0x60,0x7,0x100081a d005 BRA 0x82600081c 0e00 MOVLW 0x000081e 1477 ANDWF 0x77,0x0,0x0000820 0916 IORLW 0x16000822 6e77 MOVWF 0x77,0x0000824 d009 BRA 0x838 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; } F:\MCP\projects\CAN\canBoot\Source\Main.c000826 af70 BTFSS 0x70,0x7,0x1000828 d005 BRA 0x83400082a 0e00 MOVLW 0x000082c 1477 ANDWF 0x77,0x0,0x000082e 0917 IORLW 0x17000830 6e77 MOVWF 0x77,0x0000832 d002 BRA 0x838 else return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000834 0e00 MOVLW 0x0000836 d083 BRA 0x93eF:\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.c000838 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c00083a 1461 ANDWF 0x61,0x0,0x000083c 38e8 SWAPF 0xe8,0x0,0x000083e 0b0f ANDLW 0xf000840 0100 MOVLB 0x0000842 6f60 MOVWF 0x60,0x1000844 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.c000846 1461 ANDWF 0x61,0x0,0x0000848 6e04 MOVWF 0x4,0x000084a 6a05 CLRF 0x5,0x000084c 0e06 MOVLW 0x600084e 90d8 BCF 0xd8,0x0,0x0000850 3604 RLCF 0x4,0x1,0x0000852 3605 RLCF 0x5,0x1,0x0000854 04e8 DECF 0xe8,0x0,0x0000856 e1fb BNZ 0x84e000858 0ee0 MOVLW 0xe000085a 1462 ANDWF 0x62,0x0,0x000085c 6e06 MOVWF 0x6,0x000085e 6a07 CLRF 0x7,0x0000860 90d8 BCF 0xd8,0x0,0x0000862 3207 RRCF 0x7,0x1,0x0000864 3206 RRCF 0x6,0x1,0x0000866 90d8 BCF 0xd8,0x0,0x0000868 3207 RRCF 0x7,0x1,0x000086a 3206 RRCF 0x6,0x1,0x000086c 5004 MOVF 0x4,0x0,0x000086e 2406 ADDWF 0x6,0x0,0x0000870 6e02 MOVWF 0x2,0x0000872 5005 MOVF 0x5,0x0,0x0000874 2007 ADDWFC 0x7,0x0,0x0000876 6e03 MOVWF 0x3,0x0000878 0e03 MOVLW 0x300087a 1462 ANDWF 0x62,0x0,0x000087c 6e08 MOVWF 0x8,0x000087e 6a09 CLRF 0x9,0x0000880 90d8 BCF 0xd8,0x0,0x0000882 3608 RLCF 0x8,0x1,0x0000884 3609 RLCF 0x9,0x1,0x0000886 5002 MOVF 0x2,0x0,0x0000888 2408 ADDWF 0x8,0x0,0x000088a 6e00 MOVWF 0x0,0x000088c 5003 MOVF 0x3,0x0,0x000088e 2009 ADDWFC 0x9,0x0,0x0000890 6e01 MOVWF 0x1,0x0000892 0e80 MOVLW 0x80000894 1463 ANDWF 0x63,0x0,0x0000896 6e0a MOVWF 0xa,0x0000898 6a0b CLRF 0xb,0x000089a 0e07 MOVLW 0x700089c 90d8 BCF 0xd8,0x0,0x000089e 320b RRCF 0xb,0x1,0x00008a0 320a RRCF 0xa,0x1,0x00008a2 04e8 DECF 0xe8,0x0,0x00008a4 e1fb BNZ 0x89c0008a6 5000 MOVF 0x0,0x0,0x00008a8 240a ADDWF 0xa,0x0,0x00008aa 0100 MOVLB 0x00008ac 6f61 MOVWF 0x61,0x10008ae 5001 MOVF 0x1,0x0,0x00008b0 200b ADDWFC 0xb,0x0,0x00008b2 6f62 MOVWF 0x62,0x10008b4 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0008b6 1463 ANDWF 0x63,0x0,0x00008b8 40e8 RRNCF 0xe8,0x0,0x00008ba 0b7f ANDLW 0x7f0008bc 6f63 MOVWF 0x63,0x10008be 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0008c0 1463 ANDWF 0x63,0x0,0x00008c2 6e00 MOVWF 0x0,0x00008c4 c000 MOVFF 0x0,0x10008c6 f0010008c8 6a00 CLRF 0x0,0x00008ca 5064 MOVF 0x64,0x0,0x00008cc 2400 ADDWF 0x0,0x0,0x00008ce 6f64 MOVWF 0x64,0x10008d0 0e00 MOVLW 0x00008d2 2001 ADDWFC 0x1,0x0,0x00008d4 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.c0008d6 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.c0008d8 0b01 ANDLW 0x10008da 6e02 MOVWF 0x2,0x00008dc 5065 MOVF 0x65,0x0,0x00008de 0b02 ANDLW 0x20008e0 e001 BZ 0x8e40008e2 0e01 MOVLW 0x10008e4 24e8 ADDWF 0xe8,0x0,0x00008e6 6e01 MOVWF 0x1,0x00008e8 5065 MOVF 0x65,0x0,0x00008ea 0b04 ANDLW 0x40008ec e001 BZ 0x8f00008ee 0e01 MOVLW 0x10008f0 0d04 MULLW 0x40008f2 cff3 MOVFF 0xff3,0x00008f4 f0000008f6 5065 MOVF 0x65,0x0,0x00008f8 0b08 ANDLW 0x80008fa e001 BZ 0x8fe0008fc 0e01 MOVLW 0x10008fe 0d08 MULLW 0x8000900 50f3 MOVF 0xf3,0x0,0x0000902 2400 ADDWF 0x0,0x0,0x0000904 2401 ADDWF 0x1,0x0,0x0000906 2402 ADDWF 0x2,0x0,0x0000908 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c00090a 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\Main.c00090c 0b40 ANDLW 0x4000090e e102 BNZ 0x914000910 0e00 MOVLW 0x0000912 d001 BRA 0x916000914 0e01 MOVLW 0x1000916 6f67 MOVWF 0x67,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000918 cf66 MOVFF 0xf66,0x68 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c00091a f06800091c cf67 MOVFF 0xf67,0x6900091e f069000920 cf68 MOVFF 0xf68,0x6a cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c000922 f06a000924 cf69 MOVFF 0xf69,0x6b000926 f06b000928 cf6a MOVFF 0xf6a,0x6c cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c00092a f06c00092c cf6b MOVFF 0xf6b,0x6d00092e f06d000930 cf6c MOVFF 0xf6c,0x6e cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c000932 f06e000934 cf6d MOVFF 0xf6d,0x6f000936 f06fF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c000938 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00093a 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c00093c d000 BRA 0x93e00093e 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.c000940 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c000942 ffe6000944 cfe1 MOVFF 0xfe1,0xfd9000946 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000948 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c00094a b740 BTFSC 0x40,0x3,0x100094c d004 BRA 0x95600094e 0e00 MOVLW 0x0000950 1477 ANDWF 0x77,0x0,0x0000952 0903 IORLW 0x3000954 6e77 MOVWF 0x77,0x0000956 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000958 b730 BTFSC 0x30,0x3,0x100095a d004 BRA 0x96400095c 0e00 MOVLW 0x000095e 1477 ANDWF 0x77,0x0,0x0000960 0904 IORLW 0x4000962 6e77 MOVWF 0x77,0x0000964 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000966 b720 BTFSC 0x20,0x3,0x1000968 d005 BRA 0x97400096a 0e00 MOVLW 0x000096c 1477 ANDWF 0x77,0x0,0x000096e 0905 IORLW 0x5000970 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c000972 d002 BRA 0x978 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c000974 0e00 MOVLW 0x0000976 d0b5 BRA 0xae2F:\MCP\projects\CAN\canBoot\Source\Main.c000978 0eee MOVLW 0xee if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00097a cfdb MOVFF 0xfdb,0x000097c f00000097e 3400 RLCF 0x0,0x0,0x0000980 e20e BC 0x99e000982 0eee MOVLW 0xee000984 cfdb MOVFF 0xfdb,0x1000986 f001000988 0e03 MOVLW 0x300098a 6ee7 MOVWF 0xe7,0x000098c 1801 XORWF 0x1,0x0,0x000098e aee8 BTFSS 0xe8,0x7,0x0000990 d002 BRA 0x996000992 3401 RLCF 0x1,0x0,0x0000994 d003 BRA 0x99c000996 50e7 MOVF 0xe7,0x0,0x0000998 80d8 BSF 0xd8,0x0,0x000099a 5401 SUBFWB 0x1,0x0,0x000099c e202 BC 0x9a200099e 0eee MOVLW 0xee0009a0 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.c0009a2 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0009a4 cfdb MOVFF 0xfdb,0x00009a6 f0000009a8 0ef1 MOVLW 0xf10009aa cfdb MOVFF 0xfdb,0x10009ac f0010009ae 0ec0 MOVLW 0xc00009b0 1600 ANDWF 0x0,0x1,0x00009b2 0e03 MOVLW 0x30009b4 1601 ANDWF 0x1,0x1,0x00009b6 0e06 MOVLW 0x60009b8 90d8 BCF 0xd8,0x0,0x00009ba 3201 RRCF 0x1,0x1,0x00009bc 3200 RRCF 0x0,0x1,0x00009be 04e8 DECF 0xe8,0x0,0x00009c0 e1fb BNZ 0x9b80009c2 0eef MOVLW 0xef0009c4 50db MOVF 0xdb,0x0,0x00009c6 0b0f ANDLW 0xf0009c8 0d10 MULLW 0x100009ca 50f3 MOVF 0xf3,0x0,0x00009cc 2400 ADDWF 0x0,0x0,0x00009ce 6e61 MOVWF 0x61,0x00009d0 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0009d2 6ee7 MOVWF 0xe7,0x00009d4 0ef0 MOVLW 0xf00009d6 cfdb MOVFF 0xfdb,0x20009d8 f0020009da 0ef1 MOVLW 0xf10009dc cfdb MOVFF 0xfdb,0x30009de f0030009e0 50e7 MOVF 0xe7,0x0,0x00009e2 1602 ANDWF 0x2,0x1,0x00009e4 6a03 CLRF 0x3,0x00009e6 90d8 BCF 0xd8,0x0,0x00009e8 3203 RRCF 0x3,0x1,0x00009ea 3202 RRCF 0x2,0x1,0x00009ec 0e3f MOVLW 0x3f0009ee 6ee7 MOVWF 0xe7,0x00009f0 0ef0 MOVLW 0xf00009f2 cfdb MOVFF 0xfdb,0x00009f4 f0000009f6 0ef1 MOVLW 0xf10009f8 cfdb MOVFF 0xfdb,0x10009fa f0010009fc 50e7 MOVF 0xe7,0x0,0x00009fe 1600 ANDWF 0x0,0x1,0x0000a00 6a01 CLRF 0x1,0x0000a02 90d8 BCF 0xd8,0x0,0x0000a04 3600 RLCF 0x0,0x1,0x0000a06 3601 RLCF 0x1,0x1,0x0000a08 90d8 BCF 0xd8,0x0,0x0000a0a 3600 RLCF 0x0,0x1,0x0000a0c 3601 RLCF 0x1,0x1,0x0000a0e 5000 MOVF 0x0,0x0,0x0000a10 2402 ADDWF 0x2,0x0,0x0000a12 6e62 MOVWF 0x62,0x0000a14 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.c000a16 cfdb MOVFF 0xfdb,0x2000a18 f002000a1a 0ef4 MOVLW 0xf4000a1c cfdb MOVFF 0xfdb,0x3000a1e f003000a20 0e00 MOVLW 0x0000a22 1602 ANDWF 0x2,0x1,0x0000a24 0e01 MOVLW 0x1000a26 1603 ANDWF 0x3,0x1,0x0000a28 c003 MOVFF 0x3,0x2000a2a f002000a2c 6a03 CLRF 0x3,0x0000a2e 0e01 MOVLW 0x1000a30 6ee7 MOVWF 0xe7,0x0000a32 0ef0 MOVLW 0xf0000a34 cfdb MOVFF 0xfdb,0x0000a36 f000000a38 0ef1 MOVLW 0xf1000a3a cfdb MOVFF 0xfdb,0x1000a3c f001000a3e 50e7 MOVF 0xe7,0x0,0x0000a40 1600 ANDWF 0x0,0x1,0x0000a42 6a01 CLRF 0x1,0x0000a44 0e07 MOVLW 0x7000a46 90d8 BCF 0xd8,0x0,0x0000a48 3600 RLCF 0x0,0x1,0x0000a4a 3601 RLCF 0x1,0x1,0x0000a4c 04e8 DECF 0xe8,0x0,0x0000a4e e1fb BNZ 0xa46000a50 0ef2 MOVLW 0xf2000a52 50db MOVF 0xdb,0x0,0x0000a54 0b3f ANDLW 0x3f000a56 24e8 ADDWF 0xe8,0x0,0x0000a58 2400 ADDWF 0x0,0x0,0x0000a5a 2402 ADDWF 0x2,0x0,0x0000a5c 6e63 MOVWF 0x63,0x0000a5e 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a60 6ee7 MOVWF 0xe7,0x0000a62 0ef3 MOVLW 0xf3000a64 cfdb MOVFF 0xfdb,0x0000a66 f000000a68 0ef4 MOVLW 0xf4000a6a cfdb MOVFF 0xfdb,0x1000a6c f001000a6e 50e7 MOVF 0xe7,0x0,0x0000a70 1600 ANDWF 0x0,0x1,0x0000a72 6a01 CLRF 0x1,0x0000a74 5000 MOVF 0x0,0x0,0x0000a76 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000a78 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a7a 0ef5 MOVLW 0xf5 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000a7c 50db MOVF 0xdb,0x0,0x0000a7e 0808 SUBLW 0x8000a80 e203 BC 0xa88000a82 0e08 MOVLW 0x8000a84 6e65 MOVWF 0x65,0x0000a86 d003 BRA 0xa8e000a88 0ef5 MOVLW 0xf5000a8a 50db MOVF 0xdb,0x0,0x0000a8c 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c000a8e 0ef6 MOVLW 0xf6 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBoot\Source\Main.c000a90 04db DECF 0xdb,0x0,0x0000a92 e102 BNZ 0xa98{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c000a94 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.c000a96 d001 BRA 0xa9a 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.c000a98 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.c000a9a 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000a9c 50db MOVF 0xdb,0x0,0x0000a9e 6e66 MOVWF 0x66,0x0000aa0 0ef8 MOVLW 0xf8000aa2 50db MOVF 0xdb,0x0,0x0000aa4 6e67 MOVWF 0x67,0x0000aa6 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000aa8 50db MOVF 0xdb,0x0,0x0000aaa 6e68 MOVWF 0x68,0x0000aac 0efa MOVLW 0xfa000aae 50db MOVF 0xdb,0x0,0x0000ab0 6e69 MOVWF 0x69,0x0000ab2 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ab4 50db MOVF 0xdb,0x0,0x0000ab6 6e6a MOVWF 0x6a,0x0000ab8 0efc MOVLW 0xfc000aba 50db MOVF 0xdb,0x0,0x0000abc 6e6b MOVWF 0x6b,0x0000abe 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ac0 50db MOVF 0xdb,0x0,0x0000ac2 6e6c MOVWF 0x6c,0x0000ac4 0efe MOVLW 0xfe000ac6 50db MOVF 0xdb,0x0,0x0000ac8 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000aca 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.c000acc 0eee MOVLW 0xee RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000ace cfdb MOVFF 0xfdb,0xfe6000ad0 ffe6000ad2 0efc MOVLW 0xfc000ad4 1460 ANDWF 0x60,0x0,0x0000ad6 52e5 MOVF 0xe5,0x1,0x0000ad8 10e7 IORWF 0xe7,0x0,0x0000ada 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.c000adc 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.c000ade 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000ae0 d000 BRA 0xae2F:\MCP\projects\CAN\canBoot\Source\Main.c000ae2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000ae4 cfe7 MOVFF 0xfe7,0xfd9000ae6 ffd9000ae8 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.c000aea 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000aec 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.c000aee 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000af0 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.c000af2 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000af4 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.c000af6 c0b6 MOVFF 0xb6,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000af8 f010000afa c0b7 MOVFF 0xb7,0x11000afc f011000afe c0b8 MOVFF 0xb8,0x12000b00 f012000b02 c0b9 MOVFF 0xb9,0x13000b04 f013000b06 d000 BRA 0xb08000b08 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