Rev 88 | 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 12:48:21 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 11:44:27 +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: 88 $ 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 db9a RCALL 0x77a 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 db9f RCALL 0x786 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.c000764 d47d 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 dbbb RCALL 0x7d8 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 d355 BRA 0x7580000ae 0a01 XORLW 0x10000b0 e101 BNZ 0xb40000b2 d2a3 BRA 0x5fa0000b4 0a07 XORLW 0x70000b6 e101 BNZ 0xba0000b8 d1b7 BRA 0x4280000ba 0a01 XORLW 0x10000bc e101 BNZ 0xc00000be d10c BRA 0x2d80000c0 0a03 XORLW 0x30000c2 e101 BNZ 0xc60000c4 d0b5 BRA 0x2300000c6 0a01 XORLW 0x10000c8 e001 BZ 0xcc0000ca d349 BRA 0x75e{ 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 ec7b CALL 0xaf6,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 ec7b CALL 0xaf6,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 d29a BRA 0x764 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 ec7b CALL 0xaf6,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 db41 RCALL 0x94a0002c8 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 d246 BRA 0x764 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 ec7b CALL 0xaf6,0x0 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0002da f0050002dc 0100 MOVLB 0x00002de 51be MOVF 0xbe,0x0,0x10002e0 5c10 SUBWF 0x10,0x0,0x00002e2 6e00 MOVWF 0x0,0x00002e4 0100 MOVLB 0x00002e6 51bf MOVF 0xbf,0x0,0x10002e8 5811 SUBWFB 0x11,0x0,0x00002ea 6e01 MOVWF 0x1,0x00002ec 0100 MOVLB 0x00002ee 51c0 MOVF 0xc0,0x0,0x10002f0 5812 SUBWFB 0x12,0x0,0x00002f2 6e02 MOVWF 0x2,0x00002f4 0100 MOVLB 0x00002f6 51c1 MOVF 0xc1,0x0,0x10002f8 5813 SUBWFB 0x13,0x0,0x00002fa 6e03 MOVWF 0x3,0x00002fc 80d8 BSF 0xd8,0x0,0x00002fe 0e0e MOVLW 0xe000300 5400 SUBFWB 0x0,0x0,0x0000302 0e00 MOVLW 0x0000304 5401 SUBFWB 0x1,0x0,0x0000306 0e00 MOVLW 0x0000308 5402 SUBFWB 0x2,0x0,0x000030a 0e00 MOVLW 0x000030c 5403 SUBFWB 0x3,0x0,0x000030e e208 BC 0x320{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c000310 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000312 6bc4 CLRF 0xc4,0x1000314 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000316 0e02 MOVLW 0x2000318 6fc5 MOVWF 0xc5,0x100031a 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00031c 0e01 MOVLW 0x100031e 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.c000320 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.c000322 04db DECF 0xdb,0x0,0x0000324 e001 BZ 0x328000326 d07f BRA 0x426000328 0100 MOVLB 0x000032a 5160 MOVF 0x60,0x0,0x100032c e001 BZ 0x33000032e d07b BRA 0x426000330 0e03 MOVLW 0x3000332 0100 MOVLB 0x0000334 1561 ANDWF 0x61,0x0,0x1000336 6e00 MOVWF 0x0,0x0000338 6a01 CLRF 0x1,0x000033a 0e03 MOVLW 0x300033c 1800 XORWF 0x0,0x0,0x000033e e101 BNZ 0x342000340 5001 MOVF 0x1,0x0,0x0000342 e171 BNZ 0x426000344 0100 MOVLB 0x0000346 5163 MOVF 0x63,0x0,0x1000348 e16e BNZ 0x42600034a 0100 MOVLB 0x000034c 51c2 MOVF 0xc2,0x0,0x100034e 0100 MOVLB 0x0000350 1964 XORWF 0x64,0x0,0x1000352 e104 BNZ 0x35c000354 0100 MOVLB 0x0000356 51c3 MOVF 0xc3,0x0,0x1000358 0100 MOVLB 0x000035a 1965 XORWF 0x65,0x0,0x100035c e164 BNZ 0x426{ F:\MCP\projects\CAN\canBoot\Source\Main.c00035e 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000360 0100 MOVLB 0x0000362 1561 ANDWF 0x61,0x0,0x1000364 6e00 MOVWF 0x0,0x0000366 6a01 CLRF 0x1,0x0000368 90d8 BCF 0xd8,0x0,0x000036a 3201 RRCF 0x1,0x1,0x000036c 3200 RRCF 0x0,0x1,0x000036e 90d8 BCF 0xd8,0x0,0x0000370 3201 RRCF 0x1,0x1,0x0000372 3200 RRCF 0x0,0x1,0x0000374 0e08 MOVLW 0x8000376 0200 MULWF 0x0,0x0000378 0e15 MOVLW 0x1500037a cff3 MOVFF 0xff3,0xfdb00037c ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c00037e 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000380 0e08 MOVLW 0x8000382 6fca MOVWF 0xca,0x1000384 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.c000386 50db MOVF 0xdb,0x0,0x0000388 6aea CLRF 0xea,0x000038a 0f6f ADDLW 0x6f00038c 6ee9 MOVWF 0xe9,0x000038e 0e00 MOVLW 0x0000390 22ea ADDWFC 0xea,0x1,0x0000392 c067 MOVFF 0x67,0xfef000394 ffef000396 0e15 MOVLW 0x15000398 28db INCF 0xdb,0x0,0x000039a 6aea CLRF 0xea,0x000039c 0f6f ADDLW 0x6f00039e 6ee9 MOVWF 0xe9,0x00003a0 0e00 MOVLW 0x00003a2 22ea ADDWFC 0xea,0x1,0x00003a4 c068 MOVFF 0x68,0xfef0003a6 ffef0003a8 0e15 MOVLW 0x150003aa 50db MOVF 0xdb,0x0,0x00003ac 0f02 ADDLW 0x20003ae 6aea CLRF 0xea,0x00003b0 0f6f ADDLW 0x6f0003b2 6ee9 MOVWF 0xe9,0x00003b4 0e00 MOVLW 0x00003b6 22ea ADDWFC 0xea,0x1,0x00003b8 c069 MOVFF 0x69,0xfef0003ba ffef0003bc 0e15 MOVLW 0x150003be 50db MOVF 0xdb,0x0,0x00003c0 0f03 ADDLW 0x30003c2 6aea CLRF 0xea,0x00003c4 0f6f ADDLW 0x6f0003c6 6ee9 MOVWF 0xe9,0x00003c8 0e00 MOVLW 0x00003ca 22ea ADDWFC 0xea,0x1,0x00003cc c06a MOVFF 0x6a,0xfef0003ce ffef0003d0 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.c0003d2 50db MOVF 0xdb,0x0,0x00003d4 0f04 ADDLW 0x40003d6 6aea CLRF 0xea,0x00003d8 0f6f ADDLW 0x6f0003da 6ee9 MOVWF 0xe9,0x00003dc 0e00 MOVLW 0x00003de 22ea ADDWFC 0xea,0x1,0x00003e0 c06b MOVFF 0x6b,0xfef0003e2 ffef0003e4 0e15 MOVLW 0x150003e6 50db MOVF 0xdb,0x0,0x00003e8 0f05 ADDLW 0x50003ea 6aea CLRF 0xea,0x00003ec 0f6f ADDLW 0x6f0003ee 6ee9 MOVWF 0xe9,0x00003f0 0e00 MOVLW 0x00003f2 22ea ADDWFC 0xea,0x1,0x00003f4 c06c MOVFF 0x6c,0xfef0003f6 ffef0003f8 0e15 MOVLW 0x150003fa 50db MOVF 0xdb,0x0,0x00003fc 0f06 ADDLW 0x60003fe 6aea CLRF 0xea,0x0000400 0f6f ADDLW 0x6f000402 6ee9 MOVWF 0xe9,0x0000404 0e00 MOVLW 0x0000406 22ea ADDWFC 0xea,0x1,0x0000408 c06d MOVFF 0x6d,0xfef00040a ffef00040c 0e15 MOVLW 0x1500040e 50db MOVF 0xdb,0x0,0x0000410 0f07 ADDLW 0x7000412 6aea CLRF 0xea,0x0000414 0f6f ADDLW 0x6f000416 6ee9 MOVWF 0xe9,0x0000418 0e00 MOVLW 0x000041a 22ea ADDWFC 0xea,0x1,0x000041c c06e MOVFF 0x6e,0xfef00041e ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000420 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000422 0e03 MOVLW 0x3000424 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.c000426 d19e BRA 0x764 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.c000428 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.c00042a 04db DECF 0xdb,0x0,0x000042c e001 BZ 0x43000042e d07f BRA 0x52e000430 0100 MOVLB 0x0000432 5160 MOVF 0x60,0x0,0x1000434 e001 BZ 0x438000436 d07b BRA 0x52e000438 0e03 MOVLW 0x300043a 0100 MOVLB 0x000043c 1561 ANDWF 0x61,0x0,0x100043e 6e00 MOVWF 0x0,0x0000440 6a01 CLRF 0x1,0x0000442 0e03 MOVLW 0x3000444 1800 XORWF 0x0,0x0,0x0000446 e101 BNZ 0x44a000448 5001 MOVF 0x1,0x0,0x000044a e171 BNZ 0x52e00044c 0100 MOVLB 0x000044e 5163 MOVF 0x63,0x0,0x1000450 e16e BNZ 0x52e000452 0100 MOVLB 0x0000454 51c2 MOVF 0xc2,0x0,0x1000456 0100 MOVLB 0x0000458 1964 XORWF 0x64,0x0,0x100045a e104 BNZ 0x46400045c 0100 MOVLB 0x000045e 51c3 MOVF 0xc3,0x0,0x1000460 0100 MOVLB 0x0000462 1965 XORWF 0x65,0x0,0x1000464 e164 BNZ 0x52e{ F:\MCP\projects\CAN\canBoot\Source\Main.c000466 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c000468 0100 MOVLB 0x000046a 1561 ANDWF 0x61,0x0,0x100046c 6e00 MOVWF 0x0,0x000046e 6a01 CLRF 0x1,0x0000470 90d8 BCF 0xd8,0x0,0x0000472 3201 RRCF 0x1,0x1,0x0000474 3200 RRCF 0x0,0x1,0x0000476 90d8 BCF 0xd8,0x0,0x0000478 3201 RRCF 0x1,0x1,0x000047a 3200 RRCF 0x0,0x1,0x000047c 0e08 MOVLW 0x800047e 0200 MULWF 0x0,0x0000480 0e16 MOVLW 0x16000482 cff3 MOVFF 0xff3,0xfdb000484 ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c000486 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.c000488 50db MOVF 0xdb,0x0,0x000048a 6aea CLRF 0xea,0x000048c 0f6f ADDLW 0x6f00048e 6ee9 MOVWF 0xe9,0x0000490 0e00 MOVLW 0x0000492 22ea ADDWFC 0xea,0x1,0x0000494 c067 MOVFF 0x67,0xfef000496 ffef000498 0e16 MOVLW 0x1600049a 28db INCF 0xdb,0x0,0x000049c 6aea CLRF 0xea,0x000049e 0f6f ADDLW 0x6f0004a0 6ee9 MOVWF 0xe9,0x00004a2 0e00 MOVLW 0x00004a4 22ea ADDWFC 0xea,0x1,0x00004a6 c068 MOVFF 0x68,0xfef0004a8 ffef0004aa 0e16 MOVLW 0x160004ac 50db MOVF 0xdb,0x0,0x00004ae 0f02 ADDLW 0x20004b0 6aea CLRF 0xea,0x00004b2 0f6f ADDLW 0x6f0004b4 6ee9 MOVWF 0xe9,0x00004b6 0e00 MOVLW 0x00004b8 22ea ADDWFC 0xea,0x1,0x00004ba c069 MOVFF 0x69,0xfef0004bc ffef0004be 0e16 MOVLW 0x160004c0 50db MOVF 0xdb,0x0,0x00004c2 0f03 ADDLW 0x30004c4 6aea CLRF 0xea,0x00004c6 0f6f ADDLW 0x6f0004c8 6ee9 MOVWF 0xe9,0x00004ca 0e00 MOVLW 0x00004cc 22ea ADDWFC 0xea,0x1,0x00004ce c06a MOVFF 0x6a,0xfef0004d0 ffef0004d2 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.c0004d4 50db MOVF 0xdb,0x0,0x00004d6 0f04 ADDLW 0x40004d8 6aea CLRF 0xea,0x00004da 0f6f ADDLW 0x6f0004dc 6ee9 MOVWF 0xe9,0x00004de 0e00 MOVLW 0x00004e0 22ea ADDWFC 0xea,0x1,0x00004e2 c06b MOVFF 0x6b,0xfef0004e4 ffef0004e6 0e16 MOVLW 0x160004e8 50db MOVF 0xdb,0x0,0x00004ea 0f05 ADDLW 0x50004ec 6aea CLRF 0xea,0x00004ee 0f6f ADDLW 0x6f0004f0 6ee9 MOVWF 0xe9,0x00004f2 0e00 MOVLW 0x00004f4 22ea ADDWFC 0xea,0x1,0x00004f6 c06c MOVFF 0x6c,0xfef0004f8 ffef0004fa 0e16 MOVLW 0x160004fc 50db MOVF 0xdb,0x0,0x00004fe 0f06 ADDLW 0x6000500 6aea CLRF 0xea,0x0000502 0f6f ADDLW 0x6f000504 6ee9 MOVWF 0xe9,0x0000506 0e00 MOVLW 0x0000508 22ea ADDWFC 0xea,0x1,0x000050a c06d MOVFF 0x6d,0xfef00050c ffef00050e 0e16 MOVLW 0x16000510 50db MOVF 0xdb,0x0,0x0000512 0f07 ADDLW 0x7000514 6aea CLRF 0xea,0x0000516 0f6f ADDLW 0x6f000518 6ee9 MOVWF 0xe9,0x000051a 0e00 MOVLW 0x000051c 22ea ADDWFC 0xea,0x1,0x000051e c06e MOVFF 0x6e,0xfef000520 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000522 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000524 0100 MOVLB 0x0000526 27ca ADDWF 0xca,0x1,0x1000528 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00052a 0e03 MOVLW 0x300052c 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.c00052e 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.c000530 04db DECF 0xdb,0x0,0x0000532 e11e BNZ 0x570000534 0100 MOVLB 0x0000536 5160 MOVF 0x60,0x0,0x1000538 e11b BNZ 0x57000053a 0100 MOVLB 0x000053c 0e02 MOVLW 0x200053e 1961 XORWF 0x61,0x0,0x1000540 e101 BNZ 0x544000542 5162 MOVF 0x62,0x0,0x1000544 e115 BNZ 0x570000546 0100 MOVLB 0x0000548 5163 MOVF 0x63,0x0,0x100054a e112 BNZ 0x57000054c 0100 MOVLB 0x000054e 51c2 MOVF 0xc2,0x0,0x1000550 0100 MOVLB 0x0000552 1964 XORWF 0x64,0x0,0x1000554 e104 BNZ 0x55e000556 0100 MOVLB 0x0000558 51c3 MOVF 0xc3,0x0,0x100055a 0100 MOVLB 0x000055c 1965 XORWF 0x65,0x0,0x100055e e108 BNZ 0x570{ 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.c000560 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000562 6bc4 CLRF 0xc4,0x1000564 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000566 0e02 MOVLW 0x2000568 6fc5 MOVWF 0xc5,0x100056a 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00056c 0e01 MOVLW 0x100056e 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.c000570 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.c000572 04db DECF 0xdb,0x0,0x0000574 e136 BNZ 0x5e2000576 0100 MOVLB 0x0000578 5160 MOVF 0x60,0x0,0x100057a e133 BNZ 0x5e200057c 0100 MOVLB 0x000057e 0e05 MOVLW 0x5000580 1961 XORWF 0x61,0x0,0x1000582 e101 BNZ 0x586000584 5162 MOVF 0x62,0x0,0x1000586 e12d BNZ 0x5e2000588 0100 MOVLB 0x000058a 5163 MOVF 0x63,0x0,0x100058c e12a BNZ 0x5e200058e 0100 MOVLB 0x0000590 51c2 MOVF 0xc2,0x0,0x1000592 0100 MOVLB 0x0000594 1964 XORWF 0x64,0x0,0x1000596 e104 BNZ 0x5a0000598 0100 MOVLB 0x000059a 51c3 MOVF 0xc3,0x0,0x100059c 0100 MOVLB 0x000059e 1965 XORWF 0x65,0x0,0x10005a0 e120 BNZ 0x5e2{ 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.c0005a2 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c0005a4 51ca MOVF 0xca,0x0,0x10005a6 e109 BNZ 0x5ba{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c0005a8 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005aa 6bc4 CLRF 0xc4,0x10005ac 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ae 0e05 MOVLW 0x50005b0 6fc5 MOVWF 0xc5,0x10005b2 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005b4 0e01 MOVLW 0x10005b6 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005b8 d014 BRA 0x5e2 else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005ba 0e40 MOVLW 0x400005bc 0100 MOVLB 0x00005be 5dca SUBWF 0xca,0x0,0x10005c0 e00a BZ 0x5d6{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005c2 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c4 0e01 MOVLW 0x10005c6 6fc4 MOVWF 0xc4,0x10005c8 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ca 0e02 MOVLW 0x20005cc 6fc5 MOVWF 0xc5,0x10005ce 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005d0 0e01 MOVLW 0x10005d2 6fbd MOVWF 0xbd,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c0005d4 d006 BRA 0x5e2 else F:\MCP\projects\CAN\canBoot\Source\Main.c{ 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 6fbd MOVWF 0xbd,0x10005dc 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c0005de 0e05 MOVLW 0x50005e0 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.c0005e2 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c0005e4 0100 MOVLB 0x00005e6 5dca SUBWF 0xca,0x0,0x10005e8 e107 BNZ 0x5f8{ F:\MCP\projects\CAN\canBoot\Source\Main.c0005ea 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ec 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ee 0e04 MOVLW 0x40005f0 6fbd MOVWF 0xbd,0x10005f2 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f4 0e03 MOVLW 0x30005f6 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.c0005f8 d0b5 BRA 0x764 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.c0005fa 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.c0005fc 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c0005fe 0100 MOVLB 0x0000600 5dc6 SUBWF 0xc6,0x0,0x1000602 0e10 MOVLW 0x10000604 59c7 SUBWFB 0xc7,0x0,0x1000606 0e00 MOVLW 0x0000608 59c8 SUBWFB 0xc8,0x0,0x100060a 0e00 MOVLW 0x000060c 59c9 SUBWFB 0xc9,0x0,0x100060e e206 BC 0x61c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000610 0100 MOVLB 0x0 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000612 0e01 MOVLW 0x1000614 6fc4 MOVWF 0xc4,0x1000616 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000618 0e01 MOVLW 0x100061a 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.c00061c c0c6 MOVFF 0xc6,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00061e f000000620 c0c7 MOVFF 0xc7,0x1000622 f001000624 c0c8 MOVFF 0xc8,0x2000626 f002000628 c0c9 MOVFF 0xc9,0x300062a f00300062c 6a00 CLRF 0x0,0x000062e 6a01 CLRF 0x1,0x0000630 6a03 CLRF 0x3,0x0000632 0e10 MOVLW 0x10000634 90d8 BCF 0xd8,0x0,0x0000636 3203 RRCF 0x3,0x1,0x0000638 3202 RRCF 0x2,0x1,0x000063a 3201 RRCF 0x1,0x1,0x000063c 3200 RRCF 0x0,0x1,0x000063e 06e8 DECF 0xe8,0x1,0x0000640 e1f9 BNZ 0x634000642 5000 MOVF 0x0,0x0,0x0000644 6ef8 MOVWF 0xf8,0x0000646 c0c6 MOVFF 0xc6,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000648 f00000064a c0c7 MOVFF 0xc7,0x100064c f00100064e c0c8 MOVFF 0xc8,0x2000650 f002000652 c0c9 MOVFF 0xc9,0x3000654 f003000656 6a00 CLRF 0x0,0x0000658 6a02 CLRF 0x2,0x000065a 6a03 CLRF 0x3,0x000065c 0e08 MOVLW 0x800065e 90d8 BCF 0xd8,0x0,0x0000660 3203 RRCF 0x3,0x1,0x0000662 3202 RRCF 0x2,0x1,0x0000664 3201 RRCF 0x1,0x1,0x0000666 3200 RRCF 0x0,0x1,0x0000668 06e8 DECF 0xe8,0x1,0x000066a e1f9 BNZ 0x65e00066c 5000 MOVF 0x0,0x0,0x000066e 6ef7 MOVWF 0xf7,0x0000670 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000672 51c6 MOVF 0xc6,0x0,0x1000674 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000676 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.c000678 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.c00067a 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.c00067c 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.c00067e 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.c000680 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000682 6ea7 MOVWF 0xa7,0x0000684 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000686 6ea7 MOVWF 0xa7,0x0000688 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.c00068a 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.c00068c c0c6 MOVFF 0xc6,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00068e f000000690 c0c7 MOVFF 0xc7,0x1000692 f001000694 c0c8 MOVFF 0xc8,0x2000696 f002000698 c0c9 MOVFF 0xc9,0x300069a f00300069c 6a00 CLRF 0x0,0x000069e 6a01 CLRF 0x1,0x00006a0 6a03 CLRF 0x3,0x00006a2 0e10 MOVLW 0x100006a4 90d8 BCF 0xd8,0x0,0x00006a6 3203 RRCF 0x3,0x1,0x00006a8 3202 RRCF 0x2,0x1,0x00006aa 3201 RRCF 0x1,0x1,0x00006ac 3200 RRCF 0x0,0x1,0x00006ae 06e8 DECF 0xe8,0x1,0x00006b0 e1f9 BNZ 0x6a40006b2 5000 MOVF 0x0,0x0,0x00006b4 6ef8 MOVWF 0xf8,0x00006b6 c0c6 MOVFF 0xc6,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006b8 f0000006ba c0c7 MOVFF 0xc7,0x10006bc f0010006be c0c8 MOVFF 0xc8,0x20006c0 f0020006c2 c0c9 MOVFF 0xc9,0x30006c4 f0030006c6 6a00 CLRF 0x0,0x00006c8 6a02 CLRF 0x2,0x00006ca 6a03 CLRF 0x3,0x00006cc 0e08 MOVLW 0x80006ce 90d8 BCF 0xd8,0x0,0x00006d0 3203 RRCF 0x3,0x1,0x00006d2 3202 RRCF 0x2,0x1,0x00006d4 3201 RRCF 0x1,0x1,0x00006d6 3200 RRCF 0x0,0x1,0x00006d8 06e8 DECF 0xe8,0x1,0x00006da e1f9 BNZ 0x6ce0006dc 5000 MOVF 0x0,0x0,0x00006de 6ef7 MOVWF 0xf7,0x00006e0 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006e2 51c6 MOVF 0xc6,0x0,0x10006e4 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c0006e6 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c0006e8 6adb CLRF 0xdb,0x00006ea 0e3f MOVLW 0x3f0006ec 6ef3 MOVWF 0xf3,0x00006ee 0e04 MOVLW 0x40006f0 cfdb MOVFF 0xfdb,0xff40006f2 fff40006f4 50f3 MOVF 0xf3,0x0,0x00006f6 5cf4 SUBWF 0xf4,0x0,0x00006f8 e20d BC 0x71400070e 0e04 MOVLW 0x4000710 2adb INCF 0xdb,0x1,0x0000712 d7eb BRA 0x6ea{ F:\MCP\projects\CAN\canBoot\Source\Main.c0006fa 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c0006fc 50db MOVF 0xdb,0x0,0x00006fe 6aea CLRF 0xea,0x0000700 0f6f ADDLW 0x6f000702 6ee9 MOVWF 0xe9,0x0000704 0e00 MOVLW 0x0000706 22ea ADDWFC 0xea,0x1,0x0000708 50ef MOVF 0xef,0x0,0x000070a 6ef5 MOVWF 0xf5,0x000070c d9f2 RCALL 0xaf2 TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000714 c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c000716 fff5000718 d9ea 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.c00071a 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.c00071c 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.c00071e 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.c000720 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.c000722 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000724 6ea7 MOVWF 0xa7,0x0000726 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000728 6ea7 MOVWF 0xa7,0x000072a 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.c00072c 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.c00072e 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000730 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c000732 0100 MOVLB 0x0000734 27c6 ADDWF 0xc6,0x1,0x1000736 0e00 MOVLW 0x0000738 0100 MOVLB 0x000073a 23c7 ADDWFC 0xc7,0x1,0x100073c 0e00 MOVLW 0x000073e 0100 MOVLB 0x0000740 23c8 ADDWFC 0xc8,0x1,0x1000742 0e00 MOVLW 0x0000744 0100 MOVLB 0x0000746 23c9 ADDWFC 0xc9,0x1,0x1000748 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00074a 6bca CLRF 0xca,0x100074c 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00074e 6bc4 CLRF 0xc4,0x1000750 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000752 0e01 MOVLW 0x1000754 6fbd MOVWF 0xbd,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c000756 d006 BRA 0x764 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.c000758 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00075a f00800075c d003 BRA 0x764 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.c00075e 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000760 6bbd CLRF 0xbd,0x1000762 d000 BRA 0x764 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.c000766 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canBoot\Source\Main.c000768 5ce1 SUBWF 0xe1,0x0,0x000076a e202 BC 0x77000076c 6ae1 CLRF 0xe1,0x000076e 52e5 MOVF 0xe5,0x1,0x0000770 6ee1 MOVWF 0xe1,0x0000772 52e5 MOVF 0xe5,0x1,0x0000774 cfe7 MOVFF 0xfe7,0xfd9000776 ffd9000778 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.c00077a 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.c00077c 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.c00077e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c000780 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.c000782 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.c000784 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.c000786 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000788 6e6f MOVWF 0x6f,0x000078a 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c00078c 146e ANDWF 0x6e,0x0,0x000078e 0880 SUBLW 0x80000790 e001 BZ 0x794000792 d7fb BRA 0x78aF:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000794 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.c000796 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000798 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.c00079a 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c00079c 1070 IORWF 0x70,0x0,0x000079e 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c0007a0 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.c0007a2 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a4 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a6 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.c0007a8 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007aa 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ac 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.c0007ae 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.c0007b0 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.c0007b2 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b4 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b6 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007b8 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ba 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007bc 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.c0007be 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c0 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.c0007c2 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c4 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0007c6 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c8 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.c0007ca 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.c0007cc 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007ce 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0007d0 146e ANDWF 0x6e,0x0,0x00007d2 e001 BZ 0x7d60007d4 d7fc BRA 0x7ce#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007d6 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.c0007d8 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007da d005 BRA 0x7e60007dc 0e00 MOVLW 0x00007de 1477 ANDWF 0x77,0x0,0x00007e0 0910 IORLW 0x100007e2 6e77 MOVWF 0x77,0x00007e4 d035 BRA 0x850 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007e6 010f MOVLB 0xf0007e8 af50 BTFSS 0x50,0x7,0x10007ea d005 BRA 0x7f60007ec 0e00 MOVLW 0x00007ee 1477 ANDWF 0x77,0x0,0x00007f0 0911 IORLW 0x110007f2 6e77 MOVWF 0x77,0x00007f4 d02d BRA 0x850 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; } F:\MCP\projects\CAN\canBoot\Source\Main.c0007f6 010e MOVLB 0xe0007f8 af20 BTFSS 0x20,0x7,0x10007fa d005 BRA 0x8060007fc 0e00 MOVLW 0x00007fe 1477 ANDWF 0x77,0x0,0x0000800 0912 IORLW 0x12000802 6e77 MOVWF 0x77,0x0000804 d025 BRA 0x850 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000806 af30 BTFSS 0x30,0x7,0x1000808 d005 BRA 0x81400080a 0e00 MOVLW 0x000080c 1477 ANDWF 0x77,0x0,0x000080e 0913 IORLW 0x13000810 6e77 MOVWF 0x77,0x0000812 d01e BRA 0x850 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000814 af40 BTFSS 0x40,0x7,0x1000816 d005 BRA 0x822000818 0e00 MOVLW 0x000081a 1477 ANDWF 0x77,0x0,0x000081c 0914 IORLW 0x1400081e 6e77 MOVWF 0x77,0x0000820 d017 BRA 0x850 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000822 af50 BTFSS 0x50,0x7,0x1000824 d005 BRA 0x830000826 0e00 MOVLW 0x0000828 1477 ANDWF 0x77,0x0,0x000082a 0915 IORLW 0x1500082c 6e77 MOVWF 0x77,0x000082e d010 BRA 0x850 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; } F:\MCP\projects\CAN\canBoot\Source\Main.c000830 af60 BTFSS 0x60,0x7,0x1000832 d005 BRA 0x83e000834 0e00 MOVLW 0x0000836 1477 ANDWF 0x77,0x0,0x0000838 0916 IORLW 0x1600083a 6e77 MOVWF 0x77,0x000083c d009 BRA 0x850 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; } F:\MCP\projects\CAN\canBoot\Source\Main.c00083e af70 BTFSS 0x70,0x7,0x1000840 d005 BRA 0x84c000842 0e00 MOVLW 0x0000844 1477 ANDWF 0x77,0x0,0x0000846 0917 IORLW 0x17000848 6e77 MOVWF 0x77,0x000084a d002 BRA 0x850 else return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c00084c 0e00 MOVLW 0x000084e d07c BRA 0x948F:\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.c000850 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c000852 1461 ANDWF 0x61,0x0,0x0000854 38e8 SWAPF 0xe8,0x0,0x0000856 0b0f ANDLW 0xf000858 0100 MOVLB 0x000085a 6f60 MOVWF 0x60,0x100085c 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.c00085e 1461 ANDWF 0x61,0x0,0x0000860 6e04 MOVWF 0x4,0x0000862 6a05 CLRF 0x5,0x0000864 0e06 MOVLW 0x6000866 90d8 BCF 0xd8,0x0,0x0000868 3604 RLCF 0x4,0x1,0x000086a 3605 RLCF 0x5,0x1,0x000086c 04e8 DECF 0xe8,0x0,0x000086e e1fb BNZ 0x866000870 0ee0 MOVLW 0xe0000872 1462 ANDWF 0x62,0x0,0x0000874 6e06 MOVWF 0x6,0x0000876 6a07 CLRF 0x7,0x0000878 90d8 BCF 0xd8,0x0,0x000087a 3207 RRCF 0x7,0x1,0x000087c 3206 RRCF 0x6,0x1,0x000087e 90d8 BCF 0xd8,0x0,0x0000880 3207 RRCF 0x7,0x1,0x0000882 3206 RRCF 0x6,0x1,0x0000884 5004 MOVF 0x4,0x0,0x0000886 2406 ADDWF 0x6,0x0,0x0000888 6e02 MOVWF 0x2,0x000088a 5005 MOVF 0x5,0x0,0x000088c 2007 ADDWFC 0x7,0x0,0x000088e 6e03 MOVWF 0x3,0x0000890 0e03 MOVLW 0x3000892 1462 ANDWF 0x62,0x0,0x0000894 6e08 MOVWF 0x8,0x0000896 6a09 CLRF 0x9,0x0000898 90d8 BCF 0xd8,0x0,0x000089a 3608 RLCF 0x8,0x1,0x000089c 3609 RLCF 0x9,0x1,0x000089e 5002 MOVF 0x2,0x0,0x00008a0 2408 ADDWF 0x8,0x0,0x00008a2 6e00 MOVWF 0x0,0x00008a4 5003 MOVF 0x3,0x0,0x00008a6 2009 ADDWFC 0x9,0x0,0x00008a8 6e01 MOVWF 0x1,0x00008aa 0e80 MOVLW 0x800008ac 1463 ANDWF 0x63,0x0,0x00008ae 6e0a MOVWF 0xa,0x00008b0 6a0b CLRF 0xb,0x00008b2 0e07 MOVLW 0x70008b4 90d8 BCF 0xd8,0x0,0x00008b6 320b RRCF 0xb,0x1,0x00008b8 320a RRCF 0xa,0x1,0x00008ba 04e8 DECF 0xe8,0x0,0x00008bc e1fb BNZ 0x8b40008be 5000 MOVF 0x0,0x0,0x00008c0 240a ADDWF 0xa,0x0,0x00008c2 0100 MOVLB 0x00008c4 6f61 MOVWF 0x61,0x10008c6 5001 MOVF 0x1,0x0,0x00008c8 200b ADDWFC 0xb,0x0,0x00008ca 6f62 MOVWF 0x62,0x10008cc 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0008ce 1463 ANDWF 0x63,0x0,0x00008d0 40e8 RRNCF 0xe8,0x0,0x00008d2 0b7f ANDLW 0x7f0008d4 6f63 MOVWF 0x63,0x10008d6 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0008d8 1463 ANDWF 0x63,0x0,0x00008da 6e00 MOVWF 0x0,0x00008dc c000 MOVFF 0x0,0x10008de f0010008e0 6a00 CLRF 0x0,0x00008e2 5064 MOVF 0x64,0x0,0x00008e4 2400 ADDWF 0x0,0x0,0x00008e6 6f64 MOVWF 0x64,0x10008e8 0e00 MOVLW 0x00008ea 2001 ADDWFC 0x1,0x0,0x00008ec 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.c0008ee 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.c0008f0 0b01 ANDLW 0x10008f2 6e02 MOVWF 0x2,0x00008f4 5065 MOVF 0x65,0x0,0x00008f6 0b02 ANDLW 0x20008f8 e001 BZ 0x8fc0008fa 0e01 MOVLW 0x10008fc 24e8 ADDWF 0xe8,0x0,0x00008fe 6e01 MOVWF 0x1,0x0000900 5065 MOVF 0x65,0x0,0x0000902 0b04 ANDLW 0x4000904 e001 BZ 0x908000906 0e01 MOVLW 0x1000908 0d04 MULLW 0x400090a cff3 MOVFF 0xff3,0x000090c f00000090e 5065 MOVF 0x65,0x0,0x0000910 0b08 ANDLW 0x8000912 e001 BZ 0x916000914 0e01 MOVLW 0x1000916 0d08 MULLW 0x8000918 50f3 MOVF 0xf3,0x0,0x000091a 2400 ADDWF 0x0,0x0,0x000091c 2401 ADDWF 0x1,0x0,0x000091e 2402 ADDWF 0x2,0x0,0x0000920 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000922 cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c000924 f067000926 cf67 MOVFF 0xf67,0x68000928 f06800092a cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c00092c f06900092e cf69 MOVFF 0xf69,0x6a000930 f06a000932 cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c000934 f06b000936 cf6b MOVFF 0xf6b,0x6c000938 f06c00093a cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c00093c f06d00093e cf6d MOVFF 0xf6d,0x6e000940 f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c000942 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000944 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000946 d000 BRA 0x948000948 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.c00094a cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c00094c ffe600094e cfe1 MOVFF 0xfe1,0xfd9000950 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000952 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000954 b740 BTFSC 0x40,0x3,0x1000956 d004 BRA 0x960000958 0e00 MOVLW 0x000095a 1477 ANDWF 0x77,0x0,0x000095c 0903 IORLW 0x300095e 6e77 MOVWF 0x77,0x0000960 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000962 b730 BTFSC 0x30,0x3,0x1000964 d004 BRA 0x96e000966 0e00 MOVLW 0x0000968 1477 ANDWF 0x77,0x0,0x000096a 0904 IORLW 0x400096c 6e77 MOVWF 0x77,0x000096e 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c000970 b720 BTFSC 0x20,0x3,0x1000972 d005 BRA 0x97e000974 0e00 MOVLW 0x0000976 1477 ANDWF 0x77,0x0,0x0000978 0905 IORLW 0x500097a 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c00097c d002 BRA 0x982 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c00097e 0e00 MOVLW 0x0000980 d0b0 BRA 0xae2F:\MCP\projects\CAN\canBoot\Source\Main.c000982 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000984 cfdb MOVFF 0xfdb,0x0000986 f000000988 3400 RLCF 0x0,0x0,0x000098a e20e BC 0x9a800098c 0eef MOVLW 0xef00098e cfdb MOVFF 0xfdb,0x1000990 f001000992 0e03 MOVLW 0x3000994 6ee7 MOVWF 0xe7,0x0000996 1801 XORWF 0x1,0x0,0x0000998 aee8 BTFSS 0xe8,0x7,0x000099a d002 BRA 0x9a000099c 3401 RLCF 0x1,0x0,0x000099e d003 BRA 0x9a60009a0 50e7 MOVF 0xe7,0x0,0x00009a2 80d8 BSF 0xd8,0x0,0x00009a4 5401 SUBFWB 0x1,0x0,0x00009a6 e202 BC 0x9ac0009a8 0eef MOVLW 0xef0009aa 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.c0009ac 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0009ae cfdb MOVFF 0xfdb,0x00009b0 f0000009b2 0ef2 MOVLW 0xf20009b4 cfdb MOVFF 0xfdb,0x10009b6 f0010009b8 0ec0 MOVLW 0xc00009ba 1600 ANDWF 0x0,0x1,0x00009bc 0e03 MOVLW 0x30009be 1601 ANDWF 0x1,0x1,0x00009c0 0e06 MOVLW 0x60009c2 90d8 BCF 0xd8,0x0,0x00009c4 3201 RRCF 0x1,0x1,0x00009c6 3200 RRCF 0x0,0x1,0x00009c8 04e8 DECF 0xe8,0x0,0x00009ca e1fb BNZ 0x9c20009cc 0ef0 MOVLW 0xf00009ce 50db MOVF 0xdb,0x0,0x00009d0 0b0f ANDLW 0xf0009d2 0d10 MULLW 0x100009d4 50f3 MOVF 0xf3,0x0,0x00009d6 2400 ADDWF 0x0,0x0,0x00009d8 6e61 MOVWF 0x61,0x00009da 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0009dc 6ee7 MOVWF 0xe7,0x00009de 0ef1 MOVLW 0xf10009e0 cfdb MOVFF 0xfdb,0x20009e2 f0020009e4 0ef2 MOVLW 0xf20009e6 cfdb MOVFF 0xfdb,0x30009e8 f0030009ea 50e7 MOVF 0xe7,0x0,0x00009ec 1602 ANDWF 0x2,0x1,0x00009ee 6a03 CLRF 0x3,0x00009f0 90d8 BCF 0xd8,0x0,0x00009f2 3203 RRCF 0x3,0x1,0x00009f4 3202 RRCF 0x2,0x1,0x00009f6 0e3f MOVLW 0x3f0009f8 6ee7 MOVWF 0xe7,0x00009fa 0ef1 MOVLW 0xf10009fc cfdb MOVFF 0xfdb,0x00009fe f000000a00 0ef2 MOVLW 0xf2000a02 cfdb MOVFF 0xfdb,0x1000a04 f001000a06 50e7 MOVF 0xe7,0x0,0x0000a08 1600 ANDWF 0x0,0x1,0x0000a0a 6a01 CLRF 0x1,0x0000a0c 90d8 BCF 0xd8,0x0,0x0000a0e 3600 RLCF 0x0,0x1,0x0000a10 3601 RLCF 0x1,0x1,0x0000a12 90d8 BCF 0xd8,0x0,0x0000a14 3600 RLCF 0x0,0x1,0x0000a16 3601 RLCF 0x1,0x1,0x0000a18 5000 MOVF 0x0,0x0,0x0000a1a 2402 ADDWF 0x2,0x0,0x0000a1c 6e62 MOVWF 0x62,0x0000a1e 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.c000a20 cfdb MOVFF 0xfdb,0x2000a22 f002000a24 0ef5 MOVLW 0xf5000a26 cfdb MOVFF 0xfdb,0x3000a28 f003000a2a 0e00 MOVLW 0x0000a2c 1602 ANDWF 0x2,0x1,0x0000a2e 0e01 MOVLW 0x1000a30 1603 ANDWF 0x3,0x1,0x0000a32 c003 MOVFF 0x3,0x2000a34 f002000a36 6a03 CLRF 0x3,0x0000a38 0e01 MOVLW 0x1000a3a 6ee7 MOVWF 0xe7,0x0000a3c 0ef1 MOVLW 0xf1000a3e cfdb MOVFF 0xfdb,0x0000a40 f000000a42 0ef2 MOVLW 0xf2000a44 cfdb MOVFF 0xfdb,0x1000a46 f001000a48 50e7 MOVF 0xe7,0x0,0x0000a4a 1600 ANDWF 0x0,0x1,0x0000a4c 6a01 CLRF 0x1,0x0000a4e 0e07 MOVLW 0x7000a50 90d8 BCF 0xd8,0x0,0x0000a52 3600 RLCF 0x0,0x1,0x0000a54 3601 RLCF 0x1,0x1,0x0000a56 04e8 DECF 0xe8,0x0,0x0000a58 e1fb BNZ 0xa50000a5a 0ef3 MOVLW 0xf3000a5c 50db MOVF 0xdb,0x0,0x0000a5e 0b3f ANDLW 0x3f000a60 24e8 ADDWF 0xe8,0x0,0x0000a62 2400 ADDWF 0x0,0x0,0x0000a64 2402 ADDWF 0x2,0x0,0x0000a66 6e63 MOVWF 0x63,0x0000a68 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a6a 6ee7 MOVWF 0xe7,0x0000a6c 0ef4 MOVLW 0xf4000a6e cfdb MOVFF 0xfdb,0x0000a70 f000000a72 0ef5 MOVLW 0xf5000a74 cfdb MOVFF 0xfdb,0x1000a76 f001000a78 50e7 MOVF 0xe7,0x0,0x0000a7a 1600 ANDWF 0x0,0x1,0x0000a7c 6a01 CLRF 0x1,0x0000a7e 5000 MOVF 0x0,0x0,0x0000a80 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000a82 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000a84 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000a86 50db MOVF 0xdb,0x0,0x0000a88 0808 SUBLW 0x8000a8a e203 BC 0xa92000a8c 0e08 MOVLW 0x8000a8e 6e65 MOVWF 0x65,0x0000a90 d003 BRA 0xa98000a92 0ef6 MOVLW 0xf6000a94 50db MOVF 0xdb,0x0,0x0000a96 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.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.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.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 0eef MOVLW 0xef 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 c0b5 MOVFF 0xb5,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000af8 f010000afa c0b6 MOVFF 0xb6,0x11000afc f011000afe c0b7 MOVFF 0xb7,0x12000b00 f012000b02 c0b8 MOVFF 0xb8,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