Rev 51 | Rev 56 | Go to most recent revision | Blame | Compare with Previous | 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 22:58:01 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Main application F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canToSerial\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canToSerial\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <uart.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cvoid main() F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Inits F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000500 d874 RCALL 0x5ea mainInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c000502 ec22 CALL 0x44,0x0 canInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000504 f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c000506 ec83 CALL 0x906,0x0 uartInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000508 f004#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00050a ec56 CALL 0xaac,0x0 tickInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00050c f005F:\MCP\projects\CAN\canToSerial\Source\Main.c00050e d7ff BRA 0x50e while(1) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000510 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canToSerial\Source\Main.c000512 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c000514 ffe4000516 cfe0 MOVFF 0xfe0,0xfe4000518 ffe400051a 6ee4 MOVWF 0xe4,0x000051c cfda MOVFF 0xfda,0xfe400051e ffe4000520 cfe2 MOVFF 0xfe2,0xfda000522 ffda000524 cfe9 MOVFF 0xfe9,0xfe4000526 ffe4000528 cfea MOVFF 0xfea,0xfe400052a ffe400052c cff6 MOVFF 0xff6,0xfe400052e ffe4000530 cff7 MOVFF 0xff7,0xfe4000532 ffe4000534 cff5 MOVFF 0xff5,0xfe4000536 ffe4000538 cff3 MOVFF 0xff3,0xfe400053a ffe400053c cff4 MOVFF 0xff4,0xfe400053e ffe4000540 cffa MOVFF 0xffa,0xfe4000542 ffe4000544 ee00 LFSR 0x0,0x14000546 f014000548 0e0b MOVLW 0xb00054a 04e8 DECF 0xe8,0x0,0x000054c e303 BNC 0x55400054e cfee MOVFF 0xfee,0xfe4000550 ffe4000552 d7fb BRA 0x54a000554 ee00 LFSR 0x0,0x0000556 f000000558 0e14 MOVLW 0x1400055a 04e8 DECF 0xe8,0x0,0x000055c e303 BNC 0x56400055e cfee MOVFF 0xfee,0xfe4000560 ffe4000562 d7fb BRA 0x55a000564 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c000566 ecec CALL 0x9d8,0x0 uartISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000568 f004#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c00056a ec4d CALL 0x9a,0x0 canISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00056c f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00056e ec6a CALL 0xad4,0x0 tickUpdate(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000570 f005000572 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c000574 ee00 LFSR 0x0,0x13000576 f013000578 0e14 MOVLW 0x1400057a 04e8 DECF 0xe8,0x0,0x000057c e303 BNC 0x58400057e cfe5 MOVFF 0xfe5,0xfed000580 ffed000582 d7fb BRA 0x57a000584 ee00 LFSR 0x0,0x1e000586 f01e000588 0e0b MOVLW 0xb00058a 04e8 DECF 0xe8,0x0,0x000058c e303 BNC 0x59400058e cfe5 MOVFF 0xfe5,0xfed000590 ffed000592 d7fb BRA 0x58a000594 cfe5 MOVFF 0xfe5,0xffa000596 fffa000598 cfe5 MOVFF 0xfe5,0xff400059a fff400059c cfe5 MOVFF 0xfe5,0xff300059e fff30005a0 cfe5 MOVFF 0xfe5,0xff50005a2 fff50005a4 cfe5 MOVFF 0xfe5,0xff70005a6 fff70005a8 cfe5 MOVFF 0xfe5,0xff60005aa fff60005ac cfe5 MOVFF 0xfe5,0xfea0005ae ffea0005b0 cfe5 MOVFF 0xfe5,0xfe90005b2 ffe90005b4 cfe5 MOVFF 0xfe5,0xfda0005b6 ffda0005b8 50e5 MOVF 0xe5,0x0,0x00005ba cfe5 MOVFF 0xfe5,0xfe00005bc ffe00005be cfe5 MOVFF 0xfe5,0xfd80005c0 ffd80005c2 0010 RETFIE 0x0#pragma code highVector=0x08 F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000008 ef89 GOTO 0x512 _asm goto HighISR _endasm F:\MCP\projects\CAN\canToSerial\Source\Main.c00000a f00200000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma interruptlow LowISR F:\MCP\projects\CAN\canToSerial\Source\Main.c0005c4 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c0005c6 ffe40005c8 cfe0 MOVFF 0xfe0,0xfe40005ca ffe40005cc 6ee4 MOVWF 0xe4,0x00005ce cfda MOVFF 0xfda,0xfe40005d0 ffe40005d2 cfe2 MOVFF 0xfe2,0xfda0005d4 ffda0005d6 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005d8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0005da cfe5 MOVFF 0xfe5,0xfda0005dc ffda0005de 50e5 MOVF 0xe5,0x0,0x00005e0 cfe5 MOVFF 0xfe5,0xfe00005e2 ffe00005e4 cfe5 MOVFF 0xfe5,0xfd80005e6 ffd80005e8 0010 RETFIE 0x0#pragma code lowVector=0x18 F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000018 efe2 GOTO 0x5c4 _asm goto LowISR _endasm F:\MCP\projects\CAN\canToSerial\Source\Main.c00001a f00200001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0005ea 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canToSerial\Source\Main.c0005ec 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canToSerial\Source\Main.c0005ee 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f0 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f2 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005f4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f6 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f8 ffe60005fa cfe1 MOVFF 0xfe1,0xfd90005fc ffd90005fe 0e02 MOVLW 0x2000600 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000602 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000604 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c000606 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c000608 6ee6 MOVWF 0xe6,0x000060a ec8f CALL 0x91e,0x000060c f00400060e 52e5 MOVF 0xe5,0x1,0x0000610 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000612 cfdb MOVFF 0xfdb,0xfe6000614 ffe6000616 ec8f CALL 0x91e,0x0000618 f00400061a 52e5 MOVF 0xe5,0x1,0x000061c 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00061e cfdb MOVFF 0xfdb,0x0000620 f000000622 0ef2 MOVLW 0xf2000624 cfdb MOVFF 0xfdb,0x1000626 f001000628 0ef3 MOVLW 0xf300062a cfdb MOVFF 0xfdb,0x200062c f00200062e 0ef4 MOVLW 0xf4000630 cfdb MOVFF 0xfdb,0x3000632 f003000634 0e08 MOVLW 0x8000636 90d8 BCF 0xd8,0x0,0x0000638 3203 RRCF 0x3,0x1,0x000063a 3202 RRCF 0x2,0x1,0x000063c 3201 RRCF 0x1,0x1,0x000063e 3200 RRCF 0x0,0x1,0x0000640 06e8 DECF 0xe8,0x1,0x0000642 e1f9 BNZ 0x636000644 5000 MOVF 0x0,0x0,0x0000646 6ee6 MOVWF 0xe6,0x0000648 ec8f CALL 0x91e,0x000064a f00400064c 52e5 MOVF 0xe5,0x1,0x000064e 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000650 cfdb MOVFF 0xfdb,0x0000652 f000000654 0ef2 MOVLW 0xf2000656 cfdb MOVFF 0xfdb,0x1000658 f00100065a 0ef3 MOVLW 0xf300065c cfdb MOVFF 0xfdb,0x200065e f002000660 0ef4 MOVLW 0xf4000662 cfdb MOVFF 0xfdb,0x3000664 f003000666 0e10 MOVLW 0x10000668 90d8 BCF 0xd8,0x0,0x000066a 3203 RRCF 0x3,0x1,0x000066c 3202 RRCF 0x2,0x1,0x000066e 3201 RRCF 0x1,0x1,0x0000670 3200 RRCF 0x0,0x1,0x0000672 06e8 DECF 0xe8,0x1,0x0000674 e1f9 BNZ 0x668000676 5000 MOVF 0x0,0x0,0x0000678 6ee6 MOVWF 0xe6,0x000067a ec8f CALL 0x91e,0x000067c f00400067e 52e5 MOVF 0xe5,0x1,0x0000680 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000682 cfdb MOVFF 0xfdb,0x0000684 f000000686 0ef2 MOVLW 0xf2000688 cfdb MOVFF 0xfdb,0x100068a f00100068c 0ef3 MOVLW 0xf300068e cfdb MOVFF 0xfdb,0x2000690 f002000692 0ef4 MOVLW 0xf4000694 cfdb MOVFF 0xfdb,0x3000696 f003000698 0e18 MOVLW 0x1800069a 90d8 BCF 0xd8,0x0,0x000069c 3203 RRCF 0x3,0x1,0x000069e 3202 RRCF 0x2,0x1,0x00006a0 3201 RRCF 0x1,0x1,0x00006a2 3200 RRCF 0x0,0x1,0x00006a4 06e8 DECF 0xe8,0x1,0x00006a6 e1f9 BNZ 0x69a0006a8 5000 MOVF 0x0,0x0,0x00006aa 6ee6 MOVWF 0xe6,0x00006ac ec8f CALL 0x91e,0x00006ae f0040006b0 52e5 MOVF 0xe5,0x1,0x00006b2 0ef5 MOVLW 0xf5 uartPutc(cm.extended); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006b4 cfdb MOVFF 0xfdb,0xfe60006b6 ffe60006b8 ec8f CALL 0x91e,0x00006ba f0040006bc 52e5 MOVF 0xe5,0x1,0x00006be 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006c0 cfdb MOVFF 0xfdb,0xfe60006c2 ffe60006c4 ec8f CALL 0x91e,0x00006c6 f0040006c8 52e5 MOVF 0xe5,0x1,0x00006ca 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006cc 6add CLRF 0xdd,0x00006ce cfde MOVFF 0xfde,0x00006d0 f0000006d2 cfdd MOVFF 0xfdd,0x10006d4 f0010006d6 90d8 BCF 0xd8,0x0,0x00006d8 5001 MOVF 0x1,0x0,0x00006da e604 BN 0x6e40006dc 0e08 MOVLW 0x80006de 5c00 SUBWF 0x0,0x0,0x00006e0 0e00 MOVLW 0x00006e2 5801 SUBWFB 0x1,0x0,0x00006e4 e216 BC 0x7120006e6 50d9 MOVF 0xd9,0x0,0x00006e8 0ff7 ADDLW 0xf70006ea 6e00 MOVWF 0x0,0x00006ec 0eff MOVLW 0xff0006ee 20da ADDWFC 0xda,0x0,0x00006f0 6e01 MOVWF 0x1,0x00006f2 50de MOVF 0xde,0x0,0x00006f4 2400 ADDWF 0x0,0x0,0x00006f6 6ee9 MOVWF 0xe9,0x00006f8 50dd MOVF 0xdd,0x0,0x00006fa 2001 ADDWFC 0x1,0x0,0x00006fc 6eea MOVWF 0xea,0x00006fe 50ef MOVF 0xef,0x0,0x0000700 6ee6 MOVWF 0xe6,0x0000702 ec8f CALL 0x91e,0x0000704 f004000706 52e5 MOVF 0xe5,0x1,0x0000708 2adf INCF 0xdf,0x1,0x000070a 0e01 MOVLW 0x100070c e301 BNC 0x71000070e 2adb INCF 0xdb,0x1,0x0000710 d7de BRA 0x6ce000712 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c000714 6ee6 MOVWF 0xe6,0x0000716 ec8f CALL 0x91e,0x0000718 f00400071a 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c00071c 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canToSerial\Source\Main.c00071e 5ce1 SUBWF 0xe1,0x0,0x0000720 e202 BC 0x726000722 6ae1 CLRF 0xe1,0x0000724 52e5 MOVF 0xe5,0x1,0x0000726 6ee1 MOVWF 0xe1,0x0000728 52e5 MOVF 0xe5,0x1,0x000072a cfe7 MOVFF 0xfe7,0xfd900072c ffd900072e 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: uartParse F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: Received uart message F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: uartInit and received byte. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c000730 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\Main.c000732 ffe6000734 cfe1 MOVFF 0xfe1,0xfd9000736 ffd9000738 0e11 MOVLW 0x1100073a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cBYTE i; F:\MCP\projects\CAN\canToSerial\Source\Main.c00073c 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.c00073e 6adb CLRF 0xdb,0x0000740 0e02 MOVLW 0x2000742 6adb CLRF 0xdb,0x0CAN_MESSAGE cm; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic BOOL waitingMessage = FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic TICK timeout=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic BYTE count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000744 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canToSerial\Source\Main.c000746 056e DECF 0x6e,0x0,0x1000748 e11a BNZ 0x77e00074a ec60 CALL 0xac0,0x000074c f00500074e 0100 MOVLB 0x0000750 516f MOVF 0x6f,0x0,0x1000752 5c18 SUBWF 0x18,0x0,0x0000754 6e00 MOVWF 0x0,0x0000756 5170 MOVF 0x70,0x0,0x1000758 5819 SUBWFB 0x19,0x0,0x000075a 6e01 MOVWF 0x1,0x000075c 5171 MOVF 0x71,0x0,0x100075e 581a SUBWFB 0x1a,0x0,0x0000760 6e02 MOVWF 0x2,0x0000762 5172 MOVF 0x72,0x0,0x1000764 581b SUBWFB 0x1b,0x0,0x0000766 6e03 MOVWF 0x3,0x0000768 80d8 BSF 0xd8,0x0,0x000076a 0e05 MOVLW 0x500076c 5400 SUBFWB 0x0,0x0,0x000076e 0e00 MOVLW 0x0000770 5401 SUBFWB 0x1,0x0,0x0000772 0e00 MOVLW 0x0000774 5402 SUBFWB 0x2,0x0,0x0000776 0e00 MOVLW 0x0000778 5403 SUBFWB 0x3,0x0,0x000077a e201 BC 0x77e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00077c 6b6e CLRF 0x6e,0x1 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00077e 056e DECF 0x6e,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canToSerial\Source\Main.c000780 e001 BZ 0x784000782 d095 BRA 0x8ae{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000784 ec60 CALL 0xac0,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000786 f005000788 c018 MOVFF 0x18,0x6f00078a f06f00078c c019 MOVFF 0x19,0x7000078e f070000790 c01a MOVFF 0x1a,0x71000792 f071000794 c01b MOVFF 0x1b,0x72000796 f072F:\MCP\projects\CAN\canToSerial\Source\Main.c// UART END F:\MCP\projects\CAN\canToSerial\Source\Main.c000798 0e0e MOVLW 0xe if(count>=14) F:\MCP\projects\CAN\canToSerial\Source\Main.c00079a 0100 MOVLB 0x000079c 5d73 SUBWF 0x73,0x0,0x100079e e336 BNC 0x80c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007a0 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007a2 50db MOVF 0xdb,0x0,0x00007a4 6e00 MOVWF 0x0,0x00007a6 6a01 CLRF 0x1,0x00007a8 0efa MOVLW 0xfa0007aa 1800 XORWF 0x0,0x0,0x00007ac e101 BNZ 0x7b00007ae 5001 MOVF 0x1,0x0,0x00007b0 e12a BNZ 0x806{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007b2 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007b4 0f03 ADDLW 0x30007b6 6ee9 MOVWF 0xe9,0x00007b8 cfda MOVFF 0xfda,0xfea0007ba ffea0007bc cfee MOVFF 0xfee,0xfe60007be ffe60007c0 cfee MOVFF 0xfee,0xfe60007c2 ffe60007c4 cfee MOVFF 0xfee,0xfe60007c6 ffe60007c8 cfee MOVFF 0xfee,0xfe60007ca ffe60007cc cfee MOVFF 0xfee,0xfe60007ce ffe60007d0 cfee MOVFF 0xfee,0xfe60007d2 ffe60007d4 cfee MOVFF 0xfee,0xfe60007d6 ffe60007d8 cfee MOVFF 0xfee,0xfe60007da ffe60007dc cfee MOVFF 0xfee,0xfe60007de ffe60007e0 cfee MOVFF 0xfee,0xfe60007e2 ffe60007e4 cfee MOVFF 0xfee,0xfe60007e6 ffe60007e8 cfee MOVFF 0xfee,0xfe60007ea ffe60007ec cfee MOVFF 0xfee,0xfe60007ee ffe60007f0 cfee MOVFF 0xfee,0xfe60007f2 ffe60007f4 eca0 CALL 0x340,0x00007f6 f0010007f8 6e00 MOVWF 0x0,0x00007fa 0e0e MOVLW 0xe0007fc 5ee1 SUBWF 0xe1,0x1,0x00007fe 5000 MOVF 0x0,0x0,0x0000800 0900 IORLW 0x0000802 e101 BNZ 0x806000804 d7d6 BRA 0x7b2} F:\MCP\projects\CAN\canToSerial\Source\Main.c000806 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c000808 6b6e CLRF 0x6e,0x100080a d073 BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// data F:\MCP\projects\CAN\canToSerial\Source\Main.c00080c 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canToSerial\Source\Main.c00080e 5d73 SUBWF 0x73,0x0,0x1000810 e313 BNC 0x838{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000812 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-6]=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000814 0f09 ADDLW 0x9000816 6e00 MOVWF 0x0,0x0000818 cfda MOVFF 0xfda,0x100081a f00100081c 0e06 MOVLW 0x600081e 5d73 SUBWF 0x73,0x0,0x1000820 010f MOVLB 0xf000822 2400 ADDWF 0x0,0x0,0x0000824 6ee9 MOVWF 0xe9,0x0000826 0e00 MOVLW 0x0000828 2001 ADDWFC 0x1,0x0,0x000082a 6eea MOVWF 0xea,0x000082c 0efe MOVLW 0xfe00082e cfdb MOVFF 0xfdb,0xfef000830 ffef000832 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000834 2b73 INCF 0x73,0x1,0x1000836 d05d BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// data length F:\MCP\projects\CAN\canToSerial\Source\Main.c000838 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canToSerial\Source\Main.c00083a 5d73 SUBWF 0x73,0x0,0x100083c e308 BNC 0x84e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00083e 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000840 50db MOVF 0xdb,0x0,0x0000842 6ee7 MOVWF 0xe7,0x0000844 0e08 MOVLW 0x8000846 cfe7 MOVFF 0xfe7,0xfdb000848 ffdb00084a 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c00084c d052 BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// extended F:\MCP\projects\CAN\canToSerial\Source\Main.c00084e 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canToSerial\Source\Main.c000850 5d73 SUBWF 0x73,0x0,0x1000852 e308 BNC 0x864{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000854 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000856 50db MOVF 0xdb,0x0,0x0000858 6ee7 MOVWF 0xe7,0x000085a 0e07 MOVLW 0x700085c cfe7 MOVFF 0xfe7,0xfdb00085e ffdb000860 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000862 d047 BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// ident F:\MCP\projects\CAN\canToSerial\Source\Main.c000864 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canToSerial\Source\Main.c000866 5d73 SUBWF 0x73,0x0,0x1000868 e322 BNC 0x8ae{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00086a 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00086c cfdb MOVFF 0xfdb,0x000086e f000000870 6a01 CLRF 0x1,0x0000872 6a02 CLRF 0x2,0x0000874 6a03 CLRF 0x3,0x0000876 0e08 MOVLW 0x8000878 0373 MULWF 0x73,0x100087a 50f3 MOVF 0xf3,0x0,0x000087c 0b1f ANDLW 0x1f00087e e007 BZ 0x88e000880 90d8 BCF 0xd8,0x0,0x0000882 3600 RLCF 0x0,0x1,0x0000884 3601 RLCF 0x1,0x1,0x0000886 3602 RLCF 0x2,0x1,0x0000888 3603 RLCF 0x3,0x1,0x000088a 06e8 DECF 0xe8,0x1,0x000088c e1f9 BNZ 0x88000088e 50d9 MOVF 0xd9,0x0,0x0000890 0f03 ADDLW 0x3000892 6ee9 MOVWF 0xe9,0x0000894 cfda MOVFF 0xfda,0xfea000896 ffea000898 5000 MOVF 0x0,0x0,0x000089a 26ee ADDWF 0xee,0x1,0x000089c 5001 MOVF 0x1,0x0,0x000089e 22ee ADDWFC 0xee,0x1,0x00008a0 5002 MOVF 0x2,0x0,0x00008a2 22ee ADDWFC 0xee,0x1,0x00008a4 5003 MOVF 0x3,0x0,0x00008a6 22ee ADDWFC 0xee,0x1,0x00008a8 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008aa 2b73 INCF 0x73,0x1,0x10008ac d022 BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0008ae 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b0 50db MOVF 0xdb,0x0,0x00008b2 6e00 MOVWF 0x0,0x00008b4 6a01 CLRF 0x1,0x00008b6 0efd MOVLW 0xfd0008b8 1800 XORWF 0x0,0x0,0x00008ba e101 BNZ 0x8be0008bc 5001 MOVF 0x1,0x0,0x00008be e119 BNZ 0x8f20008c0 516e MOVF 0x6e,0x0,0x10008c2 e117 BNZ 0x8f2{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008c4 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008c6 6f6e MOVWF 0x6e,0x10008c8 ec60 CALL 0xac0,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0008ca f0050008cc c018 MOVFF 0x18,0x6f0008ce f06f0008d0 c019 MOVFF 0x19,0x700008d2 f0700008d4 c01a MOVFF 0x1a,0x710008d6 f0710008d8 c01b MOVFF 0x1b,0x720008da f0720008dc 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008de 6b73 CLRF 0x73,0x10008e0 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008e2 6adb CLRF 0xdb,0x00008e4 0e04 MOVLW 0x40008e6 6adb CLRF 0xdb,0x00008e8 0e05 MOVLW 0x50008ea 6adb CLRF 0xdb,0x00008ec 0e06 MOVLW 0x60008ee 6adb CLRF 0xdb,0x00008f0 d000 BRA 0x8f2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0008f2 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0008f4 5ce1 SUBWF 0xe1,0x0,0x00008f6 e202 BC 0x8fc0008f8 6ae1 CLRF 0xe1,0x00008fa 52e5 MOVF 0xe5,0x1,0x00008fc 6ee1 MOVWF 0xe1,0x00008fe 52e5 MOVF 0xe5,0x1,0x0000900 cfe7 MOVFF 0xfe7,0xfd9000902 ffd9000904 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canToSerial\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 e001 BZ 0x52000050 d7fb BRA 0x48F:\MCP\projects\CAN\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000052 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.c000054 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\Source\CAN.c000056 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.c000058 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\Source\CAN.c00005a 1070 IORWF 0x70,0x0,0x000005c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\Source\CAN.c00005e 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.c000060 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c000062 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c000064 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.c000066 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\Source\CAN.c000068 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\Source\CAN.c00006a 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.c00006c 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.c00006e 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.c000070 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\Source\CAN.c000072 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\Source\CAN.c000074 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\Source\CAN.c000078 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\Source\CAN.c00007a 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.c00007c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\Source\CAN.c00007e 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.c000080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\Source\CAN.c000082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\Source\CAN.c000084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\Source\CAN.c000086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\Source\CAN.c000088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\Source\CAN.c// High interrupt F:\MCP\projects\CAN\Source\CAN.c00008a 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.c00008c 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.c00008e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\Source\CAN.c000090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\Source\CAN.c000092 146e ANDWF 0x6e,0x0,0x0000094 e001 BZ 0x98000096 d7fc BRA 0x90#endif F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000098 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.c00009a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\Source\CAN.c00009c 0b02 ANDLW 0x200009e e106 BNZ 0xac0000a0 50a4 MOVF 0xa4,0x0,0x00000a2 0b02 ANDLW 0x20000a4 e103 BNZ 0xac0000a6 50a4 MOVF 0xa4,0x0,0x00000a8 0b01 ANDLW 0x10000aa e047 BZ 0x13a{ F:\MCP\projects\CAN\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\Source\CAN.c0000ac ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000ae d006 BRA 0xbc0000b0 0e00 MOVLW 0x00000b2 1477 ANDWF 0x77,0x0,0x00000b4 0910 IORLW 0x100000b6 6e77 MOVWF 0x77,0x00000b8 d841 RCALL 0x13c0000ba d039 BRA 0x12e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000bc 010f MOVLB 0xf0000be af50 BTFSS 0x50,0x7,0x10000c0 d006 BRA 0xce0000c2 0e00 MOVLW 0x00000c4 1477 ANDWF 0x77,0x0,0x00000c6 0911 IORLW 0x110000c8 6e77 MOVWF 0x77,0x00000ca d838 RCALL 0x13c0000cc d030 BRA 0x12e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000ce 010e MOVLB 0xe0000d0 af20 BTFSS 0x20,0x7,0x10000d2 d006 BRA 0xe00000d4 0e00 MOVLW 0x00000d6 1477 ANDWF 0x77,0x0,0x00000d8 0912 IORLW 0x120000da 6e77 MOVWF 0x77,0x00000dc d82f RCALL 0x13c0000de d027 BRA 0x12e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000e0 af30 BTFSS 0x30,0x7,0x10000e2 d006 BRA 0xf00000e4 0e00 MOVLW 0x00000e6 1477 ANDWF 0x77,0x0,0x00000e8 0913 IORLW 0x130000ea 6e77 MOVWF 0x77,0x00000ec d827 RCALL 0x13c0000ee d01f BRA 0x12e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c0000f0 af40 BTFSS 0x40,0x7,0x10000f2 d006 BRA 0x1000000f4 0e00 MOVLW 0x00000f6 1477 ANDWF 0x77,0x0,0x00000f8 0914 IORLW 0x140000fa 6e77 MOVWF 0x77,0x00000fc d81f RCALL 0x13c0000fe d017 BRA 0x12e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c000100 af50 BTFSS 0x50,0x7,0x1000102 d006 BRA 0x110000104 0e00 MOVLW 0x0000106 1477 ANDWF 0x77,0x0,0x0000108 0915 IORLW 0x1500010a 6e77 MOVWF 0x77,0x000010c d817 RCALL 0x13c00010e d00f BRA 0x12e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c000110 af60 BTFSS 0x60,0x7,0x1000112 d006 BRA 0x120000114 0e00 MOVLW 0x0000116 1477 ANDWF 0x77,0x0,0x0000118 0916 IORLW 0x1600011a 6e77 MOVWF 0x77,0x000011c d80f RCALL 0x13c00011e d007 BRA 0x12e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\Source\CAN.c000120 af70 BTFSS 0x70,0x7,0x1000122 d005 BRA 0x12e000124 0e00 MOVLW 0x0000126 1477 ANDWF 0x77,0x0,0x0000128 0917 IORLW 0x1700012a 6e77 MOVWF 0x77,0x000012c d807 RCALL 0x13cF:\MCP\projects\CAN\Source\CAN.c00012e b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\Source\CAN.c000130 92a4 BCF 0xa4,0x1,0x0000132 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\Source\CAN.c000134 92a4 BCF 0xa4,0x1,0x0000136 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\Source\CAN.c000138 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c00013a 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.c00013c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\Source\CAN.c00013e ffe6000140 cfe1 MOVFF 0xfe1,0xfd9000142 ffd9000144 0e0e MOVLW 0xe000146 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.c000148 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\Source\CAN.c00014a 0b08 ANDLW 0x800014c e102 BNZ 0x15200014e 0e00 MOVLW 0x0000150 d001 BRA 0x154000152 0e01 MOVLW 0x1000154 6ee7 MOVWF 0xe7,0x0000156 0e04 MOVLW 0x4000158 cfe7 MOVFF 0xfe7,0xfdb00015a ffdbF:\MCP\projects\CAN\Source\CAN.c// Clear F:\MCP\projects\CAN\Source\CAN.c00015c 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\Source\CAN.c00015e 6ade CLRF 0xde,0x0000160 6ade CLRF 0xde,0x0000162 6add CLRF 0xdd,0x0000164 52dd MOVF 0xdd,0x1,0x0000166 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000168 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c00016a e16f BNZ 0x24a{ 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.c00016c 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.c00016e 6e00 MOVWF 0x0,0x0000170 6a01 CLRF 0x1,0x0000172 6a02 CLRF 0x2,0x0000174 6a03 CLRF 0x3,0x0000176 0e15 MOVLW 0x15000178 0b1f ANDLW 0x1f00017a e007 BZ 0x18a00017c 90d8 BCF 0xd8,0x0,0x000017e 3600 RLCF 0x0,0x1,0x0000180 3601 RLCF 0x1,0x1,0x0000182 3602 RLCF 0x2,0x1,0x0000184 3603 RLCF 0x3,0x1,0x0000186 06e8 DECF 0xe8,0x1,0x0000188 e1f9 BNZ 0x17c00018a 0ee0 MOVLW 0xe000018c 1462 ANDWF 0x62,0x0,0x000018e 6e04 MOVWF 0x4,0x0000190 6a05 CLRF 0x5,0x0000192 6a06 CLRF 0x6,0x0000194 6a07 CLRF 0x7,0x0000196 0e0d MOVLW 0xd000198 0b1f ANDLW 0x1f00019a e007 BZ 0x1aa00019c 90d8 BCF 0xd8,0x0,0x000019e 3604 RLCF 0x4,0x1,0x00001a0 3605 RLCF 0x5,0x1,0x00001a2 3606 RLCF 0x6,0x1,0x00001a4 3607 RLCF 0x7,0x1,0x00001a6 06e8 DECF 0xe8,0x1,0x00001a8 e1f9 BNZ 0x19c0001aa 5004 MOVF 0x4,0x0,0x00001ac 2600 ADDWF 0x0,0x1,0x00001ae 5005 MOVF 0x5,0x0,0x00001b0 2201 ADDWFC 0x1,0x1,0x00001b2 5006 MOVF 0x6,0x0,0x00001b4 2202 ADDWFC 0x2,0x1,0x00001b6 5007 MOVF 0x7,0x0,0x00001b8 2203 ADDWFC 0x3,0x1,0x00001ba 0e03 MOVLW 0x30001bc 1462 ANDWF 0x62,0x0,0x00001be 6e08 MOVWF 0x8,0x00001c0 6a09 CLRF 0x9,0x00001c2 6a0a CLRF 0xa,0x00001c4 6a0b CLRF 0xb,0x00001c6 0e10 MOVLW 0x100001c8 0b1f ANDLW 0x1f0001ca e007 BZ 0x1da0001cc 90d8 BCF 0xd8,0x0,0x00001ce 3608 RLCF 0x8,0x1,0x00001d0 3609 RLCF 0x9,0x1,0x00001d2 360a RLCF 0xa,0x1,0x00001d4 360b RLCF 0xb,0x1,0x00001d6 06e8 DECF 0xe8,0x1,0x00001d8 e1f9 BNZ 0x1cc0001da 5008 MOVF 0x8,0x0,0x00001dc 2600 ADDWF 0x0,0x1,0x00001de 5009 MOVF 0x9,0x0,0x00001e0 2201 ADDWFC 0x1,0x1,0x00001e2 500a MOVF 0xa,0x0,0x00001e4 2202 ADDWFC 0x2,0x1,0x00001e6 500b MOVF 0xb,0x0,0x00001e8 2203 ADDWFC 0x3,0x1,0x00001ea 5063 MOVF 0x63,0x0,0x00001ec 6e0c MOVWF 0xc,0x00001ee 6a0d CLRF 0xd,0x00001f0 6a0e CLRF 0xe,0x00001f2 6a0f CLRF 0xf,0x00001f4 0e08 MOVLW 0x80001f6 0b1f ANDLW 0x1f0001f8 e007 BZ 0x2080001fa 90d8 BCF 0xd8,0x0,0x00001fc 360c RLCF 0xc,0x1,0x00001fe 360d RLCF 0xd,0x1,0x0000200 360e RLCF 0xe,0x1,0x0000202 360f RLCF 0xf,0x1,0x0000204 06e8 DECF 0xe8,0x1,0x0000206 e1f9 BNZ 0x1fa000208 500c MOVF 0xc,0x0,0x000020a 2600 ADDWF 0x0,0x1,0x000020c 500d MOVF 0xd,0x0,0x000020e 2201 ADDWFC 0x1,0x1,0x0000210 500e MOVF 0xe,0x0,0x0000212 2202 ADDWFC 0x2,0x1,0x0000214 500f MOVF 0xf,0x0,0x0000216 2203 ADDWFC 0x3,0x1,0x0000218 5064 MOVF 0x64,0x0,0x000021a 6e10 MOVWF 0x10,0x000021c 6a11 CLRF 0x11,0x000021e 6a12 CLRF 0x12,0x0000220 6a13 CLRF 0x13,0x0000222 5010 MOVF 0x10,0x0,0x0000224 2600 ADDWF 0x0,0x1,0x0000226 5011 MOVF 0x11,0x0,0x0000228 2201 ADDWFC 0x1,0x1,0x000022a 5012 MOVF 0x12,0x0,0x000022c 2202 ADDWFC 0x2,0x1,0x000022e 5013 MOVF 0x13,0x0,0x0000230 2203 ADDWFC 0x3,0x1,0x0000232 c000 MOVFF 0x0,0xfdf000234 ffdf000236 0e01 MOVLW 0x1000238 c001 MOVFF 0x1,0xfdb00023a ffdb00023c 0e02 MOVLW 0x200023e c002 MOVFF 0x2,0xfdb000240 ffdb000242 0e03 MOVLW 0x3000244 c003 MOVFF 0x3,0xfdb000246 ffdbF:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c000248 d02f BRA 0x2a8 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.c00024a 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\Source\CAN.c00024c 6e00 MOVWF 0x0,0x000024e 6a01 CLRF 0x1,0x0000250 6a02 CLRF 0x2,0x0000252 6a03 CLRF 0x3,0x0000254 0e03 MOVLW 0x3000256 0b1f ANDLW 0x1f000258 e007 BZ 0x26800025a 90d8 BCF 0xd8,0x0,0x000025c 3600 RLCF 0x0,0x1,0x000025e 3601 RLCF 0x1,0x1,0x0000260 3602 RLCF 0x2,0x1,0x0000262 3603 RLCF 0x3,0x1,0x0000264 06e8 DECF 0xe8,0x1,0x0000266 e1f9 BNZ 0x25a000268 5062 MOVF 0x62,0x0,0x000026a 6e04 MOVWF 0x4,0x000026c 6a05 CLRF 0x5,0x000026e 6a06 CLRF 0x6,0x0000270 6a07 CLRF 0x7,0x0000272 0e05 MOVLW 0x5000274 90d8 BCF 0xd8,0x0,0x0000276 3207 RRCF 0x7,0x1,0x0000278 3206 RRCF 0x6,0x1,0x000027a 3205 RRCF 0x5,0x1,0x000027c 3204 RRCF 0x4,0x1,0x000027e 06e8 DECF 0xe8,0x1,0x0000280 e1f9 BNZ 0x274000282 5004 MOVF 0x4,0x0,0x0000284 2600 ADDWF 0x0,0x1,0x0000286 5005 MOVF 0x5,0x0,0x0000288 2201 ADDWFC 0x1,0x1,0x000028a 5006 MOVF 0x6,0x0,0x000028c 2202 ADDWFC 0x2,0x1,0x000028e 5007 MOVF 0x7,0x0,0x0000290 2203 ADDWFC 0x3,0x1,0x0000292 c000 MOVFF 0x0,0xfdf000294 ffdf000296 0e01 MOVLW 0x1000298 c001 MOVFF 0x1,0xfdb00029a ffdb00029c 0e02 MOVLW 0x200029e c002 MOVFF 0x2,0xfdb0002a0 ffdb0002a2 0e03 MOVLW 0x30002a4 c003 MOVFF 0x3,0xfdb0002a6 ffdb} F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c// Data length F:\MCP\projects\CAN\Source\CAN.c0002a8 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\Source\CAN.c0002aa cf65 MOVFF 0xf65,0xfdb0002ac ffdbF:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c0002ae 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\Source\CAN.c0002b0 cf66 MOVFF 0xf66,0xfdb0002b2 ffdb0002b4 0e07 MOVLW 0x70002b6 cf67 MOVFF 0xf67,0xfdb0002b8 ffdb0002ba 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\Source\CAN.c0002bc cf68 MOVFF 0xf68,0xfdb0002be ffdb0002c0 0e09 MOVLW 0x90002c2 cf69 MOVFF 0xf69,0xfdb0002c4 ffdb0002c6 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\Source\CAN.c0002c8 cf6a MOVFF 0xf6a,0xfdb0002ca ffdb0002cc 0e0b MOVLW 0xb0002ce cf6b MOVFF 0xf6b,0xfdb0002d0 ffdb0002d2 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\Source\CAN.c0002d4 cf6c MOVFF 0xf6c,0xfdb0002d6 ffdb0002d8 0e0d MOVLW 0xd0002da cf6d MOVFF 0xf6d,0xfdb0002dc ffdbF:\MCP\projects\CAN\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\Source\CAN.c0002de 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.c0002e0 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\Source\CAN.c0002e2 ffe90002e4 cfda MOVFF 0xfda,0xfea0002e6 ffea0002e8 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 cfee MOVFF 0xfee,0xfe600030a ffe600030c cfee MOVFF 0xfee,0xfe600030e ffe6000310 cfee MOVFF 0xfee,0xfe6000312 ffe6000314 cfee MOVFF 0xfee,0xfe6000316 ffe6000318 cfee MOVFF 0xfee,0xfe600031a ffe600031c cfee MOVFF 0xfee,0xfe600031e ffe6000320 ecfb CALL 0x5f6,0x0000322 f002000324 6e00 MOVWF 0x0,0x0000326 0e0e MOVLW 0xe000328 5ee1 SUBWF 0xe1,0x1,0x000032a 5000 MOVF 0x0,0x0,0x000032c 0e0e MOVLW 0xe } F:\MCP\projects\CAN\Source\CAN.c00032e 5ce1 SUBWF 0xe1,0x0,0x0000330 e202 BC 0x336000332 6ae1 CLRF 0xe1,0x0000334 52e5 MOVF 0xe5,0x1,0x0000336 6ee1 MOVWF 0xe1,0x0000338 52e5 MOVF 0xe5,0x1,0x000033a cfe7 MOVFF 0xfe7,0xfd900033c ffd900033e 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.c000340 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\Source\CAN.c000342 ffe6000344 cfe1 MOVFF 0xfe1,0xfd9000346 ffd9{ F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000348 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\Source\CAN.c00034a b740 BTFSC 0x40,0x3,0x100034c d004 BRA 0x35600034e 0e00 MOVLW 0x0000350 1477 ANDWF 0x77,0x0,0x0000352 0903 IORLW 0x3000354 6e77 MOVWF 0x77,0x0000356 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\Source\CAN.c000358 b730 BTFSC 0x30,0x3,0x100035a d004 BRA 0x36400035c 0e00 MOVLW 0x000035e 1477 ANDWF 0x77,0x0,0x0000360 0904 IORLW 0x4000362 6e77 MOVWF 0x77,0x0000364 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\Source\CAN.c000366 b720 BTFSC 0x20,0x3,0x1000368 d005 BRA 0x37400036a 0e00 MOVLW 0x000036c 1477 ANDWF 0x77,0x0,0x000036e 0905 IORLW 0x5000370 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\Source\CAN.c000372 d002 BRA 0x378 else { return FALSE;} F:\MCP\projects\CAN\Source\CAN.c000374 0e00 MOVLW 0x0000376 d0c0 BRA 0x4f8F:\MCP\projects\CAN\Source\CAN.cF:\MCP\projects\CAN\Source\CAN.c000378 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\Source\CAN.c00037a 04db DECF 0xdb,0x0,0x000037c e15f BNZ 0x43c{ 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.c00037e 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\Source\CAN.c000380 cfdb MOVFF 0xfdb,0x0000382 f000000384 0ef2 MOVLW 0xf2000386 cfdb MOVFF 0xfdb,0x1000388 f00100038a 0ef3 MOVLW 0xf300038c cfdb MOVFF 0xfdb,0x200038e f002000390 0ef4 MOVLW 0xf4000392 cfdb MOVFF 0xfdb,0x3000394 f003000396 0e15 MOVLW 0x15000398 90d8 BCF 0xd8,0x0,0x000039a 3203 RRCF 0x3,0x1,0x000039c 3202 RRCF 0x2,0x1,0x000039e 3201 RRCF 0x1,0x1,0x00003a0 3200 RRCF 0x0,0x1,0x00003a2 06e8 DECF 0xe8,0x1,0x00003a4 e1f9 BNZ 0x3980003a6 5000 MOVF 0x0,0x0,0x00003a8 6e61 MOVWF 0x61,0x00003aa 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c0003ac cfdb MOVFF 0xfdb,0x50003ae f0050003b0 0ef2 MOVLW 0xf20003b2 cfdb MOVFF 0xfdb,0x60003b4 f0060003b6 0ef3 MOVLW 0xf30003b8 cfdb MOVFF 0xfdb,0x70003ba f0070003bc 0ef4 MOVLW 0xf40003be cfdb MOVFF 0xfdb,0x80003c0 f0080003c2 0e0d MOVLW 0xd0003c4 90d8 BCF 0xd8,0x0,0x00003c6 3208 RRCF 0x8,0x1,0x00003c8 3207 RRCF 0x7,0x1,0x00003ca 3206 RRCF 0x6,0x1,0x00003cc 3205 RRCF 0x5,0x1,0x00003ce 06e8 DECF 0xe8,0x1,0x00003d0 e1f9 BNZ 0x3c40003d2 0ee0 MOVLW 0xe00003d4 1405 ANDWF 0x5,0x0,0x00003d6 6e04 MOVWF 0x4,0x00003d8 0ef1 MOVLW 0xf10003da cfdb MOVFF 0xfdb,0x00003dc f0000003de 0ef2 MOVLW 0xf20003e0 cfdb MOVFF 0xfdb,0x10003e2 f0010003e4 0ef3 MOVLW 0xf30003e6 cfdb MOVFF 0xfdb,0x20003e8 f0020003ea 0ef4 MOVLW 0xf40003ec cfdb MOVFF 0xfdb,0x30003ee f0030003f0 0e10 MOVLW 0x100003f2 90d8 BCF 0xd8,0x0,0x00003f4 3203 RRCF 0x3,0x1,0x00003f6 3202 RRCF 0x2,0x1,0x00003f8 3201 RRCF 0x1,0x1,0x00003fa 3200 RRCF 0x0,0x1,0x00003fc 06e8 DECF 0xe8,0x1,0x00003fe e1f9 BNZ 0x3f2000400 0e03 MOVLW 0x3000402 1400 ANDWF 0x0,0x0,0x0000404 2404 ADDWF 0x4,0x0,0x0000406 6e62 MOVWF 0x62,0x0000408 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\Source\CAN.c00040a cfdb MOVFF 0xfdb,0x000040c f00000040e 0ef2 MOVLW 0xf2000410 cfdb MOVFF 0xfdb,0x1000412 f001000414 0ef3 MOVLW 0xf3000416 cfdb MOVFF 0xfdb,0x2000418 f00200041a 0ef4 MOVLW 0xf400041c cfdb MOVFF 0xfdb,0x300041e f003000420 0e08 MOVLW 0x8000422 90d8 BCF 0xd8,0x0,0x0000424 3203 RRCF 0x3,0x1,0x0000426 3202 RRCF 0x2,0x1,0x0000428 3201 RRCF 0x1,0x1,0x000042a 3200 RRCF 0x0,0x1,0x000042c 06e8 DECF 0xe8,0x1,0x000042e e1f9 BNZ 0x422000430 5000 MOVF 0x0,0x0,0x0000432 6e63 MOVWF 0x63,0x0000434 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\Source\CAN.c000436 50db MOVF 0xdb,0x0,0x0000438 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\Source\CAN.c} F:\MCP\projects\CAN\Source\CAN.c00043a d02f BRA 0x49a 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.c00043c 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\Source\CAN.c00043e cfdb MOVFF 0xfdb,0x0000440 f000000442 0ef2 MOVLW 0xf2000444 cfdb MOVFF 0xfdb,0x1000446 f001000448 0ef3 MOVLW 0xf300044a cfdb MOVFF 0xfdb,0x200044c f00200044e 0ef4 MOVLW 0xf4000450 cfdb MOVFF 0xfdb,0x3000452 f003000454 0e03 MOVLW 0x3000456 90d8 BCF 0xd8,0x0,0x0000458 3203 RRCF 0x3,0x1,0x000045a 3202 RRCF 0x2,0x1,0x000045c 3201 RRCF 0x1,0x1,0x000045e 3200 RRCF 0x0,0x1,0x0000460 06e8 DECF 0xe8,0x1,0x0000462 e1f9 BNZ 0x456000464 5000 MOVF 0x0,0x0,0x0000466 6e61 MOVWF 0x61,0x0000468 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\Source\CAN.c00046a cfdb MOVFF 0xfdb,0x000046c f00000046e 0ef2 MOVLW 0xf2000470 cfdb MOVFF 0xfdb,0x1000472 f001000474 0ef3 MOVLW 0xf3000476 cfdb MOVFF 0xfdb,0x2000478 f00200047a 0ef4 MOVLW 0xf400047c cfdb MOVFF 0xfdb,0x300047e f003000480 0e05 MOVLW 0x5000482 0b1f ANDLW 0x1f000484 e007 BZ 0x494000486 90d8 BCF 0xd8,0x0,0x0000488 3600 RLCF 0x0,0x1,0x000048a 3601 RLCF 0x1,0x1,0x000048c 3602 RLCF 0x2,0x1,0x000048e 3603 RLCF 0x3,0x1,0x0000490 06e8 DECF 0xe8,0x1,0x0000492 e1f9 BNZ 0x486000494 0ee0 MOVLW 0xe0000496 1400 ANDWF 0x0,0x0,0x0000498 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.c00049a 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\Source\CAN.c00049c 50db MOVF 0xdb,0x0,0x000049e 0808 SUBLW 0x80004a0 e203 BC 0x4a80004a2 0e08 MOVLW 0x80004a4 6e65 MOVWF 0x65,0x00004a6 d003 BRA 0x4ae0004a8 0ef6 MOVLW 0xf60004aa 50db MOVF 0xdb,0x0,0x00004ac 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\Source\CAN.c0004ae 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\Source\CAN.c0004b0 50db MOVF 0xdb,0x0,0x00004b2 6e66 MOVWF 0x66,0x00004b4 0ef8 MOVLW 0xf80004b6 50db MOVF 0xdb,0x0,0x00004b8 6e67 MOVWF 0x67,0x00004ba 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\Source\CAN.c0004bc 50db MOVF 0xdb,0x0,0x00004be 6e68 MOVWF 0x68,0x00004c0 0efa MOVLW 0xfa0004c2 50db MOVF 0xdb,0x0,0x00004c4 6e69 MOVWF 0x69,0x00004c6 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\Source\CAN.c0004c8 50db MOVF 0xdb,0x0,0x00004ca 6e6a MOVWF 0x6a,0x00004cc 0efc MOVLW 0xfc0004ce 50db MOVF 0xdb,0x0,0x00004d0 6e6b MOVWF 0x6b,0x00004d2 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\Source\CAN.c0004d4 50db MOVF 0xdb,0x0,0x00004d6 6e6c MOVWF 0x6c,0x00004d8 0efe MOVLW 0xfe0004da 50db MOVF 0xdb,0x0,0x00004dc 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\Source\CAN.c// set extended or not F:\MCP\projects\CAN\Source\CAN.c0004de 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\Source\CAN.c0004e0 04db DECF 0xdb,0x0,0x00004e2 e102 BNZ 0x4e80004e4 0e01 MOVLW 0x10004e6 d001 BRA 0x4ea0004e8 0e00 MOVLW 0x00004ea b0e8 BTFSC 0xe8,0x0,0x00004ec 8662 BSF 0x62,0x3,0x00004ee a0e8 BTFSS 0xe8,0x0,0x00004f0 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.c0004f2 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.c0004f4 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Source\CAN.c0004f6 d000 BRA 0x4f8F:\MCP\projects\CAN\Source\CAN.c0004f8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\CAN.c0004fa cfe7 MOVFF 0xfe7,0xfd90004fc ffd90004fe 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.c000aac 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\Source\Tick.c000aae 6ed6 MOVWF 0xd6,0x0000ab0 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\Source\Tick.c000ab2 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.c000ab4 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\Source\Tick.c000ab6 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\Source\Tick.c000ab8 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\Source\Tick.cF:\MCP\projects\CAN\Source\Tick.c000aba 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\Source\Tick.c000abc 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\Source\Tick.c000abe 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.c000ac0 c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\Source\Tick.c000ac2 f018000ac4 c075 MOVFF 0x75,0x19000ac6 f019000ac8 c076 MOVFF 0x76,0x1a000aca f01a000acc c077 MOVFF 0x77,0x1b000ace f01b000ad0 d000 BRA 0xad2000ad2 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.c000ad4 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\Source\Tick.c000ad6 d00b BRA 0xaee{ F:\MCP\projects\CAN\Source\Tick.c000ad8 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\Source\Tick.c000ada 6ed7 MOVWF 0xd7,0x0000adc 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\Source\Tick.c000ade 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\Source\Tick.c000ae0 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\Source\Tick.c000ae2 2b74 INCF 0x74,0x1,0x1000ae4 0e00 MOVLW 0x0000ae6 2375 ADDWFC 0x75,0x1,0x1000ae8 2376 ADDWFC 0x76,0x1,0x1000aea 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\Source\Tick.c000aec 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\Source\Tick.c} F:\MCP\projects\CAN\Source\Tick.c000aee 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* UART F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c********************************************************************* F:\MCP\projects\CAN\Source\uart.c* FileName: uart.c F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Author Date Comment F:\MCP\projects\CAN\Source\uart.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\Source\uart.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\Source\uart.c********************************************************************/ F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c#include <uart.h> F:\MCP\projects\CAN\Source\uart.c#include <stackTasks.h> F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c#ifdef USE_UART F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cstatic char uartBusy(void); F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartInit F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: none F:\MCP\projects\CAN\Source\uart.c* Output: none F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: none F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.cvoid uartInit() F:\MCP\projects\CAN\Source\uart.c{ F:\MCP\projects\CAN\Source\uart.c// Configure USART F:\MCP\projects\CAN\Source\uart.c000906 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\Source\uart.c000908 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\Source\uart.c00090a 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\Source\uart.c00090c 6eac MOVWF 0xac,0x000090e 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\Source\uart.c000910 6eab MOVWF 0xab,0x0000912 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\Source\uart.c000914 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\Source\uart.c000916 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\Source\uart.c000918 8a9d BSF 0x9d,0x5,0x0 PIE1bits.RCIE=1; F:\MCP\projects\CAN\Source\uart.c// High interrupt F:\MCP\projects\CAN\Source\uart.c00091a 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\Source\uart.c00091c 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartPutc F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: BYTE c to send on uart F:\MCP\projects\CAN\Source\uart.c* Output: none F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.c00091e cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\Source\uart.c000920 ffe6000922 cfe1 MOVFF 0xfe1,0xfd9000924 ffd9{ F:\MCP\projects\CAN\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\Source\uart.c000926 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\Source\uart.c000928 50db MOVF 0xdb,0x0,0x000092a 6ead MOVWF 0xad,0x000092c d84b RCALL 0x9c4 while(uartBusy()); F:\MCP\projects\CAN\Source\uart.c00092e 0900 IORLW 0x0000930 e001 BZ 0x934000932 d7fc BRA 0x92c000934 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\uart.c000936 cfe7 MOVFF 0xfe7,0xfd9000938 ffd900093a 0012 RETURN 0x0F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartPuts F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: Byte array to send on uart F:\MCP\projects\CAN\Source\uart.c* Output: none F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.c00093c cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\Source\uart.c00093e ffe6000940 cfe1 MOVFF 0xfe1,0xfd9000942 ffd9{ F:\MCP\projects\CAN\Source\uart.cdo F:\MCP\projects\CAN\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\Source\uart.c000944 d83f RCALL 0x9c4 while(uartBusy()); F:\MCP\projects\CAN\Source\uart.c000946 0900 IORLW 0x0000948 e001 BZ 0x94c00094a d7fc BRA 0x94400094c 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\Source\uart.c00094e cfdb MOVFF 0xfdb,0xfe9000950 ffe9000952 0efe MOVLW 0xfe000954 cfdb MOVFF 0xfdb,0xfea000956 ffea000958 50ef MOVF 0xef,0x0,0x000095a 6ee6 MOVWF 0xe6,0x000095c dfe0 RCALL 0x91e00095e 52e5 MOVF 0xe5,0x1,0x0000960 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\Source\uart.c000962 cfdb MOVFF 0xfdb,0xfe9000964 ffe9000966 2adb INCF 0xdb,0x1,0x0000968 0efe MOVLW 0xfe00096a cfdb MOVFF 0xfdb,0xfea00096c ffea00096e e301 BNC 0x972000970 2adb INCF 0xdb,0x1,0x0000972 50ef MOVF 0xef,0x0,0x0000974 e1e7 BNZ 0x944000976 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\uart.c000978 cfe7 MOVFF 0xfe7,0xfd900097a ffd900097c 0012 RETURN 0x0F:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartPutrs F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: Byte array to send on uart (static) F:\MCP\projects\CAN\Source\uart.c* Output: none F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.c00097e cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\Source\uart.c000980 ffe6000982 cfe1 MOVFF 0xfe1,0xfd9000984 ffd9{ F:\MCP\projects\CAN\Source\uart.cdo F:\MCP\projects\CAN\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\Source\uart.c000986 d81e RCALL 0x9c4 while(uartBusy()); F:\MCP\projects\CAN\Source\uart.c000988 0900 IORLW 0x000098a e001 BZ 0x98e00098c d7fc BRA 0x98600098e 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\Source\uart.c000990 cfdb MOVFF 0xfdb,0xff6000992 fff6000994 0efe MOVLW 0xfe000996 cfdb MOVFF 0xfdb,0xff7000998 fff700099a 0008 TBLRD00099c 50f5 MOVF 0xf5,0x0,0x000099e 6ee6 MOVWF 0xe6,0x00009a0 dfbe RCALL 0x91e0009a2 52e5 MOVF 0xe5,0x1,0x00009a4 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\Source\uart.c0009a6 cfdb MOVFF 0xfdb,0xff60009a8 fff60009aa 2adb INCF 0xdb,0x1,0x00009ac 0efe MOVLW 0xfe0009ae cfdb MOVFF 0xfdb,0xff70009b0 fff70009b2 e301 BNC 0x9b60009b4 2adb INCF 0xdb,0x1,0x00009b6 0008 TBLRD0009b8 50f5 MOVF 0xf5,0x0,0x00009ba e1e5 BNZ 0x9860009bc 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Source\uart.c0009be cfe7 MOVFF 0xfe7,0xfd90009c0 ffd90009c2 0012 RETURN 0x0F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartBusy F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: none. F:\MCP\projects\CAN\Source\uart.c* Output: If usart busy or not. F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.cchar uartBusy(void) F:\MCP\projects\CAN\Source\uart.c{ F:\MCP\projects\CAN\Source\uart.c0009c4 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\Source\uart.c0009c6 0b02 ANDLW 0x20009c8 0a02 XORLW 0x20009ca e001 BZ 0x9ce0009cc 0e01 MOVLW 0x10009ce d000 BRA 0x9d00009d0 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartGet F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: none F:\MCP\projects\CAN\Source\uart.c* Output: Byte read F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none. F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.cBYTE uartGet(void) F:\MCP\projects\CAN\Source\uart.c{ F:\MCP\projects\CAN\Source\uart.c// Return the received data F:\MCP\projects\CAN\Source\uart.c0009d2 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\Source\uart.c0009d4 d000 BRA 0x9d60009d6 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartISR F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: none F:\MCP\projects\CAN\Source\uart.c* Output: none F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: call to uartParse F:\MCP\projects\CAN\Source\uart.c* Depends: none. F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.cvoid uartISR(void) F:\MCP\projects\CAN\Source\uart.c{ F:\MCP\projects\CAN\Source\uart.c0009d8 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\Source\uart.c0009da 0b20 ANDLW 0x200009dc e00d BZ 0x9f80009de 509d MOVF 0x9d,0x0,0x00009e0 0b20 ANDLW 0x200009e2 e00a BZ 0x9f8{ F:\MCP\projects\CAN\Source\uart.c0009e4 a2ab BTFSS 0xab,0x1,0x0 if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\Source\uart.c0009e6 d002 BRA 0x9ec0009e8 98ab BCF 0xab,0x4,0x00009ea 88ab BSF 0xab,0x4,0x0F:\MCP\projects\CAN\Source\uart.c0009ec dff2 RCALL 0x9d2 uartParse(uartGet()); F:\MCP\projects\CAN\Source\uart.c0009ee 6ee6 MOVWF 0xe6,0x00009f0 ec98 CALL 0x730,0x00009f2 f0030009f4 52e5 MOVF 0xe5,0x1,0x00009f6 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\Source\uart.c} F:\MCP\projects\CAN\Source\uart.c0009f8 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c/* F:\MCP\projects\CAN\Source\uart.c* Function: uartDataRedy F:\MCP\projects\CAN\Source\uart.c* F:\MCP\projects\CAN\Source\uart.c* Input: none. F:\MCP\projects\CAN\Source\uart.c* Output: If usart data are redy to be read. F:\MCP\projects\CAN\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\Source\uart.c* Affects: none F:\MCP\projects\CAN\Source\uart.c* Depends: none F:\MCP\projects\CAN\Source\uart.c*/ F:\MCP\projects\CAN\Source\uart.cchar uartDataRedy(void) F:\MCP\projects\CAN\Source\uart.c{ F:\MCP\projects\CAN\Source\uart.c0009fa a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\Source\uart.c0009fc d002 BRA 0xa02{ F:\MCP\projects\CAN\Source\uart.c0009fe 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\Source\uart.c000a00 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\Source\uart.c} F:\MCP\projects\CAN\Source\uart.c000a02 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\Source\uart.c000a04 0b20 ANDLW 0x20000a06 e001 BZ 0xa0a000a08 0e01 MOVLW 0x1000a0a d000 BRA 0xa0c000a0c 0012 RETURN 0x0 } F:\MCP\projects\CAN\Source\uart.cF:\MCP\projects\CAN\Source\uart.c#endif F:\MCP\projects\CAN\Source\uart.c