Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Oct 23 23:15:47 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.c0004e8 d86c RCALL 0x5c2 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.c0004ea ec16 CALL 0x2c,0x0 canInit(); F:\MCP\projects\CAN\canBoot\Source\Main.c0004ec f000#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0004ee d7ff BRA 0x4ee 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.c0004f0 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.c0004f2 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c0004f4 ffe40004f6 cfe0 MOVFF 0xfe0,0xfe40004f8 ffe40004fa 6ee4 MOVWF 0xe4,0x00004fc cfda MOVFF 0xfda,0xfe40004fe ffe4000500 cfe2 MOVFF 0xfe2,0xfda000502 ffda000504 cfe9 MOVFF 0xfe9,0xfe4000506 ffe4000508 cfea MOVFF 0xfea,0xfe400050a ffe400050c cff6 MOVFF 0xff6,0xfe400050e ffe4000510 cff7 MOVFF 0xff7,0xfe4000512 ffe4000514 cff5 MOVFF 0xff5,0xfe4000516 ffe4000518 cff3 MOVFF 0xff3,0xfe400051a ffe400051c cff4 MOVFF 0xff4,0xfe400051e ffe4000520 cffa MOVFF 0xffa,0xfe4000522 ffe4000524 ee00 LFSR 0x0,0x14000526 f014000528 0e02 MOVLW 0x200052a 04e8 DECF 0xe8,0x0,0x000052c e303 BNC 0x53400052e cfee MOVFF 0xfee,0xfe4000530 ffe4000532 d7fb BRA 0x52a000534 ee00 LFSR 0x0,0x0000536 f000000538 0e14 MOVLW 0x1400053a 04e8 DECF 0xe8,0x0,0x000053c e303 BNC 0x54400053e cfee MOVFF 0xfee,0xfe4000540 ffe4000542 d7fb BRA 0x53a000544 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.c000546 ec41 CALL 0x82,0x0 canISR(); F:\MCP\projects\CAN\canBoot\Source\Main.c000548 f000#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c00054a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c00054c ee00 LFSR 0x0,0x1300054e f013000550 0e14 MOVLW 0x14000552 04e8 DECF 0xe8,0x0,0x0000554 e303 BNC 0x55c000556 cfe5 MOVFF 0xfe5,0xfed000558 ffed00055a d7fb BRA 0x55200055c ee00 LFSR 0x0,0x1500055e f015000560 0e02 MOVLW 0x2000562 04e8 DECF 0xe8,0x0,0x0000564 e303 BNC 0x56c000566 cfe5 MOVFF 0xfe5,0xfed000568 ffed00056a d7fb BRA 0x56200056c cfe5 MOVFF 0xfe5,0xffa00056e fffa000570 cfe5 MOVFF 0xfe5,0xff4000572 fff4000574 cfe5 MOVFF 0xfe5,0xff3000576 fff3000578 cfe5 MOVFF 0xfe5,0xff500057a fff500057c cfe5 MOVFF 0xfe5,0xff700057e fff7000580 cfe5 MOVFF 0xfe5,0xff6000582 fff6000584 cfe5 MOVFF 0xfe5,0xfea000586 ffea000588 cfe5 MOVFF 0xfe5,0xfe900058a ffe900058c cfe5 MOVFF 0xfe5,0xfda00058e ffda000590 50e5 MOVF 0xe5,0x0,0x0000592 cfe5 MOVFF 0xfe5,0xfe0000594 ffe0000596 cfe5 MOVFF 0xfe5,0xfd8000598 ffd800059a 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 ef79 GOTO 0x4f2 _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.c00059c cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canBoot\Source\Main.c00059e ffe40005a0 cfe0 MOVFF 0xfe0,0xfe40005a2 ffe40005a4 6ee4 MOVWF 0xe4,0x00005a6 cfda MOVFF 0xfda,0xfe40005a8 ffe40005aa cfe2 MOVFF 0xfe2,0xfda0005ac ffda0005ae 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0005b0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c0005b2 cfe5 MOVFF 0xfe5,0xfda0005b4 ffda0005b6 50e5 MOVF 0xe5,0x0,0x00005b8 cfe5 MOVFF 0xfe5,0xfe00005ba ffe00005bc cfe5 MOVFF 0xfe5,0xfd80005be ffd80005c0 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 efce GOTO 0x59c _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.c0005c2 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.c0005c4 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.c0005c6 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBoot\Source\Main.c0005c8 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.c0005ca 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.c0005cc 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.c0005ce cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBoot\Source\Main.c0005d0 ffe60005d2 cfe1 MOVFF 0xfe1,0xfd90005d4 ffd9{ F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c0005d6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBoot\Source\Main.c0005d8 cfe7 MOVFF 0xfe7,0xfd90005da ffd90005dc 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canBoot\Source\Main.cF:\MCP\projects\CAN\canBoot\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* CAN driver F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\Source\CAN.c* FileName: CAN.c F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c/* F:\MCP\projects\CAN\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* Input: none F:\MCP\projects\CAN\Source\CAN.c* Output: none F:\MCP\projects\CAN\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\Source\CAN.c*/ F:\MCP\projects\CAN\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\Source\CAN.c{ F:\MCP\projects\CAN\Source\CAN.c00002c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\Source\CAN.c00002e 6e6f MOVWF 0x6f,0x0000030 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\Source\CAN.c000032 146e ANDWF 0x6e,0x0,0x0000034 0880 SUBLW 0x80000036 e001 BZ 0x3a000038 d7fb BRA 0x30F:\MCP\projects\CAN\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c00003a 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\Source\CAN.c00003c 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\Source\CAN.c00003e 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\Source\CAN.c000040 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\Source\CAN.c000042 1070 IORWF 0x70,0x0,0x0000044 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\Source\CAN.c000046 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\Source\CAN.c000048 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c00004a 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c00004c 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\Source\CAN.c00004e 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\Source\CAN.c000050 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\Source\CAN.c000052 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\Source\CAN.c000054 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\Source\CAN.c000056 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\Source\CAN.c000058 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c00005a 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c00005c 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c00005e 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\Source\CAN.c000060 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\Source\CAN.c000062 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\Source\CAN.c000064 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\Source\CAN.c000066 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\Source\CAN.c000068 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\Source\CAN.c00006a 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\Source\CAN.c00006c 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\Source\CAN.c00006e 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\Source\CAN.c000070 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\Source\CAN.c// High interrupt F:\MCP\projects\CAN\Source\CAN.c000072 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\Source\CAN.c000074 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\Source\CAN.c#else F:\MCP\projects\CAN\Source\CAN.c000076 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\Source\CAN.c000078 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\Source\CAN.c00007a 146e ANDWF 0x6e,0x0,0x000007c e001 BZ 0x8000007e d7fc BRA 0x78#endif F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000080 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c/* F:\MCP\projects\CAN\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* Input: none F:\MCP\projects\CAN\Source\CAN.c* Output: none F:\MCP\projects\CAN\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\Source\CAN.c*/ F:\MCP\projects\CAN\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\Source\CAN.c{ F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000082 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\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\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\Source\CAN.c000094 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\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\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\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\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\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\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\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\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\Source\CAN.c000116 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\Source\CAN.c000118 92a4 BCF 0xa4,0x1,0x000011a b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\Source\CAN.c00011c 92a4 BCF 0xa4,0x1,0x000011e b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\Source\CAN.c000120 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000122 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c/* F:\MCP\projects\CAN\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* Input: none F:\MCP\projects\CAN\Source\CAN.c* Output: none F:\MCP\projects\CAN\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\Source\CAN.c*/ F:\MCP\projects\CAN\Source\CAN.c000124 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\Source\CAN.c000126 ffe6000128 cfe1 MOVFF 0xfe1,0xfd900012a ffd900012c 0e0e MOVLW 0xe00012e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Set extended mode or not. F:\MCP\projects\CAN\Source\CAN.c000130 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\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\Source\CAN.c// Clear F:\MCP\projects\CAN\Source\CAN.c000144 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\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\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000150 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c000152 e16f BNZ 0x232{ F:\MCP\projects\CAN\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\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\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\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\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\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000230 d02f BRA 0x290 else F:\MCP\projects\CAN\Source\CAN.c{ F:\MCP\projects\CAN\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000232 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\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\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Data length F:\MCP\projects\CAN\Source\CAN.c000290 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\Source\CAN.c000292 cf65 MOVFF 0xf65,0xfdb000294 ffdbF:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c000296 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\Source\CAN.c000298 cf66 MOVFF 0xf66,0xfdb00029a ffdb00029c 0e07 MOVLW 0x700029e cf67 MOVFF 0xf67,0xfdb0002a0 ffdb0002a2 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\Source\CAN.c0002a4 cf68 MOVFF 0xf68,0xfdb0002a6 ffdb0002a8 0e09 MOVLW 0x90002aa cf69 MOVFF 0xf69,0xfdb0002ac ffdb0002ae 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\Source\CAN.c0002b0 cf6a MOVFF 0xf6a,0xfdb0002b2 ffdb0002b4 0e0b MOVLW 0xb0002b6 cf6b MOVFF 0xf6b,0xfdb0002b8 ffdb0002ba 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\Source\CAN.c0002bc cf6c MOVFF 0xf6c,0xfdb0002be ffdb0002c0 0e0d MOVLW 0xd0002c2 cf6d MOVFF 0xf6d,0xfdb0002c4 ffdbF:\MCP\projects\CAN\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\Source\CAN.c0002c6 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//Call main parser F:\MCP\projects\CAN\Source\CAN.c0002c8 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\Source\CAN.c0002ca ffe90002cc cfda MOVFF 0xfda,0xfea0002ce ffea0002d0 cfee MOVFF 0xfee,0xfe60002d2 ffe60002d4 cfee MOVFF 0xfee,0xfe60002d6 ffe60002d8 cfee MOVFF 0xfee,0xfe60002da ffe60002dc cfee MOVFF 0xfee,0xfe60002de ffe60002e0 cfee MOVFF 0xfee,0xfe60002e2 ffe60002e4 cfee MOVFF 0xfee,0xfe60002e6 ffe60002e8 cfee MOVFF 0xfee,0xfe60002ea ffe60002ec cfee MOVFF 0xfee,0xfe60002ee ffe60002f0 cfee MOVFF 0xfee,0xfe60002f2 ffe60002f4 cfee MOVFF 0xfee,0xfe60002f6 ffe60002f8 cfee MOVFF 0xfee,0xfe60002fa ffe60002fc cfee MOVFF 0xfee,0xfe60002fe ffe6000300 cfee MOVFF 0xfee,0xfe6000302 ffe6000304 cfee MOVFF 0xfee,0xfe6000306 ffe6000308 ece7 CALL 0x5ce,0x000030a f00200030c 6e00 MOVWF 0x0,0x000030e 0e0e MOVLW 0xe000310 5ee1 SUBWF 0xe1,0x1,0x0000312 5000 MOVF 0x0,0x0,0x0000314 0e0e MOVLW 0xe } F:\MCP\projects\CAN\Source\CAN.c000316 5ce1 SUBWF 0xe1,0x0,0x0000318 e202 BC 0x31e00031a 6ae1 CLRF 0xe1,0x000031c 52e5 MOVF 0xe5,0x1,0x000031e 6ee1 MOVWF 0xe1,0x0000320 52e5 MOVF 0xe5,0x1,0x0000322 cfe7 MOVFF 0xfe7,0xfd9000324 ffd9000326 0012 RETURN 0x0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c/* F:\MCP\projects\CAN\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\Source\CAN.c* F:\MCP\projects\CAN\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\Source\CAN.c*/ F:\MCP\projects\CAN\Source\CAN.c000328 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\Source\CAN.c00032a ffe600032c cfe1 MOVFF 0xfe1,0xfd900032e ffd9{ F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000330 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\Source\CAN.c000332 b740 BTFSC 0x40,0x3,0x1000334 d004 BRA 0x33e000336 0e00 MOVLW 0x0000338 1477 ANDWF 0x77,0x0,0x000033a 0903 IORLW 0x300033c 6e77 MOVWF 0x77,0x000033e 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\Source\CAN.c000340 b730 BTFSC 0x30,0x3,0x1000342 d004 BRA 0x34c000344 0e00 MOVLW 0x0000346 1477 ANDWF 0x77,0x0,0x0000348 0904 IORLW 0x400034a 6e77 MOVWF 0x77,0x000034c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\Source\CAN.c00034e b720 BTFSC 0x20,0x3,0x1000350 d005 BRA 0x35c000352 0e00 MOVLW 0x0000354 1477 ANDWF 0x77,0x0,0x0000356 0905 IORLW 0x5000358 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\Source\CAN.c00035a d002 BRA 0x360 else { return FALSE;} F:\MCP\projects\CAN\Source\CAN.c00035c 0e00 MOVLW 0x000035e d0c0 BRA 0x4e0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000360 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c000362 04db DECF 0xdb,0x0,0x0000364 e15f BNZ 0x424{ F:\MCP\projects\CAN\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\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\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000366 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\Source\CAN.c000368 cfdb MOVFF 0xfdb,0x000036a f00000036c 0ef2 MOVLW 0xf200036e cfdb MOVFF 0xfdb,0x1000370 f001000372 0ef3 MOVLW 0xf3000374 cfdb MOVFF 0xfdb,0x2000376 f002000378 0ef4 MOVLW 0xf400037a cfdb MOVFF 0xfdb,0x300037c f00300037e 0e15 MOVLW 0x15000380 90d8 BCF 0xd8,0x0,0x0000382 3203 RRCF 0x3,0x1,0x0000384 3202 RRCF 0x2,0x1,0x0000386 3201 RRCF 0x1,0x1,0x0000388 3200 RRCF 0x0,0x1,0x000038a 06e8 DECF 0xe8,0x1,0x000038c e1f9 BNZ 0x38000038e 5000 MOVF 0x0,0x0,0x0000390 6e61 MOVWF 0x61,0x0000392 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c000394 cfdb MOVFF 0xfdb,0x5000396 f005000398 0ef2 MOVLW 0xf200039a cfdb MOVFF 0xfdb,0x600039c f00600039e 0ef3 MOVLW 0xf30003a0 cfdb MOVFF 0xfdb,0x70003a2 f0070003a4 0ef4 MOVLW 0xf40003a6 cfdb MOVFF 0xfdb,0x80003a8 f0080003aa 0e0d MOVLW 0xd0003ac 90d8 BCF 0xd8,0x0,0x00003ae 3208 RRCF 0x8,0x1,0x00003b0 3207 RRCF 0x7,0x1,0x00003b2 3206 RRCF 0x6,0x1,0x00003b4 3205 RRCF 0x5,0x1,0x00003b6 06e8 DECF 0xe8,0x1,0x00003b8 e1f9 BNZ 0x3ac0003ba 0ee0 MOVLW 0xe00003bc 1405 ANDWF 0x5,0x0,0x00003be 6e04 MOVWF 0x4,0x00003c0 0ef1 MOVLW 0xf10003c2 cfdb MOVFF 0xfdb,0x00003c4 f0000003c6 0ef2 MOVLW 0xf20003c8 cfdb MOVFF 0xfdb,0x10003ca f0010003cc 0ef3 MOVLW 0xf30003ce cfdb MOVFF 0xfdb,0x20003d0 f0020003d2 0ef4 MOVLW 0xf40003d4 cfdb MOVFF 0xfdb,0x30003d6 f0030003d8 0e10 MOVLW 0x100003da 90d8 BCF 0xd8,0x0,0x00003dc 3203 RRCF 0x3,0x1,0x00003de 3202 RRCF 0x2,0x1,0x00003e0 3201 RRCF 0x1,0x1,0x00003e2 3200 RRCF 0x0,0x1,0x00003e4 06e8 DECF 0xe8,0x1,0x00003e6 e1f9 BNZ 0x3da0003e8 0e03 MOVLW 0x30003ea 1400 ANDWF 0x0,0x0,0x00003ec 2404 ADDWF 0x4,0x0,0x00003ee 6e62 MOVWF 0x62,0x00003f0 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\Source\CAN.c0003f2 cfdb MOVFF 0xfdb,0x00003f4 f0000003f6 0ef2 MOVLW 0xf20003f8 cfdb MOVFF 0xfdb,0x10003fa f0010003fc 0ef3 MOVLW 0xf30003fe cfdb MOVFF 0xfdb,0x2000400 f002000402 0ef4 MOVLW 0xf4000404 cfdb MOVFF 0xfdb,0x3000406 f003000408 0e08 MOVLW 0x800040a 90d8 BCF 0xd8,0x0,0x000040c 3203 RRCF 0x3,0x1,0x000040e 3202 RRCF 0x2,0x1,0x0000410 3201 RRCF 0x1,0x1,0x0000412 3200 RRCF 0x0,0x1,0x0000414 06e8 DECF 0xe8,0x1,0x0000416 e1f9 BNZ 0x40a000418 5000 MOVF 0x0,0x0,0x000041a 6e63 MOVWF 0x63,0x000041c 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\Source\CAN.c00041e 50db MOVF 0xdb,0x0,0x0000420 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000422 d02f BRA 0x482 else F:\MCP\projects\CAN\Source\CAN.c{ F:\MCP\projects\CAN\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000424 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\Source\CAN.c000426 cfdb MOVFF 0xfdb,0x0000428 f00000042a 0ef2 MOVLW 0xf200042c cfdb MOVFF 0xfdb,0x100042e f001000430 0ef3 MOVLW 0xf3000432 cfdb MOVFF 0xfdb,0x2000434 f002000436 0ef4 MOVLW 0xf4000438 cfdb MOVFF 0xfdb,0x300043a f00300043c 0e03 MOVLW 0x300043e 90d8 BCF 0xd8,0x0,0x0000440 3203 RRCF 0x3,0x1,0x0000442 3202 RRCF 0x2,0x1,0x0000444 3201 RRCF 0x1,0x1,0x0000446 3200 RRCF 0x0,0x1,0x0000448 06e8 DECF 0xe8,0x1,0x000044a e1f9 BNZ 0x43e00044c 5000 MOVF 0x0,0x0,0x000044e 6e61 MOVWF 0x61,0x0000450 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c000452 cfdb MOVFF 0xfdb,0x0000454 f000000456 0ef2 MOVLW 0xf2000458 cfdb MOVFF 0xfdb,0x100045a f00100045c 0ef3 MOVLW 0xf300045e cfdb MOVFF 0xfdb,0x2000460 f002000462 0ef4 MOVLW 0xf4000464 cfdb MOVFF 0xfdb,0x3000466 f003000468 0e05 MOVLW 0x500046a 0b1f ANDLW 0x1f00046c e007 BZ 0x47c00046e 90d8 BCF 0xd8,0x0,0x0000470 3600 RLCF 0x0,0x1,0x0000472 3601 RLCF 0x1,0x1,0x0000474 3602 RLCF 0x2,0x1,0x0000476 3603 RLCF 0x3,0x1,0x0000478 06e8 DECF 0xe8,0x1,0x000047a e1f9 BNZ 0x46e00047c 0ee0 MOVLW 0xe000047e 1400 ANDWF 0x0,0x0,0x0000480 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Data length F:\MCP\projects\CAN\Source\CAN.c000482 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\Source\CAN.c000484 50db MOVF 0xdb,0x0,0x0000486 0808 SUBLW 0x8000488 e203 BC 0x49000048a 0e08 MOVLW 0x800048c 6e65 MOVWF 0x65,0x000048e d003 BRA 0x496000490 0ef6 MOVLW 0xf6000492 50db MOVF 0xdb,0x0,0x0000494 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c000496 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\Source\CAN.c000498 50db MOVF 0xdb,0x0,0x000049a 6e66 MOVWF 0x66,0x000049c 0ef8 MOVLW 0xf800049e 50db MOVF 0xdb,0x0,0x00004a0 6e67 MOVWF 0x67,0x00004a2 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\Source\CAN.c0004a4 50db MOVF 0xdb,0x0,0x00004a6 6e68 MOVWF 0x68,0x00004a8 0efa MOVLW 0xfa0004aa 50db MOVF 0xdb,0x0,0x00004ac 6e69 MOVWF 0x69,0x00004ae 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\Source\CAN.c0004b0 50db MOVF 0xdb,0x0,0x00004b2 6e6a MOVWF 0x6a,0x00004b4 0efc MOVLW 0xfc0004b6 50db MOVF 0xdb,0x0,0x00004b8 6e6b MOVWF 0x6b,0x00004ba 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\Source\CAN.c0004bc 50db MOVF 0xdb,0x0,0x00004be 6e6c MOVWF 0x6c,0x00004c0 0efe MOVLW 0xfe0004c2 50db MOVF 0xdb,0x0,0x00004c4 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\Source\CAN.c// set extended or not F:\MCP\projects\CAN\Source\CAN.c0004c6 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\Source\CAN.c0004c8 04db DECF 0xdb,0x0,0x00004ca e102 BNZ 0x4d00004cc 0e01 MOVLW 0x10004ce d001 BRA 0x4d20004d0 0e00 MOVLW 0x00004d2 b0e8 BTFSC 0xe8,0x0,0x00004d4 8662 BSF 0x62,0x3,0x00004d6 a0e8 BTFSS 0xe8,0x0,0x00004d8 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\Source\CAN.c_asm F:\MCP\projects\CAN\Source\CAN.c0004da 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\Source\CAN.c_endasm F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c0004dc 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Source\CAN.c0004de d000 BRA 0x4e0F:\MCP\projects\CAN\Source\CAN.c0004e0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\CAN.c0004e2 cfe7 MOVFF 0xfe7,0xfd90004e4 ffd90004e6 0012 RETURN 0x0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\Source\CAN.c