Rev 56 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Oct 29 18:28:01 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Main application F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canBoot\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBoot\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canBoot\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CANdefs.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\Main.c#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic CAN_PROTO_MESSAGE cm; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE ful=0; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic DWORD cnt =0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BOOL canGetPacket(void); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#define PACKET_TIMEOUT (TICK_SECOND/20) F:\MCP\projects\CAN\canBoot\Source\Main.c#define BOOTLOADER_INIT_TIMOUT (TICK_SECOND*5) F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBoot\Source\Main.c000046 ffe6000048 cfe1 MOVFF 0xfe1,0xfd900004a ffd900004c 0e11 MOVLW 0x1100004e 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 TICK t = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic WORD programmerSid=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic PROGRAM_STATE afterAckPgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic DWORD pgmAddress = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cstatic BYTE tmp; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Inits F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000050 da22 RCALL 0x496 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.c000052 da27 RCALL 0x4a2 canInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c#endif 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.c000054 ec5e CALL 0x8bc,0x0 tickInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c000056 f004F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0003b0 d653 BRA 0x58 for(;;) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.cCAN_PROTO_MESSAGE outCm; F:\MCP\projects\CAN\canBoot\Source\Main.c000058 da4d RCALL 0x4f4 BOOL hasPacket = canGetPacket(); F:\MCP\projects\CAN\canBoot\Source\Main.c00005a 6ee7 MOVWF 0xe7,0x000005c 0e10 MOVLW 0x1000005e cfe7 MOVFF 0xfe7,0xfdb000060 ffdbF:\MCP\projects\CAN\canBoot\Source\Main.c000062 50db MOVF 0xdb,0x0,0x0 if (hasPacket) F:\MCP\projects\CAN\canBoot\Source\Main.c000064 e003 BZ 0x6c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000066 0100 MOVLB 0x0 tmp=5; F:\MCP\projects\CAN\canBoot\Source\Main.c000068 0e05 MOVLW 0x500006a 6f83 MOVWF 0x83,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00006c 0100 MOVLB 0x0 switch(pgs) F:\MCP\projects\CAN\canBoot\Source\Main.c00006e 5165 MOVF 0x65,0x0,0x1000070 0a05 XORLW 0x5000072 e101 BNZ 0x76000074 d179 BRA 0x368000076 0a01 XORLW 0x1000078 e101 BNZ 0x7c00007a d16b BRA 0x35200007c 0a07 XORLW 0x700007e e101 BNZ 0x82000080 d0f7 BRA 0x270000082 0a01 XORLW 0x1000084 e101 BNZ 0x88000086 d0b9 BRA 0x1fa000088 0a03 XORLW 0x300008a e061 BZ 0x14e00008c 0a01 XORLW 0x100008e e002 BZ 0x94{ 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.c000094 0e10 MOVLW 0x10 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_INIT && cm.data[RID_INDEX]==MY_ID && cm.nid==MY_NID) F:\MCP\projects\CAN\canBoot\Source\Main.c000096 04db DECF 0xdb,0x0,0x0000098 e159 BNZ 0x14c00009a 0100 MOVLB 0x000009c 5173 MOVF 0x73,0x0,0x100009e e156 BNZ 0x14c0000a0 0e01 MOVLW 0x10000a2 1974 XORWF 0x74,0x0,0x10000a4 e101 BNZ 0xa80000a6 5175 MOVF 0x75,0x0,0x10000a8 e151 BNZ 0x14c0000aa 0e78 MOVLW 0x780000ac 5d7f SUBWF 0x7f,0x0,0x10000ae e14e BNZ 0x14c0000b0 5176 MOVF 0x76,0x0,0x10000b2 e14c BNZ 0x14c{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Has new start packet F:\MCP\projects\CAN\canBoot\Source\Main.c0000b4 c07d MOVFF 0x7d,0x0 pgmAddress = (((DWORD)cm.data[ADDRU_INDEX])<<16)+(((DWORD)cm.data[ADDRH_INDEX])<<8)+((DWORD)cm.data[ADDRL_INDEX]); F:\MCP\projects\CAN\canBoot\Source\Main.c0000b6 f0000000b8 6a01 CLRF 0x1,0x00000ba 6a02 CLRF 0x2,0x00000bc 6a03 CLRF 0x3,0x00000be 0e10 MOVLW 0x100000c0 0b1f ANDLW 0x1f0000c2 e007 BZ 0xd20000c4 90d8 BCF 0xd8,0x0,0x00000c6 3600 RLCF 0x0,0x1,0x00000c8 3601 RLCF 0x1,0x1,0x00000ca 3602 RLCF 0x2,0x1,0x00000cc 3603 RLCF 0x3,0x1,0x00000ce 06e8 DECF 0xe8,0x1,0x00000d0 e1f9 BNZ 0xc40000d2 c07c MOVFF 0x7c,0x40000d4 f0040000d6 6a05 CLRF 0x5,0x00000d8 6a06 CLRF 0x6,0x00000da 6a07 CLRF 0x7,0x00000dc 0e08 MOVLW 0x80000de 0b1f ANDLW 0x1f0000e0 e007 BZ 0xf00000e2 90d8 BCF 0xd8,0x0,0x00000e4 3604 RLCF 0x4,0x1,0x00000e6 3605 RLCF 0x5,0x1,0x00000e8 3606 RLCF 0x6,0x1,0x00000ea 3607 RLCF 0x7,0x1,0x00000ec 06e8 DECF 0xe8,0x1,0x00000ee e1f9 BNZ 0xe20000f0 5004 MOVF 0x4,0x0,0x00000f2 2600 ADDWF 0x0,0x1,0x00000f4 5005 MOVF 0x5,0x0,0x00000f6 2201 ADDWFC 0x1,0x1,0x00000f8 5006 MOVF 0x6,0x0,0x00000fa 2202 ADDWFC 0x2,0x1,0x00000fc 5007 MOVF 0x7,0x0,0x00000fe 2203 ADDWFC 0x3,0x1,0x0000100 c07b MOVFF 0x7b,0x8000102 f008000104 6a09 CLRF 0x9,0x0000106 6a0a CLRF 0xa,0x0000108 6a0b CLRF 0xb,0x000010a 5000 MOVF 0x0,0x0,0x000010c 2408 ADDWF 0x8,0x0,0x000010e 0100 MOVLB 0x0000110 6f6e MOVWF 0x6e,0x1000112 5001 MOVF 0x1,0x0,0x0000114 2009 ADDWFC 0x9,0x0,0x0000116 6f6f MOVWF 0x6f,0x1000118 5002 MOVF 0x2,0x0,0x000011a 200a ADDWFC 0xa,0x0,0x000011c 6f70 MOVWF 0x70,0x100011e 5003 MOVF 0x3,0x0,0x0000120 200b ADDWFC 0xb,0x0,0x0000122 6f71 MOVWF 0x71,0x1000124 c077 MOVFF 0x77,0x6a programmerSid = cm.sid; F:\MCP\projects\CAN\canBoot\Source\Main.c000126 f06a000128 c078 MOVFF 0x78,0x6b00012a f06b00012c ec68 CALL 0x8d0,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00012e f004000130 c010 MOVFF 0x10,0x66000132 f066000134 c011 MOVFF 0x11,0x67000136 f067000138 c012 MOVFF 0x12,0x6800013a f06800013c c013 MOVFF 0x13,0x6900013e f069000140 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000142 6b6c CLRF 0x6c,0x1000144 0e02 MOVLW 0x2 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000146 6f6d MOVWF 0x6d,0x1000148 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00014a 6f65 MOVWF 0x65,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// TODO TIMEOUT! F:\MCP\projects\CAN\canBoot\Source\Main.c// tBoot = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c// if ((tickGet()-tBoot)>BOOTLOADER_INIT_TIMOUT) goto userprgm; F:\MCP\projects\CAN\canBoot\Source\Main.c00014c d131 BRA 0x3b0 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.c00014e 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBoot\Source\Main.c000150 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000152 6ef3 MOVWF 0xf3,0x0000154 0e01 MOVLW 0x1000156 cff3 MOVFF 0xff3,0xfdb000158 ffdb00015a 0e02 MOVLW 0x200015c 6adb CLRF 0xdb,0x000015e 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBoot\Source\Main.c000160 6adb CLRF 0xdb,0x0000162 0e78 MOVLW 0x78 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBoot\Source\Main.c000164 6ef3 MOVWF 0xf3,0x0000166 0e04 MOVLW 0x4000168 cff3 MOVFF 0xff3,0xfdb00016a ffdb00016c 0e05 MOVLW 0x500016e 6adb CLRF 0xdb,0x0000170 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000172 6ef3 MOVWF 0xf3,0x0000174 0e06 MOVLW 0x6000176 cff3 MOVFF 0xff3,0xfdb000178 ffdb00017a 0e07 MOVLW 0x7 outCm.remote_request = FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c00017c 6adb CLRF 0xdb,0x000017e 0e0c MOVLW 0xc outCm.data[ERR_INDEX] = errMsg; F:\MCP\projects\CAN\canBoot\Source\Main.c000180 c06c MOVFF 0x6c,0xfdb000182 ffdb000184 ec68 CALL 0x8d0,0x0 t = tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c000186 f004000188 c010 MOVFF 0x10,0x6600018a f06600018c c011 MOVFF 0x11,0x6700018e f067000190 c012 MOVFF 0x12,0x68000192 f068000194 c013 MOVFF 0x13,0x69000196 f069000198 c06d MOVFF 0x6d,0x65 pgs = afterAckPgs; F:\MCP\projects\CAN\canBoot\Source\Main.c00019a f065F:\MCP\projects\CAN\canBoot\Source\Main.c00019c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBoot\Source\Main.c00019e 6ee6 MOVWF 0xe6,0x00001a0 cfd9 MOVFF 0xfd9,0xfe90001a2 ffe90001a4 cfda MOVFF 0xfda,0xfea0001a6 ffea0001a8 cfee MOVFF 0xfee,0xfe60001aa ffe60001ac cfee MOVFF 0xfee,0xfe60001ae ffe60001b0 cfee MOVFF 0xfee,0xfe60001b2 ffe60001b4 cfee MOVFF 0xfee,0xfe60001b6 ffe60001b8 cfee MOVFF 0xfee,0xfe60001ba ffe60001bc cfee MOVFF 0xfee,0xfe60001be ffe60001c0 cfee MOVFF 0xfee,0xfe60001c2 ffe60001c4 cfee MOVFF 0xfee,0xfe60001c6 ffe60001c8 cfee MOVFF 0xfee,0xfe60001ca ffe60001cc cfee MOVFF 0xfee,0xfe60001ce ffe60001d0 cfee MOVFF 0xfee,0xfe60001d2 ffe60001d4 cfee MOVFF 0xfee,0xfe60001d6 ffe60001d8 cfee MOVFF 0xfee,0xfe60001da ffe60001dc cfee MOVFF 0xfee,0xfe60001de ffe60001e0 cfee MOVFF 0xfee,0xfe60001e2 ffe60001e4 cfee MOVFF 0xfee,0xfe60001e6 ffe60001e8 da45 RCALL 0x6740001ea 6e00 MOVWF 0x0,0x00001ec 0e11 MOVLW 0x110001ee 5ee1 SUBWF 0xe1,0x1,0x00001f0 5000 MOVF 0x0,0x0,0x00001f2 0900 IORLW 0x00001f4 e101 BNZ 0x1f80001f6 d7d2 BRA 0x19c0001f8 d0db BRA 0x3b0 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.c0001fa ec68 CALL 0x8d0,0x0 if ((tickGet()-t)>PACKET_TIMEOUT) F:\MCP\projects\CAN\canBoot\Source\Main.c0001fc f0040001fe 0100 MOVLB 0x0000200 5166 MOVF 0x66,0x0,0x1000202 5c10 SUBWF 0x10,0x0,0x0000204 6e00 MOVWF 0x0,0x0000206 5167 MOVF 0x67,0x0,0x1000208 5811 SUBWFB 0x11,0x0,0x000020a 6e01 MOVWF 0x1,0x000020c 5168 MOVF 0x68,0x0,0x100020e 5812 SUBWFB 0x12,0x0,0x0000210 6e02 MOVWF 0x2,0x0000212 5169 MOVF 0x69,0x0,0x1000214 5813 SUBWFB 0x13,0x0,0x0000216 6e03 MOVWF 0x3,0x0000218 80d8 BSF 0xd8,0x0,0x000021a 0e05 MOVLW 0x500021c 5400 SUBFWB 0x0,0x0,0x000021e 0e00 MOVLW 0x0000220 5401 SUBFWB 0x1,0x0,0x0000222 0e00 MOVLW 0x0000224 5402 SUBFWB 0x2,0x0,0x0000226 0e00 MOVLW 0x0000228 5403 SUBFWB 0x3,0x0,0x000022a e205 BC 0x236{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Timeout, resend ack. F:\MCP\projects\CAN\canBoot\Source\Main.c00022c 6b6c CLRF 0x6c,0x1 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00022e 0e02 MOVLW 0x2 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c000230 6f6d MOVWF 0x6d,0x1000232 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000234 6f65 MOVWF 0x65,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.c000236 0e10 MOVLW 0x10 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000238 04db DECF 0xdb,0x0,0x000023a e119 BNZ 0x26e00023c 0100 MOVLB 0x000023e 5173 MOVF 0x73,0x0,0x1000240 e116 BNZ 0x26e000242 0e03 MOVLW 0x3000244 1974 XORWF 0x74,0x0,0x1000246 e101 BNZ 0x24a000248 5175 MOVF 0x75,0x0,0x100024a e111 BNZ 0x26e00024c 5176 MOVF 0x76,0x0,0x100024e e10f BNZ 0x26e000250 0100 MOVLB 0x0000252 516a MOVF 0x6a,0x0,0x1000254 0100 MOVLB 0x0000256 1977 XORWF 0x77,0x0,0x1000258 e104 BNZ 0x26200025a 0100 MOVLB 0x000025c 516b MOVF 0x6b,0x0,0x100025e 0100 MOVLB 0x0000260 1978 XORWF 0x78,0x0,0x1000262 e105 BNZ 0x26e{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, setup start adress etc.. F:\MCP\projects\CAN\canBoot\Source\Main.c000264 0100 MOVLB 0x0 bytesReceived = 8; F:\MCP\projects\CAN\canBoot\Source\Main.c000266 0e08 MOVLW 0x8000268 6f72 MOVWF 0x72,0x100026a 0e03 MOVLW 0x3 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00026c 6f65 MOVWF 0x65,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00026e d0a0 BRA 0x3b0 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.c000270 0e10 MOVLW 0x10 if (hasPacket==TRUE && cm.funct==FUNCT_BOOTLOADER && cm.funcc==FUNCC_BOOT_PGM && cm.nid==MY_NID && cm.sid==programmerSid) F:\MCP\projects\CAN\canBoot\Source\Main.c000272 04db DECF 0xdb,0x0,0x0000274 e119 BNZ 0x2a8000276 0100 MOVLB 0x0000278 5173 MOVF 0x73,0x0,0x100027a e116 BNZ 0x2a800027c 0e03 MOVLW 0x300027e 1974 XORWF 0x74,0x0,0x1000280 e101 BNZ 0x284000282 5175 MOVF 0x75,0x0,0x1000284 e111 BNZ 0x2a8000286 5176 MOVF 0x76,0x0,0x1000288 e10f BNZ 0x2a800028a 0100 MOVLB 0x000028c 516a MOVF 0x6a,0x0,0x100028e 0100 MOVLB 0x0000290 1977 XORWF 0x77,0x0,0x1000292 e104 BNZ 0x29c000294 0100 MOVLB 0x0000296 516b MOVF 0x6b,0x0,0x1000298 0100 MOVLB 0x000029a 1978 XORWF 0x78,0x0,0x100029c e105 BNZ 0x2a8{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Save bytes in memory, inc received bytes. F:\MCP\projects\CAN\canBoot\Source\Main.c00029e 0e08 MOVLW 0x8 bytesReceived += 8; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a0 0100 MOVLB 0x00002a2 2772 ADDWF 0x72,0x1,0x10002a4 0e03 MOVLW 0x3 pgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0002a6 6f65 MOVWF 0x65,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.c0002a8 0e10 MOVLW 0x10 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.c0002aa 04db DECF 0xdb,0x0,0x00002ac e11a BNZ 0x2e20002ae 0100 MOVLB 0x00002b0 5173 MOVF 0x73,0x0,0x10002b2 e117 BNZ 0x2e20002b4 0e02 MOVLW 0x20002b6 1974 XORWF 0x74,0x0,0x10002b8 e101 BNZ 0x2bc0002ba 5175 MOVF 0x75,0x0,0x10002bc e112 BNZ 0x2e20002be 5176 MOVF 0x76,0x0,0x10002c0 e110 BNZ 0x2e20002c2 0100 MOVLB 0x00002c4 516a MOVF 0x6a,0x0,0x10002c6 0100 MOVLB 0x00002c8 1977 XORWF 0x77,0x0,0x10002ca e104 BNZ 0x2d40002cc 0100 MOVLB 0x00002ce 516b MOVF 0x6b,0x0,0x10002d0 0100 MOVLB 0x00002d2 1978 XORWF 0x78,0x0,0x10002d4 e106 BNZ 0x2e2{ F:\MCP\projects\CAN\canBoot\Source\Main.c// Send ack and goto wait first packet. F:\MCP\projects\CAN\canBoot\Source\Main.c0002d6 0100 MOVLB 0x0 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c0002d8 6b6c CLRF 0x6c,0x10002da 0e02 MOVLW 0x2 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c0002dc 6f6d MOVWF 0x6d,0x10002de 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c0002e0 6f65 MOVWF 0x65,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.c0002e2 0e10 MOVLW 0x10 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.c0002e4 04db DECF 0xdb,0x0,0x00002e6 e12b BNZ 0x33e0002e8 0100 MOVLB 0x00002ea 5173 MOVF 0x73,0x0,0x10002ec e128 BNZ 0x33e0002ee 0e05 MOVLW 0x50002f0 1974 XORWF 0x74,0x0,0x10002f2 e101 BNZ 0x2f60002f4 5175 MOVF 0x75,0x0,0x10002f6 e123 BNZ 0x33e0002f8 5176 MOVF 0x76,0x0,0x10002fa e121 BNZ 0x33e0002fc 0100 MOVLB 0x00002fe 516a MOVF 0x6a,0x0,0x1000300 0100 MOVLB 0x0000302 1977 XORWF 0x77,0x0,0x1000304 e104 BNZ 0x30e000306 0100 MOVLB 0x0000308 516b MOVF 0x6b,0x0,0x100030a 0100 MOVLB 0x000030c 1978 XORWF 0x78,0x0,0x100030e e117 BNZ 0x33e{ 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.c000310 0100 MOVLB 0x0 if (bytesReceived==0) F:\MCP\projects\CAN\canBoot\Source\Main.c000312 5172 MOVF 0x72,0x0,0x1000314 e106 BNZ 0x322{ F:\MCP\projects\CAN\canBoot\Source\Main.c// No received, done. F:\MCP\projects\CAN\canBoot\Source\Main.c000316 6b6c CLRF 0x6c,0x1 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000318 0e05 MOVLW 0x5 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00031a 6f6d MOVWF 0x6d,0x100031c 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c00031e 6f65 MOVWF 0x65,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000320 d00e BRA 0x33e else if (bytesReceived!=64) F:\MCP\projects\CAN\canBoot\Source\Main.c000322 0e40 MOVLW 0x40000324 5d72 SUBWF 0x72,0x0,0x1000326 e007 BZ 0x336{ F:\MCP\projects\CAN\canBoot\Source\Main.c000328 0e01 MOVLW 0x1 errMsg = ERR_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c00032a 6f6c MOVWF 0x6c,0x100032c 0e02 MOVLW 0x2 afterAckPgs = pgsWAIT_FIRST_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00032e 6f6d MOVWF 0x6d,0x1000330 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000332 6f65 MOVWF 0x65,0x1} F:\MCP\projects\CAN\canBoot\Source\Main.c000334 d004 BRA 0x33e else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000336 0e04 MOVLW 0x4 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c000338 6f65 MOVWF 0x65,0x100033a 0e05 MOVLW 0x5 afterAckPgs = pgsDONE; F:\MCP\projects\CAN\canBoot\Source\Main.c00033c 6f6d MOVWF 0x6d,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.c00033e 0e40 MOVLW 0x40 if (bytesReceived==64) F:\MCP\projects\CAN\canBoot\Source\Main.c000340 0100 MOVLB 0x0000342 5d72 SUBWF 0x72,0x0,0x1000344 e105 BNZ 0x350{ F:\MCP\projects\CAN\canBoot\Source\Main.c000346 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c000348 0e04 MOVLW 0x4 pgs = pgsWRITE_PROGRAM; F:\MCP\projects\CAN\canBoot\Source\Main.c00034a 6f65 MOVWF 0x65,0x100034c 0e03 MOVLW 0x3 afterAckPgs = pgsWAIT_PGM_PACKET; F:\MCP\projects\CAN\canBoot\Source\Main.c00034e 6f6d MOVWF 0x6d,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.c000350 d02f BRA 0x3b0 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.c// Write program and send ack. F:\MCP\projects\CAN\canBoot\Source\Main.c000352 0e40 MOVLW 0x40 pgmAddress += 64; F:\MCP\projects\CAN\canBoot\Source\Main.c000354 276e ADDWF 0x6e,0x1,0x1000356 0e00 MOVLW 0x0000358 236f ADDWFC 0x6f,0x1,0x100035a 2370 ADDWFC 0x70,0x1,0x100035c 2371 ADDWFC 0x71,0x1,0x100035e 6b72 CLRF 0x72,0x1 bytesReceived = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c000360 6b6c CLRF 0x6c,0x1 errMsg = ERR_NO_ERROR; F:\MCP\projects\CAN\canBoot\Source\Main.c000362 0e01 MOVLW 0x1 pgs = pgsSEND_ACK; F:\MCP\projects\CAN\canBoot\Source\Main.c000364 6f65 MOVWF 0x65,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c000366 d024 BRA 0x3b0 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.c// Goto main program. F:\MCP\projects\CAN\canBoot\Source\Main.c000368 ec68 CALL 0x8d0,0x0 if ((tickGet()-t)>=TICK_SECOND/4) F:\MCP\projects\CAN\canBoot\Source\Main.c00036a f00400036c 0100 MOVLB 0x000036e 5166 MOVF 0x66,0x0,0x1000370 5c10 SUBWF 0x10,0x0,0x0000372 6e00 MOVWF 0x0,0x0000374 5167 MOVF 0x67,0x0,0x1000376 5811 SUBWFB 0x11,0x0,0x0000378 6e01 MOVWF 0x1,0x000037a 5168 MOVF 0x68,0x0,0x100037c 5812 SUBWFB 0x12,0x0,0x000037e 6e02 MOVWF 0x2,0x0000380 5169 MOVF 0x69,0x0,0x1000382 5813 SUBWFB 0x13,0x0,0x0000384 6e03 MOVWF 0x3,0x0000386 0e19 MOVLW 0x19000388 5c00 SUBWF 0x0,0x0,0x000038a 0e00 MOVLW 0x000038c 5801 SUBWFB 0x1,0x0,0x000038e 0e00 MOVLW 0x0000390 5802 SUBWFB 0x2,0x0,0x0000392 0e00 MOVLW 0x0000394 5803 SUBWFB 0x3,0x0,0x0000396 e30b BNC 0x3ae{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000398 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c00039a ec68 CALL 0x8d0,0x0 t=tickGet(); F:\MCP\projects\CAN\canBoot\Source\Main.c00039c f00400039e c010 MOVFF 0x10,0x660003a0 f0660003a2 c011 MOVFF 0x11,0x670003a4 f0670003a6 c012 MOVFF 0x12,0x680003a8 f0680003aa c013 MOVFF 0x13,0x690003ac f069} F:\MCP\projects\CAN\canBoot\Source\Main.c0003ae d000 BRA 0x3b0 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.c000090 6b65 CLRF 0x65,0x1 pgs = pgsWATING_START; F:\MCP\projects\CAN\canBoot\Source\Main.c000092 d18e BRA 0x3b0 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.c0003b2 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canBoot\Source\Main.c0003b4 5ce1 SUBWF 0xe1,0x0,0x00003b6 e202 BC 0x3bc0003b8 6ae1 CLRF 0xe1,0x00003ba 52e5 MOVF 0xe5,0x1,0x00003bc 6ee1 MOVWF 0xe1,0x00003be 52e5 MOVF 0xe5,0x1,0x00003c0 cfe7 MOVFF 0xfe7,0xfd90003c2 ffd90003c4 0012 RETURN 0x0F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canBoot\Source\Main.c0003c6 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c0003c8 ffe40003ca cfe0 MOVFF 0xfe0,0xfe40003cc ffe40003ce 6ee4 MOVWF 0xe4,0x00003d0 cfda MOVFF 0xfda,0xfe40003d2 ffe40003d4 cfe2 MOVFF 0xfe2,0xfda0003d6 ffda0003d8 cfe9 MOVFF 0xfe9,0xfe40003da ffe40003dc cfea MOVFF 0xfea,0xfe40003de ffe40003e0 cff6 MOVFF 0xff6,0xfe40003e2 ffe40003e4 cff7 MOVFF 0xff7,0xfe40003e6 ffe40003e8 cff5 MOVFF 0xff5,0xfe40003ea ffe40003ec cff3 MOVFF 0xff3,0xfe40003ee ffe40003f0 cff4 MOVFF 0xff4,0xfe40003f2 ffe40003f4 cffa MOVFF 0xffa,0xfe40003f6 ffe40003f8 ee00 LFSR 0x0,0xc0003fa f00c0003fc 0e0b MOVLW 0xb0003fe 04e8 DECF 0xe8,0x0,0x0000400 e303 BNC 0x408000402 cfee MOVFF 0xfee,0xfe4000404 ffe4000406 d7fb BRA 0x3fe000408 ee00 LFSR 0x0,0x000040a f00000040c 0e0c MOVLW 0xc00040e 04e8 DECF 0xe8,0x0,0x0000410 e303 BNC 0x418000412 cfee MOVFF 0xfee,0xfe4000414 ffe4000416 d7fb BRA 0x40e000418 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\Main.c00041a ec72 CALL 0x8e4,0x0 tickUpdate(); F:\MCP\projects\CAN\canBoot\Source\Main.c00041c f00400041e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000420 ee00 LFSR 0x0,0xb000422 f00b000424 0e0c MOVLW 0xc000426 04e8 DECF 0xe8,0x0,0x0000428 e303 BNC 0x43000042a cfe5 MOVFF 0xfe5,0xfed00042c ffed00042e d7fb BRA 0x426000430 ee00 LFSR 0x0,0x16000432 f016000434 0e0b MOVLW 0xb000436 04e8 DECF 0xe8,0x0,0x0000438 e303 BNC 0x44000043a cfe5 MOVFF 0xfe5,0xfed00043c ffed00043e d7fb BRA 0x436000440 cfe5 MOVFF 0xfe5,0xffa000442 fffa000444 cfe5 MOVFF 0xfe5,0xff4000446 fff4000448 cfe5 MOVFF 0xfe5,0xff300044a fff300044c cfe5 MOVFF 0xfe5,0xff500044e fff5000450 cfe5 MOVFF 0xfe5,0xff7000452 fff7000454 cfe5 MOVFF 0xfe5,0xff6000456 fff6000458 cfe5 MOVFF 0xfe5,0xfea00045a ffea00045c cfe5 MOVFF 0xfe5,0xfe900045e ffe9000460 cfe5 MOVFF 0xfe5,0xfda000462 ffda000464 50e5 MOVF 0xe5,0x0,0x0000466 cfe5 MOVFF 0xfe5,0xfe0000468 ffe000046a cfe5 MOVFF 0xfe5,0xfd800046c ffd800046e 0010 RETFIE 0x0#pragma code highVector=0x08 F:\MCP\projects\CAN\canBoot\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000008 efe3 GOTO 0x3c6 _asm goto HighISR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00000a f00100000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code // Return to default code section 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#pragma interruptlow LowISR F:\MCP\projects\CAN\canBoot\Source\Main.c000470 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c000472 ffe4000474 cfe0 MOVFF 0xfe0,0xfe4000476 ffe4000478 6ee4 MOVWF 0xe4,0x000047a cfda MOVFF 0xfda,0xfe400047c ffe400047e cfe2 MOVFF 0xfe2,0xfda000480 ffda000482 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000484 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000486 cfe5 MOVFF 0xfe5,0xfda000488 ffda00048a 50e5 MOVF 0xe5,0x0,0x000048c cfe5 MOVFF 0xfe5,0xfe000048e ffe0000490 cfe5 MOVFF 0xfe5,0xfd8000492 ffd8000494 0010 RETFIE 0x0#pragma code lowVector=0x18 F:\MCP\projects\CAN\canBoot\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c000018 ef38 GOTO 0x470 _asm goto LowISR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00001a f00200001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c#pragma code // Return to default code section 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: 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.c000496 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.c000498 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.c00049a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00049c 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.c00049e 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.c0004a0 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.c0004a2 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\Main.c0004a4 6e6f MOVWF 0x6f,0x00004a6 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\Main.c0004a8 146e ANDWF 0x6e,0x0,0x00004aa 0880 SUBLW 0x800004ac e001 BZ 0x4b00004ae d7fb BRA 0x4a6F:\MCP\projects\CAN\canBoot\Source\Main.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0004b0 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.c0004b2 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004b4 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.c0004b6 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\Main.c0004b8 1070 IORWF 0x70,0x0,0x00004ba 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\Main.c0004bc 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.c0004be 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004c0 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004c2 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.c0004c4 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004c6 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004c8 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.c0004ca 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.c0004cc 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.c0004ce 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004d0 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004d2 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0004d4 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004d6 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004d8 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBoot\Source\Main.c0004da 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\Main.c0004dc 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.c0004de 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004e0 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c//rx no interrupt F:\MCP\projects\CAN\canBoot\Source\Main.c0004e2 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0004e4 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.c0004e6 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.c0004e8 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0004ea 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\Main.c0004ec 146e ANDWF 0x6e,0x0,0x00004ee e001 BZ 0x4f20004f0 d7fc BRA 0x4ea#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0004f2 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.c0004f4 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; } F:\MCP\projects\CAN\canBoot\Source\Main.c0004f6 d005 BRA 0x5020004f8 0e00 MOVLW 0x00004fa 1477 ANDWF 0x77,0x0,0x00004fc 0910 IORLW 0x100004fe 6e77 MOVWF 0x77,0x0000500 d035 BRA 0x56c else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; } F:\MCP\projects\CAN\canBoot\Source\Main.c000502 010f MOVLB 0xf000504 af50 BTFSS 0x50,0x7,0x1000506 d005 BRA 0x512000508 0e00 MOVLW 0x000050a 1477 ANDWF 0x77,0x0,0x000050c 0911 IORLW 0x1100050e 6e77 MOVWF 0x77,0x0000510 d02d BRA 0x56c else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; } F:\MCP\projects\CAN\canBoot\Source\Main.c000512 010e MOVLB 0xe000514 af20 BTFSS 0x20,0x7,0x1000516 d005 BRA 0x522000518 0e00 MOVLW 0x000051a 1477 ANDWF 0x77,0x0,0x000051c 0912 IORLW 0x1200051e 6e77 MOVWF 0x77,0x0000520 d025 BRA 0x56c else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; } F:\MCP\projects\CAN\canBoot\Source\Main.c000522 af30 BTFSS 0x30,0x7,0x1000524 d005 BRA 0x530000526 0e00 MOVLW 0x0000528 1477 ANDWF 0x77,0x0,0x000052a 0913 IORLW 0x1300052c 6e77 MOVWF 0x77,0x000052e d01e BRA 0x56c else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; } F:\MCP\projects\CAN\canBoot\Source\Main.c000530 af40 BTFSS 0x40,0x7,0x1000532 d005 BRA 0x53e000534 0e00 MOVLW 0x0000536 1477 ANDWF 0x77,0x0,0x0000538 0914 IORLW 0x1400053a 6e77 MOVWF 0x77,0x000053c d017 BRA 0x56c else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00053e af50 BTFSS 0x50,0x7,0x1000540 d005 BRA 0x54c000542 0e00 MOVLW 0x0000544 1477 ANDWF 0x77,0x0,0x0000546 0915 IORLW 0x15000548 6e77 MOVWF 0x77,0x000054a d010 BRA 0x56c else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; } F:\MCP\projects\CAN\canBoot\Source\Main.c00054c af60 BTFSS 0x60,0x7,0x100054e d005 BRA 0x55a000550 0e00 MOVLW 0x0000552 1477 ANDWF 0x77,0x0,0x0000554 0916 IORLW 0x16000556 6e77 MOVWF 0x77,0x0000558 d009 BRA 0x56c else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; } F:\MCP\projects\CAN\canBoot\Source\Main.c00055a af70 BTFSS 0x70,0x7,0x100055c d005 BRA 0x56800055e 0e00 MOVLW 0x0000560 1477 ANDWF 0x77,0x0,0x0000562 0917 IORLW 0x17000564 6e77 MOVWF 0x77,0x0000566 d002 BRA 0x56c else return FALSE; F:\MCP\projects\CAN\canBoot\Source\Main.c000568 0e00 MOVLW 0x000056a d083 BRA 0x672F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBoot\Source\Main.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBoot\Source\Main.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBoot\Source\Main.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBoot\Source\Main.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00056c 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBoot\Source\Main.c00056e 1461 ANDWF 0x61,0x0,0x0000570 38e8 SWAPF 0xe8,0x0,0x0000572 0b0f ANDLW 0xf000574 0100 MOVLB 0x0000576 6f73 MOVWF 0x73,0x1000578 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.c00057a 1461 ANDWF 0x61,0x0,0x000057c 6e04 MOVWF 0x4,0x000057e 6a05 CLRF 0x5,0x0000580 0e06 MOVLW 0x6000582 90d8 BCF 0xd8,0x0,0x0000584 3604 RLCF 0x4,0x1,0x0000586 3605 RLCF 0x5,0x1,0x0000588 04e8 DECF 0xe8,0x0,0x000058a e1fb BNZ 0x58200058c 0ee0 MOVLW 0xe000058e 1462 ANDWF 0x62,0x0,0x0000590 6e06 MOVWF 0x6,0x0000592 6a07 CLRF 0x7,0x0000594 90d8 BCF 0xd8,0x0,0x0000596 3207 RRCF 0x7,0x1,0x0000598 3206 RRCF 0x6,0x1,0x000059a 90d8 BCF 0xd8,0x0,0x000059c 3207 RRCF 0x7,0x1,0x000059e 3206 RRCF 0x6,0x1,0x00005a0 5004 MOVF 0x4,0x0,0x00005a2 2406 ADDWF 0x6,0x0,0x00005a4 6e02 MOVWF 0x2,0x00005a6 5005 MOVF 0x5,0x0,0x00005a8 2007 ADDWFC 0x7,0x0,0x00005aa 6e03 MOVWF 0x3,0x00005ac 0e03 MOVLW 0x30005ae 1462 ANDWF 0x62,0x0,0x00005b0 6e08 MOVWF 0x8,0x00005b2 6a09 CLRF 0x9,0x00005b4 90d8 BCF 0xd8,0x0,0x00005b6 3608 RLCF 0x8,0x1,0x00005b8 3609 RLCF 0x9,0x1,0x00005ba 5002 MOVF 0x2,0x0,0x00005bc 2408 ADDWF 0x8,0x0,0x00005be 6e00 MOVWF 0x0,0x00005c0 5003 MOVF 0x3,0x0,0x00005c2 2009 ADDWFC 0x9,0x0,0x00005c4 6e01 MOVWF 0x1,0x00005c6 0e80 MOVLW 0x800005c8 1463 ANDWF 0x63,0x0,0x00005ca 6e0a MOVWF 0xa,0x00005cc 6a0b CLRF 0xb,0x00005ce 0e07 MOVLW 0x70005d0 90d8 BCF 0xd8,0x0,0x00005d2 320b RRCF 0xb,0x1,0x00005d4 320a RRCF 0xa,0x1,0x00005d6 04e8 DECF 0xe8,0x0,0x00005d8 e1fb BNZ 0x5d00005da 5000 MOVF 0x0,0x0,0x00005dc 240a ADDWF 0xa,0x0,0x00005de 0100 MOVLB 0x00005e0 6f74 MOVWF 0x74,0x10005e2 5001 MOVF 0x1,0x0,0x00005e4 200b ADDWFC 0xb,0x0,0x00005e6 6f75 MOVWF 0x75,0x10005e8 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c0005ea 1463 ANDWF 0x63,0x0,0x00005ec 40e8 RRNCF 0xe8,0x0,0x00005ee 0b7f ANDLW 0x7f0005f0 6f76 MOVWF 0x76,0x10005f2 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\Main.c0005f4 1463 ANDWF 0x63,0x0,0x00005f6 6e00 MOVWF 0x0,0x00005f8 c000 MOVFF 0x0,0x10005fa f0010005fc 6a00 CLRF 0x0,0x00005fe 5064 MOVF 0x64,0x0,0x0000600 2400 ADDWF 0x0,0x0,0x0000602 6f77 MOVWF 0x77,0x1000604 0e00 MOVLW 0x0000606 2001 ADDWFC 0x1,0x0,0x0000608 6f78 MOVWF 0x78,0x1F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c00060a 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.c00060c 0b01 ANDLW 0x100060e 6e02 MOVWF 0x2,0x0000610 5065 MOVF 0x65,0x0,0x0000612 0b02 ANDLW 0x2000614 e001 BZ 0x618000616 0e01 MOVLW 0x1000618 24e8 ADDWF 0xe8,0x0,0x000061a 6e01 MOVWF 0x1,0x000061c 5065 MOVF 0x65,0x0,0x000061e 0b04 ANDLW 0x4000620 e001 BZ 0x624000622 0e01 MOVLW 0x1000624 0d04 MULLW 0x4000626 cff3 MOVFF 0xff3,0x0000628 f00000062a 5065 MOVF 0x65,0x0,0x000062c 0b08 ANDLW 0x800062e e001 BZ 0x632000630 0e01 MOVLW 0x1000632 0d08 MULLW 0x8000634 50f3 MOVF 0xf3,0x0,0x0000636 2400 ADDWF 0x0,0x0,0x0000638 2401 ADDWF 0x1,0x0,0x000063a 2402 ADDWF 0x2,0x0,0x000063c 6f79 MOVWF 0x79,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c00063e 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\Main.c000640 0b40 ANDLW 0x40000642 e102 BNZ 0x648000644 0e00 MOVLW 0x0000646 d001 BRA 0x64a000648 0e01 MOVLW 0x100064a 6f7a MOVWF 0x7a,0x1F:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c00064c cf66 MOVFF 0xf66,0x7b cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\Main.c00064e f07b000650 cf67 MOVFF 0xf67,0x7c000652 f07c000654 cf68 MOVFF 0xf68,0x7d cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\Main.c000656 f07d000658 cf69 MOVFF 0xf69,0x7e00065a f07e00065c cf6a MOVFF 0xf6a,0x7f cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\Main.c00065e f07f000660 cf6b MOVFF 0xf6b,0x80000662 f080000664 cf6c MOVFF 0xf6c,0x81 cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\Main.c000666 f081000668 cf6d MOVFF 0xf6d,0x8200066a f082F:\MCP\projects\CAN\canBoot\Source\Main.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\Main.c00066c 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00066e 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000670 d000 BRA 0x672000672 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.c000674 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PROTO_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\Main.c000676 ffe6000678 cfe1 MOVFF 0xfe1,0xfd900067a ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00067c 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\Main.c00067e b740 BTFSC 0x40,0x3,0x1000680 d004 BRA 0x68a000682 0e00 MOVLW 0x0000684 1477 ANDWF 0x77,0x0,0x0000686 0903 IORLW 0x3000688 6e77 MOVWF 0x77,0x000068a 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\Main.c00068c b730 BTFSC 0x30,0x3,0x100068e d004 BRA 0x698000690 0e00 MOVLW 0x0000692 1477 ANDWF 0x77,0x0,0x0000694 0904 IORLW 0x4000696 6e77 MOVWF 0x77,0x0000698 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\Main.c00069a b720 BTFSC 0x20,0x3,0x100069c d005 BRA 0x6a800069e 0e00 MOVLW 0x00006a0 1477 ANDWF 0x77,0x0,0x00006a2 0905 IORLW 0x50006a4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\Main.c0006a6 d002 BRA 0x6ac else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\Main.c0006a8 0e00 MOVLW 0x00006aa d0b5 BRA 0x816F:\MCP\projects\CAN\canBoot\Source\Main.c0006ac 0eee MOVLW 0xee if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0006ae cfdb MOVFF 0xfdb,0x00006b0 f0000006b2 3400 RLCF 0x0,0x0,0x00006b4 e20e BC 0x6d20006b6 0eee MOVLW 0xee0006b8 cfdb MOVFF 0xfdb,0x10006ba f0010006bc 0e03 MOVLW 0x30006be 6ee7 MOVWF 0xe7,0x00006c0 1801 XORWF 0x1,0x0,0x00006c2 aee8 BTFSS 0xe8,0x7,0x00006c4 d002 BRA 0x6ca0006c6 3401 RLCF 0x1,0x0,0x00006c8 d003 BRA 0x6d00006ca 50e7 MOVF 0xe7,0x0,0x00006cc 80d8 BSF 0xd8,0x0,0x00006ce 5401 SUBFWB 0x1,0x0,0x00006d0 e202 BC 0x6d60006d2 0eee MOVLW 0xee0006d4 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.c0006d6 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBoot\Source\Main.c0006d8 cfdb MOVFF 0xfdb,0x00006da f0000006dc 0ef1 MOVLW 0xf10006de cfdb MOVFF 0xfdb,0x10006e0 f0010006e2 0ec0 MOVLW 0xc00006e4 1600 ANDWF 0x0,0x1,0x00006e6 0e03 MOVLW 0x30006e8 1601 ANDWF 0x1,0x1,0x00006ea 0e06 MOVLW 0x60006ec 90d8 BCF 0xd8,0x0,0x00006ee 3201 RRCF 0x1,0x1,0x00006f0 3200 RRCF 0x0,0x1,0x00006f2 04e8 DECF 0xe8,0x0,0x00006f4 e1fb BNZ 0x6ec0006f6 0eef MOVLW 0xef0006f8 50db MOVF 0xdb,0x0,0x00006fa 0b0f ANDLW 0xf0006fc 0d10 MULLW 0x100006fe 50f3 MOVF 0xf3,0x0,0x0000700 2400 ADDWF 0x0,0x0,0x0000702 6e61 MOVWF 0x61,0x0000704 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBoot\Source\Main.c000706 6ee7 MOVWF 0xe7,0x0000708 0ef0 MOVLW 0xf000070a cfdb MOVFF 0xfdb,0x200070c f00200070e 0ef1 MOVLW 0xf1000710 cfdb MOVFF 0xfdb,0x3000712 f003000714 50e7 MOVF 0xe7,0x0,0x0000716 1602 ANDWF 0x2,0x1,0x0000718 6a03 CLRF 0x3,0x000071a 90d8 BCF 0xd8,0x0,0x000071c 3203 RRCF 0x3,0x1,0x000071e 3202 RRCF 0x2,0x1,0x0000720 0e3f MOVLW 0x3f000722 6ee7 MOVWF 0xe7,0x0000724 0ef0 MOVLW 0xf0000726 cfdb MOVFF 0xfdb,0x0000728 f00000072a 0ef1 MOVLW 0xf100072c cfdb MOVFF 0xfdb,0x100072e f001000730 50e7 MOVF 0xe7,0x0,0x0000732 1600 ANDWF 0x0,0x1,0x0000734 6a01 CLRF 0x1,0x0000736 90d8 BCF 0xd8,0x0,0x0000738 3600 RLCF 0x0,0x1,0x000073a 3601 RLCF 0x1,0x1,0x000073c 90d8 BCF 0xd8,0x0,0x000073e 3600 RLCF 0x0,0x1,0x0000740 3601 RLCF 0x1,0x1,0x0000742 5000 MOVF 0x0,0x0,0x0000744 2402 ADDWF 0x2,0x0,0x0000746 6e62 MOVWF 0x62,0x0000748 0ef3 MOVLW 0xf3 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBoot\Source\Main.c00074a cfdb MOVFF 0xfdb,0x200074c f00200074e 0ef4 MOVLW 0xf4000750 cfdb MOVFF 0xfdb,0x3000752 f003000754 0e00 MOVLW 0x0000756 1602 ANDWF 0x2,0x1,0x0000758 0e01 MOVLW 0x100075a 1603 ANDWF 0x3,0x1,0x000075c c003 MOVFF 0x3,0x200075e f002000760 6a03 CLRF 0x3,0x0000762 0e01 MOVLW 0x1000764 6ee7 MOVWF 0xe7,0x0000766 0ef0 MOVLW 0xf0000768 cfdb MOVFF 0xfdb,0x000076a f00000076c 0ef1 MOVLW 0xf100076e cfdb MOVFF 0xfdb,0x1000770 f001000772 50e7 MOVF 0xe7,0x0,0x0000774 1600 ANDWF 0x0,0x1,0x0000776 6a01 CLRF 0x1,0x0000778 0e07 MOVLW 0x700077a 90d8 BCF 0xd8,0x0,0x000077c 3600 RLCF 0x0,0x1,0x000077e 3601 RLCF 0x1,0x1,0x0000780 04e8 DECF 0xe8,0x0,0x0000782 e1fb BNZ 0x77a000784 0ef2 MOVLW 0xf2000786 50db MOVF 0xdb,0x0,0x0000788 0b3f ANDLW 0x3f00078a 24e8 ADDWF 0xe8,0x0,0x000078c 2400 ADDWF 0x0,0x0,0x000078e 2402 ADDWF 0x2,0x0,0x0000790 6e63 MOVWF 0x63,0x0000792 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBoot\Source\Main.c000794 6ee7 MOVWF 0xe7,0x0000796 0ef3 MOVLW 0xf3000798 cfdb MOVFF 0xfdb,0x000079a f00000079c 0ef4 MOVLW 0xf400079e cfdb MOVFF 0xfdb,0x10007a0 f0010007a2 50e7 MOVF 0xe7,0x0,0x00007a4 1600 ANDWF 0x0,0x1,0x00007a6 6a01 CLRF 0x1,0x00007a8 5000 MOVF 0x0,0x0,0x00007aa 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Data length F:\MCP\projects\CAN\canBoot\Source\Main.c0007ac 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\Main.c0007ae 0ef5 MOVLW 0xf5 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\Main.c0007b0 50db MOVF 0xdb,0x0,0x00007b2 0808 SUBLW 0x80007b4 e203 BC 0x7bc0007b6 0e08 MOVLW 0x80007b8 6e65 MOVWF 0x65,0x00007ba d003 BRA 0x7c20007bc 0ef5 MOVLW 0xf50007be 50db MOVF 0xdb,0x0,0x00007c0 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// Remote request F:\MCP\projects\CAN\canBoot\Source\Main.c0007c2 0ef6 MOVLW 0xf6 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBoot\Source\Main.c0007c4 04db DECF 0xdb,0x0,0x00007c6 e102 BNZ 0x7cc{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c0007c8 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c0007ca d001 BRA 0x7ce else F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c_asm F:\MCP\projects\CAN\canBoot\Source\Main.c0007cc 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\Main.c_endasm F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\Main.c0007ce 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\Main.c0007d0 50db MOVF 0xdb,0x0,0x00007d2 6e66 MOVWF 0x66,0x00007d4 0ef8 MOVLW 0xf80007d6 50db MOVF 0xdb,0x0,0x00007d8 6e67 MOVWF 0x67,0x00007da 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\Main.c0007dc 50db MOVF 0xdb,0x0,0x00007de 6e68 MOVWF 0x68,0x00007e0 0efa MOVLW 0xfa0007e2 50db MOVF 0xdb,0x0,0x00007e4 6e69 MOVWF 0x69,0x00007e6 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\Main.c0007e8 50db MOVF 0xdb,0x0,0x00007ea 6e6a MOVWF 0x6a,0x00007ec 0efc MOVLW 0xfc0007ee 50db MOVF 0xdb,0x0,0x00007f0 6e6b MOVWF 0x6b,0x00007f2 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\Main.c0007f4 50db MOVF 0xdb,0x0,0x00007f6 6e6c MOVWF 0x6c,0x00007f8 0efe MOVLW 0xfe0007fa 50db MOVF 0xdb,0x0,0x00007fc 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\Main.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\Main.c0007fe 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.c000800 0eee MOVLW 0xee RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\Main.c000802 cfdb MOVFF 0xfdb,0xfe6000804 ffe6000806 0efc MOVLW 0xfc000808 1460 ANDWF 0x60,0x0,0x000080a 52e5 MOVF 0xe5,0x1,0x000080c 10e7 IORWF 0xe7,0x0,0x000080e 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.c000810 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.c000812 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\Main.c000814 d000 BRA 0x816F:\MCP\projects\CAN\canBoot\Source\Main.c000816 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000818 cfe7 MOVFF 0xfe7,0xfd900081a ffd900081c 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.c/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Ticker service F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canBoot\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBoot\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canBoot\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canBoot\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBoot\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBoot\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBoot\Source\Tick.c#endif F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBoot\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBoot\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBoot\Source\Tick.c#else F:\MCP\projects\CAN\canBoot\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBoot\Source\Tick.c#endif F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c/* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBoot\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBoot\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBoot\Source\Tick.c*/ F:\MCP\projects\CAN\canBoot\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBoot\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBoot\Source\Tick.c{ F:\MCP\projects\CAN\canBoot\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBoot\Source\Tick.c0008bc 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008be 6ed6 MOVWF 0xd6,0x00008c0 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008c2 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canBoot\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canBoot\Source\Tick.c0008c4 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008c6 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBoot\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBoot\Source\Tick.c0008c8 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c0008ca 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008cc 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008ce 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c/* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canBoot\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBoot\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBoot\Source\Tick.c*/ F:\MCP\projects\CAN\canBoot\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canBoot\Source\Tick.c{ F:\MCP\projects\CAN\canBoot\Source\Tick.c0008d0 c08e MOVFF 0x8e,0x10 return TickCount; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008d2 f0100008d4 c08f MOVFF 0x8f,0x110008d6 f0110008d8 c090 MOVFF 0x90,0x120008da f0120008dc c091 MOVFF 0x91,0x130008de f0130008e0 d000 BRA 0x8e20008e2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.cF:\MCP\projects\CAN\canBoot\Source\Tick.c/* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canBoot\Source\Tick.c* F:\MCP\projects\CAN\canBoot\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Output: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBoot\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBoot\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBoot\Source\Tick.c*/ F:\MCP\projects\CAN\canBoot\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canBoot\Source\Tick.c{ F:\MCP\projects\CAN\canBoot\Source\Tick.c0008e4 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBoot\Source\Tick.c0008e6 d00b BRA 0x8fe{ F:\MCP\projects\CAN\canBoot\Source\Tick.c0008e8 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008ea 6ed7 MOVWF 0xd7,0x00008ec 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008ee 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBoot\Source\Tick.c0008f0 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBoot\Source\Tick.c0008f2 2b8e INCF 0x8e,0x1,0x10008f4 0e00 MOVLW 0x00008f6 238f ADDWFC 0x8f,0x1,0x10008f8 2390 ADDWFC 0x90,0x1,0x10008fa 2391 ADDWFC 0x91,0x1,0x1F:\MCP\projects\CAN\canBoot\Source\Tick.c0008fc 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBoot\Source\Tick.c} F:\MCP\projects\CAN\canBoot\Source\Tick.c0008fe 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Tick.c