Rev 101 | 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 10:21:15 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-15 09:41:08 +0100 (on, 15 nov 2006) $ F:\MCP\projects\CAN\canBoot\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBoot\Source\Main.c* Revision: $Revision: 101 $ 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 dbdf RCALL 0x804 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 dbe4 RCALL 0x810 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 ec90 CALL 0xb20,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 ec9a CALL 0xb34,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 ec9a CALL 0xb34,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 ec9a CALL 0xb34,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 ec9a CALL 0xb34,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.c0007ee d46c 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 dbcc RCALL 0x862 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 d366 BRA 0x7e2000116 0a01 XORLW 0x1000118 e101 BNZ 0x11c00011a d2b4 BRA 0x68400011c 0a07 XORLW 0x700011e e101 BNZ 0x122000120 d1bf BRA 0x4a0000122 0a01 XORLW 0x1000124 e101 BNZ 0x128000126 d110 BRA 0x348000128 0a03 XORLW 0x300012a e101 BNZ 0x12e00012c d0b9 BRA 0x2a000012e 0a01 XORLW 0x1000130 e001 BZ 0x134000132 d35a BRA 0x7e8{ 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 ec90 CALL 0xb20,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 ec90 CALL 0xb20,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 d2a7 BRA 0x7ee 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 ec90 CALL 0xb20,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 db1e RCALL 0x974000338 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 d253 BRA 0x7ee 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 dbeb RCALL 0xb20 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 & 0x3E3)==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 d084 BRA 0x49e000396 0100 MOVLB 0x0000398 5160 MOVF 0x60,0x0,0x100039a e001 BZ 0x39e00039c d080 BRA 0x49e00039e 0ee3 MOVLW 0xe30003a0 0100 MOVLB 0x00003a2 1561 ANDWF 0x61,0x0,0x10003a4 6e00 MOVWF 0x0,0x00003a6 0e03 MOVLW 0x30003a8 0100 MOVLB 0x00003aa 1562 ANDWF 0x62,0x0,0x10003ac 6e01 MOVWF 0x1,0x00003ae 0e03 MOVLW 0x30003b0 1800 XORWF 0x0,0x0,0x00003b2 e101 BNZ 0x3b60003b4 5001 MOVF 0x1,0x0,0x00003b6 e173 BNZ 0x49e0003b8 0100 MOVLB 0x00003ba 51bd MOVF 0xbd,0x0,0x10003bc 0100 MOVLB 0x00003be 5d63 SUBWF 0x63,0x0,0x10003c0 e16e BNZ 0x49e0003c2 0100 MOVLB 0x00003c4 51c3 MOVF 0xc3,0x0,0x10003c6 0100 MOVLB 0x00003c8 1964 XORWF 0x64,0x0,0x10003ca e104 BNZ 0x3d40003cc 0100 MOVLB 0x00003ce 51c4 MOVF 0xc4,0x0,0x10003d0 0100 MOVLB 0x00003d2 1965 XORWF 0x65,0x0,0x10003d4 e164 BNZ 0x49e{ F:\MCP\projects\CAN\canBoot\Source\Main.c0003d6 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c0003d8 0100 MOVLB 0x00003da 1561 ANDWF 0x61,0x0,0x10003dc 6e00 MOVWF 0x0,0x00003de 6a01 CLRF 0x1,0x00003e0 90d8 BCF 0xd8,0x0,0x00003e2 3201 RRCF 0x1,0x1,0x00003e4 3200 RRCF 0x0,0x1,0x00003e6 90d8 BCF 0xd8,0x0,0x00003e8 3201 RRCF 0x1,0x1,0x00003ea 3200 RRCF 0x0,0x1,0x00003ec 0e08 MOVLW 0x80003ee 0200 MULWF 0x0,0x00003f0 0e15 MOVLW 0x150003f2 cff3 MOVFF 0xff3,0xfdb0003f4 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c0003f6 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c0003f8 0e08 MOVLW 0x80003fa 6fcb MOVWF 0xcb,0x10003fc 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.c0003fe 50db MOVF 0xdb,0x0,0x0000400 6aea CLRF 0xea,0x0000402 0f6f ADDLW 0x6f000404 6ee9 MOVWF 0xe9,0x0000406 0e00 MOVLW 0x0000408 22ea ADDWFC 0xea,0x1,0x000040a c067 MOVFF 0x67,0xfef00040c ffef00040e 0e15 MOVLW 0x15000410 28db INCF 0xdb,0x0,0x0000412 6aea CLRF 0xea,0x0000414 0f6f ADDLW 0x6f000416 6ee9 MOVWF 0xe9,0x0000418 0e00 MOVLW 0x000041a 22ea ADDWFC 0xea,0x1,0x000041c c068 MOVFF 0x68,0xfef00041e ffef000420 0e15 MOVLW 0x15000422 50db MOVF 0xdb,0x0,0x0000424 0f02 ADDLW 0x2000426 6aea CLRF 0xea,0x0000428 0f6f ADDLW 0x6f00042a 6ee9 MOVWF 0xe9,0x000042c 0e00 MOVLW 0x000042e 22ea ADDWFC 0xea,0x1,0x0000430 c069 MOVFF 0x69,0xfef000432 ffef000434 0e15 MOVLW 0x15000436 50db MOVF 0xdb,0x0,0x0000438 0f03 ADDLW 0x300043a 6aea CLRF 0xea,0x000043c 0f6f ADDLW 0x6f00043e 6ee9 MOVWF 0xe9,0x0000440 0e00 MOVLW 0x0000442 22ea ADDWFC 0xea,0x1,0x0000444 c06a MOVFF 0x6a,0xfef000446 ffef000448 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.c00044a 50db MOVF 0xdb,0x0,0x000044c 0f04 ADDLW 0x400044e 6aea CLRF 0xea,0x0000450 0f6f ADDLW 0x6f000452 6ee9 MOVWF 0xe9,0x0000454 0e00 MOVLW 0x0000456 22ea ADDWFC 0xea,0x1,0x0000458 c06b MOVFF 0x6b,0xfef00045a ffef00045c 0e15 MOVLW 0x1500045e 50db MOVF 0xdb,0x0,0x0000460 0f05 ADDLW 0x5000462 6aea CLRF 0xea,0x0000464 0f6f ADDLW 0x6f000466 6ee9 MOVWF 0xe9,0x0000468 0e00 MOVLW 0x000046a 22ea ADDWFC 0xea,0x1,0x000046c c06c MOVFF 0x6c,0xfef00046e ffef000470 0e15 MOVLW 0x15000472 50db MOVF 0xdb,0x0,0x0000474 0f06 ADDLW 0x6000476 6aea CLRF 0xea,0x0000478 0f6f ADDLW 0x6f00047a 6ee9 MOVWF 0xe9,0x000047c 0e00 MOVLW 0x000047e 22ea ADDWFC 0xea,0x1,0x0000480 c06d MOVFF 0x6d,0xfef000482 ffef000484 0e15 MOVLW 0x15000486 50db MOVF 0xdb,0x0,0x0000488 0f07 ADDLW 0x700048a 6aea CLRF 0xea,0x000048c 0f6f ADDLW 0x6f00048e 6ee9 MOVWF 0xe9,0x0000490 0e00 MOVLW 0x0000492 22ea ADDWFC 0xea,0x1,0x0000494 c06e MOVFF 0x6e,0xfef000496 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c000498 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00049a 0e03 MOVLW 0x300049c 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.c00049e d1a7 BRA 0x7ee 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.c0004a0 0e14 MOVLW 0x14 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && (cm.funcc & 0x3E3)==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c0004a2 04db DECF 0xdb,0x0,0x00004a4 e001 BZ 0x4a80004a6 d084 BRA 0x5b00004a8 0100 MOVLB 0x00004aa 5160 MOVF 0x60,0x0,0x10004ac e001 BZ 0x4b00004ae d080 BRA 0x5b00004b0 0ee3 MOVLW 0xe30004b2 0100 MOVLB 0x00004b4 1561 ANDWF 0x61,0x0,0x10004b6 6e00 MOVWF 0x0,0x00004b8 0e03 MOVLW 0x30004ba 0100 MOVLB 0x00004bc 1562 ANDWF 0x62,0x0,0x10004be 6e01 MOVWF 0x1,0x00004c0 0e03 MOVLW 0x30004c2 1800 XORWF 0x0,0x0,0x00004c4 e101 BNZ 0x4c80004c6 5001 MOVF 0x1,0x0,0x00004c8 e173 BNZ 0x5b00004ca 0100 MOVLB 0x00004cc 51bd MOVF 0xbd,0x0,0x10004ce 0100 MOVLB 0x00004d0 5d63 SUBWF 0x63,0x0,0x10004d2 e16e BNZ 0x5b00004d4 0100 MOVLB 0x00004d6 51c3 MOVF 0xc3,0x0,0x10004d8 0100 MOVLB 0x00004da 1964 XORWF 0x64,0x0,0x10004dc e104 BNZ 0x4e60004de 0100 MOVLB 0x00004e0 51c4 MOVF 0xc4,0x0,0x10004e2 0100 MOVLB 0x00004e4 1965 XORWF 0x65,0x0,0x10004e6 e164 BNZ 0x5b0{ F:\MCP\projects\CAN\canBoot\Source\Main.c0004e8 0e1c MOVLW 0x1c BYTE localIndex = (BYTE)((cm.funcc & 0x1C)>>2)*8; F:\MCP\projects\CAN\canBoot\Source\Main.c0004ea 0100 MOVLB 0x00004ec 1561 ANDWF 0x61,0x0,0x10004ee 6e00 MOVWF 0x0,0x00004f0 6a01 CLRF 0x1,0x00004f2 90d8 BCF 0xd8,0x0,0x00004f4 3201 RRCF 0x1,0x1,0x00004f6 3200 RRCF 0x0,0x1,0x00004f8 90d8 BCF 0xd8,0x0,0x00004fa 3201 RRCF 0x1,0x1,0x00004fc 3200 RRCF 0x0,0x1,0x00004fe 0e08 MOVLW 0x8000500 0200 MULWF 0x0,0x0000502 0e16 MOVLW 0x16000504 cff3 MOVFF 0xff3,0xfdb000506 ffdb// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c000508 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.c00050a 50db MOVF 0xdb,0x0,0x000050c 6aea CLRF 0xea,0x000050e 0f6f ADDLW 0x6f000510 6ee9 MOVWF 0xe9,0x0000512 0e00 MOVLW 0x0000514 22ea ADDWFC 0xea,0x1,0x0000516 c067 MOVFF 0x67,0xfef000518 ffef00051a 0e16 MOVLW 0x1600051c 28db INCF 0xdb,0x0,0x000051e 6aea CLRF 0xea,0x0000520 0f6f ADDLW 0x6f000522 6ee9 MOVWF 0xe9,0x0000524 0e00 MOVLW 0x0000526 22ea ADDWFC 0xea,0x1,0x0000528 c068 MOVFF 0x68,0xfef00052a ffef00052c 0e16 MOVLW 0x1600052e 50db MOVF 0xdb,0x0,0x0000530 0f02 ADDLW 0x2000532 6aea CLRF 0xea,0x0000534 0f6f ADDLW 0x6f000536 6ee9 MOVWF 0xe9,0x0000538 0e00 MOVLW 0x000053a 22ea ADDWFC 0xea,0x1,0x000053c c069 MOVFF 0x69,0xfef00053e ffef000540 0e16 MOVLW 0x16000542 50db MOVF 0xdb,0x0,0x0000544 0f03 ADDLW 0x3000546 6aea CLRF 0xea,0x0000548 0f6f ADDLW 0x6f00054a 6ee9 MOVWF 0xe9,0x000054c 0e00 MOVLW 0x000054e 22ea ADDWFC 0xea,0x1,0x0000550 c06a MOVFF 0x6a,0xfef000552 ffef000554 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.c000556 50db MOVF 0xdb,0x0,0x0000558 0f04 ADDLW 0x400055a 6aea CLRF 0xea,0x000055c 0f6f ADDLW 0x6f00055e 6ee9 MOVWF 0xe9,0x0000560 0e00 MOVLW 0x0000562 22ea ADDWFC 0xea,0x1,0x0000564 c06b MOVFF 0x6b,0xfef000566 ffef000568 0e16 MOVLW 0x1600056a 50db MOVF 0xdb,0x0,0x000056c 0f05 ADDLW 0x500056e 6aea CLRF 0xea,0x0000570 0f6f ADDLW 0x6f000572 6ee9 MOVWF 0xe9,0x0000574 0e00 MOVLW 0x0000576 22ea ADDWFC 0xea,0x1,0x0000578 c06c MOVFF 0x6c,0xfef00057a ffef00057c 0e16 MOVLW 0x1600057e 50db MOVF 0xdb,0x0,0x0000580 0f06 ADDLW 0x6000582 6aea CLRF 0xea,0x0000584 0f6f ADDLW 0x6f000586 6ee9 MOVWF 0xe9,0x0000588 0e00 MOVLW 0x000058a 22ea ADDWFC 0xea,0x1,0x000058c c06d MOVFF 0x6d,0xfef00058e ffef000590 0e16 MOVLW 0x16000592 50db MOVF 0xdb,0x0,0x0000594 0f07 ADDLW 0x7000596 6aea CLRF 0xea,0x0000598 0f6f ADDLW 0x6f00059a 6ee9 MOVWF 0xe9,0x000059c 0e00 MOVLW 0x000059e 22ea ADDWFC 0xea,0x1,0x00005a0 c06e MOVFF 0x6e,0xfef0005a2 ffefF:\MCP\projects\CAN\canBoot\Source\Main.c0005a4 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c0005a6 0100 MOVLB 0x00005a8 27cb ADDWF 0xcb,0x1,0x10005aa 0100 MOVLB 0x0 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ac 0e03 MOVLW 0x30005ae 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.c0005b0 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.c0005b2 04db DECF 0xdb,0x0,0x00005b4 e120 BNZ 0x5f60005b6 0100 MOVLB 0x00005b8 5160 MOVF 0x60,0x0,0x10005ba e11d BNZ 0x5f60005bc 0100 MOVLB 0x00005be 0e02 MOVLW 0x20005c0 1961 XORWF 0x61,0x0,0x10005c2 e101 BNZ 0x5c60005c4 5162 MOVF 0x62,0x0,0x10005c6 e117 BNZ 0x5f60005c8 0100 MOVLB 0x00005ca 51bd MOVF 0xbd,0x0,0x10005cc 0100 MOVLB 0x00005ce 5d63 SUBWF 0x63,0x0,0x10005d0 e112 BNZ 0x5f60005d2 0100 MOVLB 0x00005d4 51c3 MOVF 0xc3,0x0,0x10005d6 0100 MOVLB 0x00005d8 1964 XORWF 0x64,0x0,0x10005da e104 BNZ 0x5e40005dc 0100 MOVLB 0x00005de 51c4 MOVF 0xc4,0x0,0x10005e0 0100 MOVLB 0x00005e2 1965 XORWF 0x65,0x0,0x10005e4 e108 BNZ 0x5f6{ 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.c0005e6 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0005e8 6bc5 CLRF 0xc5,0x10005ea 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0005ec 0e02 MOVLW 0x20005ee 6fc6 MOVWF 0xc6,0x10005f0 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f2 0e01 MOVLW 0x10005f4 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.c0005f6 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.c0005f8 04db DECF 0xdb,0x0,0x00005fa e138 BNZ 0x66c0005fc 0100 MOVLB 0x00005fe 5160 MOVF 0x60,0x0,0x1000600 e135 BNZ 0x66c000602 0100 MOVLB 0x0000604 0e05 MOVLW 0x5000606 1961 XORWF 0x61,0x0,0x1000608 e101 BNZ 0x60c00060a 5162 MOVF 0x62,0x0,0x100060c e12f BNZ 0x66c00060e 0100 MOVLB 0x0000610 51bd MOVF 0xbd,0x0,0x1000612 0100 MOVLB 0x0000614 5d63 SUBWF 0x63,0x0,0x1000616 e12a BNZ 0x66c000618 0100 MOVLB 0x000061a 51c3 MOVF 0xc3,0x0,0x100061c 0100 MOVLB 0x000061e 1964 XORWF 0x64,0x0,0x1000620 e104 BNZ 0x62a000622 0100 MOVLB 0x0000624 51c4 MOVF 0xc4,0x0,0x1000626 0100 MOVLB 0x0000628 1965 XORWF 0x65,0x0,0x100062a e120 BNZ 0x66c{ 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.c00062c 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c00062e 51cb MOVF 0xcb,0x0,0x1000630 e109 BNZ 0x644{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c000632 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000634 6bc5 CLRF 0xc5,0x1000636 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000638 0e05 MOVLW 0x500063a 6fc6 MOVWF 0xc6,0x100063c 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00063e 0e01 MOVLW 0x1000640 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000642 d014 BRA 0x66c else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c000644 0e40 MOVLW 0x40000646 0100 MOVLB 0x0000648 5dcb SUBWF 0xcb,0x0,0x100064a e00a BZ 0x660{ F:\MCP\projects\CAN\canBoot\Source\Main.c00064c 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00064e 0e01 MOVLW 0x1000650 6fc5 MOVWF 0xc5,0x1000652 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000654 0e02 MOVLW 0x2000656 6fc6 MOVWF 0xc6,0x1000658 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00065a 0e01 MOVLW 0x100065c 6fbe MOVWF 0xbe,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c00065e d006 BRA 0x66c else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000660 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c000662 0e04 MOVLW 0x4000664 6fbe MOVWF 0xbe,0x1000666 0100 MOVLB 0x0 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c000668 0e05 MOVLW 0x500066a 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.c00066c 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c00066e 0100 MOVLB 0x0000670 5dcb SUBWF 0xcb,0x0,0x1000672 e107 BNZ 0x682{ F:\MCP\projects\CAN\canBoot\Source\Main.c000674 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c000676 0100 MOVLB 0x0 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c000678 0e04 MOVLW 0x400067a 6fbe MOVWF 0xbe,0x100067c 0100 MOVLB 0x0 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00067e 0e03 MOVLW 0x3000680 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.c000682 d0b5 BRA 0x7ee 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.c000684 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.c000686 0e00 MOVLW 0x0 if (pgmAddress<RM_RESET_VECTOR) F:\MCP\projects\CAN\canBoot\Source\Main.c000688 0100 MOVLB 0x000068a 5dc7 SUBWF 0xc7,0x0,0x100068c 0e10 MOVLW 0x1000068e 59c8 SUBWFB 0xc8,0x0,0x1000690 0e00 MOVLW 0x0000692 59c9 SUBWFB 0xc9,0x0,0x1000694 0e00 MOVLW 0x0000696 59ca SUBWFB 0xca,0x0,0x1000698 e206 BC 0x6a6{ F:\MCP\projects\CAN\canBoot\Source\Main.c00069a 0100 MOVLB 0x0 errMsg = ACK_ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00069c 0e01 MOVLW 0x100069e 6fc5 MOVWF 0xc5,0x10006a0 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0006a2 0e01 MOVLW 0x10006a4 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.c0006a6 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c0006a8 f0000006aa c0c8 MOVFF 0xc8,0x10006ac f0010006ae c0c9 MOVFF 0xc9,0x20006b0 f0020006b2 c0ca MOVFF 0xca,0x30006b4 f0030006b6 6a00 CLRF 0x0,0x00006b8 6a01 CLRF 0x1,0x00006ba 6a03 CLRF 0x3,0x00006bc 0e10 MOVLW 0x100006be 90d8 BCF 0xd8,0x0,0x00006c0 3203 RRCF 0x3,0x1,0x00006c2 3202 RRCF 0x2,0x1,0x00006c4 3201 RRCF 0x1,0x1,0x00006c6 3200 RRCF 0x0,0x1,0x00006c8 06e8 DECF 0xe8,0x1,0x00006ca e1f9 BNZ 0x6be0006cc 5000 MOVF 0x0,0x0,0x00006ce 6ef8 MOVWF 0xf8,0x00006d0 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c0006d2 f0000006d4 c0c8 MOVFF 0xc8,0x10006d6 f0010006d8 c0c9 MOVFF 0xc9,0x20006da f0020006dc c0ca MOVFF 0xca,0x30006de f0030006e0 6a00 CLRF 0x0,0x00006e2 6a02 CLRF 0x2,0x00006e4 6a03 CLRF 0x3,0x00006e6 0e08 MOVLW 0x80006e8 90d8 BCF 0xd8,0x0,0x00006ea 3203 RRCF 0x3,0x1,0x00006ec 3202 RRCF 0x2,0x1,0x00006ee 3201 RRCF 0x1,0x1,0x00006f0 3200 RRCF 0x0,0x1,0x00006f2 06e8 DECF 0xe8,0x1,0x00006f4 e1f9 BNZ 0x6e80006f6 5000 MOVF 0x0,0x0,0x00006f8 6ef7 MOVWF 0xf7,0x00006fa 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c0006fc 51c7 MOVF 0xc7,0x0,0x10006fe 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// point to Flash program memory F:\MCP\projects\CAN\canBoot\Source\Main.c000700 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.c000702 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.c000704 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.c000706 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.c000708 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Do it! F:\MCP\projects\CAN\canBoot\Source\Main.c00070a 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c00070c 6ea7 MOVWF 0xa7,0x000070e 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c000710 6ea7 MOVWF 0xa7,0x0000712 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// enable interrupts F:\MCP\projects\CAN\canBoot\Source\Main.c000714 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//Load Table pointer registers with base address to program. F:\MCP\projects\CAN\canBoot\Source\Main.c000716 c0c7 MOVFF 0xc7,0x0 TBLPTRU = (BYTE)((pgmAddress & 0xFF0000)>>16); F:\MCP\projects\CAN\canBoot\Source\Main.c000718 f00000071a c0c8 MOVFF 0xc8,0x100071c f00100071e c0c9 MOVFF 0xc9,0x2000720 f002000722 c0ca MOVFF 0xca,0x3000724 f003000726 6a00 CLRF 0x0,0x0000728 6a01 CLRF 0x1,0x000072a 6a03 CLRF 0x3,0x000072c 0e10 MOVLW 0x1000072e 90d8 BCF 0xd8,0x0,0x0000730 3203 RRCF 0x3,0x1,0x0000732 3202 RRCF 0x2,0x1,0x0000734 3201 RRCF 0x1,0x1,0x0000736 3200 RRCF 0x0,0x1,0x0000738 06e8 DECF 0xe8,0x1,0x000073a e1f9 BNZ 0x72e00073c 5000 MOVF 0x0,0x0,0x000073e 6ef8 MOVWF 0xf8,0x0000740 c0c7 MOVFF 0xc7,0x0 TBLPTRH = (BYTE)((pgmAddress & 0xFF00)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c000742 f000000744 c0c8 MOVFF 0xc8,0x1000746 f001000748 c0c9 MOVFF 0xc9,0x200074a f00200074c c0ca MOVFF 0xca,0x300074e f003000750 6a00 CLRF 0x0,0x0000752 6a02 CLRF 0x2,0x0000754 6a03 CLRF 0x3,0x0000756 0e08 MOVLW 0x8000758 90d8 BCF 0xd8,0x0,0x000075a 3203 RRCF 0x3,0x1,0x000075c 3202 RRCF 0x2,0x1,0x000075e 3201 RRCF 0x1,0x1,0x0000760 3200 RRCF 0x0,0x1,0x0000762 06e8 DECF 0xe8,0x1,0x0000764 e1f9 BNZ 0x758000766 5000 MOVF 0x0,0x0,0x0000768 6ef7 MOVWF 0xf7,0x000076a 0100 MOVLB 0x0 TBLPTRL = (BYTE)(pgmAddress & 0xFF); F:\MCP\projects\CAN\canBoot\Source\Main.c00076c 51c7 MOVF 0xc7,0x0,0x100076e 6ef6 MOVWF 0xf6,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Load bytes F:\MCP\projects\CAN\canBoot\Source\Main.c000770 0e04 MOVLW 0x4 for(i=0;i<63;i++) F:\MCP\projects\CAN\canBoot\Source\Main.c000772 6adb CLRF 0xdb,0x0000774 0e3f MOVLW 0x3f000776 6ef3 MOVWF 0xf3,0x0000778 0e04 MOVLW 0x400077a cfdb MOVFF 0xfdb,0xff400077c fff400077e 50f3 MOVF 0xf3,0x0,0x0000780 5cf4 SUBWF 0xf4,0x0,0x0000782 e20d BC 0x79e000798 0e04 MOVLW 0x400079a 2adb INCF 0xdb,0x1,0x000079c d7eb BRA 0x774{ F:\MCP\projects\CAN\canBoot\Source\Main.c000784 0e04 MOVLW 0x4 TABLAT=pgmData[i]; F:\MCP\projects\CAN\canBoot\Source\Main.c000786 50db MOVF 0xdb,0x0,0x0000788 6aea CLRF 0xea,0x000078a 0f6f ADDLW 0x6f00078c 6ee9 MOVWF 0xe9,0x000078e 0e00 MOVLW 0x0000790 22ea ADDWFC 0xea,0x1,0x0000792 50ef MOVF 0xef,0x0,0x0000794 6ef5 MOVWF 0xf5,0x0000796 d9c2 RCALL 0xb1c TBLWTPOSTINC_Func(); F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c00079e c0ae MOVFF 0xae,0xff5 TABLAT=pgmData[63]; F:\MCP\projects\CAN\canBoot\Source\Main.c0007a0 fff50007a2 d9ba RCALL 0xb18 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.c0007a4 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.c0007a6 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.c0007a8 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.c0007aa 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.c0007ac 0e55 MOVLW 0x55 EECON2 = 0x55; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 6ea7 MOVWF 0xa7,0x00007b0 0eaa MOVLW 0xaa EECON2 = 0xAA; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b2 6ea7 MOVWF 0xa7,0x00007b4 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.c0007b6 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.c0007b8 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0007ba 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c0007bc 0100 MOVLB 0x00007be 27c7 ADDWF 0xc7,0x1,0x10007c0 0e00 MOVLW 0x00007c2 0100 MOVLB 0x00007c4 23c8 ADDWFC 0xc8,0x1,0x10007c6 0e00 MOVLW 0x00007c8 0100 MOVLB 0x00007ca 23c9 ADDWFC 0xc9,0x1,0x10007cc 0e00 MOVLW 0x00007ce 0100 MOVLB 0x00007d0 23ca ADDWFC 0xca,0x1,0x10007d2 0100 MOVLB 0x0 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007d4 6bcb CLRF 0xcb,0x10007d6 0100 MOVLB 0x0 errMsg = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0007d8 6bc5 CLRF 0xc5,0x10007da 0100 MOVLB 0x0 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0007dc 0e01 MOVLW 0x10007de 6fbe MOVWF 0xbe,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c0007e0 d006 BRA 0x7ee 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.c0007e2 ef00 GOTO 0x1000 _asm goto RM_RESET_VECTOR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c0007e4 f0080007e6 d003 BRA 0x7ee 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.c0007e8 0100 MOVLB 0x0 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ea 6bbe CLRF 0xbe,0x10007ec d000 BRA 0x7ee 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.c0007f0 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canBoot\Source\Main.c0007f2 5ce1 SUBWF 0xe1,0x0,0x00007f4 e202 BC 0x7fa0007f6 6ae1 CLRF 0xe1,0x00007f8 52e5 MOVF 0xe5,0x1,0x00007fa 6ee1 MOVWF 0xe1,0x00007fc 52e5 MOVF 0xe5,0x1,0x00007fe cfe7 MOVFF 0xfe7,0xfd9000800 ffd9000802 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.c000804 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.c000806 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.c000808 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00080a 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.c00080c 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.c00080e 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.c000810 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c000812 6e6f MOVWF 0x6f,0x0000814 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c000816 146e ANDWF 0x6e,0x0,0x0000818 0880 SUBLW 0x8000081a e001 BZ 0x81e00081c d7fb BRA 0x814F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00081e 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.c000820 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000822 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.c000824 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c000826 1070 IORWF 0x70,0x0,0x0000828 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c00082a 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.c00082c 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00082e 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000830 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.c000832 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000834 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000836 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.c000838 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.c00083a 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.c00083c 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00083e 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000840 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000842 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c000844 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c000846 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.c000848 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c00084a 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.c00084c 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c00084e 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c000850 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000852 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.c000854 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.c000856 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c000858 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c00085a 146e ANDWF 0x6e,0x0,0x000085c e001 BZ 0x86000085e d7fc BRA 0x858#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000860 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.c000862 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBoot\Source\Main.c000864 146f ANDWF 0x6f,0x0,0x0000866 0910 IORLW 0x10000868 6e00 MOVWF 0x0,0x000086a 0e00 MOVLW 0x000086c 1477 ANDWF 0x77,0x0,0x000086e 1000 IORWF 0x0,0x0,0x0000870 6e77 MOVWF 0x77,0x0000872 be60 BTFSC 0x60,0x7,0x0 if (!RXB0CONbits.RXFUL) return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000874 d002 BRA 0x87a000876 0e00 MOVLW 0x0000878 d07c BRA 0x972F:\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.c00087a 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c00087c 1461 ANDWF 0x61,0x0,0x000087e 38e8 SWAPF 0xe8,0x0,0x0000880 0b0f ANDLW 0xf000882 0100 MOVLB 0x0000884 6f60 MOVWF 0x60,0x1000886 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.c000888 1461 ANDWF 0x61,0x0,0x000088a 6e04 MOVWF 0x4,0x000088c 6a05 CLRF 0x5,0x000088e 0e06 MOVLW 0x6000890 90d8 BCF 0xd8,0x0,0x0000892 3604 RLCF 0x4,0x1,0x0000894 3605 RLCF 0x5,0x1,0x0000896 04e8 DECF 0xe8,0x0,0x0000898 e1fb BNZ 0x89000089a 0ee0 MOVLW 0xe000089c 1462 ANDWF 0x62,0x0,0x000089e 6e06 MOVWF 0x6,0x00008a0 6a07 CLRF 0x7,0x00008a2 90d8 BCF 0xd8,0x0,0x00008a4 3207 RRCF 0x7,0x1,0x00008a6 3206 RRCF 0x6,0x1,0x00008a8 90d8 BCF 0xd8,0x0,0x00008aa 3207 RRCF 0x7,0x1,0x00008ac 3206 RRCF 0x6,0x1,0x00008ae 5004 MOVF 0x4,0x0,0x00008b0 2406 ADDWF 0x6,0x0,0x00008b2 6e02 MOVWF 0x2,0x00008b4 5005 MOVF 0x5,0x0,0x00008b6 2007 ADDWFC 0x7,0x0,0x00008b8 6e03 MOVWF 0x3,0x00008ba 0e03 MOVLW 0x30008bc 1462 ANDWF 0x62,0x0,0x00008be 6e08 MOVWF 0x8,0x00008c0 6a09 CLRF 0x9,0x00008c2 90d8 BCF 0xd8,0x0,0x00008c4 3608 RLCF 0x8,0x1,0x00008c6 3609 RLCF 0x9,0x1,0x00008c8 5002 MOVF 0x2,0x0,0x00008ca 2408 ADDWF 0x8,0x0,0x00008cc 6e00 MOVWF 0x0,0x00008ce 5003 MOVF 0x3,0x0,0x00008d0 2009 ADDWFC 0x9,0x0,0x00008d2 6e01 MOVWF 0x1,0x00008d4 0e80 MOVLW 0x800008d6 1463 ANDWF 0x63,0x0,0x00008d8 6e0a MOVWF 0xa,0x00008da 6a0b CLRF 0xb,0x00008dc 0e07 MOVLW 0x70008de 90d8 BCF 0xd8,0x0,0x00008e0 320b RRCF 0xb,0x1,0x00008e2 320a RRCF 0xa,0x1,0x00008e4 04e8 DECF 0xe8,0x0,0x00008e6 e1fb BNZ 0x8de0008e8 5000 MOVF 0x0,0x0,0x00008ea 240a ADDWF 0xa,0x0,0x00008ec 0100 MOVLB 0x00008ee 6f61 MOVWF 0x61,0x10008f0 5001 MOVF 0x1,0x0,0x00008f2 200b ADDWFC 0xb,0x0,0x00008f4 6f62 MOVWF 0x62,0x10008f6 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0008f8 1463 ANDWF 0x63,0x0,0x00008fa 40e8 RRNCF 0xe8,0x0,0x00008fc 0b7f ANDLW 0x7f0008fe 6f63 MOVWF 0x63,0x1000900 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c000902 1463 ANDWF 0x63,0x0,0x0000904 6e00 MOVWF 0x0,0x0000906 c000 MOVFF 0x0,0x1000908 f00100090a 6a00 CLRF 0x0,0x000090c 5064 MOVF 0x64,0x0,0x000090e 2400 ADDWF 0x0,0x0,0x0000910 6f64 MOVWF 0x64,0x1000912 0e00 MOVLW 0x0000914 2001 ADDWFC 0x1,0x0,0x0000916 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.c000918 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.c00091a 0b01 ANDLW 0x100091c 6e02 MOVWF 0x2,0x000091e 5065 MOVF 0x65,0x0,0x0000920 0b02 ANDLW 0x2000922 e001 BZ 0x926000924 0e01 MOVLW 0x1000926 24e8 ADDWF 0xe8,0x0,0x0000928 6e01 MOVWF 0x1,0x000092a 5065 MOVF 0x65,0x0,0x000092c 0b04 ANDLW 0x400092e e001 BZ 0x932000930 0e01 MOVLW 0x1000932 0d04 MULLW 0x4000934 cff3 MOVFF 0xff3,0x0000936 f000000938 5065 MOVF 0x65,0x0,0x000093a 0b08 ANDLW 0x800093c e001 BZ 0x94000093e 0e01 MOVLW 0x1000940 0d08 MULLW 0x8000942 50f3 MOVF 0xf3,0x0,0x0000944 2400 ADDWF 0x0,0x0,0x0000946 2401 ADDWF 0x1,0x0,0x0000948 2402 ADDWF 0x2,0x0,0x000094a 6f66 MOVWF 0x66,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c00094c cf66 MOVFF 0xf66,0x67 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c00094e f067000950 cf67 MOVFF 0xf67,0x68000952 f068000954 cf68 MOVFF 0xf68,0x69 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c000956 f069000958 cf69 MOVFF 0xf69,0x6a00095a f06a00095c cf6a MOVFF 0xf6a,0x6b cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c00095e f06b000960 cf6b MOVFF 0xf6b,0x6c000962 f06c000964 cf6c MOVFF 0xf6c,0x6d cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c000966 f06d000968 cf6d MOVFF 0xf6d,0x6e00096a f06eF:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c00096c 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00096e 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000970 d000 BRA 0x972000972 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.c000974 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c000976 ffe6000978 cfe1 MOVFF 0xfe1,0xfd900097a ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00097c 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c00097e b740 BTFSC 0x40,0x3,0x1000980 d004 BRA 0x98a000982 0e00 MOVLW 0x0000984 1477 ANDWF 0x77,0x0,0x0000986 0903 IORLW 0x3000988 6e77 MOVWF 0x77,0x000098a 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c00098c b730 BTFSC 0x30,0x3,0x100098e d004 BRA 0x998000990 0e00 MOVLW 0x0000992 1477 ANDWF 0x77,0x0,0x0000994 0904 IORLW 0x4000996 6e77 MOVWF 0x77,0x0000998 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00099a b720 BTFSC 0x20,0x3,0x100099c d005 BRA 0x9a800099e 0e00 MOVLW 0x00009a0 1477 ANDWF 0x77,0x0,0x00009a2 0905 IORLW 0x50009a4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c0009a6 d002 BRA 0x9ac else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c0009a8 0e00 MOVLW 0x00009aa d0b0 BRA 0xb0cF:\MCP\projects\CAN\canBoot\Source\Main.c0009ac 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0009ae cfdb MOVFF 0xfdb,0x00009b0 f0000009b2 3400 RLCF 0x0,0x0,0x00009b4 e20e BC 0x9d20009b6 0eef MOVLW 0xef0009b8 cfdb MOVFF 0xfdb,0x10009ba f0010009bc 0e03 MOVLW 0x30009be 6ee7 MOVWF 0xe7,0x00009c0 1801 XORWF 0x1,0x0,0x00009c2 aee8 BTFSS 0xe8,0x7,0x00009c4 d002 BRA 0x9ca0009c6 3401 RLCF 0x1,0x0,0x00009c8 d003 BRA 0x9d00009ca 50e7 MOVF 0xe7,0x0,0x00009cc 80d8 BSF 0xd8,0x0,0x00009ce 5401 SUBFWB 0x1,0x0,0x00009d0 e202 BC 0x9d60009d2 0eef MOVLW 0xef0009d4 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.c0009d6 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0009d8 cfdb MOVFF 0xfdb,0x00009da f0000009dc 0ef2 MOVLW 0xf20009de cfdb MOVFF 0xfdb,0x10009e0 f0010009e2 0ec0 MOVLW 0xc00009e4 1600 ANDWF 0x0,0x1,0x00009e6 0e03 MOVLW 0x30009e8 1601 ANDWF 0x1,0x1,0x00009ea 0e06 MOVLW 0x60009ec 90d8 BCF 0xd8,0x0,0x00009ee 3201 RRCF 0x1,0x1,0x00009f0 3200 RRCF 0x0,0x1,0x00009f2 04e8 DECF 0xe8,0x0,0x00009f4 e1fb BNZ 0x9ec0009f6 0ef0 MOVLW 0xf00009f8 50db MOVF 0xdb,0x0,0x00009fa 0b0f ANDLW 0xf0009fc 0d10 MULLW 0x100009fe 50f3 MOVF 0xf3,0x0,0x0000a00 2400 ADDWF 0x0,0x0,0x0000a02 6e61 MOVWF 0x61,0x0000a04 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000a06 6ee7 MOVWF 0xe7,0x0000a08 0ef1 MOVLW 0xf1000a0a cfdb MOVFF 0xfdb,0x2000a0c f002000a0e 0ef2 MOVLW 0xf2000a10 cfdb MOVFF 0xfdb,0x3000a12 f003000a14 50e7 MOVF 0xe7,0x0,0x0000a16 1602 ANDWF 0x2,0x1,0x0000a18 6a03 CLRF 0x3,0x0000a1a 90d8 BCF 0xd8,0x0,0x0000a1c 3203 RRCF 0x3,0x1,0x0000a1e 3202 RRCF 0x2,0x1,0x0000a20 0e3f MOVLW 0x3f000a22 6ee7 MOVWF 0xe7,0x0000a24 0ef1 MOVLW 0xf1000a26 cfdb MOVFF 0xfdb,0x0000a28 f000000a2a 0ef2 MOVLW 0xf2000a2c cfdb MOVFF 0xfdb,0x1000a2e f001000a30 50e7 MOVF 0xe7,0x0,0x0000a32 1600 ANDWF 0x0,0x1,0x0000a34 6a01 CLRF 0x1,0x0000a36 90d8 BCF 0xd8,0x0,0x0000a38 3600 RLCF 0x0,0x1,0x0000a3a 3601 RLCF 0x1,0x1,0x0000a3c 90d8 BCF 0xd8,0x0,0x0000a3e 3600 RLCF 0x0,0x1,0x0000a40 3601 RLCF 0x1,0x1,0x0000a42 5000 MOVF 0x0,0x0,0x0000a44 2402 ADDWF 0x2,0x0,0x0000a46 6e62 MOVWF 0x62,0x0000a48 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.c000a4a cfdb MOVFF 0xfdb,0x2000a4c f002000a4e 0ef5 MOVLW 0xf5000a50 cfdb MOVFF 0xfdb,0x3000a52 f003000a54 0e00 MOVLW 0x0000a56 1602 ANDWF 0x2,0x1,0x0000a58 0e01 MOVLW 0x1000a5a 1603 ANDWF 0x3,0x1,0x0000a5c c003 MOVFF 0x3,0x2000a5e f002000a60 6a03 CLRF 0x3,0x0000a62 0e01 MOVLW 0x1000a64 6ee7 MOVWF 0xe7,0x0000a66 0ef1 MOVLW 0xf1000a68 cfdb MOVFF 0xfdb,0x0000a6a f000000a6c 0ef2 MOVLW 0xf2000a6e cfdb MOVFF 0xfdb,0x1000a70 f001000a72 50e7 MOVF 0xe7,0x0,0x0000a74 1600 ANDWF 0x0,0x1,0x0000a76 6a01 CLRF 0x1,0x0000a78 0e07 MOVLW 0x7000a7a 90d8 BCF 0xd8,0x0,0x0000a7c 3600 RLCF 0x0,0x1,0x0000a7e 3601 RLCF 0x1,0x1,0x0000a80 04e8 DECF 0xe8,0x0,0x0000a82 e1fb BNZ 0xa7a000a84 0ef3 MOVLW 0xf3000a86 50db MOVF 0xdb,0x0,0x0000a88 0b3f ANDLW 0x3f000a8a 24e8 ADDWF 0xe8,0x0,0x0000a8c 2400 ADDWF 0x0,0x0,0x0000a8e 2402 ADDWF 0x2,0x0,0x0000a90 6e63 MOVWF 0x63,0x0000a92 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000a94 6ee7 MOVWF 0xe7,0x0000a96 0ef4 MOVLW 0xf4000a98 cfdb MOVFF 0xfdb,0x0000a9a f000000a9c 0ef5 MOVLW 0xf5000a9e cfdb MOVFF 0xfdb,0x1000aa0 f001000aa2 50e7 MOVF 0xe7,0x0,0x0000aa4 1600 ANDWF 0x0,0x1,0x0000aa6 6a01 CLRF 0x1,0x0000aa8 5000 MOVF 0x0,0x0,0x0000aaa 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c000aac 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000aae 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c000ab0 50db MOVF 0xdb,0x0,0x0000ab2 0808 SUBLW 0x8000ab4 e203 BC 0xabc000ab6 0e08 MOVLW 0x8000ab8 6e65 MOVWF 0x65,0x0000aba d003 BRA 0xac2000abc 0ef6 MOVLW 0xf6000abe 50db MOVF 0xdb,0x0,0x0000ac0 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.c000ac2 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.c000ac4 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ac6 50db MOVF 0xdb,0x0,0x0000ac8 6e66 MOVWF 0x66,0x0000aca 0ef8 MOVLW 0xf8000acc 50db MOVF 0xdb,0x0,0x0000ace 6e67 MOVWF 0x67,0x0000ad0 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ad2 50db MOVF 0xdb,0x0,0x0000ad4 6e68 MOVWF 0x68,0x0000ad6 0efa MOVLW 0xfa000ad8 50db MOVF 0xdb,0x0,0x0000ada 6e69 MOVWF 0x69,0x0000adc 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c000ade 50db MOVF 0xdb,0x0,0x0000ae0 6e6a MOVWF 0x6a,0x0000ae2 0efc MOVLW 0xfc000ae4 50db MOVF 0xdb,0x0,0x0000ae6 6e6b MOVWF 0x6b,0x0000ae8 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c000aea 50db MOVF 0xdb,0x0,0x0000aec 6e6c MOVWF 0x6c,0x0000aee 0efe MOVLW 0xfe000af0 50db MOVF 0xdb,0x0,0x0000af2 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c000af4 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.c000af6 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000af8 cfdb MOVFF 0xfdb,0xfe6000afa ffe6000afc 0efc MOVLW 0xfc000afe 1460 ANDWF 0x60,0x0,0x0000b00 52e5 MOVF 0xe5,0x1,0x0000b02 10e7 IORWF 0xe7,0x0,0x0000b04 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.c000b06 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.c000b08 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000b0a d000 BRA 0xb0cF:\MCP\projects\CAN\canBoot\Source\Main.c000b0c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000b0e cfe7 MOVFF 0xfe7,0xfd9000b10 ffd9000b12 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.c000b14 0008 TBLRD TBLRD F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b16 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.c000b18 000c TBLWT TBLWT F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b1a 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.c000b1c 000d TBLWTPOSTINC TBLWTPOSTINC F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c000b1e 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.c000b20 c0b3 MOVFF 0xb3,0x10 return tickCounter; F:\MCP\projects\CAN\canBoot\Source\Main.c000b22 f010000b24 c0b4 MOVFF 0xb4,0x11000b26 f011000b28 c0b5 MOVFF 0xb5,0x12000b2a f012000b2c c0b6 MOVFF 0xb6,0x13000b2e f013000b30 d000 BRA 0xb32000b32 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.c000b34 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c000b36 ffe6000b38 cfe1 MOVFF 0xfe1,0xfd9000b3a ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000b3c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000b3e cfdb MOVFF 0xfdb,0x0000b40 f000000b42 0efe MOVLW 0xfe000b44 cfdb MOVFF 0xfdb,0x1000b46 f001000b48 c001 MOVFF 0x1,0x0000b4a f000000b4c 6a01 CLRF 0x1,0x0000b4e 5000 MOVF 0x0,0x0,0x0000b50 6eaa MOVWF 0xaa,0x0000b52 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000b54 6ee7 MOVWF 0xe7,0x0000b56 0efd MOVLW 0xfd000b58 cfdb MOVFF 0xfdb,0x0000b5a f000000b5c 0efe MOVLW 0xfe000b5e cfdb MOVFF 0xfdb,0x1000b60 f001000b62 50e7 MOVF 0xe7,0x0,0x0000b64 1600 ANDWF 0x0,0x1,0x0000b66 6a01 CLRF 0x1,0x0000b68 5000 MOVF 0x0,0x0,0x0000b6a 6ea9 MOVWF 0xa9,0x0000b6c 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000b6e 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000b70 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c000b72 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c000b74 d000 BRA 0xb76000b76 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000b78 cfe7 MOVFF 0xfe7,0xfd9000b7a ffd9000b7c 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c000b7e cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c000b80 ffe6000b82 cfe1 MOVFF 0xfe1,0xfd9000b84 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c000b86 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c000b88 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c000b8a cfdb MOVFF 0xfdb,0x0000b8c f000000b8e 0efe MOVLW 0xfe000b90 cfdb MOVFF 0xfdb,0x1000b92 f001000b94 c001 MOVFF 0x1,0x0000b96 f000000b98 6a01 CLRF 0x1,0x0000b9a 5000 MOVF 0x0,0x0,0x0000b9c 6eaa MOVWF 0xaa,0x0000b9e 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c000ba0 6ee7 MOVWF 0xe7,0x0000ba2 0efd MOVLW 0xfd000ba4 cfdb MOVFF 0xfdb,0x0000ba6 f000000ba8 0efe MOVLW 0xfe000baa cfdb MOVFF 0xfdb,0x1000bac f001000bae 50e7 MOVF 0xe7,0x0,0x0000bb0 1600 ANDWF 0x0,0x1,0x0000bb2 6a01 CLRF 0x1,0x0000bb4 5000 MOVF 0x0,0x0,0x0000bb6 6ea9 MOVWF 0xa9,0x0000bb8 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c000bba 50db MOVF 0xdb,0x0,0x0000bbc 6ea8 MOVWF 0xa8,0x0000bbe 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c000bc0 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c000bc2 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c000bc4 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c000bc6 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c000bc8 6ea7 MOVWF 0xa7,0x0000bca 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c000bcc 6ea7 MOVWF 0xa7,0x0000bce 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c000bd0 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c000bd2 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c000bd4 d7fe BRA 0xbd2000bd6 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c000bd8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c000bda cfe7 MOVFF 0xfe7,0xfd9000bdc ffd9000bde 0012 RETURN 0x0