Rev 31 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sat Oct 21 20:58:05 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 "../Include/compiler.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../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 "../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.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\Main.c#endif 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.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic BOOL heartBeatEnabled = FALSE; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c000046 ffe6000048 cfe1 MOVFF 0xfe1,0xfd900004a ffd900004c 0e0e MOVLW 0xe00004e 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.c000050 d8d1 RCALL 0x1f4 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.c000052 ecba CALL 0x774,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000054 f003#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c000056 ecff CALL 0xbfe,0x0 uartInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000058 f005#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00005a ec10 CALL 0xe20,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00005c f007F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c00005e ec1a CALL 0xe34,0x0 if ((tickGet()-t)>=5*TICK_SECOND && heartBeatEnabled==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c000060 f007000062 0100 MOVLB 0x0000064 516b MOVF 0x6b,0x0,0x1000066 5c18 SUBWF 0x18,0x0,0x0000068 6e00 MOVWF 0x0,0x000006a 516c MOVF 0x6c,0x0,0x100006c 5819 SUBWFB 0x19,0x0,0x000006e 6e01 MOVWF 0x1,0x0000070 516d MOVF 0x6d,0x0,0x1000072 581a SUBWFB 0x1a,0x0,0x0000074 6e02 MOVWF 0x2,0x0000076 516e MOVF 0x6e,0x0,0x1000078 581b SUBWFB 0x1b,0x0,0x000007a 6e03 MOVWF 0x3,0x000007c 0ef4 MOVLW 0xf400007e 5c00 SUBWF 0x0,0x0,0x0000080 0e01 MOVLW 0x1000082 5801 SUBWFB 0x1,0x0,0x0000084 0e00 MOVLW 0x0000086 5802 SUBWFB 0x2,0x0,0x0000088 0e00 MOVLW 0x000008a 5803 SUBWFB 0x3,0x0,0x000008c e3e8 BNC 0x5e00008e 056a DECF 0x6a,0x0,0x1000090 e1e6 BNZ 0x5e{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000092 ec1a CALL 0xe34,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000094 f007000096 c018 MOVFF 0x18,0x6b000098 f06b00009a c019 MOVFF 0x19,0x6c00009c f06c00009e c01a MOVFF 0x1a,0x6d0000a0 f06d0000a2 c01b MOVFF 0x1b,0x6e0000a4 f06eF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c0000a6 0e66 MOVLW 0x66 cm.ident=0x00000666; F:\MCP\projects\CAN\canNode\Source\Main.c0000a8 6ede MOVWF 0xde,0x00000aa 0e06 MOVLW 0x60000ac 6ede MOVWF 0xde,0x00000ae 6ade CLRF 0xde,0x00000b0 6add CLRF 0xdd,0x00000b2 52dd MOVF 0xdd,0x1,0x00000b4 52dd MOVF 0xdd,0x1,0x00000b6 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0000b8 6adb CLRF 0xdb,0x00000ba 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c0000bc 6ef3 MOVWF 0xf3,0x00000be 0e05 MOVLW 0x50000c0 cff3 MOVFF 0xff3,0xfdb0000c2 ffdb0000c4 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0000c6 6ef3 MOVWF 0xf3,0x00000c8 0e06 MOVLW 0x60000ca cff3 MOVFF 0xff3,0xfdb0000cc ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0000ce cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0000d0 ffe90000d2 cfda MOVFF 0xfda,0xfea0000d4 ffea0000d6 cfee MOVFF 0xfee,0xfe60000d8 ffe60000da cfee MOVFF 0xfee,0xfe60000dc ffe60000de cfee MOVFF 0xfee,0xfe60000e0 ffe60000e2 cfee MOVFF 0xfee,0xfe60000e4 ffe60000e6 cfee MOVFF 0xfee,0xfe60000e8 ffe60000ea cfee MOVFF 0xfee,0xfe60000ec ffe60000ee cfee MOVFF 0xfee,0xfe60000f0 ffe60000f2 cfee MOVFF 0xfee,0xfe60000f4 ffe60000f6 cfee MOVFF 0xfee,0xfe60000f8 ffe60000fa cfee MOVFF 0xfee,0xfe60000fc ffe60000fe cfee MOVFF 0xfee,0xfe6000100 ffe6000102 cfee MOVFF 0xfee,0xfe6000104 ffe6000106 cfee MOVFF 0xfee,0xfe6000108 ffe600010a cfee MOVFF 0xfee,0xfe600010c ffe600010e ec1f CALL 0xa3e,0x0000110 f005000112 6e00 MOVWF 0x0,0x0000114 0e0e MOVLW 0xe000116 5ee1 SUBWF 0xe1,0x1,0x0000118 5000 MOVF 0x0,0x0,0x000011a 0900 IORLW 0x000011c e1a0 BNZ 0x5e00011e d7d7 BRA 0xceF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c} 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.c000120 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c000122 ffe4000124 cfe0 MOVFF 0xfe0,0xfe4000126 ffe4000128 6ee4 MOVWF 0xe4,0x000012a cfda MOVFF 0xfda,0xfe400012c ffe400012e cfe2 MOVFF 0xfe2,0xfda000130 ffda000132 cfe9 MOVFF 0xfe9,0xfe4000134 ffe4000136 cfea MOVFF 0xfea,0xfe4000138 ffe400013a cff6 MOVFF 0xff6,0xfe400013c ffe400013e cff7 MOVFF 0xff7,0xfe4000140 ffe4000142 cff5 MOVFF 0xff5,0xfe4000144 ffe4000146 cff3 MOVFF 0xff3,0xfe4000148 ffe400014a cff4 MOVFF 0xff4,0xfe400014c ffe400014e cffa MOVFF 0xffa,0xfe4000150 ffe4000152 ee00 LFSR 0x0,0x14000154 f014000156 0e0b MOVLW 0xb000158 04e8 DECF 0xe8,0x0,0x000015a e303 BNC 0x16200015c cfee MOVFF 0xfee,0xfe400015e ffe4000160 d7fb BRA 0x158000162 ee00 LFSR 0x0,0x0000164 f000000166 0e14 MOVLW 0x14000168 04e8 DECF 0xe8,0x0,0x000016a e303 BNC 0x17200016c cfee MOVFF 0xfee,0xfe400016e ffe4000170 d7fb BRA 0x168000172 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000174 ece5 CALL 0x7ca,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000176 f003#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c000178 ecab CALL 0xd56,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c00017a f006#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00017c ec23 CALL 0xe46,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c00017e f007000180 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c000182 ee00 LFSR 0x0,0x13000184 f013000186 0e14 MOVLW 0x14000188 04e8 DECF 0xe8,0x0,0x000018a e303 BNC 0x19200018c cfe5 MOVFF 0xfe5,0xfed00018e ffed000190 d7fb BRA 0x188000192 ee00 LFSR 0x0,0x1e000194 f01e000196 0e0b MOVLW 0xb000198 04e8 DECF 0xe8,0x0,0x000019a e303 BNC 0x1a200019c cfe5 MOVFF 0xfe5,0xfed00019e ffed0001a0 d7fb BRA 0x1980001a2 cfe5 MOVFF 0xfe5,0xffa0001a4 fffa0001a6 cfe5 MOVFF 0xfe5,0xff40001a8 fff40001aa cfe5 MOVFF 0xfe5,0xff30001ac fff30001ae cfe5 MOVFF 0xfe5,0xff50001b0 fff50001b2 cfe5 MOVFF 0xfe5,0xff70001b4 fff70001b6 cfe5 MOVFF 0xfe5,0xff60001b8 fff60001ba cfe5 MOVFF 0xfe5,0xfea0001bc ffea0001be cfe5 MOVFF 0xfe5,0xfe90001c0 ffe90001c2 cfe5 MOVFF 0xfe5,0xfda0001c4 ffda0001c6 50e5 MOVF 0xe5,0x0,0x00001c8 cfe5 MOVFF 0xfe5,0xfe00001ca ffe00001cc cfe5 MOVFF 0xfe5,0xfd80001ce ffd80001d0 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 ef90 GOTO 0x120 _asm goto HighISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00000a f00000000c 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.c0001d2 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0001d4 ffe40001d6 cfe0 MOVFF 0xfe0,0xfe40001d8 ffe40001da 6ee4 MOVWF 0xe4,0x00001dc cfda MOVFF 0xfda,0xfe40001de ffe40001e0 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0001e2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0001e4 cfe5 MOVFF 0xfe5,0xfda0001e6 ffda0001e8 50e5 MOVF 0xe5,0x0,0x00001ea cfe5 MOVFF 0xfe5,0xfe00001ec ffe00001ee cfe5 MOVFF 0xfe5,0xfd80001f0 ffd80001f2 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 efe9 GOTO 0x1d2 _asm goto LowISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00001a f00000001c 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.c0001f4 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.c0001f6 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.c0001f8 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c0001fa 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0001fc 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.c0001fe cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c000200 ffe6000202 cfe1 MOVFF 0xfe1,0xfd9000204 ffd9000206 0e02 MOVLW 0x2000208 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c00020a 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canNode\Source\Main.c00020c 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canNode\Source\Main.c00020e 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canNode\Source\Main.c000210 6ee6 MOVWF 0xe6,0x0000212 ec0b CALL 0xc16,0x0000214 f006000216 52e5 MOVF 0xe5,0x1,0x0000218 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canNode\Source\Main.c00021a cfdb MOVFF 0xfdb,0xfe600021c ffe600021e ec0b CALL 0xc16,0x0000220 f006000222 52e5 MOVF 0xe5,0x1,0x0000224 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canNode\Source\Main.c000226 cfdb MOVFF 0xfdb,0x0000228 f00000022a 0ef2 MOVLW 0xf200022c cfdb MOVFF 0xfdb,0x100022e f001000230 0ef3 MOVLW 0xf3000232 cfdb MOVFF 0xfdb,0x2000234 f002000236 0ef4 MOVLW 0xf4000238 cfdb MOVFF 0xfdb,0x300023a f00300023c 0e08 MOVLW 0x800023e 90d8 BCF 0xd8,0x0,0x0000240 3203 RRCF 0x3,0x1,0x0000242 3202 RRCF 0x2,0x1,0x0000244 3201 RRCF 0x1,0x1,0x0000246 3200 RRCF 0x0,0x1,0x0000248 06e8 DECF 0xe8,0x1,0x000024a e1f9 BNZ 0x23e00024c 5000 MOVF 0x0,0x0,0x000024e 6ee6 MOVWF 0xe6,0x0000250 ec0b CALL 0xc16,0x0000252 f006000254 52e5 MOVF 0xe5,0x1,0x0000256 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canNode\Source\Main.c000258 cfdb MOVFF 0xfdb,0x000025a f00000025c 0ef2 MOVLW 0xf200025e cfdb MOVFF 0xfdb,0x1000260 f001000262 0ef3 MOVLW 0xf3000264 cfdb MOVFF 0xfdb,0x2000266 f002000268 0ef4 MOVLW 0xf400026a cfdb MOVFF 0xfdb,0x300026c f00300026e 0e10 MOVLW 0x10000270 90d8 BCF 0xd8,0x0,0x0000272 3203 RRCF 0x3,0x1,0x0000274 3202 RRCF 0x2,0x1,0x0000276 3201 RRCF 0x1,0x1,0x0000278 3200 RRCF 0x0,0x1,0x000027a 06e8 DECF 0xe8,0x1,0x000027c e1f9 BNZ 0x27000027e 5000 MOVF 0x0,0x0,0x0000280 6ee6 MOVWF 0xe6,0x0000282 ec0b CALL 0xc16,0x0000284 f006000286 52e5 MOVF 0xe5,0x1,0x0000288 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canNode\Source\Main.c00028a cfdb MOVFF 0xfdb,0x000028c f00000028e 0ef2 MOVLW 0xf2000290 cfdb MOVFF 0xfdb,0x1000292 f001000294 0ef3 MOVLW 0xf3000296 cfdb MOVFF 0xfdb,0x2000298 f00200029a 0ef4 MOVLW 0xf400029c cfdb MOVFF 0xfdb,0x300029e f0030002a0 0e18 MOVLW 0x180002a2 90d8 BCF 0xd8,0x0,0x00002a4 3203 RRCF 0x3,0x1,0x00002a6 3202 RRCF 0x2,0x1,0x00002a8 3201 RRCF 0x1,0x1,0x00002aa 3200 RRCF 0x0,0x1,0x00002ac 06e8 DECF 0xe8,0x1,0x00002ae e1f9 BNZ 0x2a20002b0 5000 MOVF 0x0,0x0,0x00002b2 6ee6 MOVWF 0xe6,0x00002b4 ec0b CALL 0xc16,0x00002b6 f0060002b8 52e5 MOVF 0xe5,0x1,0x00002ba 0ef5 MOVLW 0xf5 uartPutc(cm.extended); F:\MCP\projects\CAN\canNode\Source\Main.c0002bc cfdb MOVFF 0xfdb,0xfe60002be ffe60002c0 ec0b CALL 0xc16,0x00002c2 f0060002c4 52e5 MOVF 0xe5,0x1,0x00002c6 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canNode\Source\Main.c0002c8 cfdb MOVFF 0xfdb,0xfe60002ca ffe60002cc ec0b CALL 0xc16,0x00002ce f0060002d0 52e5 MOVF 0xe5,0x1,0x00002d2 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[cm.data_length-i-1]); F:\MCP\projects\CAN\canNode\Source\Main.c0002d4 6add CLRF 0xdd,0x00002d6 cfde MOVFF 0xfde,0x00002d8 f0000002da cfdd MOVFF 0xfdd,0x10002dc f0010002de 90d8 BCF 0xd8,0x0,0x00002e0 5001 MOVF 0x1,0x0,0x00002e2 e604 BN 0x2ec0002e4 0e08 MOVLW 0x80002e6 5c00 SUBWF 0x0,0x0,0x00002e8 0e00 MOVLW 0x00002ea 5801 SUBWFB 0x1,0x0,0x00002ec e223 BC 0x3340002ee 50d9 MOVF 0xd9,0x0,0x00002f0 0ff7 ADDLW 0xf70002f2 6e00 MOVWF 0x0,0x00002f4 0eff MOVLW 0xff0002f6 20da ADDWFC 0xda,0x0,0x00002f8 6e01 MOVWF 0x1,0x00002fa 0ef6 MOVLW 0xf60002fc 50db MOVF 0xdb,0x0,0x00002fe 6e04 MOVWF 0x4,0x0000300 6a05 CLRF 0x5,0x0000302 50de MOVF 0xde,0x0,0x0000304 5c04 SUBWF 0x4,0x0,0x0000306 6e02 MOVWF 0x2,0x0000308 50dd MOVF 0xdd,0x0,0x000030a 5805 SUBWFB 0x5,0x0,0x000030c 6e03 MOVWF 0x3,0x000030e 0602 DECF 0x2,0x1,0x0000310 0e00 MOVLW 0x0000312 5a03 SUBWFB 0x3,0x1,0x0000314 5000 MOVF 0x0,0x0,0x0000316 2402 ADDWF 0x2,0x0,0x0000318 6ee9 MOVWF 0xe9,0x000031a 5001 MOVF 0x1,0x0,0x000031c 2003 ADDWFC 0x3,0x0,0x000031e 6eea MOVWF 0xea,0x0000320 50ef MOVF 0xef,0x0,0x0000322 6ee6 MOVWF 0xe6,0x0000324 ec0b CALL 0xc16,0x0000326 f006000328 52e5 MOVF 0xe5,0x1,0x000032a 2adf INCF 0xdf,0x1,0x000032c 0e01 MOVLW 0x100032e e3d3 BNC 0x2d6000330 2adb INCF 0xdb,0x1,0x0000332 d7d1 BRA 0x2d6000334 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canNode\Source\Main.c000336 6ee6 MOVWF 0xe6,0x0000338 ec0b CALL 0xc16,0x000033a f00600033c 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c00033e 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canNode\Source\Main.c000340 5ce1 SUBWF 0xe1,0x0,0x0000342 e202 BC 0x348000344 6ae1 CLRF 0xe1,0x0000346 52e5 MOVF 0xe5,0x1,0x0000348 6ee1 MOVWF 0xe1,0x000034a 52e5 MOVF 0xe5,0x1,0x000034c cfe7 MOVFF 0xfe7,0xfd900034e ffd9000350 0012 RETURN 0x0#endif 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: uartParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received uart message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: uartInit and received byte. 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_UART F:\MCP\projects\CAN\canNode\Source\Main.c000352 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canNode\Source\Main.c000354 ffe6000356 cfe1 MOVFF 0xfe1,0xfd9000358 ffd900035a 0e11 MOVLW 0x1100035c 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cBYTE i; F:\MCP\projects\CAN\canNode\Source\Main.c00035e 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canNode\Source\Main.c000360 6adb CLRF 0xdb,0x0000362 0e02 MOVLW 0x2000364 6adb CLRF 0xdb,0x0CAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cstatic BOOL waitingMessage = FALSE; F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK timeout; F:\MCP\projects\CAN\canNode\Source\Main.cstatic BYTE count; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000366 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canNode\Source\Main.c000368 056f DECF 0x6f,0x0,0x100036a e11b BNZ 0x3a200036c ec1a CALL 0xe34,0x000036e f007000370 0100 MOVLB 0x0000372 5170 MOVF 0x70,0x0,0x1000374 5c18 SUBWF 0x18,0x0,0x0000376 6e00 MOVWF 0x0,0x0000378 5171 MOVF 0x71,0x0,0x100037a 5819 SUBWFB 0x19,0x0,0x000037c 6e01 MOVWF 0x1,0x000037e 5172 MOVF 0x72,0x0,0x1000380 581a SUBWFB 0x1a,0x0,0x0000382 6e02 MOVWF 0x2,0x0000384 5173 MOVF 0x73,0x0,0x1000386 581b SUBWFB 0x1b,0x0,0x0000388 6e03 MOVWF 0x3,0x000038a 80d8 BSF 0xd8,0x0,0x000038c 0e05 MOVLW 0x500038e 5400 SUBFWB 0x0,0x0,0x0000390 0e00 MOVLW 0x0000392 5401 SUBFWB 0x1,0x0,0x0000394 0e00 MOVLW 0x0000396 5402 SUBFWB 0x2,0x0,0x0000398 0e00 MOVLW 0x000039a 5403 SUBFWB 0x3,0x0,0x000039c e202 BC 0x3a2{ F:\MCP\projects\CAN\canNode\Source\Main.c00039e 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0003a0 6b6f CLRF 0x6f,0x1} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0003a2 0100 MOVLB 0x0 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c0003a4 056f DECF 0x6f,0x0,0x10003a6 e001 BZ 0x3aa0003a8 d08c BRA 0x4c2{ F:\MCP\projects\CAN\canNode\Source\Main.c0003aa ec1a CALL 0xe34,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0003ac f0070003ae c018 MOVFF 0x18,0x700003b0 f0700003b2 c019 MOVFF 0x19,0x710003b4 f0710003b6 c01a MOVFF 0x1a,0x720003b8 f0720003ba c01b MOVFF 0x1b,0x730003bc f073F:\MCP\projects\CAN\canNode\Source\Main.c// UART END F:\MCP\projects\CAN\canNode\Source\Main.c0003be 0e0e MOVLW 0xe if(count>=14) F:\MCP\projects\CAN\canNode\Source\Main.c0003c0 0100 MOVLB 0x00003c2 5d74 SUBWF 0x74,0x0,0x10003c4 e335 BNC 0x430{ F:\MCP\projects\CAN\canNode\Source\Main.c0003c6 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canNode\Source\Main.c0003c8 50db MOVF 0xdb,0x0,0x00003ca 6e00 MOVWF 0x0,0x00003cc 6a01 CLRF 0x1,0x00003ce 0efa MOVLW 0xfa0003d0 1800 XORWF 0x0,0x0,0x00003d2 e12b BNZ 0x42a0003d4 5001 MOVF 0x1,0x0,0x00003d6 e129 BNZ 0x42a{ F:\MCP\projects\CAN\canNode\Source\Main.c0003d8 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0003da 0f03 ADDLW 0x30003dc 6ee9 MOVWF 0xe9,0x00003de cfda MOVFF 0xfda,0xfea0003e0 ffea0003e2 cfee MOVFF 0xfee,0xfe60003e4 ffe60003e6 cfee MOVFF 0xfee,0xfe60003e8 ffe60003ea cfee MOVFF 0xfee,0xfe60003ec ffe60003ee cfee MOVFF 0xfee,0xfe60003f0 ffe60003f2 cfee MOVFF 0xfee,0xfe60003f4 ffe60003f6 cfee MOVFF 0xfee,0xfe60003f8 ffe60003fa cfee MOVFF 0xfee,0xfe60003fc ffe60003fe cfee MOVFF 0xfee,0xfe6000400 ffe6000402 cfee MOVFF 0xfee,0xfe6000404 ffe6000406 cfee MOVFF 0xfee,0xfe6000408 ffe600040a cfee MOVFF 0xfee,0xfe600040c ffe600040e cfee MOVFF 0xfee,0xfe6000410 ffe6000412 cfee MOVFF 0xfee,0xfe6000414 ffe6000416 cfee MOVFF 0xfee,0xfe6000418 ffe600041a ec1f CALL 0xa3e,0x000041c f00500041e 6e00 MOVWF 0x0,0x0000420 0e0e MOVLW 0xe000422 5ee1 SUBWF 0xe1,0x1,0x0000424 5000 MOVF 0x0,0x0,0x0000426 0900 IORLW 0x0000428 e0d7 BZ 0x3d8} F:\MCP\projects\CAN\canNode\Source\Main.c00042a 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c00042c 6b6f CLRF 0x6f,0x100042e d198 BRA 0x760 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// data F:\MCP\projects\CAN\canNode\Source\Main.c000430 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canNode\Source\Main.c000432 5d74 SUBWF 0x74,0x0,0x1000434 e30f BNC 0x454{ F:\MCP\projects\CAN\canNode\Source\Main.c000436 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-6]=c; F:\MCP\projects\CAN\canNode\Source\Main.c000438 0f09 ADDLW 0x900043a 6e00 MOVWF 0x0,0x000043c 0e06 MOVLW 0x600043e 5d74 SUBWF 0x74,0x0,0x1000440 010f MOVLB 0xf000442 2400 ADDWF 0x0,0x0,0x0000444 6ee9 MOVWF 0xe9,0x0000446 0e00 MOVLW 0x0000448 20da ADDWFC 0xda,0x0,0x000044a 6eea MOVWF 0xea,0x000044c 0efe MOVLW 0xfe00044e cfdb MOVFF 0xfdb,0xfef000450 ffefcount++; F:\MCP\projects\CAN\canNode\Source\Main.c000452 d034 BRA 0x4bc return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// data length F:\MCP\projects\CAN\canNode\Source\Main.c000454 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canNode\Source\Main.c000456 5d74 SUBWF 0x74,0x0,0x1000458 e305 BNC 0x464{ F:\MCP\projects\CAN\canNode\Source\Main.c00045a 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canNode\Source\Main.c00045c 50db MOVF 0xdb,0x0,0x000045e 6ee7 MOVWF 0xe7,0x0000460 0e08 MOVLW 0x8count++; F:\MCP\projects\CAN\canNode\Source\Main.c000462 d007 BRA 0x472 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// extended F:\MCP\projects\CAN\canNode\Source\Main.c000464 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canNode\Source\Main.c000466 5d74 SUBWF 0x74,0x0,0x1000468 e307 BNC 0x478{ F:\MCP\projects\CAN\canNode\Source\Main.c00046a 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canNode\Source\Main.c00046c 50db MOVF 0xdb,0x0,0x000046e 6ee7 MOVWF 0xe7,0x0000470 0e07 MOVLW 0x7000472 cfe7 MOVFF 0xfe7,0xfdb000474 ffdbcount++; F:\MCP\projects\CAN\canNode\Source\Main.c000476 d023 BRA 0x4be return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// ident F:\MCP\projects\CAN\canNode\Source\Main.c000478 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canNode\Source\Main.c00047a 5d74 SUBWF 0x74,0x0,0x100047c e322 BNC 0x4c2{ F:\MCP\projects\CAN\canNode\Source\Main.c00047e 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canNode\Source\Main.c000480 cfdb MOVFF 0xfdb,0x0000482 f000000484 6a01 CLRF 0x1,0x0000486 6a02 CLRF 0x2,0x0000488 6a03 CLRF 0x3,0x000048a 0e08 MOVLW 0x800048c 0374 MULWF 0x74,0x100048e 50f3 MOVF 0xf3,0x0,0x0000490 0b1f ANDLW 0x1f000492 e007 BZ 0x4a2000494 90d8 BCF 0xd8,0x0,0x0000496 3600 RLCF 0x0,0x1,0x0000498 3601 RLCF 0x1,0x1,0x000049a 3602 RLCF 0x2,0x1,0x000049c 3603 RLCF 0x3,0x1,0x000049e 06e8 DECF 0xe8,0x1,0x00004a0 e1f9 BNZ 0x4940004a2 50d9 MOVF 0xd9,0x0,0x00004a4 0f03 ADDLW 0x30004a6 6ee9 MOVWF 0xe9,0x00004a8 cfda MOVFF 0xfda,0xfea0004aa ffea0004ac 5000 MOVF 0x0,0x0,0x00004ae 26ee ADDWF 0xee,0x1,0x00004b0 5001 MOVF 0x1,0x0,0x00004b2 22ee ADDWFC 0xee,0x1,0x00004b4 5002 MOVF 0x2,0x0,0x00004b6 22ee ADDWFC 0xee,0x1,0x00004b8 5003 MOVF 0x3,0x0,0x00004ba 22ee ADDWFC 0xee,0x1,0x00004bc 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canNode\Source\Main.c0004be 2b74 INCF 0x74,0x1,0x10004c0 d14f BRA 0x760 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\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.c0004c2 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0004c4 50db MOVF 0xdb,0x0,0x00004c6 6e00 MOVWF 0x0,0x00004c8 6a01 CLRF 0x1,0x00004ca 0efd MOVLW 0xfd0004cc 1800 XORWF 0x0,0x0,0x00004ce e11c BNZ 0x5080004d0 5001 MOVF 0x1,0x0,0x00004d2 e11a BNZ 0x5080004d4 0100 MOVLB 0x00004d6 516f MOVF 0x6f,0x0,0x10004d8 e117 BNZ 0x508{ F:\MCP\projects\CAN\canNode\Source\Main.c0004da 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0004dc 6f6f MOVWF 0x6f,0x10004de ec1a CALL 0xe34,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0004e0 f0070004e2 c018 MOVFF 0x18,0x700004e4 f0700004e6 c019 MOVFF 0x19,0x710004e8 f0710004ea c01a MOVFF 0x1a,0x720004ec f0720004ee c01b MOVFF 0x1b,0x730004f0 f0730004f2 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canNode\Source\Main.c0004f4 6b74 CLRF 0x74,0x10004f6 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\Main.c0004f8 6adb CLRF 0xdb,0x00004fa 0e04 MOVLW 0x40004fc 6adb CLRF 0xdb,0x00004fe 0e05 MOVLW 0x5000500 6adb CLRF 0xdb,0x0000502 0e06 MOVLW 0x6000504 6adb CLRF 0xdb,0x0000506 d12c BRA 0x760 return; 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.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.cfor(i=0;i<4;i++) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cwait = 0; F:\MCP\projects\CAN\canNode\Source\Main.cwhile(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cif(wait < UART_READ_TIMEOUT) wait++; F:\MCP\projects\CAN\canNode\Source\Main.celse return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.ccm.ident += uartGet()<<(i*8); 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.cwait = 0; F:\MCP\projects\CAN\canNode\Source\Main.cwhile(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cif(wait < UART_READ_TIMEOUT) wait++ ; F:\MCP\projects\CAN\canNode\Source\Main.celse return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.ccm.extended= uartGet(); 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.cwait = 0; F:\MCP\projects\CAN\canNode\Source\Main.cwhile(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cif(wait < UART_READ_TIMEOUT) wait++ ; F:\MCP\projects\CAN\canNode\Source\Main.celse return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.ccm.data_length= uartGet(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cfor(i=0;i<4;i++) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cwait = 0; F:\MCP\projects\CAN\canNode\Source\Main.cwhile(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cif(wait < UART_READ_TIMEOUT) wait++ ; F:\MCP\projects\CAN\canNode\Source\Main.celse return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.ccm.data[i]=uartGet(); F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cwait = 0; F:\MCP\projects\CAN\canNode\Source\Main.cwhile(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cif(wait < UART_READ_TIMEOUT) wait++ ; F:\MCP\projects\CAN\canNode\Source\Main.celse return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGet()!=UART_END_BYTE) return; F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGets(&cm.ident,4,UART_READ_TIMEOUT)) return; F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGets(&cm.extended,1,UART_READ_TIMEOUT)) return; F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGets(&cm.data_length,1,UART_READ_TIMEOUT)) return; F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGets(cm.data,8,UART_READ_TIMEOUT)) return; F:\MCP\projects\CAN\canNode\Source\Main.cif (uartGets(&i,1,UART_READ_TIMEOUT)) return; F:\MCP\projects\CAN\canNode\Source\Main.cif (i!=UART_END_BYTE) return; F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c// while(!canSendMessage(cm)); 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.cF:\MCP\projects\CAN\canNode\Source\Main.c000508 0efe MOVLW 0xfe if(c=='1' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c00050a 50db MOVF 0xdb,0x0,0x000050c 0831 SUBLW 0x3100050e e155 BNZ 0x5ba000510 0100 MOVLB 0x0000512 516f MOVF 0x6f,0x0,0x1000514 e152 BNZ 0x5ba{ F:\MCP\projects\CAN\canNode\Source\Main.c000516 0e23 MOVLW 0x23 cm.ident=0x00000123; F:\MCP\projects\CAN\canNode\Source\Main.c000518 6ef3 MOVWF 0xf3,0x000051a 0e03 MOVLW 0x300051c cff3 MOVFF 0xff3,0xfdb00051e ffdb000520 0e01 MOVLW 0x1000522 6ef3 MOVWF 0xf3,0x0000524 0e04 MOVLW 0x4000526 cff3 MOVFF 0xff3,0xfdb000528 ffdb00052a 0e05 MOVLW 0x500052c 6adb CLRF 0xdb,0x000052e 0e06 MOVLW 0x6000530 6adb CLRF 0xdb,0x0000532 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000534 6adb CLRF 0xdb,0x0000536 0e04 MOVLW 0x4 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c000538 6ef3 MOVWF 0xf3,0x000053a 0e08 MOVLW 0x800053c cff3 MOVFF 0xff3,0xfdb00053e ffdb000540 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000542 6ef3 MOVWF 0xf3,0x0000544 0e09 MOVLW 0x9000546 cff3 MOVFF 0xff3,0xfdb000548 ffdb00054a 0e6a MOVLW 0x6a cm.data[1]='j'; F:\MCP\projects\CAN\canNode\Source\Main.c00054c 6ef3 MOVWF 0xf3,0x000054e 0e0a MOVLW 0xa000550 cff3 MOVFF 0xff3,0xfdb000552 ffdb000554 0e65 MOVLW 0x65 cm.data[2]='e'; F:\MCP\projects\CAN\canNode\Source\Main.c000556 6ef3 MOVWF 0xf3,0x0000558 0e0b MOVLW 0xb00055a cff3 MOVFF 0xff3,0xfdb00055c ffdb00055e 0e48 MOVLW 0x48 cm.data[3]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c000560 6ef3 MOVWF 0xf3,0x0000562 0e0c MOVLW 0xc000564 cff3 MOVFF 0xff3,0xfdb000566 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c000568 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c00056a 0f03 ADDLW 0x300056c 6ee9 MOVWF 0xe9,0x000056e cfda MOVFF 0xfda,0xfea000570 ffea000572 cfee MOVFF 0xfee,0xfe6000574 ffe6000576 cfee MOVFF 0xfee,0xfe6000578 ffe600057a cfee MOVFF 0xfee,0xfe600057c ffe600057e cfee MOVFF 0xfee,0xfe6000580 ffe6000582 cfee MOVFF 0xfee,0xfe6000584 ffe6000586 cfee MOVFF 0xfee,0xfe6000588 ffe600058a cfee MOVFF 0xfee,0xfe600058c ffe600058e cfee MOVFF 0xfee,0xfe6000590 ffe6000592 cfee MOVFF 0xfee,0xfe6000594 ffe6000596 cfee MOVFF 0xfee,0xfe6000598 ffe600059a cfee MOVFF 0xfee,0xfe600059c ffe600059e cfee MOVFF 0xfee,0xfe60005a0 ffe60005a2 cfee MOVFF 0xfee,0xfe60005a4 ffe60005a6 cfee MOVFF 0xfee,0xfe60005a8 ffe60005aa ec1f CALL 0xa3e,0x00005ac f0050005ae 6e00 MOVWF 0x0,0x00005b0 0e0e MOVLW 0xe0005b2 5ee1 SUBWF 0xe1,0x1,0x00005b4 5000 MOVF 0x0,0x0,0x00005b6 0900 IORLW 0x00005b8 e0d7 BZ 0x568} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005ba 0efe MOVLW 0xfe if(c=='2' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0005bc 50db MOVF 0xdb,0x0,0x00005be 0832 SUBLW 0x320005c0 e16f BNZ 0x6a00005c2 0100 MOVLB 0x00005c4 516f MOVF 0x6f,0x0,0x10005c6 e16c BNZ 0x6a0{ F:\MCP\projects\CAN\canNode\Source\Main.c0005c8 0ef0 MOVLW 0xf0 cm.ident=0x0ABCDEF0; F:\MCP\projects\CAN\canNode\Source\Main.c0005ca 6ef3 MOVWF 0xf3,0x00005cc 0e03 MOVLW 0x30005ce cff3 MOVFF 0xff3,0xfdb0005d0 ffdb0005d2 0ede MOVLW 0xde0005d4 6ef3 MOVWF 0xf3,0x00005d6 0e04 MOVLW 0x40005d8 cff3 MOVFF 0xff3,0xfdb0005da ffdb0005dc 0ebc MOVLW 0xbc0005de 6ef3 MOVWF 0xf3,0x00005e0 0e05 MOVLW 0x50005e2 cff3 MOVFF 0xff3,0xfdb0005e4 ffdb0005e6 0e0a MOVLW 0xa0005e8 6ef3 MOVWF 0xf3,0x00005ea 0e06 MOVLW 0x60005ec cff3 MOVFF 0xff3,0xfdb0005ee ffdb0005f0 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0005f2 6ef3 MOVWF 0xf3,0x00005f4 0e07 MOVLW 0x70005f6 cff3 MOVFF 0xff3,0xfdb0005f8 ffdb0005fa 0e08 MOVLW 0x8 cm.data_length=8; F:\MCP\projects\CAN\canNode\Source\Main.c0005fc 6edb MOVWF 0xdb,0x00005fe 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000600 6ef3 MOVWF 0xf3,0x0000602 0e09 MOVLW 0x9000604 cff3 MOVFF 0xff3,0xfdb000606 ffdb000608 0e67 MOVLW 0x67 cm.data[1]='g'; F:\MCP\projects\CAN\canNode\Source\Main.c00060a 6ef3 MOVWF 0xf3,0x000060c 0e0a MOVLW 0xa00060e cff3 MOVFF 0xff3,0xfdb000610 ffdb000612 0e61 MOVLW 0x61 cm.data[2]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c000614 6ef3 MOVWF 0xf3,0x0000616 0e0b MOVLW 0xb000618 cff3 MOVFF 0xff3,0xfdb00061a ffdb00061c 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c00061e 6ef3 MOVWF 0xf3,0x0000620 0e0c MOVLW 0xc000622 cff3 MOVFF 0xff3,0xfdb000624 ffdb000626 0e20 MOVLW 0x20 cm.data[4]=' '; F:\MCP\projects\CAN\canNode\Source\Main.c000628 6ef3 MOVWF 0xf3,0x000062a 0e0d MOVLW 0xd00062c cff3 MOVFF 0xff3,0xfdb00062e ffdb000630 0e64 MOVLW 0x64 cm.data[5]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c000632 6ef3 MOVWF 0xf3,0x0000634 0e0e MOVLW 0xe000636 cff3 MOVFF 0xff3,0xfdb000638 ffdb00063a 0e6f MOVLW 0x6f cm.data[6]='o'; F:\MCP\projects\CAN\canNode\Source\Main.c00063c 6ef3 MOVWF 0xf3,0x000063e 0e0f MOVLW 0xf000640 cff3 MOVFF 0xff3,0xfdb000642 ffdb000644 0e47 MOVLW 0x47 cm.data[7]='G'; F:\MCP\projects\CAN\canNode\Source\Main.c000646 6ef3 MOVWF 0xf3,0x0000648 0e10 MOVLW 0x1000064a cff3 MOVFF 0xff3,0xfdb00064c ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00064e 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000650 0f03 ADDLW 0x3000652 6ee9 MOVWF 0xe9,0x0000654 cfda MOVFF 0xfda,0xfea000656 ffea000658 cfee MOVFF 0xfee,0xfe600065a ffe600065c cfee MOVFF 0xfee,0xfe600065e ffe6000660 cfee MOVFF 0xfee,0xfe6000662 ffe6000664 cfee MOVFF 0xfee,0xfe6000666 ffe6000668 cfee MOVFF 0xfee,0xfe600066a ffe600066c cfee MOVFF 0xfee,0xfe600066e ffe6000670 cfee MOVFF 0xfee,0xfe6000672 ffe6000674 cfee MOVFF 0xfee,0xfe6000676 ffe6000678 cfee MOVFF 0xfee,0xfe600067a ffe600067c cfee MOVFF 0xfee,0xfe600067e ffe6000680 cfee MOVFF 0xfee,0xfe6000682 ffe6000684 cfee MOVFF 0xfee,0xfe6000686 ffe6000688 cfee MOVFF 0xfee,0xfe600068a ffe600068c cfee MOVFF 0xfee,0xfe600068e ffe6000690 ec1f CALL 0xa3e,0x0000692 f005000694 6e00 MOVWF 0x0,0x0000696 0e0e MOVLW 0xe000698 5ee1 SUBWF 0xe1,0x1,0x000069a 5000 MOVF 0x0,0x0,0x000069c 0900 IORLW 0x000069e e0d7 BZ 0x64e} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0006a0 0efe MOVLW 0xfe if(c=='3' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0006a2 50db MOVF 0xdb,0x0,0x00006a4 0833 SUBLW 0x330006a6 e15c BNZ 0x7600006a8 0100 MOVLB 0x00006aa 516f MOVF 0x6f,0x0,0x10006ac e159 BNZ 0x760{ F:\MCP\projects\CAN\canNode\Source\Main.c0006ae 0e10 MOVLW 0x10 cm.ident=0x00000010; F:\MCP\projects\CAN\canNode\Source\Main.c0006b0 6ef3 MOVWF 0xf3,0x00006b2 0e03 MOVLW 0x30006b4 cff3 MOVFF 0xff3,0xfdb0006b6 ffdb0006b8 0e04 MOVLW 0x40006ba 6adb CLRF 0xdb,0x00006bc 0e05 MOVLW 0x50006be 6adb CLRF 0xdb,0x00006c0 0e06 MOVLW 0x60006c2 6adb CLRF 0xdb,0x00006c4 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0006c6 6adb CLRF 0xdb,0x00006c8 0e06 MOVLW 0x6 cm.data_length=6; F:\MCP\projects\CAN\canNode\Source\Main.c0006ca 6ef3 MOVWF 0xf3,0x00006cc 0e08 MOVLW 0x80006ce cff3 MOVFF 0xff3,0xfdb0006d0 ffdb0006d2 0e30 MOVLW 0x30 cm.data[0]='0'; F:\MCP\projects\CAN\canNode\Source\Main.c0006d4 6ef3 MOVWF 0xf3,0x00006d6 0e09 MOVLW 0x90006d8 cff3 MOVFF 0xff3,0xfdb0006da ffdb0006dc 0e31 MOVLW 0x31 cm.data[1]='1'; F:\MCP\projects\CAN\canNode\Source\Main.c0006de 6ef3 MOVWF 0xf3,0x00006e0 0e0a MOVLW 0xa0006e2 cff3 MOVFF 0xff3,0xfdb0006e4 ffdb0006e6 0e32 MOVLW 0x32 cm.data[2]='2'; F:\MCP\projects\CAN\canNode\Source\Main.c0006e8 6ef3 MOVWF 0xf3,0x00006ea 0e0b MOVLW 0xb0006ec cff3 MOVFF 0xff3,0xfdb0006ee ffdb0006f0 0e33 MOVLW 0x33 cm.data[3]='3'; F:\MCP\projects\CAN\canNode\Source\Main.c0006f2 6ef3 MOVWF 0xf3,0x00006f4 0e0c MOVLW 0xc0006f6 cff3 MOVFF 0xff3,0xfdb0006f8 ffdb0006fa 0e34 MOVLW 0x34 cm.data[4]='4'; F:\MCP\projects\CAN\canNode\Source\Main.c0006fc 6ef3 MOVWF 0xf3,0x00006fe 0e0d MOVLW 0xd000700 cff3 MOVFF 0xff3,0xfdb000702 ffdb000704 0e35 MOVLW 0x35 cm.data[5]='5'; F:\MCP\projects\CAN\canNode\Source\Main.c000706 6ef3 MOVWF 0xf3,0x0000708 0e0e MOVLW 0xe00070a cff3 MOVFF 0xff3,0xfdb00070c ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00070e 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000710 0f03 ADDLW 0x3000712 6ee9 MOVWF 0xe9,0x0000714 cfda MOVFF 0xfda,0xfea000716 ffea000718 cfee MOVFF 0xfee,0xfe600071a ffe600071c cfee MOVFF 0xfee,0xfe600071e ffe6000720 cfee MOVFF 0xfee,0xfe6000722 ffe6000724 cfee MOVFF 0xfee,0xfe6000726 ffe6000728 cfee MOVFF 0xfee,0xfe600072a ffe600072c cfee MOVFF 0xfee,0xfe600072e ffe6000730 cfee MOVFF 0xfee,0xfe6000732 ffe6000734 cfee MOVFF 0xfee,0xfe6000736 ffe6000738 cfee MOVFF 0xfee,0xfe600073a ffe600073c cfee MOVFF 0xfee,0xfe600073e ffe6000740 cfee MOVFF 0xfee,0xfe6000742 ffe6000744 cfee MOVFF 0xfee,0xfe6000746 ffe6000748 cfee MOVFF 0xfee,0xfe600074a ffe600074c cfee MOVFF 0xfee,0xfe600074e ffe6000750 ec1f CALL 0xa3e,0x0000752 f005000754 6e00 MOVWF 0x0,0x0000756 0e0e MOVLW 0xe000758 5ee1 SUBWF 0xe1,0x1,0x000075a 5000 MOVF 0x0,0x0,0x000075c 0900 IORLW 0x000075e e0d7 BZ 0x70e} 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.c000760 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canNode\Source\Main.c000762 5ce1 SUBWF 0xe1,0x0,0x0000764 e202 BC 0x76a000766 6ae1 CLRF 0xe1,0x0000768 52e5 MOVF 0xe5,0x1,0x000076a 6ee1 MOVWF 0xe1,0x000076c 52e5 MOVF 0xe5,0x1,0x000076e cfe7 MOVFF 0xfe7,0xfd9000770 ffd9000772 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* CAN driver F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\CAN.c* FileName: CAN.c F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#include "../Include/CANdefs.h" F:\MCP\projects\CAN\canNode\Source\CAN.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\CAN.c#include "../Include/CAN.h" F:\MCP\projects\CAN\canNode\Source\CAN.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c000774 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c000776 6e6f MOVWF 0x6f,0x0000778 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c00077a 146e ANDWF 0x6e,0x0,0x000077c 0880 SUBLW 0x8000077e e1fc BNZ 0x778F:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000780 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c000782 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000784 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canNode\Source\CAN.c000786 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c000788 1070 IORWF 0x70,0x0,0x000078a 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c00078c 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c00078e 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000790 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000792 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c000794 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000796 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000798 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canNode\Source\CAN.c00079a 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canNode\Source\CAN.c00079c 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c00079e 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007a0 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007a2 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0007a4 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007a6 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007a8 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canNode\Source\CAN.c0007aa 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c0007ac 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0007ae 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007b0 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0007b2 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007b4 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c0007b6 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0007b8 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0007ba 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canNode\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canNode\Source\CAN.c0007bc 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c0007be 6e6f MOVWF 0x6f,0x00007c0 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c0007c2 146e ANDWF 0x6e,0x0,0x00007c4 0840 SUBLW 0x400007c6 e1fc BNZ 0x7c0#else F:\MCP\projects\CAN\canNode\Source\CAN.cCANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canNode\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canNode\Source\CAN.c#endif F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0007c8 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c0007ca 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c0007cc 0b02 ANDLW 0x20007ce e106 BNZ 0x7dc0007d0 50a4 MOVF 0xa4,0x0,0x00007d2 0b02 ANDLW 0x20007d4 e103 BNZ 0x7dc0007d6 50a4 MOVF 0xa4,0x0,0x00007d8 0b01 ANDLW 0x10007da e03a BZ 0x850{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canNode\Source\CAN.c0007dc ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007de d004 BRA 0x7e80007e0 0e00 MOVLW 0x00007e2 1477 ANDWF 0x77,0x0,0x00007e4 0910 IORLW 0x100007e6 d02b BRA 0x83e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007e8 010f MOVLB 0xf0007ea af50 BTFSS 0x50,0x7,0x10007ec d004 BRA 0x7f60007ee 0e00 MOVLW 0x00007f0 1477 ANDWF 0x77,0x0,0x00007f2 0911 IORLW 0x110007f4 d024 BRA 0x83e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007f6 010e MOVLB 0xe0007f8 af20 BTFSS 0x20,0x7,0x10007fa d004 BRA 0x8040007fc 0e00 MOVLW 0x00007fe 1477 ANDWF 0x77,0x0,0x0000800 0912 IORLW 0x12000802 d01d BRA 0x83e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000804 af30 BTFSS 0x30,0x7,0x1000806 d004 BRA 0x810000808 0e00 MOVLW 0x000080a 1477 ANDWF 0x77,0x0,0x000080c 0913 IORLW 0x1300080e d017 BRA 0x83e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000810 af40 BTFSS 0x40,0x7,0x1000812 d004 BRA 0x81c000814 0e00 MOVLW 0x0000816 1477 ANDWF 0x77,0x0,0x0000818 0914 IORLW 0x1400081a d011 BRA 0x83e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00081c af50 BTFSS 0x50,0x7,0x100081e d004 BRA 0x828000820 0e00 MOVLW 0x0000822 1477 ANDWF 0x77,0x0,0x0000824 0915 IORLW 0x15000826 d00b BRA 0x83e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000828 af60 BTFSS 0x60,0x7,0x100082a d004 BRA 0x83400082c 0e00 MOVLW 0x000082e 1477 ANDWF 0x77,0x0,0x0000830 0916 IORLW 0x16000832 d005 BRA 0x83e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000834 af70 BTFSS 0x70,0x7,0x1000836 d005 BRA 0x842000838 0e00 MOVLW 0x000083a 1477 ANDWF 0x77,0x0,0x000083c 0917 IORLW 0x1700083e 6e77 MOVWF 0x77,0x0000840 d808 RCALL 0x852F:\MCP\projects\CAN\canNode\Source\CAN.c000842 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000844 d003 BRA 0x84c000846 92a4 BCF 0xa4,0x1,0x0000848 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00084a 92a4 BCF 0xa4,0x1,0x000084c b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00084e 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000850 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.c000852 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c000854 ffe6000856 cfe1 MOVFF 0xfe1,0xfd9000858 ffd900085a 0e0e MOVLW 0xe00085c 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Set extended mode or not. F:\MCP\projects\CAN\canNode\Source\CAN.c00085e 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c000860 0b08 ANDLW 0x8000862 e102 BNZ 0x868000864 0e00 MOVLW 0x0000866 d001 BRA 0x86a000868 0e01 MOVLW 0x100086a 6ee7 MOVWF 0xe7,0x000086c 0e04 MOVLW 0x400086e cfe7 MOVFF 0xfe7,0xfdb000870 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c000872 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000874 6ade CLRF 0xde,0x0000876 6ade CLRF 0xde,0x0000878 6add CLRF 0xdd,0x000087a 52dd MOVF 0xdd,0x1,0x000087c 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00087e 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000880 e163 BNZ 0x948{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\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\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000882 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\canNode\Source\CAN.c000884 6e00 MOVWF 0x0,0x0000886 6a01 CLRF 0x1,0x0000888 6a02 CLRF 0x2,0x000088a 6a03 CLRF 0x3,0x000088c 0e15 MOVLW 0x1500088e 0b1f ANDLW 0x1f000890 e007 BZ 0x8a0000892 90d8 BCF 0xd8,0x0,0x0000894 3600 RLCF 0x0,0x1,0x0000896 3601 RLCF 0x1,0x1,0x0000898 3602 RLCF 0x2,0x1,0x000089a 3603 RLCF 0x3,0x1,0x000089c 06e8 DECF 0xe8,0x1,0x000089e e1f9 BNZ 0x8920008a0 0ee0 MOVLW 0xe00008a2 1462 ANDWF 0x62,0x0,0x00008a4 6e04 MOVWF 0x4,0x00008a6 6a05 CLRF 0x5,0x00008a8 6a06 CLRF 0x6,0x00008aa 6a07 CLRF 0x7,0x00008ac 0e0d MOVLW 0xd0008ae 0b1f ANDLW 0x1f0008b0 e007 BZ 0x8c00008b2 90d8 BCF 0xd8,0x0,0x00008b4 3604 RLCF 0x4,0x1,0x00008b6 3605 RLCF 0x5,0x1,0x00008b8 3606 RLCF 0x6,0x1,0x00008ba 3607 RLCF 0x7,0x1,0x00008bc 06e8 DECF 0xe8,0x1,0x00008be e1f9 BNZ 0x8b20008c0 5004 MOVF 0x4,0x0,0x00008c2 2600 ADDWF 0x0,0x1,0x00008c4 5005 MOVF 0x5,0x0,0x00008c6 2201 ADDWFC 0x1,0x1,0x00008c8 5006 MOVF 0x6,0x0,0x00008ca 2202 ADDWFC 0x2,0x1,0x00008cc 5007 MOVF 0x7,0x0,0x00008ce 2203 ADDWFC 0x3,0x1,0x00008d0 0e03 MOVLW 0x30008d2 1462 ANDWF 0x62,0x0,0x00008d4 6e08 MOVWF 0x8,0x00008d6 6a09 CLRF 0x9,0x00008d8 6a0a CLRF 0xa,0x00008da 6a0b CLRF 0xb,0x00008dc 0e10 MOVLW 0x100008de 0b1f ANDLW 0x1f0008e0 e007 BZ 0x8f00008e2 90d8 BCF 0xd8,0x0,0x00008e4 3608 RLCF 0x8,0x1,0x00008e6 3609 RLCF 0x9,0x1,0x00008e8 360a RLCF 0xa,0x1,0x00008ea 360b RLCF 0xb,0x1,0x00008ec 06e8 DECF 0xe8,0x1,0x00008ee e1f9 BNZ 0x8e20008f0 5008 MOVF 0x8,0x0,0x00008f2 2600 ADDWF 0x0,0x1,0x00008f4 5009 MOVF 0x9,0x0,0x00008f6 2201 ADDWFC 0x1,0x1,0x00008f8 500a MOVF 0xa,0x0,0x00008fa 2202 ADDWFC 0x2,0x1,0x00008fc 500b MOVF 0xb,0x0,0x00008fe 2203 ADDWFC 0x3,0x1,0x0000900 5063 MOVF 0x63,0x0,0x0000902 6e0c MOVWF 0xc,0x0000904 6a0d CLRF 0xd,0x0000906 6a0e CLRF 0xe,0x0000908 6a0f CLRF 0xf,0x000090a 0e08 MOVLW 0x800090c 0b1f ANDLW 0x1f00090e e007 BZ 0x91e000910 90d8 BCF 0xd8,0x0,0x0000912 360c RLCF 0xc,0x1,0x0000914 360d RLCF 0xd,0x1,0x0000916 360e RLCF 0xe,0x1,0x0000918 360f RLCF 0xf,0x1,0x000091a 06e8 DECF 0xe8,0x1,0x000091c e1f9 BNZ 0x91000091e 500c MOVF 0xc,0x0,0x0000920 2600 ADDWF 0x0,0x1,0x0000922 500d MOVF 0xd,0x0,0x0000924 2201 ADDWFC 0x1,0x1,0x0000926 500e MOVF 0xe,0x0,0x0000928 2202 ADDWFC 0x2,0x1,0x000092a 500f MOVF 0xf,0x0,0x000092c 2203 ADDWFC 0x3,0x1,0x000092e 5064 MOVF 0x64,0x0,0x0000930 6e10 MOVWF 0x10,0x0000932 6a11 CLRF 0x11,0x0000934 6a12 CLRF 0x12,0x0000936 6a13 CLRF 0x13,0x0000938 50e8 MOVF 0xe8,0x0,0x000093a 2600 ADDWF 0x0,0x1,0x000093c 5011 MOVF 0x11,0x0,0x000093e 2201 ADDWFC 0x1,0x1,0x0000940 5012 MOVF 0x12,0x0,0x0000942 2202 ADDWFC 0x2,0x1,0x0000944 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000946 d023 BRA 0x98e else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000948 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c00094a 6e00 MOVWF 0x0,0x000094c 6a01 CLRF 0x1,0x000094e 6a02 CLRF 0x2,0x0000950 6a03 CLRF 0x3,0x0000952 0e03 MOVLW 0x3000954 0b1f ANDLW 0x1f000956 e007 BZ 0x966000958 90d8 BCF 0xd8,0x0,0x000095a 3600 RLCF 0x0,0x1,0x000095c 3601 RLCF 0x1,0x1,0x000095e 3602 RLCF 0x2,0x1,0x0000960 3603 RLCF 0x3,0x1,0x0000962 06e8 DECF 0xe8,0x1,0x0000964 e1f9 BNZ 0x958000966 5062 MOVF 0x62,0x0,0x0000968 6e04 MOVWF 0x4,0x000096a 6a05 CLRF 0x5,0x000096c 6a06 CLRF 0x6,0x000096e 6a07 CLRF 0x7,0x0000970 0e05 MOVLW 0x5000972 90d8 BCF 0xd8,0x0,0x0000974 3207 RRCF 0x7,0x1,0x0000976 3206 RRCF 0x6,0x1,0x0000978 3205 RRCF 0x5,0x1,0x000097a 3204 RRCF 0x4,0x1,0x000097c 06e8 DECF 0xe8,0x1,0x000097e e1f9 BNZ 0x972000980 5004 MOVF 0x4,0x0,0x0000982 2600 ADDWF 0x0,0x1,0x0000984 5005 MOVF 0x5,0x0,0x0000986 2201 ADDWFC 0x1,0x1,0x0000988 5006 MOVF 0x6,0x0,0x000098a 2202 ADDWFC 0x2,0x1,0x000098c 5007 MOVF 0x7,0x0,0x000098e 2203 ADDWFC 0x3,0x1,0x0000990 c000 MOVFF 0x0,0xfdf000992 ffdf000994 0e01 MOVLW 0x1000996 c001 MOVFF 0x1,0xfdb000998 ffdb00099a 0e02 MOVLW 0x200099c c002 MOVFF 0x2,0xfdb00099e ffdb0009a0 0e03 MOVLW 0x30009a2 c003 MOVFF 0x3,0xfdb0009a4 ffdb} F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Data length F:\MCP\projects\CAN\canNode\Source\CAN.c0009a6 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c0009a8 cf65 MOVFF 0xf65,0xfdb0009aa ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c0009ac 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c0009ae cf66 MOVFF 0xf66,0xfdb0009b0 ffdb0009b2 0e07 MOVLW 0x70009b4 cf67 MOVFF 0xf67,0xfdb0009b6 ffdb0009b8 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c0009ba cf68 MOVFF 0xf68,0xfdb0009bc ffdb0009be 0e09 MOVLW 0x90009c0 cf69 MOVFF 0xf69,0xfdb0009c2 ffdb0009c4 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c0009c6 cf6a MOVFF 0xf6a,0xfdb0009c8 ffdb0009ca 0e0b MOVLW 0xb0009cc cf6b MOVFF 0xf6b,0xfdb0009ce ffdb0009d0 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c0009d2 cf6c MOVFF 0xf6c,0xfdb0009d4 ffdb0009d6 0e0d MOVLW 0xd0009d8 cf6d MOVFF 0xf6d,0xfdb0009da ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c0009dc 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canNode\Source\CAN.c0009de cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c0009e0 ffe90009e2 cfda MOVFF 0xfda,0xfea0009e4 ffea0009e6 cfee MOVFF 0xfee,0xfe60009e8 ffe60009ea cfee MOVFF 0xfee,0xfe60009ec ffe60009ee cfee MOVFF 0xfee,0xfe60009f0 ffe60009f2 cfee MOVFF 0xfee,0xfe60009f4 ffe60009f6 cfee MOVFF 0xfee,0xfe60009f8 ffe60009fa cfee MOVFF 0xfee,0xfe60009fc ffe60009fe cfee MOVFF 0xfee,0xfe6000a00 ffe6000a02 cfee MOVFF 0xfee,0xfe6000a04 ffe6000a06 cfee MOVFF 0xfee,0xfe6000a08 ffe6000a0a cfee MOVFF 0xfee,0xfe6000a0c ffe6000a0e cfee MOVFF 0xfee,0xfe6000a10 ffe6000a12 cfee MOVFF 0xfee,0xfe6000a14 ffe6000a16 cfee MOVFF 0xfee,0xfe6000a18 ffe6000a1a cfee MOVFF 0xfee,0xfe6000a1c ffe6000a1e ecff CALL 0x1fe,0x0000a20 f000000a22 6e00 MOVWF 0x0,0x0000a24 0e0e MOVLW 0xe000a26 5ee1 SUBWF 0xe1,0x1,0x0000a28 5000 MOVF 0x0,0x0,0x0000a2a 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c000a2c 5ce1 SUBWF 0xe1,0x0,0x0000a2e e202 BC 0xa34000a30 6ae1 CLRF 0xe1,0x0000a32 52e5 MOVF 0xe5,0x1,0x0000a34 6ee1 MOVWF 0xe1,0x0000a36 52e5 MOVF 0xe5,0x1,0x0000a38 cfe7 MOVFF 0xfe7,0xfd9000a3a ffd9000a3c 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.c000a3e cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c000a40 ffe6000a42 cfe1 MOVFF 0xfe1,0xfd9000a44 ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.c000a46 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a48 b740 BTFSC 0x40,0x3,0x1000a4a d004 BRA 0xa54000a4c 0e00 MOVLW 0x0000a4e 1477 ANDWF 0x77,0x0,0x0000a50 0903 IORLW 0x3000a52 6e77 MOVWF 0x77,0x0000a54 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a56 b730 BTFSC 0x30,0x3,0x1000a58 d004 BRA 0xa62000a5a 0e00 MOVLW 0x0000a5c 1477 ANDWF 0x77,0x0,0x0000a5e 0904 IORLW 0x4000a60 6e77 MOVWF 0x77,0x0000a62 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a64 b720 BTFSC 0x20,0x3,0x1000a66 d005 BRA 0xa72000a68 0e00 MOVLW 0x0000a6a 1477 ANDWF 0x77,0x0,0x0000a6c 0905 IORLW 0x5000a6e 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c000a70 d002 BRA 0xa76 else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c000a72 0e00 MOVLW 0x0000a74 d0c0 BRA 0xbf6F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000a76 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000a78 04db DECF 0xdb,0x0,0x0000a7a e15f BNZ 0xb3a{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\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\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000a7c 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c000a7e cfdb MOVFF 0xfdb,0x0000a80 f000000a82 0ef2 MOVLW 0xf2000a84 cfdb MOVFF 0xfdb,0x1000a86 f001000a88 0ef3 MOVLW 0xf3000a8a cfdb MOVFF 0xfdb,0x2000a8c f002000a8e 0ef4 MOVLW 0xf4000a90 cfdb MOVFF 0xfdb,0x3000a92 f003000a94 0e15 MOVLW 0x15000a96 90d8 BCF 0xd8,0x0,0x0000a98 3203 RRCF 0x3,0x1,0x0000a9a 3202 RRCF 0x2,0x1,0x0000a9c 3201 RRCF 0x1,0x1,0x0000a9e 3200 RRCF 0x0,0x1,0x0000aa0 06e8 DECF 0xe8,0x1,0x0000aa2 e1f9 BNZ 0xa96000aa4 5000 MOVF 0x0,0x0,0x0000aa6 6e61 MOVWF 0x61,0x0000aa8 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000aaa cfdb MOVFF 0xfdb,0x5000aac f005000aae 0ef2 MOVLW 0xf2000ab0 cfdb MOVFF 0xfdb,0x6000ab2 f006000ab4 0ef3 MOVLW 0xf3000ab6 cfdb MOVFF 0xfdb,0x7000ab8 f007000aba 0ef4 MOVLW 0xf4000abc cfdb MOVFF 0xfdb,0x8000abe f008000ac0 0e0d MOVLW 0xd000ac2 90d8 BCF 0xd8,0x0,0x0000ac4 3208 RRCF 0x8,0x1,0x0000ac6 3207 RRCF 0x7,0x1,0x0000ac8 3206 RRCF 0x6,0x1,0x0000aca 3205 RRCF 0x5,0x1,0x0000acc 06e8 DECF 0xe8,0x1,0x0000ace e1f9 BNZ 0xac2000ad0 0ee0 MOVLW 0xe0000ad2 1405 ANDWF 0x5,0x0,0x0000ad4 6e04 MOVWF 0x4,0x0000ad6 0ef1 MOVLW 0xf1000ad8 cfdb MOVFF 0xfdb,0x0000ada f000000adc 0ef2 MOVLW 0xf2000ade cfdb MOVFF 0xfdb,0x1000ae0 f001000ae2 0ef3 MOVLW 0xf3000ae4 cfdb MOVFF 0xfdb,0x2000ae6 f002000ae8 0ef4 MOVLW 0xf4000aea cfdb MOVFF 0xfdb,0x3000aec f003000aee 0e10 MOVLW 0x10000af0 90d8 BCF 0xd8,0x0,0x0000af2 3203 RRCF 0x3,0x1,0x0000af4 3202 RRCF 0x2,0x1,0x0000af6 3201 RRCF 0x1,0x1,0x0000af8 3200 RRCF 0x0,0x1,0x0000afa 06e8 DECF 0xe8,0x1,0x0000afc e1f9 BNZ 0xaf0000afe 0e03 MOVLW 0x3000b00 1400 ANDWF 0x0,0x0,0x0000b02 2404 ADDWF 0x4,0x0,0x0000b04 6e62 MOVWF 0x62,0x0000b06 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c000b08 cfdb MOVFF 0xfdb,0x0000b0a f000000b0c 0ef2 MOVLW 0xf2000b0e cfdb MOVFF 0xfdb,0x1000b10 f001000b12 0ef3 MOVLW 0xf3000b14 cfdb MOVFF 0xfdb,0x2000b16 f002000b18 0ef4 MOVLW 0xf4000b1a cfdb MOVFF 0xfdb,0x3000b1c f003000b1e 0e08 MOVLW 0x8000b20 90d8 BCF 0xd8,0x0,0x0000b22 3203 RRCF 0x3,0x1,0x0000b24 3202 RRCF 0x2,0x1,0x0000b26 3201 RRCF 0x1,0x1,0x0000b28 3200 RRCF 0x0,0x1,0x0000b2a 06e8 DECF 0xe8,0x1,0x0000b2c e1f9 BNZ 0xb20000b2e 5000 MOVF 0x0,0x0,0x0000b30 6e63 MOVWF 0x63,0x0000b32 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c000b34 50db MOVF 0xdb,0x0,0x0000b36 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000b38 d02f BRA 0xb98 else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000b3a 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c000b3c cfdb MOVFF 0xfdb,0x0000b3e f000000b40 0ef2 MOVLW 0xf2000b42 cfdb MOVFF 0xfdb,0x1000b44 f001000b46 0ef3 MOVLW 0xf3000b48 cfdb MOVFF 0xfdb,0x2000b4a f002000b4c 0ef4 MOVLW 0xf4000b4e cfdb MOVFF 0xfdb,0x3000b50 f003000b52 0e03 MOVLW 0x3000b54 90d8 BCF 0xd8,0x0,0x0000b56 3203 RRCF 0x3,0x1,0x0000b58 3202 RRCF 0x2,0x1,0x0000b5a 3201 RRCF 0x1,0x1,0x0000b5c 3200 RRCF 0x0,0x1,0x0000b5e 06e8 DECF 0xe8,0x1,0x0000b60 e1f9 BNZ 0xb54000b62 5000 MOVF 0x0,0x0,0x0000b64 6e61 MOVWF 0x61,0x0000b66 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000b68 cfdb MOVFF 0xfdb,0x0000b6a f000000b6c 0ef2 MOVLW 0xf2000b6e cfdb MOVFF 0xfdb,0x1000b70 f001000b72 0ef3 MOVLW 0xf3000b74 cfdb MOVFF 0xfdb,0x2000b76 f002000b78 0ef4 MOVLW 0xf4000b7a cfdb MOVFF 0xfdb,0x3000b7c f003000b7e 0e05 MOVLW 0x5000b80 0b1f ANDLW 0x1f000b82 e007 BZ 0xb92000b84 90d8 BCF 0xd8,0x0,0x0000b86 3600 RLCF 0x0,0x1,0x0000b88 3601 RLCF 0x1,0x1,0x0000b8a 3602 RLCF 0x2,0x1,0x0000b8c 3603 RLCF 0x3,0x1,0x0000b8e 06e8 DECF 0xe8,0x1,0x0000b90 e1f9 BNZ 0xb84000b92 0ee0 MOVLW 0xe0000b94 1400 ANDWF 0x0,0x0,0x0000b96 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Data length F:\MCP\projects\CAN\canNode\Source\CAN.c000b98 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c000b9a 50db MOVF 0xdb,0x0,0x0000b9c 0808 SUBLW 0x8000b9e e203 BC 0xba6000ba0 0e08 MOVLW 0x8000ba2 6e65 MOVWF 0x65,0x0000ba4 d003 BRA 0xbac000ba6 0ef6 MOVLW 0xf6000ba8 50db MOVF 0xdb,0x0,0x0000baa 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000bac 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000bae 50db MOVF 0xdb,0x0,0x0000bb0 6e66 MOVWF 0x66,0x0000bb2 0ef8 MOVLW 0xf8000bb4 50db MOVF 0xdb,0x0,0x0000bb6 6e67 MOVWF 0x67,0x0000bb8 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000bba 50db MOVF 0xdb,0x0,0x0000bbc 6e68 MOVWF 0x68,0x0000bbe 0efa MOVLW 0xfa000bc0 50db MOVF 0xdb,0x0,0x0000bc2 6e69 MOVWF 0x69,0x0000bc4 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000bc6 50db MOVF 0xdb,0x0,0x0000bc8 6e6a MOVWF 0x6a,0x0000bca 0efc MOVLW 0xfc000bcc 50db MOVF 0xdb,0x0,0x0000bce 6e6b MOVWF 0x6b,0x0000bd0 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000bd2 50db MOVF 0xdb,0x0,0x0000bd4 6e6c MOVWF 0x6c,0x0000bd6 0efe MOVLW 0xfe000bd8 50db MOVF 0xdb,0x0,0x0000bda 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c000bdc 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c000bde 04db DECF 0xdb,0x0,0x0000be0 e102 BNZ 0xbe6000be2 0e01 MOVLW 0x1000be4 d001 BRA 0xbe8000be6 0e00 MOVLW 0x0000be8 b0e8 BTFSC 0xe8,0x0,0x0000bea 8662 BSF 0x62,0x3,0x0000bec a0e8 BTFSS 0xe8,0x0,0x0000bee 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canNode\Source\CAN.c_asm F:\MCP\projects\CAN\canNode\Source\CAN.c000bf0 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c_endasm F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000bf2 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000bf4 d000 BRA 0xbf6F:\MCP\projects\CAN\canNode\Source\CAN.c000bf6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000bf8 cfe7 MOVFF 0xfe7,0xfd9000bfa ffd9000bfc 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canNode\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* UART F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\uart.c* FileName: uart.c F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\uart.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\uart.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\uart.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\uart.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cstatic char uartBusy(void); F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartInit F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cvoid uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c// Configure USART F:\MCP\projects\CAN\canNode\Source\uart.c000bfe 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000c00 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000c02 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000c04 6eac MOVWF 0xac,0x0000c06 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000c08 6eab MOVWF 0xab,0x0000c0a 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000c0c 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000c0e 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000c10 8a9d BSF 0x9d,0x5,0x0 PIE1bits.RCIE=1; F:\MCP\projects\CAN\canNode\Source\uart.c// High interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000c12 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000c14 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartPutc F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: BYTE c to send on uart F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.c000c16 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000c18 ffe6000c1a cfe1 MOVFF 0xfe1,0xfd9000c1c ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000c1e 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000c20 50db MOVF 0xdb,0x0,0x0000c22 6ead MOVWF 0xad,0x0000c24 d848 RCALL 0xcb6 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c26 0900 IORLW 0x0000c28 e1fd BNZ 0xc24000c2a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000c2c cfe7 MOVFF 0xfe7,0xfd9000c2e ffd9000c30 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartPuts F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: Byte array to send on uart F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.c000c32 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000c34 ffe6000c36 cfe1 MOVFF 0xfe1,0xfd9000c38 ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.cdo F:\MCP\projects\CAN\canNode\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\canNode\Source\uart.c000c3a d83d RCALL 0xcb6 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c3c 0900 IORLW 0x0000c3e e1fd BNZ 0xc3a000c40 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000c42 cfdb MOVFF 0xfdb,0xfe9000c44 ffe9000c46 0efe MOVLW 0xfe000c48 cfdb MOVFF 0xfdb,0xfea000c4a ffea000c4c 50ef MOVF 0xef,0x0,0x0000c4e 6ee6 MOVWF 0xe6,0x0000c50 dfe2 RCALL 0xc16000c52 52e5 MOVF 0xe5,0x1,0x0000c54 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000c56 cfdb MOVFF 0xfdb,0xfe9000c58 ffe9000c5a 2adb INCF 0xdb,0x1,0x0000c5c 0efe MOVLW 0xfe000c5e cfdb MOVFF 0xfdb,0xfea000c60 ffea000c62 e301 BNC 0xc66000c64 2adb INCF 0xdb,0x1,0x0000c66 50ef MOVF 0xef,0x0,0x0000c68 e1e8 BNZ 0xc3a000c6a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000c6c cfe7 MOVFF 0xfe7,0xfd9000c6e ffd9000c70 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartPutrs F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: Byte array to send on uart (static) F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.c000c72 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000c74 ffe6000c76 cfe1 MOVFF 0xfe1,0xfd9000c78 ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.cdo F:\MCP\projects\CAN\canNode\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\canNode\Source\uart.c000c7a d81d RCALL 0xcb6 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c7c 0900 IORLW 0x0000c7e e1fd BNZ 0xc7a000c80 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000c82 cfdb MOVFF 0xfdb,0xff6000c84 fff6000c86 0efe MOVLW 0xfe000c88 cfdb MOVFF 0xfdb,0xff7000c8a fff7000c8c 0008 TBLRD000c8e 50f5 MOVF 0xf5,0x0,0x0000c90 6ee6 MOVWF 0xe6,0x0000c92 dfc1 RCALL 0xc16000c94 52e5 MOVF 0xe5,0x1,0x0000c96 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000c98 cfdb MOVFF 0xfdb,0xff6000c9a fff6000c9c 2adb INCF 0xdb,0x1,0x0000c9e 0efe MOVLW 0xfe000ca0 cfdb MOVFF 0xfdb,0xff7000ca2 fff7000ca4 e301 BNC 0xca8000ca6 2adb INCF 0xdb,0x1,0x0000ca8 0008 TBLRD000caa 50f5 MOVF 0xf5,0x0,0x0000cac e1e6 BNZ 0xc7a000cae 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000cb0 cfe7 MOVFF 0xfe7,0xfd9000cb2 ffd9000cb4 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartBusy F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none. F:\MCP\projects\CAN\canNode\Source\uart.c* Output: If usart busy or not. F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cchar uartBusy(void) F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c000cb6 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000cb8 0b02 ANDLW 0x2000cba 0a02 XORLW 0x2000cbc e001 BZ 0xcc0000cbe 0e01 MOVLW 0x1000cc0 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartGet F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none F:\MCP\projects\CAN\canNode\Source\uart.c* Output: Byte read F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cBYTE uartGet(void) F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c// Return the received data F:\MCP\projects\CAN\canNode\Source\uart.c000cc2 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000cc4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartGets F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: Byte array to read, number of bytes to read and timeout. F:\MCP\projects\CAN\canNode\Source\uart.c* Output: Number of read bytes. F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.c000cc6 cfd9 MOVFF 0xfd9,0xfe6 BYTE uartGets(BYTE *buffer, BYTE length,unsigned int uart_data_wait) F:\MCP\projects\CAN\canNode\Source\uart.c000cc8 ffe6000cca cfe1 MOVFF 0xfe1,0xfd9000ccc ffd9000cce 0e03 MOVLW 0x3000cd0 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\uart.c000cd2 6ade CLRF 0xde,0x0 unsigned int wait = 0; F:\MCP\projects\CAN\canNode\Source\uart.c000cd4 6add CLRF 0xdd,0x0BYTE data; F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c000cd6 0efc MOVLW 0xfc while(length) F:\MCP\projects\CAN\canNode\Source\uart.c000cd8 50db MOVF 0xdb,0x0,0x0000cda e02f BZ 0xd3a000d38 d7ce BRA 0xcd6{ F:\MCP\projects\CAN\canNode\Source\uart.c000cdc d849 RCALL 0xd70 while(!uartDataRedy()) F:\MCP\projects\CAN\canNode\Source\uart.c000cde 0900 IORLW 0x0000ce0 e114 BNZ 0xd0a{ F:\MCP\projects\CAN\canNode\Source\uart.c000ce2 cfde MOVFF 0xfde,0x0 if(wait < uart_data_wait) F:\MCP\projects\CAN\canNode\Source\uart.c000ce4 f000000ce6 cfdd MOVFF 0xfdd,0x1000ce8 f001000cea 0efa MOVLW 0xfa000cec cfdb MOVFF 0xfdb,0x2000cee f002000cf0 0efb MOVLW 0xfb000cf2 cfdb MOVFF 0xfdb,0x3000cf4 f003000cf6 5002 MOVF 0x2,0x0,0x0000cf8 5c00 SUBWF 0x0,0x0,0x0000cfa 5003 MOVF 0x3,0x0,0x0000cfc 5801 SUBWFB 0x1,0x0,0x0000cfe e21d BC 0xd3a000d00 2adf INCF 0xdf,0x1,0x0 wait++ ; /*wait for more data */ F:\MCP\projects\CAN\canNode\Source\uart.c000d02 0e01 MOVLW 0x1000d04 e3eb BNC 0xcdc000d06 2adb INCF 0xdb,0x1,0x0000d08 d7e9 BRA 0xcdc else F:\MCP\projects\CAN\canNode\Source\uart.creturn(length); /*Time out- Return words/bytes to be read */ F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000d0a 6ade CLRF 0xde,0x0 wait=0; F:\MCP\projects\CAN\canNode\Source\uart.c000d0c 6add CLRF 0xdd,0x0000d0e dfd9 RCALL 0xcc2 data = uartGet(); F:\MCP\projects\CAN\canNode\Source\uart.c000d10 6ee7 MOVWF 0xe7,0x0000d12 0e02 MOVLW 0x2000d14 cfe7 MOVFF 0xfe7,0xfdb000d16 ffdb000d18 0efd MOVLW 0xfd *buffer = data; F:\MCP\projects\CAN\canNode\Source\uart.c000d1a cfdb MOVFF 0xfdb,0xfe9000d1c ffe9000d1e 0efe MOVLW 0xfe000d20 cfdb MOVFF 0xfdb,0xfea000d22 ffea000d24 0e02 MOVLW 0x2000d26 cfdb MOVFF 0xfdb,0xfef000d28 ffef000d2a 0efd MOVLW 0xfd buffer++; // Increment the string pointer F:\MCP\projects\CAN\canNode\Source\uart.c000d2c 2adb INCF 0xdb,0x1,0x0000d2e 0efe MOVLW 0xfe000d30 e301 BNC 0xd34000d32 2adb INCF 0xdb,0x1,0x0000d34 0efc MOVLW 0xfc length--; F:\MCP\projects\CAN\canNode\Source\uart.c000d36 06db DECF 0xdb,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c000d3a 0efc MOVLW 0xfc return(length); /* number of data yet to be received i.e.,0 */ F:\MCP\projects\CAN\canNode\Source\uart.c000d3c 50db MOVF 0xdb,0x0,0x0F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c000d3e 6e00 MOVWF 0x0,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000d40 0e03 MOVLW 0x3000d42 5ce1 SUBWF 0xe1,0x0,0x0000d44 e202 BC 0xd4a000d46 6ae1 CLRF 0xe1,0x0000d48 52e5 MOVF 0xe5,0x1,0x0000d4a 6ee1 MOVWF 0xe1,0x0000d4c 5000 MOVF 0x0,0x0,0x0000d4e 52e5 MOVF 0xe5,0x1,0x0000d50 cfe7 MOVFF 0xfe7,0xfd9000d52 ffd9000d54 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartISR F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: call to uartParse F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cvoid uartISR(void) F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c000d56 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000d58 0b20 ANDLW 0x20000d5a e009 BZ 0xd6e000d5c 509d MOVF 0x9d,0x0,0x0000d5e 0b20 ANDLW 0x20000d60 e006 BZ 0xd6e{ F:\MCP\projects\CAN\canNode\Source\uart.c000d62 dfaf RCALL 0xcc2 uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000d64 6ee6 MOVWF 0xe6,0x0000d66 eca9 CALL 0x352,0x0000d68 f001000d6a 52e5 MOVF 0xe5,0x1,0x0000d6c 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000d6e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartDataRedy F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none. F:\MCP\projects\CAN\canNode\Source\uart.c* Output: If usart data are redy to be read. F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cchar uartDataRedy(void) F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c000d70 a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canNode\Source\uart.c000d72 d002 BRA 0xd78{ F:\MCP\projects\CAN\canNode\Source\uart.c000d74 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canNode\Source\uart.c000d76 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000d78 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canNode\Source\uart.c000d7a 0b20 ANDLW 0x20000d7c e001 BZ 0xd80000d7e 0e01 MOVLW 0x1000d80 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#endif F:\MCP\projects\CAN\canNode\Source\uart.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Ticker service F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#include "..\Include\Tick.h" F:\MCP\projects\CAN\canNode\Source\Tick.c#include "..\Include\Compiler.h" F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canNode\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canNode\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canNode\Source\Tick.c#else F:\MCP\projects\CAN\canNode\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canNode\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000e20 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000e22 6ed6 MOVWF 0xd6,0x0000e24 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000e26 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canNode\Source\Tick.c000e28 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000e2a 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000e2c 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000e2e 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000e30 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000e32 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c000e34 c075 MOVFF 0x75,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000e36 f018000e38 c076 MOVFF 0x76,0x19000e3a f019000e3c c077 MOVFF 0x77,0x1a000e3e f01a000e40 c078 MOVFF 0x78,0x1b000e42 f01b000e44 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c000e46 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000e48 d00b BRA 0xe60{ F:\MCP\projects\CAN\canNode\Source\Tick.c000e4a 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000e4c 6ed7 MOVWF 0xd7,0x0000e4e 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000e50 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000e52 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000e54 2b75 INCF 0x75,0x1,0x1000e56 0e00 MOVLW 0x0000e58 2376 ADDWFC 0x76,0x1,0x1000e5a 2377 ADDWFC 0x77,0x1,0x1000e5c 2378 ADDWFC 0x78,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000e5e 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000e60 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c