Rev 53 | 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 Oct 25 15:36:28 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.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 void mainInit(void); F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cvoid main() F:\MCP\projects\CAN\canBoot\Source\Main.c{ 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.c00057c d86c RCALL 0x656 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.c00057e ec16 CALL 0x2c,0x0 canInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c000580 f000#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000582 d7ff BRA 0x582 while(1) F:\MCP\projects\CAN\canBoot\Source\Main.c{ F:\MCP\projects\CAN\canBoot\Source\Main.c} F:\MCP\projects\CAN\canBoot\Source\Main.c000584 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 interruptlow HighISR F:\MCP\projects\CAN\canBoot\Source\Main.c000586 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c000588 ffe400058a cfe0 MOVFF 0xfe0,0xfe400058c ffe400058e 6ee4 MOVWF 0xe4,0x0000590 cfda MOVFF 0xfda,0xfe4000592 ffe4000594 cfe2 MOVFF 0xfe2,0xfda000596 ffda000598 cfe9 MOVFF 0xfe9,0xfe400059a ffe400059c cfea MOVFF 0xfea,0xfe400059e ffe40005a0 cff6 MOVFF 0xff6,0xfe40005a2 ffe40005a4 cff7 MOVFF 0xff7,0xfe40005a6 ffe40005a8 cff5 MOVFF 0xff5,0xfe40005aa ffe40005ac cff3 MOVFF 0xff3,0xfe40005ae ffe40005b0 cff4 MOVFF 0xff4,0xfe40005b2 ffe40005b4 cffa MOVFF 0xffa,0xfe40005b6 ffe40005b8 ee00 LFSR 0x0,0x140005ba f0140005bc 0e02 MOVLW 0x20005be 04e8 DECF 0xe8,0x0,0x00005c0 e303 BNC 0x5c80005c2 cfee MOVFF 0xfee,0xfe40005c4 ffe40005c6 d7fb BRA 0x5be0005c8 ee00 LFSR 0x0,0x00005ca f0000005cc 0e14 MOVLW 0x140005ce 04e8 DECF 0xe8,0x0,0x00005d0 e303 BNC 0x5d80005d2 cfee MOVFF 0xfee,0xfe40005d4 ffe40005d6 d7fb BRA 0x5ce0005d8 52e6 MOVF 0xe6,0x1,0x0{ 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.c0005da ec41 CALL 0x82,0x0 canISR(); F:\MCP\projects\CAN\canBoot\Source\Main.c0005dc f000#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0005de 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c0005e0 ee00 LFSR 0x0,0x130005e2 f0130005e4 0e14 MOVLW 0x140005e6 04e8 DECF 0xe8,0x0,0x00005e8 e303 BNC 0x5f00005ea cfe5 MOVFF 0xfe5,0xfed0005ec ffed0005ee d7fb BRA 0x5e60005f0 ee00 LFSR 0x0,0x150005f2 f0150005f4 0e02 MOVLW 0x20005f6 04e8 DECF 0xe8,0x0,0x00005f8 e303 BNC 0x6000005fa cfe5 MOVFF 0xfe5,0xfed0005fc ffed0005fe d7fb BRA 0x5f6000600 cfe5 MOVFF 0xfe5,0xffa000602 fffa000604 cfe5 MOVFF 0xfe5,0xff4000606 fff4000608 cfe5 MOVFF 0xfe5,0xff300060a fff300060c cfe5 MOVFF 0xfe5,0xff500060e fff5000610 cfe5 MOVFF 0xfe5,0xff7000612 fff7000614 cfe5 MOVFF 0xfe5,0xff6000616 fff6000618 cfe5 MOVFF 0xfe5,0xfea00061a ffea00061c cfe5 MOVFF 0xfe5,0xfe900061e ffe9000620 cfe5 MOVFF 0xfe5,0xfda000622 ffda000624 50e5 MOVF 0xe5,0x0,0x0000626 cfe5 MOVFF 0xfe5,0xfe0000628 ffe000062a cfe5 MOVFF 0xfe5,0xfd800062c ffd800062e 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 efc3 GOTO 0x586 _asm goto HighISR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00000a f00200000c 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.c000630 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c000632 ffe4000634 cfe0 MOVFF 0xfe0,0xfe4000636 ffe4000638 6ee4 MOVWF 0xe4,0x000063a cfda MOVFF 0xfda,0xfe400063c ffe400063e cfe2 MOVFF 0xfe2,0xfda000640 ffda000642 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c000644 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c000646 cfe5 MOVFF 0xfe5,0xfda000648 ffda00064a 50e5 MOVF 0xe5,0x0,0x000064c cfe5 MOVFF 0xfe5,0xfe000064e ffe0000650 cfe5 MOVFF 0xfe5,0xfd8000652 ffd8000654 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 ef18 GOTO 0x630 _asm goto LowISR _endasm F:\MCP\projects\CAN\canBoot\Source\Main.c00001a f00300001c 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.c000656 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.c000658 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.c00065a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c00065c 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.c00065e 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.c000660 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/* F:\MCP\projects\CAN\canBoot\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canBoot\Source\Main.c* F:\MCP\projects\CAN\canBoot\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canBoot\Source\Main.c* Output: none F:\MCP\projects\CAN\canBoot\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canBoot\Source\Main.c* Affects: Sensors/actuators/etc. See 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.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\Main.c000662 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBoot\Source\Main.c000664 ffe6000666 cfe1 MOVFF 0xfe1,0xfd9000668 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.c00066a 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBoot\Source\Main.c00066c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c00066e cfe7 MOVFF 0xfe7,0xfd9000670 ffd9000672 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* CAN driver F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBoot\Source\CAN.c* FileName: CAN.c F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\canBoot\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBoot\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canBoot\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBoot\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBoot\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c/* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBoot\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBoot\Source\CAN.c*/ F:\MCP\projects\CAN\canBoot\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canBoot\Source\CAN.c{ F:\MCP\projects\CAN\canBoot\Source\CAN.c00002c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBoot\Source\CAN.c00002e 6e6f MOVWF 0x6f,0x0000030 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBoot\Source\CAN.c000032 146e ANDWF 0x6e,0x0,0x0000034 0880 SUBLW 0x80000036 e001 BZ 0x3a000038 d7fb BRA 0x30F:\MCP\projects\CAN\canBoot\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c00003a 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\CAN.c00003c 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00003e 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canBoot\Source\CAN.c000040 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBoot\Source\CAN.c000042 1070 IORWF 0x70,0x0,0x0000044 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBoot\Source\CAN.c000046 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\CAN.c000048 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00004a 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00004c 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\CAN.c00004e 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c000050 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c000052 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canBoot\Source\CAN.c000054 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBoot\Source\CAN.c000056 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBoot\Source\CAN.c000058 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00005a 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00005c 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c00005e 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBoot\Source\CAN.c000060 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c000062 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBoot\Source\CAN.c000064 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBoot\Source\CAN.c000066 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canBoot\Source\CAN.c000068 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00006a 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBoot\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBoot\Source\CAN.c00006c 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c00006e 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBoot\Source\CAN.c000070 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBoot\Source\CAN.c000072 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canBoot\Source\CAN.c000074 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canBoot\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBoot\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBoot\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBoot\Source\CAN.c#else F:\MCP\projects\CAN\canBoot\Source\CAN.c000076 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBoot\Source\CAN.c000078 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBoot\Source\CAN.c00007a 146e ANDWF 0x6e,0x0,0x000007c e001 BZ 0x8000007e d7fc BRA 0x78#endif F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000080 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c/* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canBoot\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canBoot\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBoot\Source\CAN.c*/ F:\MCP\projects\CAN\canBoot\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canBoot\Source\CAN.c{ F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000082 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBoot\Source\CAN.c000084 0b02 ANDLW 0x2000086 e106 BNZ 0x94000088 50a4 MOVF 0xa4,0x0,0x000008a 0b02 ANDLW 0x200008c e103 BNZ 0x9400008e 50a4 MOVF 0xa4,0x0,0x0000090 0b01 ANDLW 0x1000092 e047 BZ 0x122{ F:\MCP\projects\CAN\canBoot\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canBoot\Source\CAN.c000094 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c000096 d006 BRA 0xa4000098 0e00 MOVLW 0x000009a 1477 ANDWF 0x77,0x0,0x000009c 0910 IORLW 0x1000009e 6e77 MOVWF 0x77,0x00000a0 d841 RCALL 0x1240000a2 d039 BRA 0x116 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000a4 010f MOVLB 0xf0000a6 af50 BTFSS 0x50,0x7,0x10000a8 d006 BRA 0xb60000aa 0e00 MOVLW 0x00000ac 1477 ANDWF 0x77,0x0,0x00000ae 0911 IORLW 0x110000b0 6e77 MOVWF 0x77,0x00000b2 d838 RCALL 0x1240000b4 d030 BRA 0x116 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000b6 010e MOVLB 0xe0000b8 af20 BTFSS 0x20,0x7,0x10000ba d006 BRA 0xc80000bc 0e00 MOVLW 0x00000be 1477 ANDWF 0x77,0x0,0x00000c0 0912 IORLW 0x120000c2 6e77 MOVWF 0x77,0x00000c4 d82f RCALL 0x1240000c6 d027 BRA 0x116 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000c8 af30 BTFSS 0x30,0x7,0x10000ca d006 BRA 0xd80000cc 0e00 MOVLW 0x00000ce 1477 ANDWF 0x77,0x0,0x00000d0 0913 IORLW 0x130000d2 6e77 MOVWF 0x77,0x00000d4 d827 RCALL 0x1240000d6 d01f BRA 0x116 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000d8 af40 BTFSS 0x40,0x7,0x10000da d006 BRA 0xe80000dc 0e00 MOVLW 0x00000de 1477 ANDWF 0x77,0x0,0x00000e0 0914 IORLW 0x140000e2 6e77 MOVWF 0x77,0x00000e4 d81f RCALL 0x1240000e6 d017 BRA 0x116 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000e8 af50 BTFSS 0x50,0x7,0x10000ea d006 BRA 0xf80000ec 0e00 MOVLW 0x00000ee 1477 ANDWF 0x77,0x0,0x00000f0 0915 IORLW 0x150000f2 6e77 MOVWF 0x77,0x00000f4 d817 RCALL 0x1240000f6 d00f BRA 0x116 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c0000f8 af60 BTFSS 0x60,0x7,0x10000fa d006 BRA 0x1080000fc 0e00 MOVLW 0x00000fe 1477 ANDWF 0x77,0x0,0x0000100 0916 IORLW 0x16000102 6e77 MOVWF 0x77,0x0000104 d80f RCALL 0x124000106 d007 BRA 0x116 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canBoot\Source\CAN.c000108 af70 BTFSS 0x70,0x7,0x100010a d005 BRA 0x11600010c 0e00 MOVLW 0x000010e 1477 ANDWF 0x77,0x0,0x0000110 0917 IORLW 0x17000112 6e77 MOVWF 0x77,0x0000114 d807 RCALL 0x124F:\MCP\projects\CAN\canBoot\Source\CAN.c000116 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canBoot\Source\CAN.c000118 92a4 BCF 0xa4,0x1,0x000011a b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canBoot\Source\CAN.c00011c 92a4 BCF 0xa4,0x1,0x000011e b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canBoot\Source\CAN.c000120 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.c000122 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c/* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBoot\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBoot\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBoot\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBoot\Source\CAN.c*/ F:\MCP\projects\CAN\canBoot\Source\CAN.c000124 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBoot\Source\CAN.c000126 ffe6000128 cfe1 MOVFF 0xfe1,0xfd900012a ffd900012c 0e0f MOVLW 0xf00012e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Set extended mode or not. F:\MCP\projects\CAN\canBoot\Source\CAN.c000130 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\CAN.c000132 0b08 ANDLW 0x8000134 e102 BNZ 0x13a000136 0e00 MOVLW 0x0000138 d001 BRA 0x13c00013a 0e01 MOVLW 0x100013c 6ee7 MOVWF 0xe7,0x000013e 0e04 MOVLW 0x4000140 cfe7 MOVFF 0xfe7,0xfdb000142 ffdbF:\MCP\projects\CAN\canBoot\Source\CAN.c// Clear F:\MCP\projects\CAN\canBoot\Source\CAN.c000144 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canBoot\Source\CAN.c000146 6ade CLRF 0xde,0x0000148 6ade CLRF 0xde,0x000014a 6add CLRF 0xdd,0x000014c 52dd MOVF 0xdd,0x1,0x000014e 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000150 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canBoot\Source\CAN.c000152 e16f BNZ 0x232{ F:\MCP\projects\CAN\canBoot\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000154 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<21) + (((DWORD)(RXB0SIDL & 0xE0))<<13) + (((DWORD)(RXB0SIDL & 0x03))<<16) + (((DWORD)RXB0EIDH)<<8) + (BYTE)RXB0EIDL; F:\MCP\projects\CAN\canBoot\Source\CAN.c000156 6e00 MOVWF 0x0,0x0000158 6a01 CLRF 0x1,0x000015a 6a02 CLRF 0x2,0x000015c 6a03 CLRF 0x3,0x000015e 0e15 MOVLW 0x15000160 0b1f ANDLW 0x1f000162 e007 BZ 0x172000164 90d8 BCF 0xd8,0x0,0x0000166 3600 RLCF 0x0,0x1,0x0000168 3601 RLCF 0x1,0x1,0x000016a 3602 RLCF 0x2,0x1,0x000016c 3603 RLCF 0x3,0x1,0x000016e 06e8 DECF 0xe8,0x1,0x0000170 e1f9 BNZ 0x164000172 0ee0 MOVLW 0xe0000174 1462 ANDWF 0x62,0x0,0x0000176 6e04 MOVWF 0x4,0x0000178 6a05 CLRF 0x5,0x000017a 6a06 CLRF 0x6,0x000017c 6a07 CLRF 0x7,0x000017e 0e0d MOVLW 0xd000180 0b1f ANDLW 0x1f000182 e007 BZ 0x192000184 90d8 BCF 0xd8,0x0,0x0000186 3604 RLCF 0x4,0x1,0x0000188 3605 RLCF 0x5,0x1,0x000018a 3606 RLCF 0x6,0x1,0x000018c 3607 RLCF 0x7,0x1,0x000018e 06e8 DECF 0xe8,0x1,0x0000190 e1f9 BNZ 0x184000192 5004 MOVF 0x4,0x0,0x0000194 2600 ADDWF 0x0,0x1,0x0000196 5005 MOVF 0x5,0x0,0x0000198 2201 ADDWFC 0x1,0x1,0x000019a 5006 MOVF 0x6,0x0,0x000019c 2202 ADDWFC 0x2,0x1,0x000019e 5007 MOVF 0x7,0x0,0x00001a0 2203 ADDWFC 0x3,0x1,0x00001a2 0e03 MOVLW 0x30001a4 1462 ANDWF 0x62,0x0,0x00001a6 6e08 MOVWF 0x8,0x00001a8 6a09 CLRF 0x9,0x00001aa 6a0a CLRF 0xa,0x00001ac 6a0b CLRF 0xb,0x00001ae 0e10 MOVLW 0x100001b0 0b1f ANDLW 0x1f0001b2 e007 BZ 0x1c20001b4 90d8 BCF 0xd8,0x0,0x00001b6 3608 RLCF 0x8,0x1,0x00001b8 3609 RLCF 0x9,0x1,0x00001ba 360a RLCF 0xa,0x1,0x00001bc 360b RLCF 0xb,0x1,0x00001be 06e8 DECF 0xe8,0x1,0x00001c0 e1f9 BNZ 0x1b40001c2 5008 MOVF 0x8,0x0,0x00001c4 2600 ADDWF 0x0,0x1,0x00001c6 5009 MOVF 0x9,0x0,0x00001c8 2201 ADDWFC 0x1,0x1,0x00001ca 500a MOVF 0xa,0x0,0x00001cc 2202 ADDWFC 0x2,0x1,0x00001ce 500b MOVF 0xb,0x0,0x00001d0 2203 ADDWFC 0x3,0x1,0x00001d2 5063 MOVF 0x63,0x0,0x00001d4 6e0c MOVWF 0xc,0x00001d6 6a0d CLRF 0xd,0x00001d8 6a0e CLRF 0xe,0x00001da 6a0f CLRF 0xf,0x00001dc 0e08 MOVLW 0x80001de 0b1f ANDLW 0x1f0001e0 e007 BZ 0x1f00001e2 90d8 BCF 0xd8,0x0,0x00001e4 360c RLCF 0xc,0x1,0x00001e6 360d RLCF 0xd,0x1,0x00001e8 360e RLCF 0xe,0x1,0x00001ea 360f RLCF 0xf,0x1,0x00001ec 06e8 DECF 0xe8,0x1,0x00001ee e1f9 BNZ 0x1e20001f0 500c MOVF 0xc,0x0,0x00001f2 2600 ADDWF 0x0,0x1,0x00001f4 500d MOVF 0xd,0x0,0x00001f6 2201 ADDWFC 0x1,0x1,0x00001f8 500e MOVF 0xe,0x0,0x00001fa 2202 ADDWFC 0x2,0x1,0x00001fc 500f MOVF 0xf,0x0,0x00001fe 2203 ADDWFC 0x3,0x1,0x0000200 5064 MOVF 0x64,0x0,0x0000202 6e10 MOVWF 0x10,0x0000204 6a11 CLRF 0x11,0x0000206 6a12 CLRF 0x12,0x0000208 6a13 CLRF 0x13,0x000020a 5010 MOVF 0x10,0x0,0x000020c 2600 ADDWF 0x0,0x1,0x000020e 5011 MOVF 0x11,0x0,0x0000210 2201 ADDWFC 0x1,0x1,0x0000212 5012 MOVF 0x12,0x0,0x0000214 2202 ADDWFC 0x2,0x1,0x0000216 5013 MOVF 0x13,0x0,0x0000218 2203 ADDWFC 0x3,0x1,0x000021a c000 MOVFF 0x0,0xfdf00021c ffdf00021e 0e01 MOVLW 0x1000220 c001 MOVFF 0x1,0xfdb000222 ffdb000224 0e02 MOVLW 0x2000226 c002 MOVFF 0x2,0xfdb000228 ffdb00022a 0e03 MOVLW 0x300022c c003 MOVFF 0x3,0xfdb00022e ffdbF:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.c000230 d02f BRA 0x290 else F:\MCP\projects\CAN\canBoot\Source\CAN.c{ F:\MCP\projects\CAN\canBoot\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000232 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canBoot\Source\CAN.c000234 6e00 MOVWF 0x0,0x0000236 6a01 CLRF 0x1,0x0000238 6a02 CLRF 0x2,0x000023a 6a03 CLRF 0x3,0x000023c 0e03 MOVLW 0x300023e 0b1f ANDLW 0x1f000240 e007 BZ 0x250000242 90d8 BCF 0xd8,0x0,0x0000244 3600 RLCF 0x0,0x1,0x0000246 3601 RLCF 0x1,0x1,0x0000248 3602 RLCF 0x2,0x1,0x000024a 3603 RLCF 0x3,0x1,0x000024c 06e8 DECF 0xe8,0x1,0x000024e e1f9 BNZ 0x242000250 5062 MOVF 0x62,0x0,0x0000252 6e04 MOVWF 0x4,0x0000254 6a05 CLRF 0x5,0x0000256 6a06 CLRF 0x6,0x0000258 6a07 CLRF 0x7,0x000025a 0e05 MOVLW 0x500025c 90d8 BCF 0xd8,0x0,0x000025e 3207 RRCF 0x7,0x1,0x0000260 3206 RRCF 0x6,0x1,0x0000262 3205 RRCF 0x5,0x1,0x0000264 3204 RRCF 0x4,0x1,0x0000266 06e8 DECF 0xe8,0x1,0x0000268 e1f9 BNZ 0x25c00026a 5004 MOVF 0x4,0x0,0x000026c 2600 ADDWF 0x0,0x1,0x000026e 5005 MOVF 0x5,0x0,0x0000270 2201 ADDWFC 0x1,0x1,0x0000272 5006 MOVF 0x6,0x0,0x0000274 2202 ADDWFC 0x2,0x1,0x0000276 5007 MOVF 0x7,0x0,0x0000278 2203 ADDWFC 0x3,0x1,0x000027a c000 MOVFF 0x0,0xfdf00027c ffdf00027e 0e01 MOVLW 0x1000280 c001 MOVFF 0x1,0xfdb000282 ffdb000284 0e02 MOVLW 0x2000286 c002 MOVFF 0x2,0xfdb000288 ffdb00028a 0e03 MOVLW 0x300028c c003 MOVFF 0x3,0xfdb00028e ffdb} F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Data length F:\MCP\projects\CAN\canBoot\Source\CAN.c000290 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\CAN.c000292 0b01 ANDLW 0x1000294 6e02 MOVWF 0x2,0x0000296 5065 MOVF 0x65,0x0,0x0000298 0b02 ANDLW 0x200029a e001 BZ 0x29e00029c 0e01 MOVLW 0x100029e 24e8 ADDWF 0xe8,0x0,0x00002a0 6e01 MOVWF 0x1,0x00002a2 5065 MOVF 0x65,0x0,0x00002a4 0b04 ANDLW 0x40002a6 e001 BZ 0x2aa0002a8 0e01 MOVLW 0x10002aa 0d04 MULLW 0x40002ac cff3 MOVFF 0xff3,0x00002ae f0000002b0 5065 MOVF 0x65,0x0,0x00002b2 0b08 ANDLW 0x80002b4 e001 BZ 0x2b80002b6 0e01 MOVLW 0x10002b8 0d08 MULLW 0x80002ba 50f3 MOVF 0xf3,0x0,0x00002bc 2400 ADDWF 0x0,0x0,0x00002be 2401 ADDWF 0x1,0x0,0x00002c0 2402 ADDWF 0x2,0x0,0x00002c2 6ee7 MOVWF 0xe7,0x00002c4 0e06 MOVLW 0x60002c6 cfe7 MOVFF 0xfe7,0xfdb0002c8 ffdbF:\MCP\projects\CAN\canBoot\Source\CAN.c// Remote request F:\MCP\projects\CAN\canBoot\Source\CAN.c0002ca 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBoot\Source\CAN.c0002cc 0b40 ANDLW 0x400002ce e102 BNZ 0x2d40002d0 0e00 MOVLW 0x00002d2 d001 BRA 0x2d60002d4 0e01 MOVLW 0x10002d6 6ee7 MOVWF 0xe7,0x00002d8 0e05 MOVLW 0x50002da cfe7 MOVFF 0xfe7,0xfdb0002dc ffdbF:\MCP\projects\CAN\canBoot\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\CAN.c0002de 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBoot\Source\CAN.c0002e0 cf66 MOVFF 0xf66,0xfdb0002e2 ffdb0002e4 0e08 MOVLW 0x80002e6 cf67 MOVFF 0xf67,0xfdb0002e8 ffdb0002ea 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBoot\Source\CAN.c0002ec cf68 MOVFF 0xf68,0xfdb0002ee ffdb0002f0 0e0a MOVLW 0xa0002f2 cf69 MOVFF 0xf69,0xfdb0002f4 ffdb0002f6 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBoot\Source\CAN.c0002f8 cf6a MOVFF 0xf6a,0xfdb0002fa ffdb0002fc 0e0c MOVLW 0xc0002fe cf6b MOVFF 0xf6b,0xfdb000300 ffdb000302 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBoot\Source\CAN.c000304 cf6c MOVFF 0xf6c,0xfdb000306 ffdb000308 0e0e MOVLW 0xe00030a cf6d MOVFF 0xf6d,0xfdb00030c ffdbF:\MCP\projects\CAN\canBoot\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBoot\Source\CAN.c00030e 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBoot\Source\CAN.c000310 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBoot\Source\CAN.c000312 ffe9000314 cfda MOVFF 0xfda,0xfea000316 ffea000318 cfee MOVFF 0xfee,0xfe600031a ffe600031c cfee MOVFF 0xfee,0xfe600031e ffe6000320 cfee MOVFF 0xfee,0xfe6000322 ffe6000324 cfee MOVFF 0xfee,0xfe6000326 ffe6000328 cfee MOVFF 0xfee,0xfe600032a ffe600032c cfee MOVFF 0xfee,0xfe600032e ffe6000330 cfee MOVFF 0xfee,0xfe6000332 ffe6000334 cfee MOVFF 0xfee,0xfe6000336 ffe6000338 cfee MOVFF 0xfee,0xfe600033a ffe600033c cfee MOVFF 0xfee,0xfe600033e ffe6000340 cfee MOVFF 0xfee,0xfe6000342 ffe6000344 cfee MOVFF 0xfee,0xfe6000346 ffe6000348 cfee MOVFF 0xfee,0xfe600034a ffe600034c cfee MOVFF 0xfee,0xfe600034e ffe6000350 cfee MOVFF 0xfee,0xfe6000352 ffe6000354 ec31 CALL 0x662,0x0000356 f003000358 6e00 MOVWF 0x0,0x000035a 0e0f MOVLW 0xf00035c 5ee1 SUBWF 0xe1,0x1,0x000035e 5000 MOVF 0x0,0x0,0x0000360 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBoot\Source\CAN.c000362 5ce1 SUBWF 0xe1,0x0,0x0000364 e202 BC 0x36a000366 6ae1 CLRF 0xe1,0x0000368 52e5 MOVF 0xe5,0x1,0x000036a 6ee1 MOVWF 0xe1,0x000036c 52e5 MOVF 0xe5,0x1,0x000036e cfe7 MOVFF 0xfe7,0xfd9000370 ffd9000372 0012 RETURN 0x0F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c/* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canBoot\Source\CAN.c* F:\MCP\projects\CAN\canBoot\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBoot\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBoot\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBoot\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canBoot\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBoot\Source\CAN.c*/ F:\MCP\projects\CAN\canBoot\Source\CAN.c000374 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBoot\Source\CAN.c000376 ffe6000378 cfe1 MOVFF 0xfe1,0xfd900037a ffd9{ F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c00037c 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBoot\Source\CAN.c00037e b740 BTFSC 0x40,0x3,0x1000380 d004 BRA 0x38a000382 0e00 MOVLW 0x0000384 1477 ANDWF 0x77,0x0,0x0000386 0903 IORLW 0x3000388 6e77 MOVWF 0x77,0x000038a 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBoot\Source\CAN.c00038c b730 BTFSC 0x30,0x3,0x100038e d004 BRA 0x398000390 0e00 MOVLW 0x0000392 1477 ANDWF 0x77,0x0,0x0000394 0904 IORLW 0x4000396 6e77 MOVWF 0x77,0x0000398 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBoot\Source\CAN.c00039a b720 BTFSC 0x20,0x3,0x100039c d005 BRA 0x3a800039e 0e00 MOVLW 0x00003a0 1477 ANDWF 0x77,0x0,0x00003a2 0905 IORLW 0x50003a4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBoot\Source\CAN.c0003a6 d002 BRA 0x3ac else { return FALSE;} F:\MCP\projects\CAN\canBoot\Source\CAN.c0003a8 0e00 MOVLW 0x00003aa d0e4 BRA 0x574F:\MCP\projects\CAN\canBoot\Source\CAN.c0003ac 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c0003ae cfdb MOVFF 0xfdb,0x00003b0 f0000003b2 3400 RLCF 0x0,0x0,0x00003b4 e20e BC 0x3d20003b6 0eef MOVLW 0xef0003b8 cfdb MOVFF 0xfdb,0x10003ba f0010003bc 0e03 MOVLW 0x30003be 6ee7 MOVWF 0xe7,0x00003c0 1801 XORWF 0x1,0x0,0x00003c2 aee8 BTFSS 0xe8,0x7,0x00003c4 d002 BRA 0x3ca0003c6 3401 RLCF 0x1,0x0,0x00003c8 d003 BRA 0x3d00003ca 50e7 MOVF 0xe7,0x0,0x00003cc 80d8 BSF 0xd8,0x0,0x00003ce 5401 SUBFWB 0x1,0x0,0x00003d0 e202 BC 0x3d60003d2 0eef MOVLW 0xef0003d4 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c0003d6 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canBoot\Source\CAN.c0003d8 04db DECF 0xdb,0x0,0x00003da e15f BNZ 0x49a{ F:\MCP\projects\CAN\canBoot\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c0003dc 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canBoot\Source\CAN.c0003de cfdb MOVFF 0xfdb,0x00003e0 f0000003e2 0ef1 MOVLW 0xf10003e4 cfdb MOVFF 0xfdb,0x10003e6 f0010003e8 0ef2 MOVLW 0xf20003ea cfdb MOVFF 0xfdb,0x20003ec f0020003ee 0ef3 MOVLW 0xf30003f0 cfdb MOVFF 0xfdb,0x30003f2 f0030003f4 0e15 MOVLW 0x150003f6 90d8 BCF 0xd8,0x0,0x00003f8 3203 RRCF 0x3,0x1,0x00003fa 3202 RRCF 0x2,0x1,0x00003fc 3201 RRCF 0x1,0x1,0x00003fe 3200 RRCF 0x0,0x1,0x0000400 06e8 DECF 0xe8,0x1,0x0000402 e1f9 BNZ 0x3f6000404 5000 MOVF 0x0,0x0,0x0000406 6e61 MOVWF 0x61,0x0000408 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canBoot\Source\CAN.c00040a cfdb MOVFF 0xfdb,0x500040c f00500040e 0ef1 MOVLW 0xf1000410 cfdb MOVFF 0xfdb,0x6000412 f006000414 0ef2 MOVLW 0xf2000416 cfdb MOVFF 0xfdb,0x7000418 f00700041a 0ef3 MOVLW 0xf300041c cfdb MOVFF 0xfdb,0x800041e f008000420 0e0d MOVLW 0xd000422 90d8 BCF 0xd8,0x0,0x0000424 3208 RRCF 0x8,0x1,0x0000426 3207 RRCF 0x7,0x1,0x0000428 3206 RRCF 0x6,0x1,0x000042a 3205 RRCF 0x5,0x1,0x000042c 06e8 DECF 0xe8,0x1,0x000042e e1f9 BNZ 0x422000430 0ee0 MOVLW 0xe0000432 1405 ANDWF 0x5,0x0,0x0000434 6e04 MOVWF 0x4,0x0000436 0ef0 MOVLW 0xf0000438 cfdb MOVFF 0xfdb,0x000043a f00000043c 0ef1 MOVLW 0xf100043e cfdb MOVFF 0xfdb,0x1000440 f001000442 0ef2 MOVLW 0xf2000444 cfdb MOVFF 0xfdb,0x2000446 f002000448 0ef3 MOVLW 0xf300044a cfdb MOVFF 0xfdb,0x300044c f00300044e 0e10 MOVLW 0x10000450 90d8 BCF 0xd8,0x0,0x0000452 3203 RRCF 0x3,0x1,0x0000454 3202 RRCF 0x2,0x1,0x0000456 3201 RRCF 0x1,0x1,0x0000458 3200 RRCF 0x0,0x1,0x000045a 06e8 DECF 0xe8,0x1,0x000045c e1f9 BNZ 0x45000045e 0e03 MOVLW 0x3000460 1400 ANDWF 0x0,0x0,0x0000462 2404 ADDWF 0x4,0x0,0x0000464 6e62 MOVWF 0x62,0x0000466 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canBoot\Source\CAN.c000468 cfdb MOVFF 0xfdb,0x000046a f00000046c 0ef1 MOVLW 0xf100046e cfdb MOVFF 0xfdb,0x1000470 f001000472 0ef2 MOVLW 0xf2000474 cfdb MOVFF 0xfdb,0x2000476 f002000478 0ef3 MOVLW 0xf300047a cfdb MOVFF 0xfdb,0x300047c f00300047e 0e08 MOVLW 0x8000480 90d8 BCF 0xd8,0x0,0x0000482 3203 RRCF 0x3,0x1,0x0000484 3202 RRCF 0x2,0x1,0x0000486 3201 RRCF 0x1,0x1,0x0000488 3200 RRCF 0x0,0x1,0x000048a 06e8 DECF 0xe8,0x1,0x000048c e1f9 BNZ 0x48000048e 5000 MOVF 0x0,0x0,0x0000490 6e63 MOVWF 0x63,0x0000492 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canBoot\Source\CAN.c000494 50db MOVF 0xdb,0x0,0x0000496 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.c000498 d02f BRA 0x4f8 else F:\MCP\projects\CAN\canBoot\Source\CAN.c{ F:\MCP\projects\CAN\canBoot\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canBoot\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c00049a 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canBoot\Source\CAN.c00049c cfdb MOVFF 0xfdb,0x000049e f0000004a0 0ef1 MOVLW 0xf10004a2 cfdb MOVFF 0xfdb,0x10004a4 f0010004a6 0ef2 MOVLW 0xf20004a8 cfdb MOVFF 0xfdb,0x20004aa f0020004ac 0ef3 MOVLW 0xf30004ae cfdb MOVFF 0xfdb,0x30004b0 f0030004b2 0e03 MOVLW 0x30004b4 90d8 BCF 0xd8,0x0,0x00004b6 3203 RRCF 0x3,0x1,0x00004b8 3202 RRCF 0x2,0x1,0x00004ba 3201 RRCF 0x1,0x1,0x00004bc 3200 RRCF 0x0,0x1,0x00004be 06e8 DECF 0xe8,0x1,0x00004c0 e1f9 BNZ 0x4b40004c2 5000 MOVF 0x0,0x0,0x00004c4 6e61 MOVWF 0x61,0x00004c6 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canBoot\Source\CAN.c0004c8 cfdb MOVFF 0xfdb,0x00004ca f0000004cc 0ef1 MOVLW 0xf10004ce cfdb MOVFF 0xfdb,0x10004d0 f0010004d2 0ef2 MOVLW 0xf20004d4 cfdb MOVFF 0xfdb,0x20004d6 f0020004d8 0ef3 MOVLW 0xf30004da cfdb MOVFF 0xfdb,0x30004dc f0030004de 0e05 MOVLW 0x50004e0 0b1f ANDLW 0x1f0004e2 e007 BZ 0x4f20004e4 90d8 BCF 0xd8,0x0,0x00004e6 3600 RLCF 0x0,0x1,0x00004e8 3601 RLCF 0x1,0x1,0x00004ea 3602 RLCF 0x2,0x1,0x00004ec 3603 RLCF 0x3,0x1,0x00004ee 06e8 DECF 0xe8,0x1,0x00004f0 e1f9 BNZ 0x4e40004f2 0ee0 MOVLW 0xe00004f4 1400 ANDWF 0x0,0x0,0x00004f6 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Data length F:\MCP\projects\CAN\canBoot\Source\CAN.c0004f8 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBoot\Source\CAN.c0004fa 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBoot\Source\CAN.c0004fc 50db MOVF 0xdb,0x0,0x00004fe 0808 SUBLW 0x8000500 e203 BC 0x508000502 0e08 MOVLW 0x8000504 6e65 MOVWF 0x65,0x0000506 d003 BRA 0x50e000508 0ef6 MOVLW 0xf600050a 50db MOVF 0xdb,0x0,0x000050c 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// Remote request F:\MCP\projects\CAN\canBoot\Source\CAN.c00050e 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBoot\Source\CAN.c000510 04db DECF 0xdb,0x0,0x0000512 e102 BNZ 0x518{ F:\MCP\projects\CAN\canBoot\Source\CAN.c_asm F:\MCP\projects\CAN\canBoot\Source\CAN.c000514 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\CAN.c_endasm F:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.c000516 d001 BRA 0x51a else F:\MCP\projects\CAN\canBoot\Source\CAN.c{ F:\MCP\projects\CAN\canBoot\Source\CAN.c_asm F:\MCP\projects\CAN\canBoot\Source\CAN.c000518 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBoot\Source\CAN.c_endasm F:\MCP\projects\CAN\canBoot\Source\CAN.c} F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBoot\Source\CAN.c00051a 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBoot\Source\CAN.c00051c 50db MOVF 0xdb,0x0,0x000051e 6e66 MOVWF 0x66,0x0000520 0ef8 MOVLW 0xf8000522 50db MOVF 0xdb,0x0,0x0000524 6e67 MOVWF 0x67,0x0000526 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBoot\Source\CAN.c000528 50db MOVF 0xdb,0x0,0x000052a 6e68 MOVWF 0x68,0x000052c 0efa MOVLW 0xfa00052e 50db MOVF 0xdb,0x0,0x0000530 6e69 MOVWF 0x69,0x0000532 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBoot\Source\CAN.c000534 50db MOVF 0xdb,0x0,0x0000536 6e6a MOVWF 0x6a,0x0000538 0efc MOVLW 0xfc00053a 50db MOVF 0xdb,0x0,0x000053c 6e6b MOVWF 0x6b,0x000053e 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBoot\Source\CAN.c000540 50db MOVF 0xdb,0x0,0x0000542 6e6c MOVWF 0x6c,0x0000544 0efe MOVLW 0xfe000546 50db MOVF 0xdb,0x0,0x0000548 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canBoot\Source\CAN.c00054a 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canBoot\Source\CAN.c00054c 04db DECF 0xdb,0x0,0x000054e e102 BNZ 0x554000550 0e01 MOVLW 0x1000552 d001 BRA 0x556000554 0e00 MOVLW 0x0000556 b0e8 BTFSC 0xe8,0x0,0x0000558 8662 BSF 0x62,0x3,0x000055a a0e8 BTFSS 0xe8,0x0,0x000055c 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// Priority F:\MCP\projects\CAN\canBoot\Source\CAN.c00055e 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBoot\Source\CAN.c000560 cfdb MOVFF 0xfdb,0xfe6000562 ffe6000564 0efc MOVLW 0xfc000566 1460 ANDWF 0x60,0x0,0x0000568 52e5 MOVF 0xe5,0x1,0x000056a 10e7 IORWF 0xe7,0x0,0x000056c 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBoot\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canBoot\Source\CAN.c_asm F:\MCP\projects\CAN\canBoot\Source\CAN.c00056e 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBoot\Source\CAN.c_endasm F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c000570 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBoot\Source\CAN.c000572 d000 BRA 0x574F:\MCP\projects\CAN\canBoot\Source\CAN.c000574 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\CAN.c000576 cfe7 MOVFF 0xfe7,0xfd9000578 ffd900057a 0012 RETURN 0x0F:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.cF:\MCP\projects\CAN\canBoot\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canBoot\Source\CAN.c