Rev 50 | 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:10:30 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Main application F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004ca cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c0004cc ffe60004ce cfe1 MOVFF 0xfe1,0xfd90004d0 ffd90004d2 0e0e MOVLW 0xe0004d4 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Inits F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004d6 d956 RCALL 0x784 mainInit(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c0004d8 ec22 CALL 0x44,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c0004da f000#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004dc ec86 CALL 0x90c,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c0004de f004F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c0004e0 ec90 CALL 0x920,0x0 if ((tickGet()-t)>=5*TICK_SECOND) F:\MCP\projects\CAN\canNode\Source\Main.c0004e2 f0040004e4 0100 MOVLB 0x00004e6 516a MOVF 0x6a,0x0,0x10004e8 5c18 SUBWF 0x18,0x0,0x00004ea 6e00 MOVWF 0x0,0x00004ec 516b MOVF 0x6b,0x0,0x10004ee 5819 SUBWFB 0x19,0x0,0x00004f0 6e01 MOVWF 0x1,0x00004f2 516c MOVF 0x6c,0x0,0x10004f4 581a SUBWFB 0x1a,0x0,0x00004f6 6e02 MOVWF 0x2,0x00004f8 516d MOVF 0x6d,0x0,0x10004fa 581b SUBWFB 0x1b,0x0,0x00004fc 6e03 MOVWF 0x3,0x00004fe 0ef4 MOVLW 0xf4000500 5c00 SUBWF 0x0,0x0,0x0000502 0e01 MOVLW 0x1000504 5801 SUBWFB 0x1,0x0,0x0000506 0e00 MOVLW 0x0000508 5802 SUBWFB 0x2,0x0,0x000050a 0e00 MOVLW 0x000050c 5803 SUBWFB 0x3,0x0,0x000050e e3e8 BNC 0x4e0{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000510 ec90 CALL 0x920,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000512 f004000514 c018 MOVFF 0x18,0x6a000516 f06a000518 c019 MOVFF 0x19,0x6b00051a f06b00051c c01a MOVFF 0x1a,0x6c00051e f06c000520 c01b MOVFF 0x1b,0x6d000522 f06dF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c000524 0e66 MOVLW 0x66 cm.ident=0x00000666; F:\MCP\projects\CAN\canNode\Source\Main.c000526 6ede MOVWF 0xde,0x0000528 0e06 MOVLW 0x600052a 6ede MOVWF 0xde,0x000052c 6ade CLRF 0xde,0x000052e 6add CLRF 0xdd,0x0000530 52dd MOVF 0xdd,0x1,0x0000532 52dd MOVF 0xdd,0x1,0x0000534 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000536 6adb CLRF 0xdb,0x0000538 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c00053a 6ef3 MOVWF 0xf3,0x000053c 0e05 MOVLW 0x500053e cff3 MOVFF 0xff3,0xfdb000540 ffdb000542 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c000544 6ef3 MOVWF 0xf3,0x0000546 0e06 MOVLW 0x6000548 cff3 MOVFF 0xff3,0xfdb00054a ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00054c cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c00054e ffe9000550 cfda MOVFF 0xfda,0xfea000552 ffea000554 cfee MOVFF 0xfee,0xfe6000556 ffe6000558 cfee MOVFF 0xfee,0xfe600055a ffe600055c cfee MOVFF 0xfee,0xfe600055e ffe6000560 cfee MOVFF 0xfee,0xfe6000562 ffe6000564 cfee MOVFF 0xfee,0xfe6000566 ffe6000568 cfee MOVFF 0xfee,0xfe600056a ffe600056c cfee MOVFF 0xfee,0xfe600056e ffe6000570 cfee MOVFF 0xfee,0xfe6000572 ffe6000574 cfee MOVFF 0xfee,0xfe6000576 ffe6000578 cfee MOVFF 0xfee,0xfe600057a ffe600057c cfee MOVFF 0xfee,0xfe600057e ffe6000580 cfee MOVFF 0xfee,0xfe6000582 ffe6000584 cfee MOVFF 0xfee,0xfe6000586 ffe6000588 cfee MOVFF 0xfee,0xfe600058a ffe600058c ec85 CALL 0x30a,0x000058e f001000590 6e00 MOVWF 0x0,0x0000592 0e0e MOVLW 0xe000594 5ee1 SUBWF 0xe1,0x1,0x0000596 5000 MOVF 0x0,0x0,0x0000598 0900 IORLW 0x000059a e1a2 BNZ 0x4e000059c d7d7 BRA 0x54c} F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canNode\Source\Main.c00059e cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0005a0 ffe40005a2 cfe0 MOVFF 0xfe0,0xfe40005a4 ffe40005a6 6ee4 MOVWF 0xe4,0x00005a8 cfda MOVFF 0xfda,0xfe40005aa ffe40005ac cfe2 MOVFF 0xfe2,0xfda0005ae ffda0005b0 cfe9 MOVFF 0xfe9,0xfe40005b2 ffe40005b4 cfea MOVFF 0xfea,0xfe40005b6 ffe40005b8 cff6 MOVFF 0xff6,0xfe40005ba ffe40005bc cff7 MOVFF 0xff7,0xfe40005be ffe40005c0 cff5 MOVFF 0xff5,0xfe40005c2 ffe40005c4 cff3 MOVFF 0xff3,0xfe40005c6 ffe40005c8 cff4 MOVFF 0xff4,0xfe40005ca ffe40005cc cffa MOVFF 0xffa,0xfe40005ce ffe40005d0 ee00 LFSR 0x0,0x140005d2 f0140005d4 0e0b MOVLW 0xb0005d6 04e8 DECF 0xe8,0x0,0x00005d8 e303 BNC 0x5e00005da cfee MOVFF 0xfee,0xfe40005dc ffe40005de d7fb BRA 0x5d60005e0 ee00 LFSR 0x0,0x00005e2 f0000005e4 0e14 MOVLW 0x140005e6 04e8 DECF 0xe8,0x0,0x00005e8 e303 BNC 0x5f00005ea cfee MOVFF 0xfee,0xfe40005ec ffe40005ee d7fb BRA 0x5e60005f0 52e6 MOVF 0xe6,0x1,0x00005f2 cfd9 MOVFF 0xfd9,0xfe60005f4 ffe60005f6 cfe1 MOVFF 0xfe1,0xfd90005f8 ffd90005fa 0e0e MOVLW 0xe0005fc 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c0005fe ec4b CALL 0x96,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000600 f000#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000602 50f2 MOVF 0xf2,0x0,0x0 if (INTCONbits.INT0IE && INTCONbits.INT0IF) F:\MCP\projects\CAN\canNode\Source\Main.c000604 0b10 ANDLW 0x10000606 e101 BNZ 0x60a000608 d078 BRA 0x6fa00060a 50f2 MOVF 0xf2,0x0,0x000060c 0b02 ANDLW 0x200060e e075 BZ 0x6fa{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000610 ec90 CALL 0x920,0x0 if ((tickGet()-t)>TICK_SECOND/2) F:\MCP\projects\CAN\canNode\Source\Main.c000612 f004000614 0100 MOVLB 0x0000616 516e MOVF 0x6e,0x0,0x1000618 5c18 SUBWF 0x18,0x0,0x000061a 6e1f MOVWF 0x1f,0x000061c 516f MOVF 0x6f,0x0,0x100061e 5819 SUBWFB 0x19,0x0,0x0000620 6e20 MOVWF 0x20,0x0000622 5170 MOVF 0x70,0x0,0x1000624 581a SUBWFB 0x1a,0x0,0x0000626 6e21 MOVWF 0x21,0x0000628 5171 MOVF 0x71,0x0,0x100062a 581b SUBWFB 0x1b,0x0,0x000062c 6e22 MOVWF 0x22,0x000062e 80d8 BSF 0xd8,0x0,0x0000630 0e32 MOVLW 0x32000632 541f SUBFWB 0x1f,0x0,0x0000634 0e00 MOVLW 0x0000636 5420 SUBFWB 0x20,0x0,0x0000638 0e00 MOVLW 0x000063a 5421 SUBFWB 0x21,0x0,0x000063c 0e00 MOVLW 0x000063e 5422 SUBFWB 0x22,0x0,0x0000640 e25b BC 0x6f8{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000642 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c000644 0e91 MOVLW 0x91 cm.ident=0x1F910091; F:\MCP\projects\CAN\canNode\Source\Main.c000646 6ede MOVWF 0xde,0x0000648 6ade CLRF 0xde,0x000064a 6ede MOVWF 0xde,0x000064c 0e1f MOVLW 0x1f00064e 6edd MOVWF 0xdd,0x0000650 52dd MOVF 0xdd,0x1,0x0000652 52dd MOVF 0xdd,0x1,0x0000654 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c000656 6ef3 MOVWF 0xf3,0x0000658 0e04 MOVLW 0x400065a cff3 MOVFF 0xff3,0xfdb00065c ffdb00065e 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c000660 6ef3 MOVWF 0xf3,0x0000662 0e05 MOVLW 0x5000664 cff3 MOVFF 0xff3,0xfdb000666 ffdb000668 0e01 MOVLW 0x1 cm.data[0]=0x01; F:\MCP\projects\CAN\canNode\Source\Main.c00066a 6ef3 MOVWF 0xf3,0x000066c 0e06 MOVLW 0x600066e cff3 MOVFF 0xff3,0xfdb000670 ffdb000672 0e07 MOVLW 0x7 cm.data[1]=0x07; F:\MCP\projects\CAN\canNode\Source\Main.c000674 6ef3 MOVWF 0xf3,0x0000676 6edb MOVWF 0xdb,0x0000678 0e09 MOVLW 0x9 cm.data[2]=0x09; F:\MCP\projects\CAN\canNode\Source\Main.c00067a 6ef3 MOVWF 0xf3,0x000067c 0e08 MOVLW 0x800067e cff3 MOVFF 0xff3,0xfdb000680 ffdb000682 6ef3 MOVWF 0xf3,0x0 cm.data[3]=0x08; F:\MCP\projects\CAN\canNode\Source\Main.c000684 0e09 MOVLW 0x9000686 cff3 MOVFF 0xff3,0xfdb000688 ffdb00068a 0e03 MOVLW 0x3 cm.data[4]=0x03; F:\MCP\projects\CAN\canNode\Source\Main.c00068c 6ef3 MOVWF 0xf3,0x000068e 0e0a MOVLW 0xa000690 cff3 MOVFF 0xff3,0xfdb000692 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c000694 cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000696 ffe9000698 cfda MOVFF 0xfda,0xfea00069a ffea00069c cfee MOVFF 0xfee,0xfe600069e ffe60006a0 cfee MOVFF 0xfee,0xfe60006a2 ffe60006a4 cfee MOVFF 0xfee,0xfe60006a6 ffe60006a8 cfee MOVFF 0xfee,0xfe60006aa ffe60006ac cfee MOVFF 0xfee,0xfe60006ae ffe60006b0 cfee MOVFF 0xfee,0xfe60006b2 ffe60006b4 cfee MOVFF 0xfee,0xfe60006b6 ffe60006b8 cfee MOVFF 0xfee,0xfe60006ba ffe60006bc cfee MOVFF 0xfee,0xfe60006be ffe60006c0 cfee MOVFF 0xfee,0xfe60006c2 ffe60006c4 cfee MOVFF 0xfee,0xfe60006c6 ffe60006c8 cfee MOVFF 0xfee,0xfe60006ca ffe60006cc cfee MOVFF 0xfee,0xfe60006ce ffe60006d0 cfee MOVFF 0xfee,0xfe60006d2 ffe60006d4 ec85 CALL 0x30a,0x00006d6 f0010006d8 6e1f MOVWF 0x1f,0x00006da 0e0e MOVLW 0xe0006dc 5ee1 SUBWF 0xe1,0x1,0x00006de 501f MOVF 0x1f,0x0,0x00006e0 0900 IORLW 0x00006e2 e0d8 BZ 0x694F:\MCP\projects\CAN\canNode\Source\Main.c0006e4 ec90 CALL 0x920,0x0 t=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0006e6 f0040006e8 c018 MOVFF 0x18,0x6e0006ea f06e0006ec c019 MOVFF 0x19,0x6f0006ee f06f0006f0 c01a MOVFF 0x1a,0x700006f2 f0700006f4 c01b MOVFF 0x1b,0x710006f6 f071} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0006f8 92f2 BCF 0xf2,0x1,0x0 INTCONbits.INT0IF=0; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0006fa ec99 CALL 0x932,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c0006fc f0040006fe 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\Main.c000700 5ce1 SUBWF 0xe1,0x0,0x0000702 e202 BC 0x708000704 6ae1 CLRF 0xe1,0x0000706 52e5 MOVF 0xe5,0x1,0x0000708 6ee1 MOVWF 0xe1,0x000070a 52e5 MOVF 0xe5,0x1,0x000070c cfe7 MOVFF 0xfe7,0xfd900070e ffd9000710 52e5 MOVF 0xe5,0x1,0x0000712 ee00 LFSR 0x0,0x13000714 f013000716 0e14 MOVLW 0x14000718 04e8 DECF 0xe8,0x0,0x000071a e303 BNC 0x72200071c cfe5 MOVFF 0xfe5,0xfed00071e ffed000720 d7fb BRA 0x718000722 ee00 LFSR 0x0,0x1e000724 f01e000726 0e0b MOVLW 0xb000728 04e8 DECF 0xe8,0x0,0x000072a e303 BNC 0x73200072c cfe5 MOVFF 0xfe5,0xfed00072e ffed000730 d7fb BRA 0x728000732 cfe5 MOVFF 0xfe5,0xffa000734 fffa000736 cfe5 MOVFF 0xfe5,0xff4000738 fff400073a cfe5 MOVFF 0xfe5,0xff300073c fff300073e cfe5 MOVFF 0xfe5,0xff5000740 fff5000742 cfe5 MOVFF 0xfe5,0xff7000744 fff7000746 cfe5 MOVFF 0xfe5,0xff6000748 fff600074a cfe5 MOVFF 0xfe5,0xfea00074c ffea00074e cfe5 MOVFF 0xfe5,0xfe9000750 ffe9000752 cfe5 MOVFF 0xfe5,0xfda000754 ffda000756 50e5 MOVF 0xe5,0x0,0x0000758 cfe5 MOVFF 0xfe5,0xfe000075a ffe000075c cfe5 MOVFF 0xfe5,0xfd800075e ffd8000760 0010 RETFIE 0x0#pragma code highVector=0x08 F:\MCP\projects\CAN\canNode\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c000008 efcf GOTO 0x59e _asm goto HighISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00000a f00200000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow LowISR F:\MCP\projects\CAN\canNode\Source\Main.c000762 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c000764 ffe4000766 cfe0 MOVFF 0xfe0,0xfe4000768 ffe400076a 6ee4 MOVWF 0xe4,0x000076c cfda MOVFF 0xfda,0xfe400076e ffe4000770 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000772 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c000774 cfe5 MOVFF 0xfe5,0xfda000776 ffda000778 50e5 MOVF 0xe5,0x0,0x000077a cfe5 MOVFF 0xfe5,0xfe000077c ffe000077e cfe5 MOVFF 0xfe5,0xfd8000780 ffd8000782 0010 RETFIE 0x0#pragma code lowVector=0x18 F:\MCP\projects\CAN\canNode\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c000018 efb1 GOTO 0x762 _asm goto LowISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00001a f00300001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: none F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c000784 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canNode\Source\Main.c000786 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canNode\Source\Main.c000788 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c00078a 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// RB0 interrupt F:\MCP\projects\CAN\canNode\Source\Main.c00078c 8cf1 BSF 0xf1,0x6,0x0 INTCON2bits.INTEDG0 = 1; //rising edge F:\MCP\projects\CAN\canNode\Source\Main.c00078e 88f2 BSF 0xf2,0x4,0x0 INTCONbits.INT0IE = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canNode\Source\Main.c000790 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000792 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000794 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c000796 ffe6000798 cfe1 MOVFF 0xfe1,0xfd900079a ffd9{ F:\MCP\projects\CAN\canNode\Source\Main.c00079c 50e1 MOVF 0xe1,0x0,0x0 if (cm.ident==0x00000304) F:\MCP\projects\CAN\canNode\Source\Main.c00079e 0ff1 ADDLW 0xf10007a0 6ee9 MOVWF 0xe9,0x00007a2 0eff MOVLW 0xff0007a4 20da ADDWFC 0xda,0x0,0x00007a6 6eea MOVWF 0xea,0x00007a8 0e04 MOVLW 0x40007aa 18ee XORWF 0xee,0x0,0x00007ac e15c BNZ 0x8660007ae 0e03 MOVLW 0x30007b0 18ee XORWF 0xee,0x0,0x00007b2 e159 BNZ 0x8660007b4 50ee MOVF 0xee,0x0,0x00007b6 e157 BNZ 0x8660007b8 50ee MOVF 0xee,0x0,0x00007ba e155 BNZ 0x866{ F:\MCP\projects\CAN\canNode\Source\Main.c0007bc 0ef7 MOVLW 0xf7 if (cm.data[0]==0x20) LED0_IO=1; F:\MCP\projects\CAN\canNode\Source\Main.c0007be 50db MOVF 0xdb,0x0,0x00007c0 0820 SUBLW 0x200007c2 e101 BNZ 0x7c60007c4 8282 BSF 0x82,0x1,0x00007c6 0ef7 MOVLW 0xf7 if (cm.data[0]==0x40) LED0_IO=0; F:\MCP\projects\CAN\canNode\Source\Main.c0007c8 50db MOVF 0xdb,0x0,0x00007ca 0840 SUBLW 0x400007cc e101 BNZ 0x7d00007ce 9282 BCF 0x82,0x1,0x00007d0 0ef7 MOVLW 0xf7 if (cm.data[0]==0x80) F:\MCP\projects\CAN\canNode\Source\Main.c0007d2 50db MOVF 0xdb,0x0,0x00007d4 0880 SUBLW 0x800007d6 e147 BNZ 0x866{ F:\MCP\projects\CAN\canNode\Source\Main.c0007d8 0e03 MOVLW 0x3 cm.ident=0x00000303; F:\MCP\projects\CAN\canNode\Source\Main.c0007da 6ef3 MOVWF 0xf3,0x00007dc 0ef1 MOVLW 0xf10007de cff3 MOVFF 0xff3,0xfdb0007e0 ffdb0007e2 0e03 MOVLW 0x30007e4 6ef3 MOVWF 0xf3,0x00007e6 0ef2 MOVLW 0xf20007e8 cff3 MOVFF 0xff3,0xfdb0007ea ffdb0007ec 0ef3 MOVLW 0xf30007ee 6adb CLRF 0xdb,0x00007f0 0ef4 MOVLW 0xf40007f2 6adb CLRF 0xdb,0x00007f4 0ef5 MOVLW 0xf5 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0007f6 6adb CLRF 0xdb,0x00007f8 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c0007fa 6ef3 MOVWF 0xf3,0x00007fc 0ef6 MOVLW 0xf60007fe cff3 MOVFF 0xff3,0xfdb000800 ffdb000802 5082 MOVF 0x82,0x0,0x0 cm.data[0]=LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.c000804 0b02 ANDLW 0x2000806 e001 BZ 0x80a000808 0e01 MOVLW 0x100080a 6ee7 MOVWF 0xe7,0x000080c 0ef7 MOVLW 0xf700080e cfe7 MOVFF 0xfe7,0xfdb000810 ffdb000812 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000814 0ff1 ADDLW 0xf1000816 6ee9 MOVWF 0xe9,0x0000818 0eff MOVLW 0xff00081a 20da ADDWFC 0xda,0x0,0x000081c 6eea MOVWF 0xea,0x000081e cfee MOVFF 0xfee,0xfe6000820 ffe6000822 cfee MOVFF 0xfee,0xfe6000824 ffe6000826 cfee MOVFF 0xfee,0xfe6000828 ffe600082a cfee MOVFF 0xfee,0xfe600082c ffe600082e cfee MOVFF 0xfee,0xfe6000830 ffe6000832 cfee MOVFF 0xfee,0xfe6000834 ffe6000836 cfee MOVFF 0xfee,0xfe6000838 ffe600083a cfee MOVFF 0xfee,0xfe600083c ffe600083e cfee MOVFF 0xfee,0xfe6000840 ffe6000842 cfee MOVFF 0xfee,0xfe6000844 ffe6000846 cfee MOVFF 0xfee,0xfe6000848 ffe600084a cfee MOVFF 0xfee,0xfe600084c ffe600084e cfee MOVFF 0xfee,0xfe6000850 ffe6000852 cfee MOVFF 0xfee,0xfe6000854 ffe6000856 ec85 CALL 0x30a,0x0000858 f00100085a 6e00 MOVWF 0x0,0x000085c 0e0e MOVLW 0xe00085e 5ee1 SUBWF 0xe1,0x1,0x0000860 5000 MOVF 0x0,0x0,0x0000862 0900 IORLW 0x0000864 e0d6 BZ 0x812F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000866 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c000868 cfe7 MOVFF 0xfe7,0xfd900086a ffd900086c 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\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.c000044 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\Source\CAN.c000046 6e6f MOVWF 0x6f,0x0000048 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\Source\CAN.c00004a 146e ANDWF 0x6e,0x0,0x000004c 0880 SUBLW 0x8000004e e1fc BNZ 0x48F:\MCP\projects\CAN\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000050 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.c000052 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\Source\CAN.c000054 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.c000056 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\Source\CAN.c000058 1070 IORWF 0x70,0x0,0x000005a 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\Source\CAN.c00005c 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.c00005e 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c000060 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c000062 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.c000064 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\Source\CAN.c000066 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\Source\CAN.c000068 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.c00006a 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.c00006c 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.c00006e 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c000070 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c000072 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000074 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\Source\CAN.c000076 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\Source\CAN.c000078 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.c00007a 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\Source\CAN.c00007c 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.c00007e 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\Source\CAN.c000080 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\Source\CAN.c000082 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\Source\CAN.c000084 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\Source\CAN.c000086 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\Source\CAN.c// High interrupt F:\MCP\projects\CAN\Source\CAN.c000088 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.c00008a 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.c00008c 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\Source\CAN.c00008e 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\Source\CAN.c000090 146e ANDWF 0x6e,0x0,0x0000092 e1fd BNZ 0x8e#endif F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000094 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.c000096 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\Source\CAN.c000098 0b02 ANDLW 0x200009a e106 BNZ 0xa800009c 50a4 MOVF 0xa4,0x0,0x000009e 0b02 ANDLW 0x20000a0 e103 BNZ 0xa80000a2 50a4 MOVF 0xa4,0x0,0x00000a4 0b01 ANDLW 0x10000a6 e03a BZ 0x11c{ F:\MCP\projects\CAN\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\Source\CAN.c0000a8 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000aa d004 BRA 0xb40000ac 0e00 MOVLW 0x00000ae 1477 ANDWF 0x77,0x0,0x00000b0 0910 IORLW 0x100000b2 d02b BRA 0x10a else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000b4 010f MOVLB 0xf0000b6 af50 BTFSS 0x50,0x7,0x10000b8 d004 BRA 0xc20000ba 0e00 MOVLW 0x00000bc 1477 ANDWF 0x77,0x0,0x00000be 0911 IORLW 0x110000c0 d024 BRA 0x10a else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000c2 010e MOVLB 0xe0000c4 af20 BTFSS 0x20,0x7,0x10000c6 d004 BRA 0xd00000c8 0e00 MOVLW 0x00000ca 1477 ANDWF 0x77,0x0,0x00000cc 0912 IORLW 0x120000ce d01d BRA 0x10a else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000d0 af30 BTFSS 0x30,0x7,0x10000d2 d004 BRA 0xdc0000d4 0e00 MOVLW 0x00000d6 1477 ANDWF 0x77,0x0,0x00000d8 0913 IORLW 0x130000da d017 BRA 0x10a else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000dc af40 BTFSS 0x40,0x7,0x10000de d004 BRA 0xe80000e0 0e00 MOVLW 0x00000e2 1477 ANDWF 0x77,0x0,0x00000e4 0914 IORLW 0x140000e6 d011 BRA 0x10a else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000e8 af50 BTFSS 0x50,0x7,0x10000ea d004 BRA 0xf40000ec 0e00 MOVLW 0x00000ee 1477 ANDWF 0x77,0x0,0x00000f0 0915 IORLW 0x150000f2 d00b BRA 0x10a else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000f4 af60 BTFSS 0x60,0x7,0x10000f6 d004 BRA 0x1000000f8 0e00 MOVLW 0x00000fa 1477 ANDWF 0x77,0x0,0x00000fc 0916 IORLW 0x160000fe d005 BRA 0x10a else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c000100 af70 BTFSS 0x70,0x7,0x1000102 d005 BRA 0x10e000104 0e00 MOVLW 0x0000106 1477 ANDWF 0x77,0x0,0x0000108 0917 IORLW 0x1700010a 6e77 MOVWF 0x77,0x000010c d808 RCALL 0x11eF:\MCP\projects\CAN\Source\CAN.c00010e a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\Source\CAN.c000110 d003 BRA 0x118000112 92a4 BCF 0xa4,0x1,0x0000114 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\Source\CAN.c000116 92a4 BCF 0xa4,0x1,0x0000118 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\Source\CAN.c00011a 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c00011c 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.c00011e cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\Source\CAN.c000120 ffe6000122 cfe1 MOVFF 0xfe1,0xfd9000124 ffd9000126 0e0e MOVLW 0xe000128 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.c00012a 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\Source\CAN.c00012c 0b08 ANDLW 0x800012e e102 BNZ 0x134000130 0e00 MOVLW 0x0000132 d001 BRA 0x136000134 0e01 MOVLW 0x1000136 6ee7 MOVWF 0xe7,0x0000138 0e04 MOVLW 0x400013a cfe7 MOVFF 0xfe7,0xfdb00013c ffdbF:\MCP\projects\CAN\Source\CAN.c// Clear F:\MCP\projects\CAN\Source\CAN.c00013e 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\Source\CAN.c000140 6ade CLRF 0xde,0x0000142 6ade CLRF 0xde,0x0000144 6add CLRF 0xdd,0x0000146 52dd MOVF 0xdd,0x1,0x0000148 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c00014a 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c00014c e163 BNZ 0x214{ 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.c00014e 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.c000150 6e00 MOVWF 0x0,0x0000152 6a01 CLRF 0x1,0x0000154 6a02 CLRF 0x2,0x0000156 6a03 CLRF 0x3,0x0000158 0e15 MOVLW 0x1500015a 0b1f ANDLW 0x1f00015c e007 BZ 0x16c00015e 90d8 BCF 0xd8,0x0,0x0000160 3600 RLCF 0x0,0x1,0x0000162 3601 RLCF 0x1,0x1,0x0000164 3602 RLCF 0x2,0x1,0x0000166 3603 RLCF 0x3,0x1,0x0000168 06e8 DECF 0xe8,0x1,0x000016a e1f9 BNZ 0x15e00016c 0ee0 MOVLW 0xe000016e 1462 ANDWF 0x62,0x0,0x0000170 6e04 MOVWF 0x4,0x0000172 6a05 CLRF 0x5,0x0000174 6a06 CLRF 0x6,0x0000176 6a07 CLRF 0x7,0x0000178 0e0d MOVLW 0xd00017a 0b1f ANDLW 0x1f00017c e007 BZ 0x18c00017e 90d8 BCF 0xd8,0x0,0x0000180 3604 RLCF 0x4,0x1,0x0000182 3605 RLCF 0x5,0x1,0x0000184 3606 RLCF 0x6,0x1,0x0000186 3607 RLCF 0x7,0x1,0x0000188 06e8 DECF 0xe8,0x1,0x000018a e1f9 BNZ 0x17e00018c 5004 MOVF 0x4,0x0,0x000018e 2600 ADDWF 0x0,0x1,0x0000190 5005 MOVF 0x5,0x0,0x0000192 2201 ADDWFC 0x1,0x1,0x0000194 5006 MOVF 0x6,0x0,0x0000196 2202 ADDWFC 0x2,0x1,0x0000198 5007 MOVF 0x7,0x0,0x000019a 2203 ADDWFC 0x3,0x1,0x000019c 0e03 MOVLW 0x300019e 1462 ANDWF 0x62,0x0,0x00001a0 6e08 MOVWF 0x8,0x00001a2 6a09 CLRF 0x9,0x00001a4 6a0a CLRF 0xa,0x00001a6 6a0b CLRF 0xb,0x00001a8 0e10 MOVLW 0x100001aa 0b1f ANDLW 0x1f0001ac e007 BZ 0x1bc0001ae 90d8 BCF 0xd8,0x0,0x00001b0 3608 RLCF 0x8,0x1,0x00001b2 3609 RLCF 0x9,0x1,0x00001b4 360a RLCF 0xa,0x1,0x00001b6 360b RLCF 0xb,0x1,0x00001b8 06e8 DECF 0xe8,0x1,0x00001ba e1f9 BNZ 0x1ae0001bc 5008 MOVF 0x8,0x0,0x00001be 2600 ADDWF 0x0,0x1,0x00001c0 5009 MOVF 0x9,0x0,0x00001c2 2201 ADDWFC 0x1,0x1,0x00001c4 500a MOVF 0xa,0x0,0x00001c6 2202 ADDWFC 0x2,0x1,0x00001c8 500b MOVF 0xb,0x0,0x00001ca 2203 ADDWFC 0x3,0x1,0x00001cc 5063 MOVF 0x63,0x0,0x00001ce 6e0c MOVWF 0xc,0x00001d0 6a0d CLRF 0xd,0x00001d2 6a0e CLRF 0xe,0x00001d4 6a0f CLRF 0xf,0x00001d6 0e08 MOVLW 0x80001d8 0b1f ANDLW 0x1f0001da e007 BZ 0x1ea0001dc 90d8 BCF 0xd8,0x0,0x00001de 360c RLCF 0xc,0x1,0x00001e0 360d RLCF 0xd,0x1,0x00001e2 360e RLCF 0xe,0x1,0x00001e4 360f RLCF 0xf,0x1,0x00001e6 06e8 DECF 0xe8,0x1,0x00001e8 e1f9 BNZ 0x1dc0001ea 500c MOVF 0xc,0x0,0x00001ec 2600 ADDWF 0x0,0x1,0x00001ee 500d MOVF 0xd,0x0,0x00001f0 2201 ADDWFC 0x1,0x1,0x00001f2 500e MOVF 0xe,0x0,0x00001f4 2202 ADDWFC 0x2,0x1,0x00001f6 500f MOVF 0xf,0x0,0x00001f8 2203 ADDWFC 0x3,0x1,0x00001fa 5064 MOVF 0x64,0x0,0x00001fc 6e10 MOVWF 0x10,0x00001fe 6a11 CLRF 0x11,0x0000200 6a12 CLRF 0x12,0x0000202 6a13 CLRF 0x13,0x0000204 50e8 MOVF 0xe8,0x0,0x0000206 2600 ADDWF 0x0,0x1,0x0000208 5011 MOVF 0x11,0x0,0x000020a 2201 ADDWFC 0x1,0x1,0x000020c 5012 MOVF 0x12,0x0,0x000020e 2202 ADDWFC 0x2,0x1,0x0000210 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000212 d023 BRA 0x25a 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.c000214 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\Source\CAN.c000216 6e00 MOVWF 0x0,0x0000218 6a01 CLRF 0x1,0x000021a 6a02 CLRF 0x2,0x000021c 6a03 CLRF 0x3,0x000021e 0e03 MOVLW 0x3000220 0b1f ANDLW 0x1f000222 e007 BZ 0x232000224 90d8 BCF 0xd8,0x0,0x0000226 3600 RLCF 0x0,0x1,0x0000228 3601 RLCF 0x1,0x1,0x000022a 3602 RLCF 0x2,0x1,0x000022c 3603 RLCF 0x3,0x1,0x000022e 06e8 DECF 0xe8,0x1,0x0000230 e1f9 BNZ 0x224000232 5062 MOVF 0x62,0x0,0x0000234 6e04 MOVWF 0x4,0x0000236 6a05 CLRF 0x5,0x0000238 6a06 CLRF 0x6,0x000023a 6a07 CLRF 0x7,0x000023c 0e05 MOVLW 0x500023e 90d8 BCF 0xd8,0x0,0x0000240 3207 RRCF 0x7,0x1,0x0000242 3206 RRCF 0x6,0x1,0x0000244 3205 RRCF 0x5,0x1,0x0000246 3204 RRCF 0x4,0x1,0x0000248 06e8 DECF 0xe8,0x1,0x000024a e1f9 BNZ 0x23e00024c 5004 MOVF 0x4,0x0,0x000024e 2600 ADDWF 0x0,0x1,0x0000250 5005 MOVF 0x5,0x0,0x0000252 2201 ADDWFC 0x1,0x1,0x0000254 5006 MOVF 0x6,0x0,0x0000256 2202 ADDWFC 0x2,0x1,0x0000258 5007 MOVF 0x7,0x0,0x000025a 2203 ADDWFC 0x3,0x1,0x000025c c000 MOVFF 0x0,0xfdf00025e ffdf000260 0e01 MOVLW 0x1000262 c001 MOVFF 0x1,0xfdb000264 ffdb000266 0e02 MOVLW 0x2000268 c002 MOVFF 0x2,0xfdb00026a ffdb00026c 0e03 MOVLW 0x300026e c003 MOVFF 0x3,0xfdb000270 ffdb} F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Data length F:\MCP\projects\CAN\Source\CAN.c000272 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\Source\CAN.c000274 cf65 MOVFF 0xf65,0xfdb000276 ffdbF:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c000278 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\Source\CAN.c00027a cf66 MOVFF 0xf66,0xfdb00027c ffdb00027e 0e07 MOVLW 0x7000280 cf67 MOVFF 0xf67,0xfdb000282 ffdb000284 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\Source\CAN.c000286 cf68 MOVFF 0xf68,0xfdb000288 ffdb00028a 0e09 MOVLW 0x900028c cf69 MOVFF 0xf69,0xfdb00028e ffdb000290 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\Source\CAN.c000292 cf6a MOVFF 0xf6a,0xfdb000294 ffdb000296 0e0b MOVLW 0xb000298 cf6b MOVFF 0xf6b,0xfdb00029a ffdb00029c 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\Source\CAN.c00029e cf6c MOVFF 0xf6c,0xfdb0002a0 ffdb0002a2 0e0d MOVLW 0xd0002a4 cf6d MOVFF 0xf6d,0xfdb0002a6 ffdbF:\MCP\projects\CAN\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\Source\CAN.c0002a8 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.c0002aa cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\Source\CAN.c0002ac ffe90002ae cfda MOVFF 0xfda,0xfea0002b0 ffea0002b2 cfee MOVFF 0xfee,0xfe60002b4 ffe60002b6 cfee MOVFF 0xfee,0xfe60002b8 ffe60002ba cfee MOVFF 0xfee,0xfe60002bc ffe60002be cfee MOVFF 0xfee,0xfe60002c0 ffe60002c2 cfee MOVFF 0xfee,0xfe60002c4 ffe60002c6 cfee MOVFF 0xfee,0xfe60002c8 ffe60002ca cfee MOVFF 0xfee,0xfe60002cc ffe60002ce cfee MOVFF 0xfee,0xfe60002d0 ffe60002d2 cfee MOVFF 0xfee,0xfe60002d4 ffe60002d6 cfee MOVFF 0xfee,0xfe60002d8 ffe60002da cfee MOVFF 0xfee,0xfe60002dc ffe60002de cfee MOVFF 0xfee,0xfe60002e0 ffe60002e2 cfee MOVFF 0xfee,0xfe60002e4 ffe60002e6 cfee MOVFF 0xfee,0xfe60002e8 ffe60002ea ecca CALL 0x794,0x00002ec f0030002ee 6e00 MOVWF 0x0,0x00002f0 0e0e MOVLW 0xe0002f2 5ee1 SUBWF 0xe1,0x1,0x00002f4 5000 MOVF 0x0,0x0,0x00002f6 0e0e MOVLW 0xe } F:\MCP\projects\CAN\Source\CAN.c0002f8 5ce1 SUBWF 0xe1,0x0,0x00002fa e202 BC 0x3000002fc 6ae1 CLRF 0xe1,0x00002fe 52e5 MOVF 0xe5,0x1,0x0000300 6ee1 MOVWF 0xe1,0x0000302 52e5 MOVF 0xe5,0x1,0x0000304 cfe7 MOVFF 0xfe7,0xfd9000306 ffd9000308 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.c00030a cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\Source\CAN.c00030c ffe600030e cfe1 MOVFF 0xfe1,0xfd9000310 ffd9{ F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000312 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\Source\CAN.c000314 b740 BTFSC 0x40,0x3,0x1000316 d004 BRA 0x320000318 0e00 MOVLW 0x000031a 1477 ANDWF 0x77,0x0,0x000031c 0903 IORLW 0x300031e 6e77 MOVWF 0x77,0x0000320 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\Source\CAN.c000322 b730 BTFSC 0x30,0x3,0x1000324 d004 BRA 0x32e000326 0e00 MOVLW 0x0000328 1477 ANDWF 0x77,0x0,0x000032a 0904 IORLW 0x400032c 6e77 MOVWF 0x77,0x000032e 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\Source\CAN.c000330 b720 BTFSC 0x20,0x3,0x1000332 d005 BRA 0x33e000334 0e00 MOVLW 0x0000336 1477 ANDWF 0x77,0x0,0x0000338 0905 IORLW 0x500033a 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\Source\CAN.c00033c d002 BRA 0x342 else { return FALSE;} F:\MCP\projects\CAN\Source\CAN.c00033e 0e00 MOVLW 0x0000340 d0c0 BRA 0x4c2F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000342 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c000344 04db DECF 0xdb,0x0,0x0000346 e15f BNZ 0x406{ 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.c000348 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\Source\CAN.c00034a cfdb MOVFF 0xfdb,0x000034c f00000034e 0ef2 MOVLW 0xf2000350 cfdb MOVFF 0xfdb,0x1000352 f001000354 0ef3 MOVLW 0xf3000356 cfdb MOVFF 0xfdb,0x2000358 f00200035a 0ef4 MOVLW 0xf400035c cfdb MOVFF 0xfdb,0x300035e f003000360 0e15 MOVLW 0x15000362 90d8 BCF 0xd8,0x0,0x0000364 3203 RRCF 0x3,0x1,0x0000366 3202 RRCF 0x2,0x1,0x0000368 3201 RRCF 0x1,0x1,0x000036a 3200 RRCF 0x0,0x1,0x000036c 06e8 DECF 0xe8,0x1,0x000036e e1f9 BNZ 0x362000370 5000 MOVF 0x0,0x0,0x0000372 6e61 MOVWF 0x61,0x0000374 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c000376 cfdb MOVFF 0xfdb,0x5000378 f00500037a 0ef2 MOVLW 0xf200037c cfdb MOVFF 0xfdb,0x600037e f006000380 0ef3 MOVLW 0xf3000382 cfdb MOVFF 0xfdb,0x7000384 f007000386 0ef4 MOVLW 0xf4000388 cfdb MOVFF 0xfdb,0x800038a f00800038c 0e0d MOVLW 0xd00038e 90d8 BCF 0xd8,0x0,0x0000390 3208 RRCF 0x8,0x1,0x0000392 3207 RRCF 0x7,0x1,0x0000394 3206 RRCF 0x6,0x1,0x0000396 3205 RRCF 0x5,0x1,0x0000398 06e8 DECF 0xe8,0x1,0x000039a e1f9 BNZ 0x38e00039c 0ee0 MOVLW 0xe000039e 1405 ANDWF 0x5,0x0,0x00003a0 6e04 MOVWF 0x4,0x00003a2 0ef1 MOVLW 0xf10003a4 cfdb MOVFF 0xfdb,0x00003a6 f0000003a8 0ef2 MOVLW 0xf20003aa cfdb MOVFF 0xfdb,0x10003ac f0010003ae 0ef3 MOVLW 0xf30003b0 cfdb MOVFF 0xfdb,0x20003b2 f0020003b4 0ef4 MOVLW 0xf40003b6 cfdb MOVFF 0xfdb,0x30003b8 f0030003ba 0e10 MOVLW 0x100003bc 90d8 BCF 0xd8,0x0,0x00003be 3203 RRCF 0x3,0x1,0x00003c0 3202 RRCF 0x2,0x1,0x00003c2 3201 RRCF 0x1,0x1,0x00003c4 3200 RRCF 0x0,0x1,0x00003c6 06e8 DECF 0xe8,0x1,0x00003c8 e1f9 BNZ 0x3bc0003ca 0e03 MOVLW 0x30003cc 1400 ANDWF 0x0,0x0,0x00003ce 2404 ADDWF 0x4,0x0,0x00003d0 6e62 MOVWF 0x62,0x00003d2 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\Source\CAN.c0003d4 cfdb MOVFF 0xfdb,0x00003d6 f0000003d8 0ef2 MOVLW 0xf20003da cfdb MOVFF 0xfdb,0x10003dc f0010003de 0ef3 MOVLW 0xf30003e0 cfdb MOVFF 0xfdb,0x20003e2 f0020003e4 0ef4 MOVLW 0xf40003e6 cfdb MOVFF 0xfdb,0x30003e8 f0030003ea 0e08 MOVLW 0x80003ec 90d8 BCF 0xd8,0x0,0x00003ee 3203 RRCF 0x3,0x1,0x00003f0 3202 RRCF 0x2,0x1,0x00003f2 3201 RRCF 0x1,0x1,0x00003f4 3200 RRCF 0x0,0x1,0x00003f6 06e8 DECF 0xe8,0x1,0x00003f8 e1f9 BNZ 0x3ec0003fa 5000 MOVF 0x0,0x0,0x00003fc 6e63 MOVWF 0x63,0x00003fe 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\Source\CAN.c000400 50db MOVF 0xdb,0x0,0x0000402 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000404 d02f BRA 0x464 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.c000406 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\Source\CAN.c000408 cfdb MOVFF 0xfdb,0x000040a f00000040c 0ef2 MOVLW 0xf200040e cfdb MOVFF 0xfdb,0x1000410 f001000412 0ef3 MOVLW 0xf3000414 cfdb MOVFF 0xfdb,0x2000416 f002000418 0ef4 MOVLW 0xf400041a cfdb MOVFF 0xfdb,0x300041c f00300041e 0e03 MOVLW 0x3000420 90d8 BCF 0xd8,0x0,0x0000422 3203 RRCF 0x3,0x1,0x0000424 3202 RRCF 0x2,0x1,0x0000426 3201 RRCF 0x1,0x1,0x0000428 3200 RRCF 0x0,0x1,0x000042a 06e8 DECF 0xe8,0x1,0x000042c e1f9 BNZ 0x42000042e 5000 MOVF 0x0,0x0,0x0000430 6e61 MOVWF 0x61,0x0000432 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c000434 cfdb MOVFF 0xfdb,0x0000436 f000000438 0ef2 MOVLW 0xf200043a cfdb MOVFF 0xfdb,0x100043c f00100043e 0ef3 MOVLW 0xf3000440 cfdb MOVFF 0xfdb,0x2000442 f002000444 0ef4 MOVLW 0xf4000446 cfdb MOVFF 0xfdb,0x3000448 f00300044a 0e05 MOVLW 0x500044c 0b1f ANDLW 0x1f00044e e007 BZ 0x45e000450 90d8 BCF 0xd8,0x0,0x0000452 3600 RLCF 0x0,0x1,0x0000454 3601 RLCF 0x1,0x1,0x0000456 3602 RLCF 0x2,0x1,0x0000458 3603 RLCF 0x3,0x1,0x000045a 06e8 DECF 0xe8,0x1,0x000045c e1f9 BNZ 0x45000045e 0ee0 MOVLW 0xe0000460 1400 ANDWF 0x0,0x0,0x0000462 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.c000464 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\Source\CAN.c000466 50db MOVF 0xdb,0x0,0x0000468 0808 SUBLW 0x800046a e203 BC 0x47200046c 0e08 MOVLW 0x800046e 6e65 MOVWF 0x65,0x0000470 d003 BRA 0x478000472 0ef6 MOVLW 0xf6000474 50db MOVF 0xdb,0x0,0x0000476 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c000478 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\Source\CAN.c00047a 50db MOVF 0xdb,0x0,0x000047c 6e66 MOVWF 0x66,0x000047e 0ef8 MOVLW 0xf8000480 50db MOVF 0xdb,0x0,0x0000482 6e67 MOVWF 0x67,0x0000484 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\Source\CAN.c000486 50db MOVF 0xdb,0x0,0x0000488 6e68 MOVWF 0x68,0x000048a 0efa MOVLW 0xfa00048c 50db MOVF 0xdb,0x0,0x000048e 6e69 MOVWF 0x69,0x0000490 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\Source\CAN.c000492 50db MOVF 0xdb,0x0,0x0000494 6e6a MOVWF 0x6a,0x0000496 0efc MOVLW 0xfc000498 50db MOVF 0xdb,0x0,0x000049a 6e6b MOVWF 0x6b,0x000049c 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\Source\CAN.c00049e 50db MOVF 0xdb,0x0,0x00004a0 6e6c MOVWF 0x6c,0x00004a2 0efe MOVLW 0xfe0004a4 50db MOVF 0xdb,0x0,0x00004a6 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\Source\CAN.c// set extended or not F:\MCP\projects\CAN\Source\CAN.c0004a8 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\Source\CAN.c0004aa 04db DECF 0xdb,0x0,0x00004ac e102 BNZ 0x4b20004ae 0e01 MOVLW 0x10004b0 d001 BRA 0x4b40004b2 0e00 MOVLW 0x00004b4 b0e8 BTFSC 0xe8,0x0,0x00004b6 8662 BSF 0x62,0x3,0x00004b8 a0e8 BTFSS 0xe8,0x0,0x00004ba 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.c0004bc 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.c0004be 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Source\CAN.c0004c0 d000 BRA 0x4c2F:\MCP\projects\CAN\Source\CAN.c0004c2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\CAN.c0004c4 cfe7 MOVFF 0xfe7,0xfd90004c6 ffd90004c8 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/********************************************************************* F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c* Ticker service F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\Source\Tick.c#endif F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\Source\Tick.c#else F:\MCP\projects\CAN\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\Source\Tick.c#endif F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c/* F:\MCP\projects\CAN\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c* Input: none F:\MCP\projects\CAN\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\Source\Tick.c* Affects: none F:\MCP\projects\CAN\Source\Tick.c* Depends: none F:\MCP\projects\CAN\Source\Tick.c*/ F:\MCP\projects\CAN\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\Source\Tick.c{ F:\MCP\projects\CAN\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\Source\Tick.c00090c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\Source\Tick.c00090e 6ed6 MOVWF 0xd6,0x0000910 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\Source\Tick.c000912 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\Source\Tick.c000914 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\Source\Tick.c000916 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\Source\Tick.c000918 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c00091a 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\Source\Tick.c00091c 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\Source\Tick.c00091e 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c/* F:\MCP\projects\CAN\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c* Input: none F:\MCP\projects\CAN\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\Source\Tick.c* Affects: none F:\MCP\projects\CAN\Source\Tick.c* Depends: none F:\MCP\projects\CAN\Source\Tick.c*/ F:\MCP\projects\CAN\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\Source\Tick.c{ F:\MCP\projects\CAN\Source\Tick.c000920 c072 MOVFF 0x72,0x18 return TickCount; F:\MCP\projects\CAN\Source\Tick.c000922 f018000924 c073 MOVFF 0x73,0x19000926 f019000928 c074 MOVFF 0x74,0x1a00092a f01a00092c c075 MOVFF 0x75,0x1b00092e f01b000930 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c/* F:\MCP\projects\CAN\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\Source\Tick.c* F:\MCP\projects\CAN\Source\Tick.c* Input: none F:\MCP\projects\CAN\Source\Tick.c* Output: none F:\MCP\projects\CAN\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\Source\Tick.c* Affects: none F:\MCP\projects\CAN\Source\Tick.c* Depends: none F:\MCP\projects\CAN\Source\Tick.c*/ F:\MCP\projects\CAN\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\Source\Tick.c{ F:\MCP\projects\CAN\Source\Tick.c000932 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\Source\Tick.c000934 d00b BRA 0x94c{ F:\MCP\projects\CAN\Source\Tick.c000936 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\Source\Tick.c000938 6ed7 MOVWF 0xd7,0x000093a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\Source\Tick.c00093c 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\Source\Tick.c00093e 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\Source\Tick.c000940 2b72 INCF 0x72,0x1,0x1000942 0e00 MOVLW 0x0000944 2373 ADDWFC 0x73,0x1,0x1000946 2374 ADDWFC 0x74,0x1,0x1000948 2375 ADDWFC 0x75,0x1,0x1F:\MCP\projects\CAN\Source\Tick.c00094a 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\Source\Tick.c} F:\MCP\projects\CAN\Source\Tick.c00094c 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\Tick.c