Rev 96 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Wed Nov 15 09:30:40 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 21:11:45 +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: 96 $ 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.c#include <EEaccess.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 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.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; 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 = ACK_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.c// Inits F:\MCP\projects\CAN\canBoot\Source\Main.c000044 dbd9 RCALL 0x7f8 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 dbde RCALL 0x804 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 ec8a CALL 0xb14,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.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBoot\Source\Main.c000060 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBoot\Source\Main.c000062 6ee6 MOVWF 0xe6,0x0000064 6ae6 CLRF 0xe6,0x0000066 ec94 CALL 0xb28,0x0000068 f00500006a 52e5 MOVF 0xe5,0x1,0x000006c 52e5 MOVF 0xe5,0x1,0x000006e 082a SUBLW 0x2a000070 e12b BNZ 0xc8{ F:\MCP\projects\CAN\canBoot\Source\Main.c000072 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBoot\Source\Main.c000074 6ee6 MOVWF 0xe6,0x0000076 6ae6 CLRF 0xe6,0x0000078 ec94 CALL 0xb28,0x000007a f00500007c 52e5 MOVF 0xe5,0x1,0x000007e 52e5 MOVF 0xe5,0x1,0x0000080 6e00 MOVWF 0x0,0x0000082 c000 MOVFF 0x0,0x1000084 f001000086 6a00 CLRF 0x0,0x0000088 c000 MOVFF 0x0,0xfe600008a ffe600008c c001 MOVFF 0x1,0xfe600008e ffe6000090 0e02 MOVLW 0x2000092 6ee6 MOVWF 0xe6,0x0000094 6ae6 CLRF 0xe6,0x0000096 ec94 CALL 0xb28,0x0000098 f00500009a 52e5 MOVF 0xe5,0x1,0x000009c 52e5 MOVF 0xe5,0x1,0x000009e 52e5 MOVF 0xe5,0x1,0x00000a0 cfe7 MOVFF 0xfe7,0x10000a2 f0010000a4 52e5 MOVF 0xe5,0x1,0x00000a6 cfe7 MOVFF 0xfe7,0x00000a8 f0000000aa 0100 MOVLB 0x00000ac 2400 ADDWF 0x0,0x0,0x00000ae 6fbb MOVWF 0xbb,0x10000b0 0e00 MOVLW 0x00000b2 2001 ADDWFC 0x1,0x0,0x00000b4 6fbc MOVWF 0xbc,0x10000b6 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBoot\Source\Main.c0000b8 6ee6 MOVWF 0xe6,0x00000ba 6ae6 CLRF 0xe6,0x00000bc ec94 CALL 0xb28,0x00000be f0050000c0 52e5 MOVF 0xe5,0x1,0x00000c2 52e5 MOVF 0xe5,0x1,0x00000c4 0100 MOVLB 0x00000c6 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.c0007e2 d472 BRA 0xc8 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.c0000c8 dbc6 RCALL 0x856 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c0000ca 6ee7 MOVWF 0xe7,0x00000cc 0e14 MOVLW 0x140000ce cfe7 MOVFF 0xfe7,0xfdb0000d0 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c0000d2 0100 MOVLB 0x0 tickSubCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c0000d4 2bb7 INCF 0xb7,0x1,0x10000d6 0e00 MOVLW 0x00000d8 23b8 ADDWFC 0xb8,0x1,0x10000da 23b9 ADDWFC 0xb9,0x1,0x10000dc 23ba ADDWFC 0xba,0x1,0x10000de 80d8 BSF 0xd8,0x0,0x0 if (tickSubCounter>TICK_SUB_COUNTER_10MS) F:\MCP\projects\CAN\canBoot\Source\Main.c0000e0 0e38 MOVLW 0x380000e2 0100 MOVLB 0x00000e4 55b7 SUBFWB 0xb7,0x0,0x10000e6 0e01 MOVLW 0x10000e8 55b8 SUBFWB 0xb8,0x0,0x10000ea 0e00 MOVLW 0x00000ec 55b9 SUBFWB 0xb9,0x0,0x10000ee 0e00 MOVLW 0x00000f0 55ba SUBFWB 0xba,0x0,0x10000f2 e20c BC 0x10c{ F:\MCP\projects\CAN\canBoot\Source\Main.c0000f4 0100 MOVLB 0x0 tickCounter++; F:\MCP\projects\CAN\canBoot\Source\Main.c0000f6 2bb3 INCF 0xb3,0x1,0x10000f8 0e00 MOVLW 0x00000fa 23b4 ADDWFC 0xb4,0x1,0x10000fc 23b5 ADDWFC 0xb5,0x1,0x10000fe 23b6 ADDWFC 0xb6,0x1,0x1000100 0100 MOVLB 0x0 tickSubCounter=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000102 6bb7 CLRF 0xb7,0x1000104 6bb8 CLRF 0xb8,0x1000106 6bb9 CLRF 0xb9,0x1000108 6bba CLRF 0xba,0x100010a 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.c00010c 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c00010e 51be MOVF 0xbe,0x0,0x1000110 0a05 XORLW 0x5000112 e101 BNZ 0x116000114 d360 BRA 0x7d6000116 0a01 XORLW 0x1000118 e101 BNZ 0x11c00011a d2ae BRA 0x67800011c 0a07 XORLW 0x700011e e101 BNZ 0x122000120 d1bc BRA 0x49a000122 0a01 XORLW 0x1000124 e101 BNZ 0x128000126 d110 BRA 0x348000128 0a03 XORLW 0x300012a e101 BNZ 0x12e00012c d0b9 BRA 0x2a000012e 0a01 XORLW 0x1000130 e001 BZ 0x134000132 d354 BRA 0x7dc{ 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.c000134 0e14 MOVLW 0x14 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_INIT && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c000136 04db DECF 0xdb,0x0,0x0000138 e173 BNZ 0x22000013a 0100 MOVLB 0x000013c 5160 MOVF 0x60,0x0,0x100013e e170 BNZ 0x220000140 0100 MOVLB 0x0000142 0e01 MOVLW 0x1000144 1961 XORWF 0x61,0x0,0x1000146 e101 BNZ 0x14a000148 5162 MOVF 0x62,0x0,0x100014a e16a BNZ 0x22000014c c06c MOVFF 0x6c,0x200014e f002000150 c002 MOVFF 0x2,0x3000152 f003000154 6a02 CLRF 0x2,0x0000156 0100 MOVLB 0x0000158 516b MOVF 0x6b,0x0,0x100015a 0100 MOVLB 0x000015c 2402 ADDWF 0x2,0x0,0x000015e 6e00 MOVWF 0x0,0x0000160 0e00 MOVLW 0x0000162 2003 ADDWFC 0x3,0x0,0x0000164 6e01 MOVWF 0x1,0x0000166 0100 MOVLB 0x0000168 51bb MOVF 0xbb,0x0,0x100016a 1800 XORWF 0x0,0x0,0x000016c e102 BNZ 0x17200016e 51bc MOVF 0xbc,0x0,0x1000170 1801 XORWF 0x1,0x0,0x0000172 e156 BNZ 0x220000174 0100 MOVLB 0x0000176 51bd MOVF 0xbd,0x0,0x1000178 0100 MOVLB 0x000017a 5d63 SUBWF 0x63,0x0,0x100017c e151 BNZ 0x220{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c00017e c069 MOVFF 0x69,0x0 pgmAddress = (((DWORD)cm.data[BOOT_DATA_ADDRU_INDEX])<<16)+(((DWORD)cm.data[BOOT_DATA_ADDRH_INDEX])<<8)+((DWORD)cm.data[BOOT_DATA_ADDRL_INDEX]); F:\MCP\projects\CAN\canBoot\Source\Main.c000180 f000000182 6a01 CLRF 0x1,0x0000184 6a02 CLRF 0x2,0x0000186 6a03 CLRF 0x3,0x0000188 0e10 MOVLW 0x1000018a 0b1f ANDLW 0x1f00018c e007 BZ 0x19c00018e 90d8 BCF 0xd8,0x0,0x0000190 3600 RLCF 0x0,0x1,0x0000192 3601 RLCF 0x1,0x1,0x0000194 3602 RLCF 0x2,0x1,0x0000196 3603 RLCF 0x3,0x1,0x0000198 06e8 DECF 0xe8,0x1,0x000019a e1f9 BNZ 0x18e00019c c068 MOVFF 0x68,0x400019e f0040001a0 6a05 CLRF 0x5,0x00001a2 6a06 CLRF 0x6,0x00001a4 6a07 CLRF 0x7,0x00001a6 0e08 MOVLW 0x80001a8 0b1f ANDLW 0x1f0001aa e007 BZ 0x1ba0001ac 90d8 BCF 0xd8,0x0,0x00001ae 3604 RLCF 0x4,0x1,0x00001b0 3605 RLCF 0x5,0x1,0x00001b2 3606 RLCF 0x6,0x1,0x00001b4 3607 RLCF 0x7,0x1,0x00001b6 06e8 DECF 0xe8,0x1,0x00001b8 e1f9 BNZ 0x1ac0001ba 5004 MOVF 0x4,0x0,0x00001bc 2600 ADDWF 0x0,0x1,0x00001be 5005 MOVF 0x5,0x0,0x00001c0 2201 ADDWFC 0x1,0x1,0x00001c2 5006 MOVF 0x6,0x0,0x00001c4 2202 ADDWFC 0x2,0x1,0x00001c6 5007 MOVF 0x7,0x0,0x00001c8 2203 ADDWFC 0x3,0x1,0x00001ca c067 MOVFF 0x67,0x80001cc f0080001ce 6a09 CLRF 0x9,0x00001d0 6a0a CLRF 0xa,0x00001d2 6a0b CLRF 0xb,0x00001d4 5000 MOVF 0x0,0x0,0x00001d6 2408 ADDWF 0x8,0x0,0x00001d8 0100 MOVLB 0x00001da 6fc7 MOVWF 0xc7,0x10001dc 5001 MOVF 0x1,0x0,0x00001de 2009 ADDWFC 0x9,0x0,0x00001e0 0100 MOVLB 0x00001e2 6fc8 MOVWF 0xc8,0x10001e4 5002 MOVF 0x2,0x0,0x00001e6 200a ADDWFC 0xa,0x0,0x00001e8 0100 MOVLB 0x00001ea 6fc9 MOVWF 0xc9,0x10001ec 5003 MOVF 0x3,0x0,0x00001ee 200b ADDWFC 0xb,0x0,0x00001f0 0100 MOVLB 0x00001f2 6fca MOVWF 0xca,0x10001f4 c064 MOVFF 0x64,0xc3 programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c0001f6 f0c30001f8 c065 MOVFF 0x65,0xc40001fa f0c40001fc ec8a CALL 0xb14,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c0001fe f005000200 c010 MOVFF 0x10,0xbf000202 f0bf000204 c011 MOVFF 0x11,0xc0000206 f0c0000208 c012 MOVFF 0x12,0xc100020a f0c100020c c013 MOVFF 0x13,0xc200020e f0c2000210 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000212 6bc5 CLRF 0xc5,0x1000214 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000216 0e02 MOVLW 0x2000218 6fc6 MOVWF 0xc6,0x100021a 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00021c 0e01 MOVLW 0x100021e 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.c000220 cfd9 MOVFF 0xfd9,0xfe9 if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c000222 ffe9000224 cfda MOVFF 0xfda,0xfea000226 ffea000228 cfee MOVFF 0xfee,0x400022a f00400022c cfee MOVFF 0xfee,0x500022e f005000230 cfee MOVFF 0xfee,0x6000232 f006000234 cfef MOVFF 0xfef,0x7000236 f007000238 c004 MOVFF 0x4,0xfe600023a ffe600023c c005 MOVFF 0x5,0xfe600023e ffe6000240 c006 MOVFF 0x6,0xfe6000242 ffe6000244 c007 MOVFF 0x7,0xfe6000246 ffe6000248 ec8a CALL 0xb14,0x000024a f00500024c 52e5 MOVF 0xe5,0x1,0x000024e cfe7 MOVFF 0xfe7,0x7000250 f007000252 52e5 MOVF 0xe5,0x1,0x0000254 cfe7 MOVFF 0xfe7,0x6000256 f006000258 52e5 MOVF 0xe5,0x1,0x000025a cfe7 MOVFF 0xfe7,0x500025c f00500025e 52e5 MOVF 0xe5,0x1,0x0000260 cfe7 MOVFF 0xfe7,0x4000262 f004000264 0100 MOVLB 0x0000266 5004 MOVF 0x4,0x0,0x0000268 5c10 SUBWF 0x10,0x0,0x000026a 6e00 MOVWF 0x0,0x000026c 0100 MOVLB 0x000026e 5005 MOVF 0x5,0x0,0x0000270 5811 SUBWFB 0x11,0x0,0x0000272 6e01 MOVWF 0x1,0x0000274 0100 MOVLB 0x0000276 5006 MOVF 0x6,0x0,0x0000278 5812 SUBWFB 0x12,0x0,0x000027a 6e02 MOVWF 0x2,0x000027c 0100 MOVLB 0x000027e 5007 MOVF 0x7,0x0,0x0000280 5813 SUBWFB 0x13,0x0,0x0000282 6e03 MOVWF 0x3,0x0000284 80d8 BSF 0xd8,0x0,0x0000286 0ef4 MOVLW 0xf4000288 5400 SUBFWB 0x0,0x0,0x000028a 0e01 MOVLW 0x100028c 5401 SUBFWB 0x1,0x0,0x000028e 0e00 MOVLW 0x0000290 5402 SUBFWB 0x2,0x0,0x0000292 0e00 MOVLW 0x0000294 5403 SUBFWB 0x3,0x0,0x0000296 e203 BC 0x29e{ F:\MCP\projects\CAN\canBoot\Source\Main.c000298 0100 MOVLB 0x0 pgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00029a 0e05 MOVLW 0x500029c 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c00029e d2a1 BRA 0x7e2 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.c0002a0 0e05 MOVLW 0x5 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a2 6adb CLRF 0xdb,0x00002a4 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a6 6ef3 MOVWF 0xf3,0x00002a8 0e06 MOVLW 0x60002aa cff3 MOVFF 0xff3,0xfdb0002ac ffdb0002ae 0e07 MOVLW 0x70002b0 6adb CLRF 0xdb,0x00002b2 0e08 MOVLW 0x8 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c0002b4 c0bd MOVFF 0xbd,0xfdb0002b6 ffdb0002b8 0e09 MOVLW 0x9 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c0002ba c0bb MOVFF 0xbb,0xfdb0002bc ffdb0002be 0e0a MOVLW 0xa0002c0 c0bc MOVFF 0xbc,0xfdb0002c2 ffdb0002c4 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c0002c6 6ef3 MOVWF 0xf3,0x00002c8 0e0b MOVLW 0xb0002ca cff3 MOVFF 0xff3,0xfdb0002cc ffdb0002ce 0e10 MOVLW 0x10 outCm.data[BOOT_DATA_ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c0002d0 c0c5 MOVFF 0xc5,0xfdb0002d2 ffdb0002d4 ec8a CALL 0xb14,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c0002d6 f0050002d8 c010 MOVFF 0x10,0xbf0002da f0bf0002dc c011 MOVFF 0x11,0xc00002de f0c00002e0 c012 MOVFF 0x12,0xc10002e2 f0c10002e4 c013 MOVFF 0x13,0xc20002e6 f0c20002e8 c0c6 MOVFF 0xc6,0xbe pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c0002ea f0beF:\MCP\projects\CAN\canBoot\Source\Main.c0002ec 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c0002ee 6ee6 MOVWF 0xe6,0x00002f0 50d9 MOVF 0xd9,0x0,0x00002f2 0f05 ADDLW 0x50002f4 6ee9 MOVWF 0xe9,0x00002f6 cfda MOVFF 0xfda,0xfea0002f8 ffea0002fa cfee MOVFF 0xfee,0xfe60002fc ffe60002fe cfee MOVFF 0xfee,0xfe6000300 ffe6000302 cfee MOVFF 0xfee,0xfe6000304 ffe6000306 cfee MOVFF 0xfee,0xfe6000308 ffe600030a cfee MOVFF 0xfee,0xfe600030c ffe600030e cfee MOVFF 0xfee,0xfe6000310 ffe6000312 cfee MOVFF 0xfee,0xfe6000314 ffe6000316 cfee MOVFF 0xfee,0xfe6000318 ffe600031a cfee MOVFF 0xfee,0xfe600031c ffe600031e cfee MOVFF 0xfee,0xfe6000320 ffe6000322 cfee MOVFF 0xfee,0xfe6000324 ffe6000326 cfee MOVFF 0xfee,0xfe6000328 ffe600032a cfee MOVFF 0xfee,0xfe600032c ffe600032e cfee MOVFF 0xfee,0xfe6000330 ffe6000332 cfee MOVFF 0xfee,0xfe6000334 ffe6000336 db18 RCALL 0x968000338 6e00 MOVWF 0x0,0x000033a 0e10 MOVLW 0x1000033c 5ee1 SUBWF 0xe1,0x1,0x000033e 5000 MOVF 0x0,0x0,0x0000340 0900 IORLW 0x0000342 e101 BNZ 0x346000344 d7d3 BRA 0x2ec000346 d24d BRA 0x7e2 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.c000348 dbe5 RCALL 0xb14 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c00034a 0100 MOVLB 0x000034c 51bf MOVF 0xbf,0x0,0x100034e 5c10 SUBWF 0x10,0x0,0x0000350 6e00 MOVWF 0x0,0x0000352 0100 MOVLB 0x0000354 51c0 MOVF 0xc0,0x0,0x1000356 5811 SUBWFB 0x11,0x0,0x0000358 6e01 MOVWF 0x1,0x000035a 0100 MOVLB 0x000035c 51c1 MOVF 0xc1,0x0,0x100035e 5812 SUBWFB 0x12,0x0,0x0000360 6e02 MOVWF 0x2,0x0000362 0100 MOVLB 0x0000364 51c2 MOVF 0xc2,0x0,0x1000366 5813 SUBWFB 0x13,0x0,0x0000368 6e03 MOVWF 0x3,0x000036a 80d8 BSF 0xd8,0x0,0x000036c 0e0e MOVLW 0xe00036e 5400 SUBFWB 0x0,0x0,0x0000370 0e00 MOVLW 0x0000372 5401 SUBFWB 0x1,0x0,0x0000374 0e00 MOVLW 0x0000376 5402 SUBFWB 0x2,0x0,0x0000378 0e00 MOVLW 0x000037a 5403 SUBFWB 0x3,0x0,0x000037c e208 BC 0x38e{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c00037e 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000380 6bc5 CLRF 0xc5,0x1000382 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000384 0e02 MOVLW 0x2000386 6fc6 MOVWF 0xc6,0x1000388 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00038a 0e01 MOVLW 0x100038c 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.c00038e 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.c000390 04db DECF 0xdb,0x0,0x0000392 e001 BZ 0x396000394 d081 BRA 0x498000396 0100 MOVLB 0x0000398 5160 MOVF 0x60,0x0,0x100039a e001 BZ 0x39e00039c d07d BRA 0x49800039e 0e03 MOVLW 0x30003a0 0100 MOVLB 0x00003a2 1561 ANDWF 0x61,0x0,0x10003a4 6e00 MOVWF 0x0,0x00003a6 6a01 CLRF 0x1,0x00003a8 0e03 MOVLW 0x30003aa 1800 XORWF 0x0,0x0,0x00003ac e101 BNZ 0x3b00003ae 5001 MOVF 0x1,0x0,0x00003b0 e173 BNZ 0x4980003b2 0100 MOVLB 0x00003b4 51bd MOVF 0xbd,0x0,0x10003b6 0100 MOVLB 0x00003b8 5d63 SUBWF 0x63,0x0,0x10003ba e16e BNZ 0x4980003bc 0100 MOVLB 0x00003be 51c3 MOVF 0xc3,0x0,0x10003c0 0100 MOVLB 0x00003c2 1964 XORWF 0x64,0x0,0x10003c4 e104 BNZ 0x3ce0003c6 0100 MOVLB 0x00003c8 51c4 MOVF 0xc4,0x0,0x10003ca 0100 MOVLB 0x00003cc 1965 XORWF 0x65,0x0,0x10003ce e164 BNZ 0x498{ F:\MCP\projects\CAN\canBoot\Source\Main.c0003d0 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c0003d2 0100 MOVLB 0x00003d4 1561 ANDWF 0x61,0x0,0x10003d6 6e00 MOVWF 0x0,0x00003d8 6a01 CLRF 0x1,0x00003da 90d8 BCF 0xd8,0x0,0x00003dc 3201 RRCF 0x1,0x1,0x00003de 3200 RRCF 0x0,0x1,0x00003e0 90d8 BCF 0xd8,0x0,0x00003e2 3201 RRCF 0x1,0x1,0x00003e4 3200 RRCF 0x0,0x1,0x00003e6 0e08 MOVLW 0x80003e8 0200 MULWF 0x0,0x00003ea 0e15 MOVLW 0x150003ec cff3 MOVFF 0xff3,0xfdb0003ee ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c0003f0 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c0003f2 0e08 MOVLW 0x80003f4 6fcb MOVWF 0xcb,0x10003f6 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.c0003f8 50db MOVF 0xdb,0x0,0x00003fa 6aea CLRF 0xea,0x00003fc 0f6f ADDLW 0x6f0003fe 6ee9 MOVWF 0xe9,0x0000400 0e00 MOVLW 0x0000402 22ea ADDWFC 0xea,0x1,0x0000404 c067 MOVFF 0x67,0xfef000406 ffef000408 0e15 MOVLW 0x1500040a 28db INCF 0xdb,0x0,0x000040c 6aea CLRF 0xea,0x000040e 0f6f ADDLW 0x6f000410 6ee9 MOVWF 0xe9,0x0000412 0e00 MOVLW 0x0000414 22ea ADDWFC 0xea,0x1,0x0000416 c068 MOVFF 0x68,0xfef000418 ffef00041a 0e15 MOVLW 0x1500041c 50db MOVF 0xdb,0x0,0x000041e 0f02 ADDLW 0x2000420 6aea CLRF 0xea,0x0000422 0f6f ADDLW 0x6f000424 6ee9 MOVWF 0xe9,0x0000426 0e00 MOVLW 0x0000428 22ea ADDWFC 0xea,0x1,0x000042a c069 MOVFF 0x69,0xfef00042c ffef00042e 0e15 MOVLW 0x15000430 50db MOVF 0xdb,0x0,0x0000432 0f03 ADDLW 0x3000434 6aea CLRF 0xea,0x0000436 0f6f ADDLW 0x6f000438 6ee9 MOVWF 0xe9,0x000043a 0e00 MOVLW 0x000043c 22ea ADDWFC 0xea,0x1,0x000043e c06a MOVFF 0x6a,0xfef000440 ffef000442 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.c000444 50db MOVF 0xdb,0x0,0x0000446 0f04 ADDLW 0x4000448 6aea CLRF 0xea,0x000044a 0f6f ADDLW 0x6f00044c 6ee9 MOVWF 0xe9,0x000044e 0e00 MOVLW 0x0000450 22ea ADDWFC 0xea,0x1,0x0000452 c06b MOVFF 0x6b,0xfef000454 ffef000456 0e15 MOVLW 0x15000458 50db MOVF 0xdb,0x0,0x000045a 0f05 ADDLW 0x500045c 6aea CLRF 0xea,0x000045e 0f6f ADDLW 0x6f000460 6ee9 MOVWF 0xe9,0x0000462 0e00 MOVLW 0x0000464 22ea ADDWFC 0xea,0x1,0x0000466 c06c MOVFF 0x6c,0xfef000468 ffef00046a 0e15 MOVLW 0x1500046c 50db MOVF 0xdb,0x0,0x000046e 0f06 ADDLW 0x6000470 6aea CLRF 0xea,0x0000472 0f6f ADDLW 0x6f000474 6ee9 MOVWF 0xe9,0x0000476 0e00 MOVLW 0x0000478 22ea ADDWFC 0xea,0x1,0x000047a c06d MOVFF 0x6d,0xfef00047c ffef00047e 0e15 MOVLW 0x15000480 50db MOVF 0xdb,0x0,0x0000482 0f07 ADDLW 0x7000484 6aea CLRF 0xea,0x0000486 0f6f ADDLW 0x6f000488 6ee9 MOVWF 0xe9,0x000048a 0e00 MOVLW 0x000048c 22ea ADDWFC 0xea,0x1,0x000048e c06e MOVFF 0x6e,0xfef000490 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000492 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000494 0e03 MOVLW 0x3000496 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.c000498 d1a4 BRA 0x7e2 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.c00049a 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.c00049c 04db DECF 0xdb,0x0,0x000049e e001 BZ 0x4a20004a0 d081 BRA 0x5a40004a2 0100 MOVLB 0x00004a4 5160 MOVF 0x60,0x0,0x10004a6 e001 BZ 0x4aa0004a8 d07d BRA 0x5a40004aa 0e03 MOVLW 0x30004ac 0100 MOVLB 0x00004ae 1561 ANDWF 0x61,0x0,0x10004b0 6e00 MOVWF 0x0,0x00004b2 6a01 CLRF 0x1,0x00004b4 0e03 MOVLW 0x30004b6 1800 XORWF 0x0,0x0,0x00004b8 e101 BNZ 0x4bc0004ba 5001 MOVF 0x1,0x0,0x00004bc e173 BNZ 0x5a40004be 0100 MOVLB 0x00004c0 51bd MOVF 0xbd,0x0,0x10004c2 0100 MOVLB 0x00004c4 5d63 SUBWF 0x63,0x0,0x10004c6 e16e BNZ 0x5a40004c8 0100 MOVLB 0x00004ca 51c3 MOVF 0xc3,0x0,0x10004cc 0100 MOVLB 0x00004ce 1964 XORWF 0x64,0x0,0x10004d0 e104 BNZ 0x4da0004d2 0100 MOVLB 0x00004d4 51c4 MOVF 0xc4,0x0,0x10004d6 0100 MOVLB 0x00004d8 1965 XORWF 0x65,0x0,0x10004da e164 BNZ 0x5a4{ F:\MCP\projects\CAN\canBoot\Source\Main.c0004dc 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c0004de 0100 MOVLB 0x00004e0 1561 ANDWF 0x61,0x0,0x10004e2 6e00 MOVWF 0x0,0x00004e4 6a01 CLRF 0x1,0x00004e6 90d8 BCF 0xd8,0x0,0x00004e8 3201 RRCF 0x1,0x1,0x00004ea 3200 RRCF 0x0,0x1,0x00004ec 90d8 BCF 0xd8,0x0,0x00004ee 3201 RRCF 0x1,0x1,0x00004f0 3200 RRCF 0x0,0x1,0x00004f2 0e08 MOVLW 0x80004f4 0200 MULWF 0x0,0x00004f6 0e16 MOVLW 0x160004f8 cff3 MOVFF 0xff3,0xfdb0004fa ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c0004fc 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.c0004fe 50db MOVF 0xdb,0x0,0x0000500 6aea CLRF 0xea,0x0000502 0f6f ADDLW 0x6f000504 6ee9 MOVWF 0xe9,0x0000506 0e00 MOVLW 0x0000508 22ea ADDWFC 0xea,0x1,0x000050a c067 MOVFF 0x67,0xfef00050c ffef00050e 0e16 MOVLW 0x16000510 28db INCF 0xdb,0x0,0x0000512 6aea CLRF 0xea,0x0000514 0f6f ADDLW 0x6f000516 6ee9 MOVWF 0xe9,0x0000518 0e00 MOVLW 0x000051a 22ea ADDWFC 0xea,0x1,0x000051c c068 MOVFF 0x68,0xfef00051e ffef000520 0e16 MOVLW 0x16000522 50db MOVF 0xdb,0x0,0x0000524 0f02 ADDLW 0x2000526 6aea CLRF 0xea,0x0000528 0f6f ADDLW 0x6f00052a 6ee9 MOVWF 0xe9,0x000052c 0e00 MOVLW 0x000052e 22ea ADDWFC 0xea,0x1,0x0000530 c069 MOVFF 0x69,0xfef000532 ffef000534 0e16 MOVLW 0x16000536 50db MOVF 0xdb,0x0,0x0000538 0f03 ADDLW 0x300053a 6aea CLRF 0xea,0x000053c 0f6f ADDLW 0x6f00053e 6ee9 MOVWF 0xe9,0x0000540 0e00 MOVLW 0x0000542 22ea ADDWFC 0xea,0x1,0x0000544 c06a MOVFF 0x6a,0xfef000546 ffef000548 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.c00054a 50db MOVF 0xdb,0x0,0x000054c 0f04 ADDLW 0x400054e 6aea CLRF 0xea,0x0000550 0f6f ADDLW 0x6f000552 6ee9 MOVWF 0xe9,0x0000554 0e00 MOVLW 0x0000556 22ea ADDWFC 0xea,0x1,0x0000558 c06b MOVFF 0x6b,0xfef00055a ffef00055c 0e16 MOVLW 0x1600055e 50db MOVF 0xdb,0x0,0x0000560 0f05 ADDLW 0x5000562 6aea CLRF 0xea,0x0000564 0f6f ADDLW 0x6f000566 6ee9 MOVWF 0xe9,0x0000568 0e00 MOVLW 0x000056a 22ea ADDWFC 0xea,0x1,0x000056c c06c MOVFF 0x6c,0xfef00056e ffef000570 0e16 MOVLW 0x16000572 50db MOVF 0xdb,0x0,0x0000574 0f06 ADDLW 0x6000576 6aea CLRF 0xea,0x0000578 0f6f ADDLW 0x6f00057a 6ee9 MOVWF 0xe9,0x000057c 0e00 MOVLW 0x000057e 22ea ADDWFC 0xea,0x1,0x0000580 c06d MOVFF 0x6d,0xfef000582 ffef000584 0e16 MOVLW 0x16000586 50db MOVF 0xdb,0x0,0x0000588 0f07 ADDLW 0x700058a 6aea CLRF 0xea,0x000058c 0f6f ADDLW 0x6f00058e 6ee9 MOVWF 0xe9,0x0000590 0e00 MOVLW 0x0000592 22ea ADDWFC 0xea,0x1,0x0000594 c06e MOVFF 0x6e,0xfef000596 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000598 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c00059a 0100 MOVLB 0x000059c 27cb ADDWF 0xcb,0x1,0x100059e 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005a0 0e03 MOVLW 0x30005a2 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.c0005a4 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.c0005a6 04db DECF 0xdb,0x0,0x00005a8 e120 BNZ 0x5ea0005aa 0100 MOVLB 0x00005ac 5160 MOVF 0x60,0x0,0x10005ae e11d BNZ 0x5ea0005b0 0100 MOVLB 0x00005b2 0e02 MOVLW 0x20005b4 1961 XORWF 0x61,0x0,0x10005b6 e101 BNZ 0x5ba0005b8 5162 MOVF 0x62,0x0,0x10005ba e117 BNZ 0x5ea0005bc 0100 MOVLB 0x00005be 51bd MOVF 0xbd,0x0,0x10005c0 0100 MOVLB 0x00005c2 5d63 SUBWF 0x63,0x0,0x10005c4 e112 BNZ 0x5ea0005c6 0100 MOVLB 0x00005c8 51c3 MOVF 0xc3,0x0,0x10005ca 0100 MOVLB 0x00005cc 1964 XORWF 0x64,0x0,0x10005ce e104 BNZ 0x5d80005d0 0100 MOVLB 0x00005d2 51c4 MOVF 0xc4,0x0,0x10005d4 0100 MOVLB 0x00005d6 1965 XORWF 0x65,0x0,0x10005d8 e108 BNZ 0x5ea{ 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.c0005da 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005dc 6bc5 CLRF 0xc5,0x10005de 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005e0 0e02 MOVLW 0x20005e2 6fc6 MOVWF 0xc6,0x10005e4 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005e6 0e01 MOVLW 0x10005e8 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.c0005ea 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.c0005ec 04db DECF 0xdb,0x0,0x00005ee e138 BNZ 0x6600005f0 0100 MOVLB 0x00005f2 5160 MOVF 0x60,0x0,0x10005f4 e135 BNZ 0x6600005f6 0100 MOVLB 0x00005f8 0e05 MOVLW 0x50005fa 1961 XORWF 0x61,0x0,0x10005fc e101 BNZ 0x6000005fe 5162 MOVF 0x62,0x0,0x1000600 e12f BNZ 0x660000602 0100 MOVLB 0x0000604 51bd MOVF 0xbd,0x0,0x1000606 0100 MOVLB 0x0000608 5d63 SUBWF 0x63,0x0,0x100060a e12a BNZ 0x66000060c 0100 MOVLB 0x000060e 51c3 MOVF 0xc3,0x0,0x1000610 0100 MOVLB 0x0000612 1964 XORWF 0x64,0x0,0x1000614 e104 BNZ 0x61e000616 0100 MOVLB 0x0000618 51c4 MOVF 0xc4,0x0,0x100061a 0100 MOVLB 0x000061c 1965 XORWF 0x65,0x0,0x100061e e120 BNZ 0x660{ 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.c000620 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c000622 51cb MOVF 0xcb,0x0,0x1000624 e109 BNZ 0x638{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c000626 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000628 6bc5 CLRF 0xc5,0x100062a 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00062c 0e05 MOVLW 0x500062e 6fc6 MOVWF 0xc6,0x1000630 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000632 0e01 MOVLW 0x1000634 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000636 d014 BRA 0x660 else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c000638 0e40 MOVLW 0x4000063a 0100 MOVLB 0x000063c 5dcb SUBWF 0xcb,0x0,0x100063e e00a BZ 0x654{ F:\MCP\projects\CAN\canBoot\Source\Main.c000640 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000642 0e01 MOVLW 0x1000644 6fc5 MOVWF 0xc5,0x1000646 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000648 0e02 MOVLW 0x200064a 6fc6 MOVWF 0xc6,0x100064c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00064e 0e01 MOVLW 0x1000650 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000652 d006 BRA 0x660 else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000654 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c000656 0e04 MOVLW 0x4000658 6fbe MOVWF 0xbe,0x100065a 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00065c 0e05 MOVLW 0x500065e 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.c000660 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c000662 0100 MOVLB 0x0000664 5dcb SUBWF 0xcb,0x0,0x1000666 e107 BNZ 0x676{ F:\MCP\projects\CAN\canBoot\Source\Main.c000668 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c00066a 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c00066c 0e04 MOVLW 0x400066e 6fbe MOVWF 0xbe,0x1000670 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000672 0e03 MOVLW 0x3000674 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.c000676 d0b5 BRA 0x7e2 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.c000678 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.c00067a 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c00067c 0100 MOVLB 0x000067e 5dc7 SUBWF 0xc7,0x0,0x1000680 0e10 MOVLW 0x10000682 59c8 SUBWFB 0xc8,0x0,0x1000684 0e00 MOVLW 0x0000686 59c9 SUBWFB 0xc9,0x0,0x1000688 0e00 MOVLW 0x000068a 59ca SUBWFB 0xca,0x0,0x100068c e206 BC 0x69a{ F:\MCP\projects\CAN\canBoot\Source\Main.c00068e 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000690 0e01 MOVLW 0x1000692 6fc5 MOVWF 0xc5,0x1000694 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000696 0e01 MOVLW 0x1000698 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.c00069a c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00069c f00000069e c0c8 MOVFF 0xc8,0x10006a0 f0010006a2 c0c9 MOVFF 0xc9,0x20006a4 f0020006a6 c0ca MOVFF 0xca,0x30006a8 f0030006aa 6a00 CLRF 0x0,0x00006ac 6a01 CLRF 0x1,0x00006ae 6a03 CLRF 0x3,0x00006b0 0e10 MOVLW 0x100006b2 90d8 BCF 0xd8,0x0,0x00006b4 3203 RRCF 0x3,0x1,0x00006b6 3202 RRCF 0x2,0x1,0x00006b8 3201 RRCF 0x1,0x1,0x00006ba 3200 RRCF 0x0,0x1,0x00006bc 06e8 DECF 0xe8,0x1,0x00006be e1f9 BNZ 0x6b20006c0 5000 MOVF 0x0,0x0,0x00006c2 6ef8 MOVWF 0xf8,0x00006c4 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006c6 f0000006c8 c0c8 MOVFF 0xc8,0x10006ca f0010006cc c0c9 MOVFF 0xc9,0x20006ce f0020006d0 c0ca MOVFF 0xca,0x30006d2 f0030006d4 6a00 CLRF 0x0,0x00006d6 6a02 CLRF 0x2,0x00006d8 6a03 CLRF 0x3,0x00006da 0e08 MOVLW 0x80006dc 90d8 BCF 0xd8,0x0,0x00006de 3203 RRCF 0x3,0x1,0x00006e0 3202 RRCF 0x2,0x1,0x00006e2 3201 RRCF 0x1,0x1,0x00006e4 3200 RRCF 0x0,0x1,0x00006e6 06e8 DECF 0xe8,0x1,0x00006e8 e1f9 BNZ 0x6dc0006ea 5000 MOVF 0x0,0x0,0x00006ec 6ef7 MOVWF 0xf7,0x00006ee 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006f0 51c7 MOVF 0xc7,0x0,0x10006f2 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c0006f4 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.c0006f6 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.c0006f8 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.c0006fa 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.c0006fc 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.c0006fe 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c000700 6ea7 MOVWF 0xa7,0x0000702 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000704 6ea7 MOVWF 0xa7,0x0000706 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.c000708 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.c00070a c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c00070c f00000070e c0c8 MOVFF 0xc8,0x1000710 f001000712 c0c9 MOVFF 0xc9,0x2000714 f002000716 c0ca MOVFF 0xca,0x3000718 f00300071a 6a00 CLRF 0x0,0x000071c 6a01 CLRF 0x1,0x000071e 6a03 CLRF 0x3,0x0000720 0e10 MOVLW 0x10000722 90d8 BCF 0xd8,0x0,0x0000724 3203 RRCF 0x3,0x1,0x0000726 3202 RRCF 0x2,0x1,0x0000728 3201 RRCF 0x1,0x1,0x000072a 3200 RRCF 0x0,0x1,0x000072c 06e8 DECF 0xe8,0x1,0x000072e e1f9 BNZ 0x722000730 5000 MOVF 0x0,0x0,0x0000732 6ef8 MOVWF 0xf8,0x0000734 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000736 f000000738 c0c8 MOVFF 0xc8,0x100073a f00100073c c0c9 MOVFF 0xc9,0x200073e f002000740 c0ca MOVFF 0xca,0x3000742 f003000744 6a00 CLRF 0x0,0x0000746 6a02 CLRF 0x2,0x0000748 6a03 CLRF 0x3,0x000074a 0e08 MOVLW 0x800074c 90d8 BCF 0xd8,0x0,0x000074e 3203 RRCF 0x3,0x1,0x0000750 3202 RRCF 0x2,0x1,0x0000752 3201 RRCF 0x1,0x1,0x0000754 3200 RRCF 0x0,0x1,0x0000756 06e8 DECF 0xe8,0x1,0x0000758 e1f9 BNZ 0x74c00075a 5000 MOVF 0x0,0x0,0x000075c 6ef7 MOVWF 0xf7,0x000075e 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c000760 51c7 MOVF 0xc7,0x0,0x1000762 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c000764 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c000766 6adb CLRF 0xdb,0x0000768 0e3f MOVLW 0x3f00076a 6ef3 MOVWF 0xf3,0x000076c 0e04 MOVLW 0x400076e cfdb MOVFF 0xfdb,0xff4000770 fff4000772 50f3 MOVF 0xf3,0x0,0x0000774 5cf4 SUBWF 0xf4,0x0,0x0000776 e20d BC 0x79200078c 0e04 MOVLW 0x400078e 2adb INCF 0xdb,0x1,0x0000790 d7eb BRA 0x768{ F:\MCP\projects\CAN\canBoot\Source\Main.c000778 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c00077a 50db MOVF 0xdb,0x0,0x000077c 6aea CLRF 0xea,0x000077e 0f6f ADDLW 0x6f000780 6ee9 MOVWF 0xe9,0x0000782 0e00 MOVLW 0x0000784 22ea ADDWFC 0xea,0x1,0x0000786 50ef MOVF 0xef,0x0,0x0000788 6ef5 MOVWF 0xf5,0x000078a d9c2 RCALL 0xb10 TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000792 c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c000794 fff5000796 d9ba RCALL 0xb0c 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.c000798 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.c00079a 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.c00079c 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.c00079e 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.c0007a0 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a2 6ea7 MOVWF 0xa7,0x00007a4 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a6 6ea7 MOVWF 0xa7,0x00007a8 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.c0007aa 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.c0007ac 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b0 0100 MOVLB 0x00007b2 27c7 ADDWF 0xc7,0x1,0x10007b4 0e00 MOVLW 0x00007b6 0100 MOVLB 0x00007b8 23c8 ADDWFC 0xc8,0x1,0x10007ba 0e00 MOVLW 0x00007bc 0100 MOVLB 0x00007be 23c9 ADDWFC 0xc9,0x1,0x10007c0 0e00 MOVLW 0x00007c2 0100 MOVLB 0x00007c4 23ca ADDWFC 0xca,0x1,0x10007c6 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007c8 6bcb CLRF 0xcb,0x10007ca 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0007cc 6bc5 CLRF 0xc5,0x10007ce 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0007d0 0e01 MOVLW 0x10007d2 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c0007d4 d006 BRA 0x7e2 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.c0007d6 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c0007d8 f0080007da d003 BRA 0x7e2 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.c0007dc 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c0007de 6bbe CLRF 0xbe,0x10007e0 d000 BRA 0x7e2 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.c0007e4 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canBoot\Source\Main.c0007e6 5ce1 SUBWF 0xe1,0x0,0x00007e8 e202 BC 0x7ee0007ea 6ae1 CLRF 0xe1,0x00007ec 52e5 MOVF 0xe5,0x1,0x00007ee 6ee1 MOVWF 0xe1,0x00007f0 52e5 MOVF 0xe5,0x1,0x00007f2 cfe7 MOVFF 0xfe7,0xfd90007f4 ffd90007f6 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.c0007f8 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.c0007fa 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.c0007fc 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0007fe 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.c000800 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.c000802 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.c000804 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000806 6e6f MOVWF 0x6f,0x0000808 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c00080a 146e ANDWF 0x6e,0x0,0x000080c 0880 SUBLW 0x8000080e e001 BZ 0x812000810 d7fb BRA 0x808F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000812 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.c000814 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000816 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.c000818 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c00081a 1070 IORWF 0x70,0x0,0x000081c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c00081e 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.c000820 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000822 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000824 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.c000826 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000828 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00082a 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.c00082c 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.c00082e 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.c000830 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000832 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000834 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000836 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000838 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00083a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBoot\Source\Main.c00083c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c00083e 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.c000840 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000842 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c000844 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000846 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.c000848 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.c00084a 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c00084c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c00084e 146e ANDWF 0x6e,0x0,0x0000850 e001 BZ 0x854000852 d7fc BRA 0x84c#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000854 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.c000856 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBoot\Source\Main.c000858 146f ANDWF 0x6f,0x0,0x000085a 0910 IORLW 0x1000085c 6e00 MOVWF 0x0,0x000085e 0e00 MOVLW 0x0000860 1477 ANDWF 0x77,0x0,0x0000862 1000 IORWF 0x0,0x0,0x0000864 6e77 MOVWF 0x77,0x0000866 be60 BTFSC 0x60,0x7,0x0 if (!RXB0CONbits.RXFUL) return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000868 d002 BRA 0x86e00086a 0e00 MOVLW 0x000086c d07c BRA 0x966F:\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.c00086e 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c000870 1461 ANDWF 0x61,0x0,0x0000872 38e8 SWAPF 0xe8,0x0,0x0000874 0b0f ANDLW 0xf000876 0100 MOVLB 0x0000878 6f60 MOVWF 0x60,0x100087a 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.c00087c 1461 ANDWF 0x61,0x0,0x000087e 6e04 MOVWF 0x4,0x0000880 6a05 CLRF 0x5,0x0000882 0e06 MOVLW 0x6000884 90d8 BCF 0xd8,0x0,0x0000886 3604 RLCF 0x4,0x1,0x0000888 3605 RLCF 0x5,0x1,0x000088a 04e8 DECF 0xe8,0x0,0x000088c e1fb BNZ 0x88400088e 0ee0 MOVLW 0xe0000890 1462 ANDWF 0x62,0x0,0x0000892 6e06 MOVWF 0x6,0x0000894 6a07 CLRF 0x7,0x0000896 90d8 BCF 0xd8,0x0,0x0000898 3207 RRCF 0x7,0x1,0x000089a 3206 RRCF 0x6,0x1,0x000089c 90d8 BCF 0xd8,0x0,0x000089e 3207 RRCF 0x7,0x1,0x00008a0 3206 RRCF 0x6,0x1,0x00008a2 5004 MOVF 0x4,0x0,0x00008a4 2406 ADDWF 0x6,0x0,0x00008a6 6e02 MOVWF 0x2,0x00008a8 5005 MOVF 0x5,0x0,0x00008aa 2007 ADDWFC 0x7,0x0,0x00008ac 6e03 MOVWF 0x3,0x00008ae 0e03 MOVLW 0x30008b0 1462 ANDWF 0x62,0x0,0x00008b2 6e08 MOVWF 0x8,0x00008b4 6a09 CLRF 0x9,0x00008b6 90d8 BCF 0xd8,0x0,0x00008b8 3608 RLCF 0x8,0x1,0x00008ba 3609 RLCF 0x9,0x1,0x00008bc 5002 MOVF 0x2,0x0,0x00008be 2408 ADDWF 0x8,0x0,0x00008c0 6e00 MOVWF 0x0,0x00008c2 5003 MOVF 0x3,0x0,0x00008c4 2009 ADDWFC 0x9,0x0,0x00008c6 6e01 MOVWF 0x1,0x00008c8 0e80 MOVLW 0x800008ca 1463 ANDWF 0x63,0x0,0x00008cc 6e0a MOVWF 0xa,0x00008ce 6a0b CLRF 0xb,0x00008d0 0e07 MOVLW 0x70008d2 90d8 BCF 0xd8,0x0,0x00008d4 320b RRCF 0xb,0x1,0x00008d6 320a RRCF 0xa,0x1,0x00008d8 04e8 DECF 0xe8,0x0,0x00008da e1fb BNZ 0x8d20008dc 5000 MOVF 0x0,0x0,0x00008de 240a ADDWF 0xa,0x0,0x00008e0 0100 MOVLB 0x00008e2 6f61 MOVWF 0x61,0x10008e4 5001 MOVF 0x1,0x0,0x00008e6 200b ADDWFC 0xb,0x0,0x00008e8 6f62 MOVWF 0x62,0x10008ea 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0008ec 1463 ANDWF 0x63,0x0,0x00008ee 40e8 RRNCF 0xe8,0x0,0x00008f0 0b7f ANDLW 0x7f0008f2 6f63 MOVWF 0x63,0x10008f4 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0008f6 1463 ANDWF 0x63,0x0,0x00008f8 6e00 MOVWF 0x0,0x00008fa c000 MOVFF 0x0,0x10008fc f0010008fe 6a00 CLRF 0x0,0x0000900 5064 MOVF 0x64,0x0,0x0000902 2400 ADDWF 0x0,0x0,0x0000904 6f64 MOVWF 0x64,0x1000906 0e00 MOVLW 0x0000908 2001 ADDWFC 0x1,0x0,0x000090a 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.c00090c 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.c00090e 0b01 ANDLW 0x1000910 6e02 MOVWF 0x2,0x0000912 5065 MOVF 0x65,0x0,0x0000914 0b02 ANDLW 0x2000916 e001 BZ 0x91a000918 0e01 MOVLW 0x100091a 24e8 ADDWF 0xe8,0x0,0x000091c 6e01 MOVWF 0x1,0x000091e 5065 MOVF 0x65,0x0,0x0000920 0b04 ANDLW 0x4000922 e001 BZ 0x926000924 0e01 MOVLW 0x1000926 0d04 MULLW 0x4000928 cff3 MOVFF 0xff3,0x000092a f00000092c 5065 MOVF 0x65,0x0,0x000092e 0b08 ANDLW 0x8000930 e001 BZ 0x934000932 0e01 MOVLW 0x1000934 0d08 MULLW 0x8000936 50f3 MOVF 0xf3,0x0,0x0000938 2400 ADDWF 0x0,0x0,0x000093a 2401 ADDWF 0x1,0x0,0x000093c 2402 ADDWF 0x2,0x0,0x000093e 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c000940 cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c000942 f067000944 cf67 MOVFF 0xf67,0x68000946 f068000948 cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c00094a f06900094c cf69 MOVFF 0xf69,0x6a00094e f06a000950 cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c000952 f06b000954 cf6b MOVFF 0xf6b,0x6c000956 f06c000958 cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c00095a f06d00095c cf6d MOVFF 0xf6d,0x6e00095e f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c000960 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000962 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000964 d000 BRA 0x966000966 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.c000968 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c00096a ffe600096c cfe1 MOVFF 0xfe1,0xfd900096e ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000970 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000972 b740 BTFSC 0x40,0x3,0x1000974 d004 BRA 0x97e000976 0e00 MOVLW 0x0000978 1477 ANDWF 0x77,0x0,0x000097a 0903 IORLW 0x300097c 6e77 MOVWF 0x77,0x000097e 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000980 b730 BTFSC 0x30,0x3,0x1000982 d004 BRA 0x98c000984 0e00 MOVLW 0x0000986 1477 ANDWF 0x77,0x0,0x0000988 0904 IORLW 0x400098a 6e77 MOVWF 0x77,0x000098c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00098e b720 BTFSC 0x20,0x3,0x1000990 d005 BRA 0x99c000992 0e00 MOVLW 0x0000994 1477 ANDWF 0x77,0x0,0x0000996 0905 IORLW 0x5000998 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c00099a d002 BRA 0x9a0 else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c00099c 0e00 MOVLW 0x000099e d0b0 BRA 0xb00F:\MCP\projects\CAN\canBoot\Source\Main.c0009a0 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0009a2 cfdb MOVFF 0xfdb,0x00009a4 f0000009a6 3400 RLCF 0x0,0x0,0x00009a8 e20e BC 0x9c60009aa 0eef MOVLW 0xef0009ac cfdb MOVFF 0xfdb,0x10009ae f0010009b0 0e03 MOVLW 0x30009b2 6ee7 MOVWF 0xe7,0x00009b4 1801 XORWF 0x1,0x0,0x00009b6 aee8 BTFSS 0xe8,0x7,0x00009b8 d002 BRA 0x9be0009ba 3401 RLCF 0x1,0x0,0x00009bc d003 BRA 0x9c40009be 50e7 MOVF 0xe7,0x0,0x00009c0 80d8 BSF 0xd8,0x0,0x00009c2 5401 SUBFWB 0x1,0x0,0x00009c4 e202 BC 0x9ca0009c6 0eef MOVLW 0xef0009c8 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.c0009ca 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0009cc cfdb MOVFF 0xfdb,0x00009ce f0000009d0 0ef2 MOVLW 0xf20009d2 cfdb MOVFF 0xfdb,0x10009d4 f0010009d6 0ec0 MOVLW 0xc00009d8 1600 ANDWF 0x0,0x1,0x00009da 0e03 MOVLW 0x30009dc 1601 ANDWF 0x1,0x1,0x00009de 0e06 MOVLW 0x60009e0 90d8 BCF 0xd8,0x0,0x00009e2 3201 RRCF 0x1,0x1,0x00009e4 3200 RRCF 0x0,0x1,0x00009e6 04e8 DECF 0xe8,0x0,0x00009e8 e1fb BNZ 0x9e00009ea 0ef0 MOVLW 0xf00009ec 50db MOVF 0xdb,0x0,0x00009ee 0b0f ANDLW 0xf0009f0 0d10 MULLW 0x100009f2 50f3 MOVF 0xf3,0x0,0x00009f4 2400 ADDWF 0x0,0x0,0x00009f6 6e61 MOVWF 0x61,0x00009f8 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0009fa 6ee7 MOVWF 0xe7,0x00009fc 0ef1 MOVLW 0xf10009fe cfdb MOVFF 0xfdb,0x2000a00 f002000a02 0ef2 MOVLW 0xf2000a04 cfdb MOVFF 0xfdb,0x3000a06 f003000a08 50e7 MOVF 0xe7,0x0,0x0000a0a 1602 ANDWF 0x2,0x1,0x0000a0c 6a03 CLRF 0x3,0x0000a0e 90d8 BCF 0xd8,0x0,0x0000a10 3203 RRCF 0x3,0x1,0x0000a12 3202 RRCF 0x2,0x1,0x0000a14 0e3f MOVLW 0x3f000a16 6ee7 MOVWF 0xe7,0x0000a18 0ef1 MOVLW 0xf1000a1a cfdb MOVFF 0xfdb,0x0000a1c f000000a1e 0ef2 MOVLW 0xf2000a20 cfdb MOVFF 0xfdb,0x1000a22 f001000a24 50e7 MOVF 0xe7,0x0,0x0000a26 1600 ANDWF 0x0,0x1,0x0000a28 6a01 CLRF 0x1,0x0000a2a 90d8 BCF 0xd8,0x0,0x0000a2c 3600 RLCF 0x0,0x1,0x0000a2e 3601 RLCF 0x1,0x1,0x0000a30 90d8 BCF 0xd8,0x0,0x0000a32 3600 RLCF 0x0,0x1,0x0000a34 3601 RLCF 0x1,0x1,0x0000a36 5000 MOVF 0x0,0x0,0x0000a38 2402 ADDWF 0x2,0x0,0x0000a3a 6e62 MOVWF 0x62,0x0000a3c 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.c000a3e cfdb MOVFF 0xfdb,0x2000a40 f002000a42 0ef5 MOVLW 0xf5000a44 cfdb MOVFF 0xfdb,0x3000a46 f003000a48 0e00 MOVLW 0x0000a4a 1602 ANDWF 0x2,0x1,0x0000a4c 0e01 MOVLW 0x1000a4e 1603 ANDWF 0x3,0x1,0x0000a50 c003 MOVFF 0x3,0x2000a52 f002000a54 6a03 CLRF 0x3,0x0000a56 0e01 MOVLW 0x1000a58 6ee7 MOVWF 0xe7,0x0000a5a 0ef1 MOVLW 0xf1000a5c cfdb MOVFF 0xfdb,0x0000a5e f000000a60 0ef2 MOVLW 0xf2000a62 cfdb MOVFF 0xfdb,0x1000a64 f001000a66 50e7 MOVF 0xe7,0x0,0x0000a68 1600 ANDWF 0x0,0x1,0x0000a6a 6a01 CLRF 0x1,0x0000a6c 0e07 MOVLW 0x7000a6e 90d8 BCF 0xd8,0x0,0x0000a70 3600 RLCF 0x0,0x1,0x0000a72 3601 RLCF 0x1,0x1,0x0000a74 04e8 DECF 0xe8,0x0,0x0000a76 e1fb BNZ 0xa6e000a78 0ef3 MOVLW 0xf3000a7a 50db MOVF 0xdb,0x0,0x0000a7c 0b3f ANDLW 0x3f000a7e 24e8 ADDWF 0xe8,0x0,0x0000a80 2400 ADDWF 0x0,0x0,0x0000a82 2402 ADDWF 0x2,0x0,0x0000a84 6e63 MOVWF 0x63,0x0000a86 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a88 6ee7 MOVWF 0xe7,0x0000a8a 0ef4 MOVLW 0xf4000a8c cfdb MOVFF 0xfdb,0x0000a8e f000000a90 0ef5 MOVLW 0xf5000a92 cfdb MOVFF 0xfdb,0x1000a94 f001000a96 50e7 MOVF 0xe7,0x0,0x0000a98 1600 ANDWF 0x0,0x1,0x0000a9a 6a01 CLRF 0x1,0x0000a9c 5000 MOVF 0x0,0x0,0x0000a9e 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000aa0 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000aa2 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000aa4 50db MOVF 0xdb,0x0,0x0000aa6 0808 SUBLW 0x8000aa8 e203 BC 0xab0000aaa 0e08 MOVLW 0x8000aac 6e65 MOVWF 0x65,0x0000aae d003 BRA 0xab6000ab0 0ef6 MOVLW 0xf6000ab2 50db MOVF 0xdb,0x0,0x0000ab4 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.c000ab6 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.c000ab8 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000aba 50db MOVF 0xdb,0x0,0x0000abc 6e66 MOVWF 0x66,0x0000abe 0ef8 MOVLW 0xf8000ac0 50db MOVF 0xdb,0x0,0x0000ac2 6e67 MOVWF 0x67,0x0000ac4 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ac6 50db MOVF 0xdb,0x0,0x0000ac8 6e68 MOVWF 0x68,0x0000aca 0efa MOVLW 0xfa000acc 50db MOVF 0xdb,0x0,0x0000ace 6e69 MOVWF 0x69,0x0000ad0 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ad2 50db MOVF 0xdb,0x0,0x0000ad4 6e6a MOVWF 0x6a,0x0000ad6 0efc MOVLW 0xfc000ad8 50db MOVF 0xdb,0x0,0x0000ada 6e6b MOVWF 0x6b,0x0000adc 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ade 50db MOVF 0xdb,0x0,0x0000ae0 6e6c MOVWF 0x6c,0x0000ae2 0efe MOVLW 0xfe000ae4 50db MOVF 0xdb,0x0,0x0000ae6 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000ae8 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.c000aea 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000aec cfdb MOVFF 0xfdb,0xfe6000aee ffe6000af0 0efc MOVLW 0xfc000af2 1460 ANDWF 0x60,0x0,0x0000af4 52e5 MOVF 0xe5,0x1,0x0000af6 10e7 IORWF 0xe7,0x0,0x0000af8 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.c000afa 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.c000afc 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000afe d000 BRA 0xb00F:\MCP\projects\CAN\canBoot\Source\Main.c000b00 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000b02 cfe7 MOVFF 0xfe7,0xfd9000b04 ffd9000b06 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.c000b08 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b0a 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.c000b0c 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b0e 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.c000b10 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b12 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.c000b14 c0b3 MOVFF 0xb3,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000b16 f010000b18 c0b4 MOVFF 0xb4,0x11000b1a f011000b1c c0b5 MOVFF 0xb5,0x12000b1e f012000b20 c0b6 MOVFF 0xb6,0x13000b22 f013000b24 d000 BRA 0xb26000b26 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/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-14 20:15:02 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 94 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c000b28 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c000b2a ffe6000b2c cfe1 MOVFF 0xfe1,0xfd9000b2e ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000b30 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000b32 cfdb MOVFF 0xfdb,0x0000b34 f000000b36 0efe MOVLW 0xfe000b38 cfdb MOVFF 0xfdb,0x1000b3a f001000b3c c001 MOVFF 0x1,0x0000b3e f000000b40 6a01 CLRF 0x1,0x0000b42 5000 MOVF 0x0,0x0,0x0000b44 6eaa MOVWF 0xaa,0x0000b46 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000b48 6ee7 MOVWF 0xe7,0x0000b4a 0efd MOVLW 0xfd000b4c cfdb MOVFF 0xfdb,0x0000b4e f000000b50 0efe MOVLW 0xfe000b52 cfdb MOVFF 0xfdb,0x1000b54 f001000b56 50e7 MOVF 0xe7,0x0,0x0000b58 1600 ANDWF 0x0,0x1,0x0000b5a 6a01 CLRF 0x1,0x0000b5c 5000 MOVF 0x0,0x0,0x0000b5e 6ea9 MOVWF 0xa9,0x0000b60 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000b62 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000b64 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c000b66 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c000b68 d000 BRA 0xb6a000b6a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000b6c cfe7 MOVFF 0xfe7,0xfd9000b6e ffd9000b70 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c000b72 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c000b74 ffe6000b76 cfe1 MOVFF 0xfe1,0xfd9000b78 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000b7a 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c000b7c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000b7e cfdb MOVFF 0xfdb,0x0000b80 f000000b82 0efe MOVLW 0xfe000b84 cfdb MOVFF 0xfdb,0x1000b86 f001000b88 c001 MOVFF 0x1,0x0000b8a f000000b8c 6a01 CLRF 0x1,0x0000b8e 5000 MOVF 0x0,0x0,0x0000b90 6eaa MOVWF 0xaa,0x0000b92 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000b94 6ee7 MOVWF 0xe7,0x0000b96 0efd MOVLW 0xfd000b98 cfdb MOVFF 0xfdb,0x0000b9a f000000b9c 0efe MOVLW 0xfe000b9e cfdb MOVFF 0xfdb,0x1000ba0 f001000ba2 50e7 MOVF 0xe7,0x0,0x0000ba4 1600 ANDWF 0x0,0x1,0x0000ba6 6a01 CLRF 0x1,0x0000ba8 5000 MOVF 0x0,0x0,0x0000baa 6ea9 MOVWF 0xa9,0x0000bac 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c000bae 50db MOVF 0xdb,0x0,0x0000bb0 6ea8 MOVWF 0xa8,0x0000bb2 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000bb4 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000bb6 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c000bb8 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c000bba 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c000bbc 6ea7 MOVWF 0xa7,0x0000bbe 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c000bc0 6ea7 MOVWF 0xa7,0x0000bc2 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c000bc4 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c000bc6 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c000bc8 d7fe BRA 0xbc6000bca 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c000bcc 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000bce cfe7 MOVFF 0xfe7,0xfd9000bd0 ffd9000bd2 0012 RETURN 0x0