Rev 26 | 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 14:40:15 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 = TRUE; 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 eceb CALL 0x5d6,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000054 f002#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 ec30 CALL 0xa60,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 ecf0 CALL 0xbe0,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00005c f005F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c00005e ecfa CALL 0xbf4,0x0 if ((tickGet()-t)>=5*TICK_SECOND && heartBeatEnabled==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c000060 f005000062 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 ecfa CALL 0xbf4,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000094 f005000096 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 ec50 CALL 0x8a0,0x0000110 f004000112 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 ec16 CALL 0x62c,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 ec94 CALL 0xb28,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c00017a f005#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00017c ec03 CALL 0xc06,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c00017e f006000180 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 ec3c CALL 0xa78,0x0000214 f005000216 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 ec3c CALL 0xa78,0x0000220 f005000222 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 ec3c CALL 0xa78,0x0000252 f005000254 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 ec3c CALL 0xa78,0x0000284 f005000286 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 ec3c CALL 0xa78,0x00002b6 f0050002b8 52e5 MOVF 0xe5,0x1,0x00002ba 0ef5 MOVLW 0xf5 uartPutc(cm.extended); F:\MCP\projects\CAN\canNode\Source\Main.c0002bc cfdb MOVFF 0xfdb,0xfe60002be ffe60002c0 ec3c CALL 0xa78,0x00002c2 f0050002c4 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 ec3c CALL 0xa78,0x00002ce f0050002d0 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 ec3c CALL 0xa78,0x0000326 f005000328 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 ec3c CALL 0xa78,0x000033a f00500033c 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 0e2a MOVLW 0x2a00035c 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00035e 0efe MOVLW 0xfe if (c=='1') F:\MCP\projects\CAN\canNode\Source\Main.c000360 50db MOVF 0xdb,0x0,0x0000362 0831 SUBLW 0x31000364 e14a BNZ 0x3fa{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c000366 0e23 MOVLW 0x23 cm.ident=0x00000123; F:\MCP\projects\CAN\canNode\Source\Main.c000368 6ede MOVWF 0xde,0x000036a 0e01 MOVLW 0x100036c 6ede MOVWF 0xde,0x000036e 6ade CLRF 0xde,0x0000370 6add CLRF 0xdd,0x0000372 52dd MOVF 0xdd,0x1,0x0000374 52dd MOVF 0xdd,0x1,0x0000376 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000378 6adb CLRF 0xdb,0x000037a 6ef3 MOVWF 0xf3,0x0 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c00037c 0e05 MOVLW 0x500037e cff3 MOVFF 0xff3,0xfdb000380 ffdb000382 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000384 6ef3 MOVWF 0xf3,0x0000386 0e06 MOVLW 0x6000388 cff3 MOVFF 0xff3,0xfdb00038a ffdb00038c 0e6a MOVLW 0x6a cm.data[1]='j'; F:\MCP\projects\CAN\canNode\Source\Main.c00038e 6ef3 MOVWF 0xf3,0x0000390 0e07 MOVLW 0x7000392 cff3 MOVFF 0xff3,0xfdb000394 ffdb000396 0e65 MOVLW 0x65 cm.data[2]='e'; F:\MCP\projects\CAN\canNode\Source\Main.c000398 6ef3 MOVWF 0xf3,0x000039a 0e08 MOVLW 0x800039c cff3 MOVFF 0xff3,0xfdb00039e ffdb0003a0 0e48 MOVLW 0x48 cm.data[3]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0003a2 6ef3 MOVWF 0xf3,0x00003a4 0e09 MOVLW 0x90003a6 cff3 MOVFF 0xff3,0xfdb0003a8 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0003aa cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0003ac ffe90003ae cfda MOVFF 0xfda,0xfea0003b0 ffea0003b2 cfee MOVFF 0xfee,0xfe60003b4 ffe60003b6 cfee MOVFF 0xfee,0xfe60003b8 ffe60003ba cfee MOVFF 0xfee,0xfe60003bc ffe60003be cfee MOVFF 0xfee,0xfe60003c0 ffe60003c2 cfee MOVFF 0xfee,0xfe60003c4 ffe60003c6 cfee MOVFF 0xfee,0xfe60003c8 ffe60003ca cfee MOVFF 0xfee,0xfe60003cc ffe60003ce cfee MOVFF 0xfee,0xfe60003d0 ffe60003d2 cfee MOVFF 0xfee,0xfe60003d4 ffe60003d6 cfee MOVFF 0xfee,0xfe60003d8 ffe60003da cfee MOVFF 0xfee,0xfe60003dc ffe60003de cfee MOVFF 0xfee,0xfe60003e0 ffe60003e2 cfee MOVFF 0xfee,0xfe60003e4 ffe60003e6 cfee MOVFF 0xfee,0xfe60003e8 ffe60003ea ec50 CALL 0x8a0,0x00003ec f0040003ee 6e00 MOVWF 0x0,0x00003f0 0e0e MOVLW 0xe0003f2 5ee1 SUBWF 0xe1,0x1,0x00003f4 5000 MOVF 0x0,0x0,0x00003f6 0900 IORLW 0x00003f8 e0d8 BZ 0x3aa} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0003fa 0efe MOVLW 0xfe if (c=='2') F:\MCP\projects\CAN\canNode\Source\Main.c0003fc 50db MOVF 0xdb,0x0,0x00003fe 0832 SUBLW 0x32000400 e16f BNZ 0x4e0{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c000402 0ef0 MOVLW 0xf0 cm.ident=0x0ABCDEF0; F:\MCP\projects\CAN\canNode\Source\Main.c000404 6ef3 MOVWF 0xf3,0x0000406 0e0e MOVLW 0xe000408 cff3 MOVFF 0xff3,0xfdb00040a ffdb00040c 0ede MOVLW 0xde00040e 6ef3 MOVWF 0xf3,0x0000410 0e0f MOVLW 0xf000412 cff3 MOVFF 0xff3,0xfdb000414 ffdb000416 0ebc MOVLW 0xbc000418 6ef3 MOVWF 0xf3,0x000041a 0e10 MOVLW 0x1000041c cff3 MOVFF 0xff3,0xfdb00041e ffdb000420 0e0a MOVLW 0xa000422 6ef3 MOVWF 0xf3,0x0000424 0e11 MOVLW 0x11000426 cff3 MOVFF 0xff3,0xfdb000428 ffdb00042a 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c00042c 6ef3 MOVWF 0xf3,0x000042e 0e12 MOVLW 0x12000430 cff3 MOVFF 0xff3,0xfdb000432 ffdb000434 0e08 MOVLW 0x8 cm.data_length=8; F:\MCP\projects\CAN\canNode\Source\Main.c000436 6ef3 MOVWF 0xf3,0x0000438 0e13 MOVLW 0x1300043a cff3 MOVFF 0xff3,0xfdb00043c ffdb00043e 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000440 6ef3 MOVWF 0xf3,0x0000442 0e14 MOVLW 0x14000444 cff3 MOVFF 0xff3,0xfdb000446 ffdb000448 0e67 MOVLW 0x67 cm.data[1]='g'; F:\MCP\projects\CAN\canNode\Source\Main.c00044a 6ef3 MOVWF 0xf3,0x000044c 0e15 MOVLW 0x1500044e cff3 MOVFF 0xff3,0xfdb000450 ffdb000452 0e61 MOVLW 0x61 cm.data[2]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c000454 6ef3 MOVWF 0xf3,0x0000456 0e16 MOVLW 0x16000458 cff3 MOVFF 0xff3,0xfdb00045a ffdb00045c 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c00045e 6ef3 MOVWF 0xf3,0x0000460 0e17 MOVLW 0x17000462 cff3 MOVFF 0xff3,0xfdb000464 ffdb000466 0e20 MOVLW 0x20 cm.data[4]=' '; F:\MCP\projects\CAN\canNode\Source\Main.c000468 6ef3 MOVWF 0xf3,0x000046a 0e18 MOVLW 0x1800046c cff3 MOVFF 0xff3,0xfdb00046e ffdb000470 0e64 MOVLW 0x64 cm.data[5]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c000472 6ef3 MOVWF 0xf3,0x0000474 0e19 MOVLW 0x19000476 cff3 MOVFF 0xff3,0xfdb000478 ffdb00047a 0e6f MOVLW 0x6f cm.data[6]='o'; F:\MCP\projects\CAN\canNode\Source\Main.c00047c 6ef3 MOVWF 0xf3,0x000047e 0e1a MOVLW 0x1a000480 cff3 MOVFF 0xff3,0xfdb000482 ffdb000484 0e47 MOVLW 0x47 cm.data[7]='G'; F:\MCP\projects\CAN\canNode\Source\Main.c000486 6ef3 MOVWF 0xf3,0x0000488 0e1b MOVLW 0x1b00048a cff3 MOVFF 0xff3,0xfdb00048c ffdbF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00048e 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000490 0f0e ADDLW 0xe000492 6ee9 MOVWF 0xe9,0x0000494 cfda MOVFF 0xfda,0xfea000496 ffea000498 cfee MOVFF 0xfee,0xfe600049a ffe600049c cfee MOVFF 0xfee,0xfe600049e ffe60004a0 cfee MOVFF 0xfee,0xfe60004a2 ffe60004a4 cfee MOVFF 0xfee,0xfe60004a6 ffe60004a8 cfee MOVFF 0xfee,0xfe60004aa ffe60004ac cfee MOVFF 0xfee,0xfe60004ae ffe60004b0 cfee MOVFF 0xfee,0xfe60004b2 ffe60004b4 cfee MOVFF 0xfee,0xfe60004b6 ffe60004b8 cfee MOVFF 0xfee,0xfe60004ba ffe60004bc cfee MOVFF 0xfee,0xfe60004be ffe60004c0 cfee MOVFF 0xfee,0xfe60004c2 ffe60004c4 cfee MOVFF 0xfee,0xfe60004c6 ffe60004c8 cfee MOVFF 0xfee,0xfe60004ca ffe60004cc cfee MOVFF 0xfee,0xfe60004ce ffe60004d0 ec50 CALL 0x8a0,0x00004d2 f0040004d4 6e00 MOVWF 0x0,0x00004d6 0e0e MOVLW 0xe0004d8 5ee1 SUBWF 0xe1,0x1,0x00004da 5000 MOVF 0x0,0x0,0x00004dc 0900 IORLW 0x00004de e0d7 BZ 0x48e} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004e0 0efe MOVLW 0xfe if (c=='3') F:\MCP\projects\CAN\canNode\Source\Main.c0004e2 50db MOVF 0xdb,0x0,0x00004e4 0833 SUBLW 0x330004e6 e159 BNZ 0x59a{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c0004e8 0e10 MOVLW 0x10 cm.ident=0x00000010; F:\MCP\projects\CAN\canNode\Source\Main.c0004ea 6ef3 MOVWF 0xf3,0x00004ec 0e1c MOVLW 0x1c0004ee cff3 MOVFF 0xff3,0xfdb0004f0 ffdb0004f2 0e1d MOVLW 0x1d0004f4 6adb CLRF 0xdb,0x00004f6 0e1e MOVLW 0x1e0004f8 6adb CLRF 0xdb,0x00004fa 0e1f MOVLW 0x1f0004fc 6adb CLRF 0xdb,0x00004fe 0e20 MOVLW 0x20 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000500 6adb CLRF 0xdb,0x0000502 0e06 MOVLW 0x6 cm.data_length=6; F:\MCP\projects\CAN\canNode\Source\Main.c000504 6ef3 MOVWF 0xf3,0x0000506 0e21 MOVLW 0x21000508 cff3 MOVFF 0xff3,0xfdb00050a ffdb00050c 0e30 MOVLW 0x30 cm.data[0]='0'; F:\MCP\projects\CAN\canNode\Source\Main.c00050e 6ef3 MOVWF 0xf3,0x0000510 0e22 MOVLW 0x22000512 cff3 MOVFF 0xff3,0xfdb000514 ffdb000516 0e31 MOVLW 0x31 cm.data[1]='1'; F:\MCP\projects\CAN\canNode\Source\Main.c000518 6ef3 MOVWF 0xf3,0x000051a 0e23 MOVLW 0x2300051c cff3 MOVFF 0xff3,0xfdb00051e ffdb000520 0e32 MOVLW 0x32 cm.data[2]='2'; F:\MCP\projects\CAN\canNode\Source\Main.c000522 6ef3 MOVWF 0xf3,0x0000524 0e24 MOVLW 0x24000526 cff3 MOVFF 0xff3,0xfdb000528 ffdb00052a 0e33 MOVLW 0x33 cm.data[3]='3'; F:\MCP\projects\CAN\canNode\Source\Main.c00052c 6ef3 MOVWF 0xf3,0x000052e 0e25 MOVLW 0x25000530 cff3 MOVFF 0xff3,0xfdb000532 ffdb000534 0e34 MOVLW 0x34 cm.data[4]='4'; F:\MCP\projects\CAN\canNode\Source\Main.c000536 6ef3 MOVWF 0xf3,0x0000538 0e26 MOVLW 0x2600053a cff3 MOVFF 0xff3,0xfdb00053c ffdb00053e 0e35 MOVLW 0x35 cm.data[5]='5'; F:\MCP\projects\CAN\canNode\Source\Main.c000540 6ef3 MOVWF 0xf3,0x0000542 0e27 MOVLW 0x27000544 cff3 MOVFF 0xff3,0xfdb000546 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c000548 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c00054a 0f1c ADDLW 0x1c00054c 6ee9 MOVWF 0xe9,0x000054e cfda MOVFF 0xfda,0xfea000550 ffea000552 cfee MOVFF 0xfee,0xfe6000554 ffe6000556 cfee MOVFF 0xfee,0xfe6000558 ffe600055a cfee MOVFF 0xfee,0xfe600055c ffe600055e cfee MOVFF 0xfee,0xfe6000560 ffe6000562 cfee MOVFF 0xfee,0xfe6000564 ffe6000566 cfee MOVFF 0xfee,0xfe6000568 ffe600056a cfee MOVFF 0xfee,0xfe600056c ffe600056e cfee MOVFF 0xfee,0xfe6000570 ffe6000572 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 ec50 CALL 0x8a0,0x000058c f00400058e 6e00 MOVWF 0x0,0x0000590 0e0e MOVLW 0xe000592 5ee1 SUBWF 0xe1,0x1,0x0000594 5000 MOVF 0x0,0x0,0x0000596 0900 IORLW 0x0000598 e0d7 BZ 0x548} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00059a 0efe MOVLW 0xfe if (c=='d') F:\MCP\projects\CAN\canNode\Source\Main.c00059c 50db MOVF 0xdb,0x0,0x000059e 0864 SUBLW 0x64{ F:\MCP\projects\CAN\canNode\Source\Main.c//uartPutc('D'); F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005a0 0efe MOVLW 0xfe if (c=='D') F:\MCP\projects\CAN\canNode\Source\Main.c0005a2 50db MOVF 0xdb,0x0,0x00005a4 0844 SUBLW 0x44{ F:\MCP\projects\CAN\canNode\Source\Main.c//uartPutrs("Debug? Debug!"); F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005a6 0efe MOVLW 0xfe if (c=='T') F:\MCP\projects\CAN\canNode\Source\Main.c0005a8 50db MOVF 0xdb,0x0,0x00005aa 0854 SUBLW 0x540005ac e107 BNZ 0x5bc{ F:\MCP\projects\CAN\canNode\Source\Main.c0005ae 0100 MOVLB 0x0 heartBeatEnabled=(heartBeatEnabled==TRUE?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\Main.c0005b0 056a DECF 0x6a,0x0,0x10005b2 e102 BNZ 0x5b80005b4 0e00 MOVLW 0x00005b6 d001 BRA 0x5ba0005b8 0e01 MOVLW 0x10005ba 6f6a MOVWF 0x6a,0x1} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005bc 0efe MOVLW 0xfe if (c=='4') F:\MCP\projects\CAN\canNode\Source\Main.c0005be 50db MOVF 0xdb,0x0,0x00005c0 0834 SUBLW 0x34{ F:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B0CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B1CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B2CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B3CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B4CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(B5CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(CANSTAT); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(COMSTAT); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(ECANCON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(TXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(TXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(TXB2CON); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(PIR3); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(PIE3); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(BRGCON1); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(BRGCON2); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(BRGCON3); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFCON0); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFCON1); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON0); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON1); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON2); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON3); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON4); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON5); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON6); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(RXFBCON7); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(TXBIE); F:\MCP\projects\CAN\canNode\Source\Main.cuartPutc(BIE0); 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.c0005c2 0e2a MOVLW 0x2a } F:\MCP\projects\CAN\canNode\Source\Main.c0005c4 5ce1 SUBWF 0xe1,0x0,0x00005c6 e202 BC 0x5cc0005c8 6ae1 CLRF 0xe1,0x00005ca 52e5 MOVF 0xe5,0x1,0x00005cc 6ee1 MOVWF 0xe1,0x00005ce 52e5 MOVF 0xe5,0x1,0x00005d0 cfe7 MOVFF 0xfe7,0xfd90005d2 ffd90005d4 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.c0005d6 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c0005d8 6e6f MOVWF 0x6f,0x00005da 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c0005dc 146e ANDWF 0x6e,0x0,0x00005de 0880 SUBLW 0x800005e0 e1fc BNZ 0x5daF:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0005e2 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.c0005e4 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005e6 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.c0005e8 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c0005ea 1070 IORWF 0x70,0x0,0x00005ec 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c0005ee 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.c0005f0 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005f2 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005f4 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.c0005f6 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005f8 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005fa 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.c0005fc 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.c0005fe 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.c000600 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000602 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000604 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000606 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000608 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00060a 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.c00060c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c00060e 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.c000610 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000612 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000614 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000616 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c000618 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c00061a 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.c00061c 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.c00061e 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000620 6e6f MOVWF 0x6f,0x0000622 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000624 146e ANDWF 0x6e,0x0,0x0000626 0840 SUBLW 0x40000628 e1fc BNZ 0x622#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.c00062a 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.c00062c 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c00062e 0b02 ANDLW 0x2000630 e106 BNZ 0x63e000632 50a4 MOVF 0xa4,0x0,0x0000634 0b02 ANDLW 0x2000636 e103 BNZ 0x63e000638 50a4 MOVF 0xa4,0x0,0x000063a 0b01 ANDLW 0x100063c e03a BZ 0x6b2{ 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.c00063e ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000640 d004 BRA 0x64a000642 0e00 MOVLW 0x0000644 1477 ANDWF 0x77,0x0,0x0000646 0910 IORLW 0x10000648 d02b BRA 0x6a0 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00064a 010f MOVLB 0xf00064c af50 BTFSS 0x50,0x7,0x100064e d004 BRA 0x658000650 0e00 MOVLW 0x0000652 1477 ANDWF 0x77,0x0,0x0000654 0911 IORLW 0x11000656 d024 BRA 0x6a0 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000658 010e MOVLB 0xe00065a af20 BTFSS 0x20,0x7,0x100065c d004 BRA 0x66600065e 0e00 MOVLW 0x0000660 1477 ANDWF 0x77,0x0,0x0000662 0912 IORLW 0x12000664 d01d BRA 0x6a0 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000666 af30 BTFSS 0x30,0x7,0x1000668 d004 BRA 0x67200066a 0e00 MOVLW 0x000066c 1477 ANDWF 0x77,0x0,0x000066e 0913 IORLW 0x13000670 d017 BRA 0x6a0 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000672 af40 BTFSS 0x40,0x7,0x1000674 d004 BRA 0x67e000676 0e00 MOVLW 0x0000678 1477 ANDWF 0x77,0x0,0x000067a 0914 IORLW 0x1400067c d011 BRA 0x6a0 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00067e af50 BTFSS 0x50,0x7,0x1000680 d004 BRA 0x68a000682 0e00 MOVLW 0x0000684 1477 ANDWF 0x77,0x0,0x0000686 0915 IORLW 0x15000688 d00b BRA 0x6a0 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00068a af60 BTFSS 0x60,0x7,0x100068c d004 BRA 0x69600068e 0e00 MOVLW 0x0000690 1477 ANDWF 0x77,0x0,0x0000692 0916 IORLW 0x16000694 d005 BRA 0x6a0 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000696 af70 BTFSS 0x70,0x7,0x1000698 d005 BRA 0x6a400069a 0e00 MOVLW 0x000069c 1477 ANDWF 0x77,0x0,0x000069e 0917 IORLW 0x170006a0 6e77 MOVWF 0x77,0x00006a2 d808 RCALL 0x6b4F:\MCP\projects\CAN\canNode\Source\CAN.c0006a4 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006a6 d003 BRA 0x6ae0006a8 92a4 BCF 0xa4,0x1,0x00006aa b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006ac 92a4 BCF 0xa4,0x1,0x00006ae b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006b0 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0006b2 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.c0006b4 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c0006b6 ffe60006b8 cfe1 MOVFF 0xfe1,0xfd90006ba ffd90006bc 0e0e MOVLW 0xe0006be 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.c0006c0 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c0006c2 0b08 ANDLW 0x80006c4 e102 BNZ 0x6ca0006c6 0e00 MOVLW 0x00006c8 d001 BRA 0x6cc0006ca 0e01 MOVLW 0x10006cc 6ee7 MOVWF 0xe7,0x00006ce 0e04 MOVLW 0x40006d0 cfe7 MOVFF 0xfe7,0xfdb0006d2 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c0006d4 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006d6 6ade CLRF 0xde,0x00006d8 6ade CLRF 0xde,0x00006da 6add CLRF 0xdd,0x00006dc 52dd MOVF 0xdd,0x1,0x00006de 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0006e0 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0006e2 e163 BNZ 0x7aa{ 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.c0006e4 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.c0006e6 6e00 MOVWF 0x0,0x00006e8 6a01 CLRF 0x1,0x00006ea 6a02 CLRF 0x2,0x00006ec 6a03 CLRF 0x3,0x00006ee 0e15 MOVLW 0x150006f0 0b1f ANDLW 0x1f0006f2 e007 BZ 0x7020006f4 90d8 BCF 0xd8,0x0,0x00006f6 3600 RLCF 0x0,0x1,0x00006f8 3601 RLCF 0x1,0x1,0x00006fa 3602 RLCF 0x2,0x1,0x00006fc 3603 RLCF 0x3,0x1,0x00006fe 06e8 DECF 0xe8,0x1,0x0000700 e1f9 BNZ 0x6f4000702 0ee0 MOVLW 0xe0000704 1462 ANDWF 0x62,0x0,0x0000706 6e04 MOVWF 0x4,0x0000708 6a05 CLRF 0x5,0x000070a 6a06 CLRF 0x6,0x000070c 6a07 CLRF 0x7,0x000070e 0e0d MOVLW 0xd000710 0b1f ANDLW 0x1f000712 e007 BZ 0x722000714 90d8 BCF 0xd8,0x0,0x0000716 3604 RLCF 0x4,0x1,0x0000718 3605 RLCF 0x5,0x1,0x000071a 3606 RLCF 0x6,0x1,0x000071c 3607 RLCF 0x7,0x1,0x000071e 06e8 DECF 0xe8,0x1,0x0000720 e1f9 BNZ 0x714000722 5004 MOVF 0x4,0x0,0x0000724 2600 ADDWF 0x0,0x1,0x0000726 5005 MOVF 0x5,0x0,0x0000728 2201 ADDWFC 0x1,0x1,0x000072a 5006 MOVF 0x6,0x0,0x000072c 2202 ADDWFC 0x2,0x1,0x000072e 5007 MOVF 0x7,0x0,0x0000730 2203 ADDWFC 0x3,0x1,0x0000732 0e03 MOVLW 0x3000734 1462 ANDWF 0x62,0x0,0x0000736 6e08 MOVWF 0x8,0x0000738 6a09 CLRF 0x9,0x000073a 6a0a CLRF 0xa,0x000073c 6a0b CLRF 0xb,0x000073e 0e10 MOVLW 0x10000740 0b1f ANDLW 0x1f000742 e007 BZ 0x752000744 90d8 BCF 0xd8,0x0,0x0000746 3608 RLCF 0x8,0x1,0x0000748 3609 RLCF 0x9,0x1,0x000074a 360a RLCF 0xa,0x1,0x000074c 360b RLCF 0xb,0x1,0x000074e 06e8 DECF 0xe8,0x1,0x0000750 e1f9 BNZ 0x744000752 5008 MOVF 0x8,0x0,0x0000754 2600 ADDWF 0x0,0x1,0x0000756 5009 MOVF 0x9,0x0,0x0000758 2201 ADDWFC 0x1,0x1,0x000075a 500a MOVF 0xa,0x0,0x000075c 2202 ADDWFC 0x2,0x1,0x000075e 500b MOVF 0xb,0x0,0x0000760 2203 ADDWFC 0x3,0x1,0x0000762 5063 MOVF 0x63,0x0,0x0000764 6e0c MOVWF 0xc,0x0000766 6a0d CLRF 0xd,0x0000768 6a0e CLRF 0xe,0x000076a 6a0f CLRF 0xf,0x000076c 0e08 MOVLW 0x800076e 0b1f ANDLW 0x1f000770 e007 BZ 0x780000772 90d8 BCF 0xd8,0x0,0x0000774 360c RLCF 0xc,0x1,0x0000776 360d RLCF 0xd,0x1,0x0000778 360e RLCF 0xe,0x1,0x000077a 360f RLCF 0xf,0x1,0x000077c 06e8 DECF 0xe8,0x1,0x000077e e1f9 BNZ 0x772000780 500c MOVF 0xc,0x0,0x0000782 2600 ADDWF 0x0,0x1,0x0000784 500d MOVF 0xd,0x0,0x0000786 2201 ADDWFC 0x1,0x1,0x0000788 500e MOVF 0xe,0x0,0x000078a 2202 ADDWFC 0x2,0x1,0x000078c 500f MOVF 0xf,0x0,0x000078e 2203 ADDWFC 0x3,0x1,0x0000790 5064 MOVF 0x64,0x0,0x0000792 6e10 MOVWF 0x10,0x0000794 6a11 CLRF 0x11,0x0000796 6a12 CLRF 0x12,0x0000798 6a13 CLRF 0x13,0x000079a 50e8 MOVF 0xe8,0x0,0x000079c 2600 ADDWF 0x0,0x1,0x000079e 5011 MOVF 0x11,0x0,0x00007a0 2201 ADDWFC 0x1,0x1,0x00007a2 5012 MOVF 0x12,0x0,0x00007a4 2202 ADDWFC 0x2,0x1,0x00007a6 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0007a8 d023 BRA 0x7f0 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.c0007aa 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c0007ac 6e00 MOVWF 0x0,0x00007ae 6a01 CLRF 0x1,0x00007b0 6a02 CLRF 0x2,0x00007b2 6a03 CLRF 0x3,0x00007b4 0e03 MOVLW 0x30007b6 0b1f ANDLW 0x1f0007b8 e007 BZ 0x7c80007ba 90d8 BCF 0xd8,0x0,0x00007bc 3600 RLCF 0x0,0x1,0x00007be 3601 RLCF 0x1,0x1,0x00007c0 3602 RLCF 0x2,0x1,0x00007c2 3603 RLCF 0x3,0x1,0x00007c4 06e8 DECF 0xe8,0x1,0x00007c6 e1f9 BNZ 0x7ba0007c8 5062 MOVF 0x62,0x0,0x00007ca 6e04 MOVWF 0x4,0x00007cc 6a05 CLRF 0x5,0x00007ce 6a06 CLRF 0x6,0x00007d0 6a07 CLRF 0x7,0x00007d2 0e05 MOVLW 0x50007d4 90d8 BCF 0xd8,0x0,0x00007d6 3207 RRCF 0x7,0x1,0x00007d8 3206 RRCF 0x6,0x1,0x00007da 3205 RRCF 0x5,0x1,0x00007dc 3204 RRCF 0x4,0x1,0x00007de 06e8 DECF 0xe8,0x1,0x00007e0 e1f9 BNZ 0x7d40007e2 5004 MOVF 0x4,0x0,0x00007e4 2600 ADDWF 0x0,0x1,0x00007e6 5005 MOVF 0x5,0x0,0x00007e8 2201 ADDWFC 0x1,0x1,0x00007ea 5006 MOVF 0x6,0x0,0x00007ec 2202 ADDWFC 0x2,0x1,0x00007ee 5007 MOVF 0x7,0x0,0x00007f0 2203 ADDWFC 0x3,0x1,0x00007f2 c000 MOVFF 0x0,0xfdf0007f4 ffdf0007f6 0e01 MOVLW 0x10007f8 c001 MOVFF 0x1,0xfdb0007fa ffdb0007fc 0e02 MOVLW 0x20007fe c002 MOVFF 0x2,0xfdb000800 ffdb000802 0e03 MOVLW 0x3000804 c003 MOVFF 0x3,0xfdb000806 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.c000808 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c00080a cf65 MOVFF 0xf65,0xfdb00080c ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c00080e 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c000810 cf66 MOVFF 0xf66,0xfdb000812 ffdb000814 0e07 MOVLW 0x7000816 cf67 MOVFF 0xf67,0xfdb000818 ffdb00081a 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c00081c cf68 MOVFF 0xf68,0xfdb00081e ffdb000820 0e09 MOVLW 0x9000822 cf69 MOVFF 0xf69,0xfdb000824 ffdb000826 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c000828 cf6a MOVFF 0xf6a,0xfdb00082a ffdb00082c 0e0b MOVLW 0xb00082e cf6b MOVFF 0xf6b,0xfdb000830 ffdb000832 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c000834 cf6c MOVFF 0xf6c,0xfdb000836 ffdb000838 0e0d MOVLW 0xd00083a cf6d MOVFF 0xf6d,0xfdb00083c ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c00083e 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.c000840 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c000842 ffe9000844 cfda MOVFF 0xfda,0xfea000846 ffea000848 cfee MOVFF 0xfee,0xfe600084a ffe600084c cfee MOVFF 0xfee,0xfe600084e ffe6000850 cfee MOVFF 0xfee,0xfe6000852 ffe6000854 cfee MOVFF 0xfee,0xfe6000856 ffe6000858 cfee MOVFF 0xfee,0xfe600085a ffe600085c cfee MOVFF 0xfee,0xfe600085e ffe6000860 cfee MOVFF 0xfee,0xfe6000862 ffe6000864 cfee MOVFF 0xfee,0xfe6000866 ffe6000868 cfee MOVFF 0xfee,0xfe600086a ffe600086c cfee MOVFF 0xfee,0xfe600086e ffe6000870 cfee MOVFF 0xfee,0xfe6000872 ffe6000874 cfee MOVFF 0xfee,0xfe6000876 ffe6000878 cfee MOVFF 0xfee,0xfe600087a ffe600087c cfee MOVFF 0xfee,0xfe600087e ffe6000880 ecff CALL 0x1fe,0x0000882 f000000884 6e00 MOVWF 0x0,0x0000886 0e0e MOVLW 0xe000888 5ee1 SUBWF 0xe1,0x1,0x000088a 5000 MOVF 0x0,0x0,0x000088c 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c00088e 5ce1 SUBWF 0xe1,0x0,0x0000890 e202 BC 0x896000892 6ae1 CLRF 0xe1,0x0000894 52e5 MOVF 0xe5,0x1,0x0000896 6ee1 MOVWF 0xe1,0x0000898 52e5 MOVF 0xe5,0x1,0x000089a cfe7 MOVFF 0xfe7,0xfd900089c ffd900089e 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.c0008a0 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c0008a2 ffe60008a4 cfe1 MOVFF 0xfe1,0xfd90008a6 ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.c0008a8 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008aa b740 BTFSC 0x40,0x3,0x10008ac d004 BRA 0x8b60008ae 0e00 MOVLW 0x00008b0 1477 ANDWF 0x77,0x0,0x00008b2 0903 IORLW 0x30008b4 6e77 MOVWF 0x77,0x00008b6 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008b8 b730 BTFSC 0x30,0x3,0x10008ba d004 BRA 0x8c40008bc 0e00 MOVLW 0x00008be 1477 ANDWF 0x77,0x0,0x00008c0 0904 IORLW 0x40008c2 6e77 MOVWF 0x77,0x00008c4 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008c6 b720 BTFSC 0x20,0x3,0x10008c8 d005 BRA 0x8d40008ca 0e00 MOVLW 0x00008cc 1477 ANDWF 0x77,0x0,0x00008ce 0905 IORLW 0x50008d0 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c0008d2 d002 BRA 0x8d8 else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c0008d4 0e00 MOVLW 0x00008d6 d0c0 BRA 0xa58F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0008d8 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0008da 04db DECF 0xdb,0x0,0x00008dc e15f BNZ 0x99c{ 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.c0008de 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c0008e0 cfdb MOVFF 0xfdb,0x00008e2 f0000008e4 0ef2 MOVLW 0xf20008e6 cfdb MOVFF 0xfdb,0x10008e8 f0010008ea 0ef3 MOVLW 0xf30008ec cfdb MOVFF 0xfdb,0x20008ee f0020008f0 0ef4 MOVLW 0xf40008f2 cfdb MOVFF 0xfdb,0x30008f4 f0030008f6 0e15 MOVLW 0x150008f8 90d8 BCF 0xd8,0x0,0x00008fa 3203 RRCF 0x3,0x1,0x00008fc 3202 RRCF 0x2,0x1,0x00008fe 3201 RRCF 0x1,0x1,0x0000900 3200 RRCF 0x0,0x1,0x0000902 06e8 DECF 0xe8,0x1,0x0000904 e1f9 BNZ 0x8f8000906 5000 MOVF 0x0,0x0,0x0000908 6e61 MOVWF 0x61,0x000090a 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c00090c cfdb MOVFF 0xfdb,0x500090e f005000910 0ef2 MOVLW 0xf2000912 cfdb MOVFF 0xfdb,0x6000914 f006000916 0ef3 MOVLW 0xf3000918 cfdb MOVFF 0xfdb,0x700091a f00700091c 0ef4 MOVLW 0xf400091e cfdb MOVFF 0xfdb,0x8000920 f008000922 0e0d MOVLW 0xd000924 90d8 BCF 0xd8,0x0,0x0000926 3208 RRCF 0x8,0x1,0x0000928 3207 RRCF 0x7,0x1,0x000092a 3206 RRCF 0x6,0x1,0x000092c 3205 RRCF 0x5,0x1,0x000092e 06e8 DECF 0xe8,0x1,0x0000930 e1f9 BNZ 0x924000932 0ee0 MOVLW 0xe0000934 1405 ANDWF 0x5,0x0,0x0000936 6e04 MOVWF 0x4,0x0000938 0ef1 MOVLW 0xf100093a cfdb MOVFF 0xfdb,0x000093c f00000093e 0ef2 MOVLW 0xf2000940 cfdb MOVFF 0xfdb,0x1000942 f001000944 0ef3 MOVLW 0xf3000946 cfdb MOVFF 0xfdb,0x2000948 f00200094a 0ef4 MOVLW 0xf400094c cfdb MOVFF 0xfdb,0x300094e f003000950 0e10 MOVLW 0x10000952 90d8 BCF 0xd8,0x0,0x0000954 3203 RRCF 0x3,0x1,0x0000956 3202 RRCF 0x2,0x1,0x0000958 3201 RRCF 0x1,0x1,0x000095a 3200 RRCF 0x0,0x1,0x000095c 06e8 DECF 0xe8,0x1,0x000095e e1f9 BNZ 0x952000960 0e03 MOVLW 0x3000962 1400 ANDWF 0x0,0x0,0x0000964 2404 ADDWF 0x4,0x0,0x0000966 6e62 MOVWF 0x62,0x0000968 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c00096a cfdb MOVFF 0xfdb,0x000096c f00000096e 0ef2 MOVLW 0xf2000970 cfdb MOVFF 0xfdb,0x1000972 f001000974 0ef3 MOVLW 0xf3000976 cfdb MOVFF 0xfdb,0x2000978 f00200097a 0ef4 MOVLW 0xf400097c cfdb MOVFF 0xfdb,0x300097e f003000980 0e08 MOVLW 0x8000982 90d8 BCF 0xd8,0x0,0x0000984 3203 RRCF 0x3,0x1,0x0000986 3202 RRCF 0x2,0x1,0x0000988 3201 RRCF 0x1,0x1,0x000098a 3200 RRCF 0x0,0x1,0x000098c 06e8 DECF 0xe8,0x1,0x000098e e1f9 BNZ 0x982000990 5000 MOVF 0x0,0x0,0x0000992 6e63 MOVWF 0x63,0x0000994 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c000996 50db MOVF 0xdb,0x0,0x0000998 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c00099a d02f BRA 0x9fa 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.c00099c 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c00099e cfdb MOVFF 0xfdb,0x00009a0 f0000009a2 0ef2 MOVLW 0xf20009a4 cfdb MOVFF 0xfdb,0x10009a6 f0010009a8 0ef3 MOVLW 0xf30009aa cfdb MOVFF 0xfdb,0x20009ac f0020009ae 0ef4 MOVLW 0xf40009b0 cfdb MOVFF 0xfdb,0x30009b2 f0030009b4 0e03 MOVLW 0x30009b6 90d8 BCF 0xd8,0x0,0x00009b8 3203 RRCF 0x3,0x1,0x00009ba 3202 RRCF 0x2,0x1,0x00009bc 3201 RRCF 0x1,0x1,0x00009be 3200 RRCF 0x0,0x1,0x00009c0 06e8 DECF 0xe8,0x1,0x00009c2 e1f9 BNZ 0x9b60009c4 5000 MOVF 0x0,0x0,0x00009c6 6e61 MOVWF 0x61,0x00009c8 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c0009ca cfdb MOVFF 0xfdb,0x00009cc f0000009ce 0ef2 MOVLW 0xf20009d0 cfdb MOVFF 0xfdb,0x10009d2 f0010009d4 0ef3 MOVLW 0xf30009d6 cfdb MOVFF 0xfdb,0x20009d8 f0020009da 0ef4 MOVLW 0xf40009dc cfdb MOVFF 0xfdb,0x30009de f0030009e0 0e05 MOVLW 0x50009e2 0b1f ANDLW 0x1f0009e4 e007 BZ 0x9f40009e6 90d8 BCF 0xd8,0x0,0x00009e8 3600 RLCF 0x0,0x1,0x00009ea 3601 RLCF 0x1,0x1,0x00009ec 3602 RLCF 0x2,0x1,0x00009ee 3603 RLCF 0x3,0x1,0x00009f0 06e8 DECF 0xe8,0x1,0x00009f2 e1f9 BNZ 0x9e60009f4 0ee0 MOVLW 0xe00009f6 1400 ANDWF 0x0,0x0,0x00009f8 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.c0009fa 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c0009fc 50db MOVF 0xdb,0x0,0x00009fe 0808 SUBLW 0x8000a00 e203 BC 0xa08000a02 0e08 MOVLW 0x8000a04 6e65 MOVWF 0x65,0x0000a06 d003 BRA 0xa0e000a08 0ef6 MOVLW 0xf6000a0a 50db MOVF 0xdb,0x0,0x0000a0c 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000a0e 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a10 50db MOVF 0xdb,0x0,0x0000a12 6e66 MOVWF 0x66,0x0000a14 0ef8 MOVLW 0xf8000a16 50db MOVF 0xdb,0x0,0x0000a18 6e67 MOVWF 0x67,0x0000a1a 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a1c 50db MOVF 0xdb,0x0,0x0000a1e 6e68 MOVWF 0x68,0x0000a20 0efa MOVLW 0xfa000a22 50db MOVF 0xdb,0x0,0x0000a24 6e69 MOVWF 0x69,0x0000a26 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a28 50db MOVF 0xdb,0x0,0x0000a2a 6e6a MOVWF 0x6a,0x0000a2c 0efc MOVLW 0xfc000a2e 50db MOVF 0xdb,0x0,0x0000a30 6e6b MOVWF 0x6b,0x0000a32 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a34 50db MOVF 0xdb,0x0,0x0000a36 6e6c MOVWF 0x6c,0x0000a38 0efe MOVLW 0xfe000a3a 50db MOVF 0xdb,0x0,0x0000a3c 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c000a3e 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c000a40 04db DECF 0xdb,0x0,0x0000a42 e102 BNZ 0xa48000a44 0e01 MOVLW 0x1000a46 d001 BRA 0xa4a000a48 0e00 MOVLW 0x0000a4a b0e8 BTFSC 0xe8,0x0,0x0000a4c 8662 BSF 0x62,0x3,0x0000a4e a0e8 BTFSS 0xe8,0x0,0x0000a50 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.c000a52 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.c000a54 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000a56 d000 BRA 0xa58F:\MCP\projects\CAN\canNode\Source\CAN.c000a58 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000a5a cfe7 MOVFF 0xfe7,0xfd9000a5c ffd9000a5e 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.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.c000a60 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000a62 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000a64 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000a66 6eac MOVWF 0xac,0x0000a68 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000a6a 6eab MOVWF 0xab,0x0000a6c 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000a6e 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000a70 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000a72 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.c000a74 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000a76 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.c000a78 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000a7a ffe6000a7c cfe1 MOVFF 0xfe1,0xfd9000a7e ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000a80 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000a82 50db MOVF 0xdb,0x0,0x0000a84 6ead MOVWF 0xad,0x0000a86 d848 RCALL 0xb18 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000a88 0900 IORLW 0x0000a8a e1fd BNZ 0xa86000a8c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000a8e cfe7 MOVFF 0xfe7,0xfd9000a90 ffd9000a92 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.c000a94 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000a96 ffe6000a98 cfe1 MOVFF 0xfe1,0xfd9000a9a 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.c000a9c d83d RCALL 0xb18 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000a9e 0900 IORLW 0x0000aa0 e1fd BNZ 0xa9c000aa2 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000aa4 cfdb MOVFF 0xfdb,0xfe9000aa6 ffe9000aa8 0efe MOVLW 0xfe000aaa cfdb MOVFF 0xfdb,0xfea000aac ffea000aae 50ef MOVF 0xef,0x0,0x0000ab0 6ee6 MOVWF 0xe6,0x0000ab2 dfe2 RCALL 0xa78000ab4 52e5 MOVF 0xe5,0x1,0x0000ab6 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000ab8 cfdb MOVFF 0xfdb,0xfe9000aba ffe9000abc 2adb INCF 0xdb,0x1,0x0000abe 0efe MOVLW 0xfe000ac0 cfdb MOVFF 0xfdb,0xfea000ac2 ffea000ac4 e301 BNC 0xac8000ac6 2adb INCF 0xdb,0x1,0x0000ac8 50ef MOVF 0xef,0x0,0x0000aca e1e8 BNZ 0xa9c000acc 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000ace cfe7 MOVFF 0xfe7,0xfd9000ad0 ffd9000ad2 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.c000ad4 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000ad6 ffe6000ad8 cfe1 MOVFF 0xfe1,0xfd9000ada 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.c000adc d81d RCALL 0xb18 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000ade 0900 IORLW 0x0000ae0 e1fd BNZ 0xadc000ae2 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000ae4 cfdb MOVFF 0xfdb,0xff6000ae6 fff6000ae8 0efe MOVLW 0xfe000aea cfdb MOVFF 0xfdb,0xff7000aec fff7000aee 0008 TBLRD000af0 50f5 MOVF 0xf5,0x0,0x0000af2 6ee6 MOVWF 0xe6,0x0000af4 dfc1 RCALL 0xa78000af6 52e5 MOVF 0xe5,0x1,0x0000af8 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000afa cfdb MOVFF 0xfdb,0xff6000afc fff6000afe 2adb INCF 0xdb,0x1,0x0000b00 0efe MOVLW 0xfe000b02 cfdb MOVFF 0xfdb,0xff7000b04 fff7000b06 e301 BNC 0xb0a000b08 2adb INCF 0xdb,0x1,0x0000b0a 0008 TBLRD000b0c 50f5 MOVF 0xf5,0x0,0x0000b0e e1e6 BNZ 0xadc000b10 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000b12 cfe7 MOVFF 0xfe7,0xfd9000b14 ffd9000b16 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.c000b18 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000b1a 0b02 ANDLW 0x2000b1c 0a02 XORLW 0x2000b1e e001 BZ 0xb22000b20 0e01 MOVLW 0x1000b22 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.c000b24 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000b26 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: 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.c000b28 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000b2a 0b20 ANDLW 0x20000b2c e009 BZ 0xb40000b2e 509d MOVF 0x9d,0x0,0x0000b30 0b20 ANDLW 0x20000b32 e006 BZ 0xb40{ F:\MCP\projects\CAN\canNode\Source\uart.c000b34 dff7 RCALL 0xb24 uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000b36 6ee6 MOVWF 0xe6,0x0000b38 eca9 CALL 0x352,0x0000b3a f001000b3c 52e5 MOVF 0xe5,0x1,0x0000b3e 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000b40 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#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.c000be0 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000be2 6ed6 MOVWF 0xd6,0x0000be4 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000be6 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.c000be8 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000bea 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000bec 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000bee 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000bf0 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000bf2 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.c000bf4 c06f MOVFF 0x6f,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000bf6 f018000bf8 c070 MOVFF 0x70,0x19000bfa f019000bfc c071 MOVFF 0x71,0x1a000bfe f01a000c00 c072 MOVFF 0x72,0x1b000c02 f01b000c04 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.c000c06 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000c08 d00b BRA 0xc20{ F:\MCP\projects\CAN\canNode\Source\Tick.c000c0a 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000c0c 6ed7 MOVWF 0xd7,0x0000c0e 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000c10 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000c12 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000c14 2b6f INCF 0x6f,0x1,0x1000c16 0e00 MOVLW 0x0000c18 2370 ADDWFC 0x70,0x1,0x1000c1a 2371 ADDWFC 0x71,0x1,0x1000c1c 2372 ADDWFC 0x72,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000c1e 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000c20 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c