Rev 24 | 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 11:33:24 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.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 d8d6 RCALL 0x1fe 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 ec5d CALL 0x6ba,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 eca2 CALL 0xb44,0x0 uartInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000058 f00500005a 0e2c MOVLW 0x2c uartPutrs("BOOT OK!"); F:\MCP\projects\CAN\canNode\Source\Main.c00005c 6ee6 MOVWF 0xe6,0x000005e 0e0d MOVLW 0xd000060 6ee6 MOVWF 0xe6,0x0000062 ecdc CALL 0xbb8,0x0000064 f005000066 52e5 MOVF 0xe5,0x1,0x0000068 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00006a ec62 CALL 0xcc4,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00006c f006F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c00006e ec6c CALL 0xcd8,0x0 if ((tickGet()-t)>=10*TICK_SECOND) F:\MCP\projects\CAN\canNode\Source\Main.c000070 f006000072 0100 MOVLB 0x0000074 516e MOVF 0x6e,0x0,0x1000076 5c18 SUBWF 0x18,0x0,0x0000078 6e00 MOVWF 0x0,0x000007a 516f MOVF 0x6f,0x0,0x100007c 5819 SUBWFB 0x19,0x0,0x000007e 6e01 MOVWF 0x1,0x0000080 5170 MOVF 0x70,0x0,0x1000082 581a SUBWFB 0x1a,0x0,0x0000084 6e02 MOVWF 0x2,0x0000086 5171 MOVF 0x71,0x0,0x1000088 581b SUBWFB 0x1b,0x0,0x000008a 6e03 MOVWF 0x3,0x000008c 0ee8 MOVLW 0xe800008e 5c00 SUBWF 0x0,0x0,0x0000090 0e03 MOVLW 0x3000092 5801 SUBWFB 0x1,0x0,0x0000094 0e00 MOVLW 0x0000096 5802 SUBWFB 0x2,0x0,0x0000098 0e00 MOVLW 0x000009a 5803 SUBWFB 0x3,0x0,0x000009c e3e8 BNC 0x6e{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00009e ec6c CALL 0xcd8,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0000a0 f0060000a2 c018 MOVFF 0x18,0x6e0000a4 f06e0000a6 c019 MOVFF 0x19,0x6f0000a8 f06f0000aa c01a MOVFF 0x1a,0x700000ac f0700000ae c01b MOVFF 0x1b,0x710000b0 f071F:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c0000b2 0e07 MOVLW 0x7 cm.ident=0x00000707; F:\MCP\projects\CAN\canNode\Source\Main.c0000b4 6ede MOVWF 0xde,0x00000b6 6ede MOVWF 0xde,0x00000b8 6ade CLRF 0xde,0x00000ba 6add CLRF 0xdd,0x00000bc 52dd MOVF 0xdd,0x1,0x00000be 52dd MOVF 0xdd,0x1,0x00000c0 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0000c2 6adb CLRF 0xdb,0x00000c4 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c0000c6 6ef3 MOVWF 0xf3,0x00000c8 0e05 MOVLW 0x50000ca cff3 MOVFF 0xff3,0xfdb0000cc ffdb0000ce 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0000d0 6ef3 MOVWF 0xf3,0x00000d2 0e06 MOVLW 0x60000d4 cff3 MOVFF 0xff3,0xfdb0000d6 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0000d8 cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0000da ffe90000dc cfda MOVFF 0xfda,0xfea0000de ffea0000e0 cfee MOVFF 0xfee,0xfe60000e2 ffe60000e4 cfee MOVFF 0xfee,0xfe60000e6 ffe60000e8 cfee MOVFF 0xfee,0xfe60000ea ffe60000ec cfee MOVFF 0xfee,0xfe60000ee ffe60000f0 cfee MOVFF 0xfee,0xfe60000f2 ffe60000f4 cfee MOVFF 0xfee,0xfe60000f6 ffe60000f8 cfee MOVFF 0xfee,0xfe60000fa ffe60000fc cfee MOVFF 0xfee,0xfe60000fe ffe6000100 cfee MOVFF 0xfee,0xfe6000102 ffe6000104 cfee MOVFF 0xfee,0xfe6000106 ffe6000108 cfee MOVFF 0xfee,0xfe600010a ffe600010c cfee MOVFF 0xfee,0xfe600010e ffe6000110 cfee MOVFF 0xfee,0xfe6000112 ffe6000114 cfee MOVFF 0xfee,0xfe6000116 ffe6000118 ecc2 CALL 0x984,0x000011a f00400011c 6e00 MOVWF 0x0,0x000011e 0e0e MOVLW 0xe000120 5ee1 SUBWF 0xe1,0x1,0x0000122 5000 MOVF 0x0,0x0,0x0000124 0900 IORLW 0x0000126 e1a3 BNZ 0x6e000128 d7d7 BRA 0xd8F:\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.c00012a cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c00012c ffe400012e cfe0 MOVFF 0xfe0,0xfe4000130 ffe4000132 6ee4 MOVWF 0xe4,0x0000134 cfda MOVFF 0xfda,0xfe4000136 ffe4000138 cfe2 MOVFF 0xfe2,0xfda00013a ffda00013c cfe9 MOVFF 0xfe9,0xfe400013e ffe4000140 cfea MOVFF 0xfea,0xfe4000142 ffe4000144 cff6 MOVFF 0xff6,0xfe4000146 ffe4000148 cff7 MOVFF 0xff7,0xfe400014a ffe400014c cff5 MOVFF 0xff5,0xfe400014e ffe4000150 cff3 MOVFF 0xff3,0xfe4000152 ffe4000154 cff4 MOVFF 0xff4,0xfe4000156 ffe4000158 cffa MOVFF 0xffa,0xfe400015a ffe400015c ee00 LFSR 0x0,0x1400015e f014000160 0e0b MOVLW 0xb000162 04e8 DECF 0xe8,0x0,0x0000164 e303 BNC 0x16c000166 cfee MOVFF 0xfee,0xfe4000168 ffe400016a d7fb BRA 0x16200016c ee00 LFSR 0x0,0x000016e f000000170 0e14 MOVLW 0x14000172 04e8 DECF 0xe8,0x0,0x0000174 e303 BNC 0x17c000176 cfee MOVFF 0xfee,0xfe4000178 ffe400017a d7fb BRA 0x17200017c 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c00017e ec88 CALL 0x710,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000180 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.c000182 ec06 CALL 0xc0c,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000184 f006#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000186 ec75 CALL 0xcea,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c000188 f00600018a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c00018c ee00 LFSR 0x0,0x1300018e f013000190 0e14 MOVLW 0x14000192 04e8 DECF 0xe8,0x0,0x0000194 e303 BNC 0x19c000196 cfe5 MOVFF 0xfe5,0xfed000198 ffed00019a d7fb BRA 0x19200019c ee00 LFSR 0x0,0x1e00019e f01e0001a0 0e0b MOVLW 0xb0001a2 04e8 DECF 0xe8,0x0,0x00001a4 e303 BNC 0x1ac0001a6 cfe5 MOVFF 0xfe5,0xfed0001a8 ffed0001aa d7fb BRA 0x1a20001ac cfe5 MOVFF 0xfe5,0xffa0001ae fffa0001b0 cfe5 MOVFF 0xfe5,0xff40001b2 fff40001b4 cfe5 MOVFF 0xfe5,0xff30001b6 fff30001b8 cfe5 MOVFF 0xfe5,0xff50001ba fff50001bc cfe5 MOVFF 0xfe5,0xff70001be fff70001c0 cfe5 MOVFF 0xfe5,0xff60001c2 fff60001c4 cfe5 MOVFF 0xfe5,0xfea0001c6 ffea0001c8 cfe5 MOVFF 0xfe5,0xfe90001ca ffe90001cc cfe5 MOVFF 0xfe5,0xfda0001ce ffda0001d0 50e5 MOVF 0xe5,0x0,0x00001d2 cfe5 MOVFF 0xfe5,0xfe00001d4 ffe00001d6 cfe5 MOVFF 0xfe5,0xfd80001d8 ffd80001da 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 ef95 GOTO 0x12a _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.c0001dc cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0001de ffe40001e0 cfe0 MOVFF 0xfe0,0xfe40001e2 ffe40001e4 6ee4 MOVWF 0xe4,0x00001e6 cfda MOVFF 0xfda,0xfe40001e8 ffe40001ea 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0001ec 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0001ee cfe5 MOVFF 0xfe5,0xfda0001f0 ffda0001f2 50e5 MOVF 0xe5,0x0,0x00001f4 cfe5 MOVFF 0xfe5,0xfe00001f6 ffe00001f8 cfe5 MOVFF 0xfe5,0xfd80001fa ffd80001fc 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 efee GOTO 0x1dc _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.c0001fe 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.c000200 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.c000202 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c000204 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000206 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.c000208 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c00020a ffe600020c cfe1 MOVFF 0xfe1,0xfd900020e ffd9000210 0e02 MOVLW 0x2000212 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c000214 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canNode\Source\Main.c000216 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000218 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c00021a 04db DECF 0xdb,0x0,0x000021c e132 BNZ 0x282{ F:\MCP\projects\CAN\canNode\Source\Main.c00021e 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canNode\Source\Main.c000220 cfdb MOVFF 0xfdb,0x0000222 f000000224 0ef2 MOVLW 0xf2000226 cfdb MOVFF 0xfdb,0x1000228 f00100022a 0ef3 MOVLW 0xf300022c cfdb MOVFF 0xfdb,0x200022e f002000230 0ef4 MOVLW 0xf4000232 cfdb MOVFF 0xfdb,0x3000234 f003000236 0e18 MOVLW 0x18000238 90d8 BCF 0xd8,0x0,0x000023a 3203 RRCF 0x3,0x1,0x000023c 3202 RRCF 0x2,0x1,0x000023e 3201 RRCF 0x1,0x1,0x0000240 3200 RRCF 0x0,0x1,0x0000242 06e8 DECF 0xe8,0x1,0x0000244 e1f9 BNZ 0x238000246 5000 MOVF 0x0,0x0,0x0000248 6ee6 MOVWF 0xe6,0x000024a ecae CALL 0xb5c,0x000024c f00500024e 52e5 MOVF 0xe5,0x1,0x0000250 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canNode\Source\Main.c000252 cfdb MOVFF 0xfdb,0x0000254 f000000256 0ef2 MOVLW 0xf2000258 cfdb MOVFF 0xfdb,0x100025a f00100025c 0ef3 MOVLW 0xf300025e cfdb MOVFF 0xfdb,0x2000260 f002000262 0ef4 MOVLW 0xf4000264 cfdb MOVFF 0xfdb,0x3000266 f003000268 0e10 MOVLW 0x1000026a 90d8 BCF 0xd8,0x0,0x000026c 3203 RRCF 0x3,0x1,0x000026e 3202 RRCF 0x2,0x1,0x0000270 3201 RRCF 0x1,0x1,0x0000272 3200 RRCF 0x0,0x1,0x0000274 06e8 DECF 0xe8,0x1,0x0000276 e1f9 BNZ 0x26a000278 5000 MOVF 0x0,0x0,0x000027a 6ee6 MOVWF 0xe6,0x000027c ecae CALL 0xb5c,0x000027e f005000280 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.c000282 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canNode\Source\Main.c000284 cfdb MOVFF 0xfdb,0x0000286 f000000288 0ef2 MOVLW 0xf200028a cfdb MOVFF 0xfdb,0x100028c f00100028e 0ef3 MOVLW 0xf3000290 cfdb MOVFF 0xfdb,0x2000292 f002000294 0ef4 MOVLW 0xf4000296 cfdb MOVFF 0xfdb,0x3000298 f00300029a 0e08 MOVLW 0x800029c 90d8 BCF 0xd8,0x0,0x000029e 3203 RRCF 0x3,0x1,0x00002a0 3202 RRCF 0x2,0x1,0x00002a2 3201 RRCF 0x1,0x1,0x00002a4 3200 RRCF 0x0,0x1,0x00002a6 06e8 DECF 0xe8,0x1,0x00002a8 e1f9 BNZ 0x29c0002aa 5000 MOVF 0x0,0x0,0x00002ac 6ee6 MOVWF 0xe6,0x00002ae ecae CALL 0xb5c,0x00002b0 f0050002b2 52e5 MOVF 0xe5,0x1,0x00002b4 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canNode\Source\Main.c0002b6 cfdb MOVFF 0xfdb,0xfe60002b8 ffe60002ba ecae CALL 0xb5c,0x00002bc f0050002be 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c0002c0 6ade CLRF 0xde,0x0 for(i=0;i<cm.data_length && i<8;i++) F:\MCP\projects\CAN\canNode\Source\Main.c0002c2 6add CLRF 0xdd,0x00002c4 cfde MOVFF 0xfde,0x00002c6 f0000002c8 cfdd MOVFF 0xfdd,0x10002ca f0010002cc 0ef6 MOVLW 0xf60002ce 50db MOVF 0xdb,0x0,0x00002d0 0100 MOVLB 0x00002d2 ae01 BTFSS 0x1,0x7,0x00002d4 d002 BRA 0x2da0002d6 90d8 BCF 0xd8,0x0,0x00002d8 d003 BRA 0x2e00002da 5c00 SUBWF 0x0,0x0,0x00002dc 0e00 MOVLW 0x00002de 5801 SUBWFB 0x1,0x0,0x00002e0 e22f BC 0x3400002e2 cfde MOVFF 0xfde,0x20002e4 f0020002e6 cfdd MOVFF 0xfdd,0x30002e8 f0030002ea 90d8 BCF 0xd8,0x0,0x00002ec 5003 MOVF 0x3,0x0,0x00002ee e604 BN 0x2f80002f0 0e08 MOVLW 0x80002f2 5c02 SUBWF 0x2,0x0,0x00002f4 0e00 MOVLW 0x00002f6 5803 SUBWFB 0x3,0x0,0x00002f8 e223 BC 0x340000336 2adf INCF 0xdf,0x1,0x0000338 0e01 MOVLW 0x100033a e3c4 BNC 0x2c400033c 2adb INCF 0xdb,0x1,0x000033e d7c2 BRA 0x2c40002fa 50d9 MOVF 0xd9,0x0,0x0 uartPutc(cm.data[cm.data_length-i-1]); F:\MCP\projects\CAN\canNode\Source\Main.c0002fc 0ff7 ADDLW 0xf70002fe 6e00 MOVWF 0x0,0x0000300 0eff MOVLW 0xff000302 20da ADDWFC 0xda,0x0,0x0000304 6e01 MOVWF 0x1,0x0000306 0ef6 MOVLW 0xf6000308 50db MOVF 0xdb,0x0,0x000030a 6e04 MOVWF 0x4,0x000030c 6a05 CLRF 0x5,0x000030e 50de MOVF 0xde,0x0,0x0000310 5c04 SUBWF 0x4,0x0,0x0000312 6e02 MOVWF 0x2,0x0000314 50dd MOVF 0xdd,0x0,0x0000316 5805 SUBWFB 0x5,0x0,0x0000318 6e03 MOVWF 0x3,0x000031a 0602 DECF 0x2,0x1,0x000031c 0e00 MOVLW 0x000031e 5a03 SUBWFB 0x3,0x1,0x0000320 5000 MOVF 0x0,0x0,0x0000322 2402 ADDWF 0x2,0x0,0x0000324 6ee9 MOVWF 0xe9,0x0000326 5001 MOVF 0x1,0x0,0x0000328 2003 ADDWFC 0x3,0x0,0x000032a 6eea MOVWF 0xea,0x000032c 50ef MOVF 0xef,0x0,0x000032e 6ee6 MOVWF 0xe6,0x0000330 ecae CALL 0xb5c,0x0000332 f005000334 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000340 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canNode\Source\Main.c000342 5ce1 SUBWF 0xe1,0x0,0x0000344 e202 BC 0x34a000346 6ae1 CLRF 0xe1,0x0000348 52e5 MOVF 0xe5,0x1,0x000034a 6ee1 MOVWF 0xe1,0x000034c 52e5 MOVF 0xe5,0x1,0x000034e cfe7 MOVFF 0xfe7,0xfd9000350 ffd9000352 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.c000354 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canNode\Source\Main.c000356 ffe6000358 cfe1 MOVFF 0xfe1,0xfd900035a ffd900035c 0e1c MOVLW 0x1c00035e 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.c000360 0efe MOVLW 0xfe if (c=='1') F:\MCP\projects\CAN\canNode\Source\Main.c000362 50db MOVF 0xdb,0x0,0x0000364 0831 SUBLW 0x31000366 e14a BNZ 0x3fc{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c000368 0e23 MOVLW 0x23 cm.ident=0x00000123; F:\MCP\projects\CAN\canNode\Source\Main.c00036a 6ede MOVWF 0xde,0x000036c 0e01 MOVLW 0x100036e 6ede MOVWF 0xde,0x0000370 6ade CLRF 0xde,0x0000372 6add CLRF 0xdd,0x0000374 52dd MOVF 0xdd,0x1,0x0000376 52dd MOVF 0xdd,0x1,0x0000378 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c00037a 6adb CLRF 0xdb,0x000037c 6ef3 MOVWF 0xf3,0x0 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c00037e 0e05 MOVLW 0x5000380 cff3 MOVFF 0xff3,0xfdb000382 ffdb000384 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000386 6ef3 MOVWF 0xf3,0x0000388 0e06 MOVLW 0x600038a cff3 MOVFF 0xff3,0xfdb00038c ffdb00038e 0e6a MOVLW 0x6a cm.data[1]='j'; F:\MCP\projects\CAN\canNode\Source\Main.c000390 6ef3 MOVWF 0xf3,0x0000392 0e07 MOVLW 0x7000394 cff3 MOVFF 0xff3,0xfdb000396 ffdb000398 0e65 MOVLW 0x65 cm.data[2]='e'; F:\MCP\projects\CAN\canNode\Source\Main.c00039a 6ef3 MOVWF 0xf3,0x000039c 0e08 MOVLW 0x800039e cff3 MOVFF 0xff3,0xfdb0003a0 ffdb0003a2 0e48 MOVLW 0x48 cm.data[3]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0003a4 6ef3 MOVWF 0xf3,0x00003a6 0e09 MOVLW 0x90003a8 cff3 MOVFF 0xff3,0xfdb0003aa ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0003ac cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0003ae ffe90003b0 cfda MOVFF 0xfda,0xfea0003b2 ffea0003b4 cfee MOVFF 0xfee,0xfe60003b6 ffe60003b8 cfee MOVFF 0xfee,0xfe60003ba ffe60003bc cfee MOVFF 0xfee,0xfe60003be ffe60003c0 cfee MOVFF 0xfee,0xfe60003c2 ffe60003c4 cfee MOVFF 0xfee,0xfe60003c6 ffe60003c8 cfee MOVFF 0xfee,0xfe60003ca ffe60003cc cfee MOVFF 0xfee,0xfe60003ce ffe60003d0 cfee MOVFF 0xfee,0xfe60003d2 ffe60003d4 cfee MOVFF 0xfee,0xfe60003d6 ffe60003d8 cfee MOVFF 0xfee,0xfe60003da ffe60003dc cfee MOVFF 0xfee,0xfe60003de ffe60003e0 cfee MOVFF 0xfee,0xfe60003e2 ffe60003e4 cfee MOVFF 0xfee,0xfe60003e6 ffe60003e8 cfee MOVFF 0xfee,0xfe60003ea ffe60003ec ecc2 CALL 0x984,0x00003ee f0040003f0 6e00 MOVWF 0x0,0x00003f2 0e0e MOVLW 0xe0003f4 5ee1 SUBWF 0xe1,0x1,0x00003f6 5000 MOVF 0x0,0x0,0x00003f8 0900 IORLW 0x00003fa e0d8 BZ 0x3ac} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0003fc 0efe MOVLW 0xfe if (c=='2') F:\MCP\projects\CAN\canNode\Source\Main.c0003fe 50db MOVF 0xdb,0x0,0x0000400 0832 SUBLW 0x32000402 e16f BNZ 0x4e2{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c000404 0ef0 MOVLW 0xf0 cm.ident=0x0ABCDEF0; F:\MCP\projects\CAN\canNode\Source\Main.c000406 6ef3 MOVWF 0xf3,0x0000408 0e0e MOVLW 0xe00040a cff3 MOVFF 0xff3,0xfdb00040c ffdb00040e 0ede MOVLW 0xde000410 6ef3 MOVWF 0xf3,0x0000412 0e0f MOVLW 0xf000414 cff3 MOVFF 0xff3,0xfdb000416 ffdb000418 0ebc MOVLW 0xbc00041a 6ef3 MOVWF 0xf3,0x000041c 0e10 MOVLW 0x1000041e cff3 MOVFF 0xff3,0xfdb000420 ffdb000422 0e0a MOVLW 0xa000424 6ef3 MOVWF 0xf3,0x0000426 0e11 MOVLW 0x11000428 cff3 MOVFF 0xff3,0xfdb00042a ffdb00042c 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c00042e 6ef3 MOVWF 0xf3,0x0000430 0e12 MOVLW 0x12000432 cff3 MOVFF 0xff3,0xfdb000434 ffdb000436 0e08 MOVLW 0x8 cm.data_length=8; F:\MCP\projects\CAN\canNode\Source\Main.c000438 6ef3 MOVWF 0xf3,0x000043a 0e13 MOVLW 0x1300043c cff3 MOVFF 0xff3,0xfdb00043e ffdb000440 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000442 6ef3 MOVWF 0xf3,0x0000444 0e14 MOVLW 0x14000446 cff3 MOVFF 0xff3,0xfdb000448 ffdb00044a 0e67 MOVLW 0x67 cm.data[1]='g'; F:\MCP\projects\CAN\canNode\Source\Main.c00044c 6ef3 MOVWF 0xf3,0x000044e 0e15 MOVLW 0x15000450 cff3 MOVFF 0xff3,0xfdb000452 ffdb000454 0e61 MOVLW 0x61 cm.data[2]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c000456 6ef3 MOVWF 0xf3,0x0000458 0e16 MOVLW 0x1600045a cff3 MOVFF 0xff3,0xfdb00045c ffdb00045e 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c000460 6ef3 MOVWF 0xf3,0x0000462 0e17 MOVLW 0x17000464 cff3 MOVFF 0xff3,0xfdb000466 ffdb000468 0e20 MOVLW 0x20 cm.data[4]=' '; F:\MCP\projects\CAN\canNode\Source\Main.c00046a 6ef3 MOVWF 0xf3,0x000046c 0e18 MOVLW 0x1800046e cff3 MOVFF 0xff3,0xfdb000470 ffdb000472 0e64 MOVLW 0x64 cm.data[5]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c000474 6ef3 MOVWF 0xf3,0x0000476 0e19 MOVLW 0x19000478 cff3 MOVFF 0xff3,0xfdb00047a ffdb00047c 0e6f MOVLW 0x6f cm.data[6]='o'; F:\MCP\projects\CAN\canNode\Source\Main.c00047e 6ef3 MOVWF 0xf3,0x0000480 0e1a MOVLW 0x1a000482 cff3 MOVFF 0xff3,0xfdb000484 ffdb000486 0e47 MOVLW 0x47 cm.data[7]='G'; F:\MCP\projects\CAN\canNode\Source\Main.c000488 6ef3 MOVWF 0xf3,0x000048a 0e1b MOVLW 0x1b00048c cff3 MOVFF 0xff3,0xfdb00048e ffdbF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000490 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000492 0f0e ADDLW 0xe000494 6ee9 MOVWF 0xe9,0x0000496 cfda MOVFF 0xfda,0xfea000498 ffea00049a cfee MOVFF 0xfee,0xfe600049c ffe600049e cfee MOVFF 0xfee,0xfe60004a0 ffe60004a2 cfee MOVFF 0xfee,0xfe60004a4 ffe60004a6 cfee MOVFF 0xfee,0xfe60004a8 ffe60004aa cfee MOVFF 0xfee,0xfe60004ac ffe60004ae cfee MOVFF 0xfee,0xfe60004b0 ffe60004b2 cfee MOVFF 0xfee,0xfe60004b4 ffe60004b6 cfee MOVFF 0xfee,0xfe60004b8 ffe60004ba cfee MOVFF 0xfee,0xfe60004bc ffe60004be cfee MOVFF 0xfee,0xfe60004c0 ffe60004c2 cfee MOVFF 0xfee,0xfe60004c4 ffe60004c6 cfee MOVFF 0xfee,0xfe60004c8 ffe60004ca cfee MOVFF 0xfee,0xfe60004cc ffe60004ce cfee MOVFF 0xfee,0xfe60004d0 ffe60004d2 ecc2 CALL 0x984,0x00004d4 f0040004d6 6e00 MOVWF 0x0,0x00004d8 0e0e MOVLW 0xe0004da 5ee1 SUBWF 0xe1,0x1,0x00004dc 5000 MOVF 0x0,0x0,0x00004de 0900 IORLW 0x00004e0 e0d7 BZ 0x490} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004e2 0efe MOVLW 0xfe if (c=='d') F:\MCP\projects\CAN\canNode\Source\Main.c0004e4 50db MOVF 0xdb,0x0,0x00004e6 0864 SUBLW 0x640004e8 e105 BNZ 0x4f4{ F:\MCP\projects\CAN\canNode\Source\Main.c0004ea 0e44 MOVLW 0x44 uartPutc('D'); F:\MCP\projects\CAN\canNode\Source\Main.c0004ec 6ee6 MOVWF 0xe6,0x00004ee ecae CALL 0xb5c,0x00004f0 f0050004f2 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004f4 0efe MOVLW 0xfe if (c=='D') F:\MCP\projects\CAN\canNode\Source\Main.c0004f6 50db MOVF 0xdb,0x0,0x00004f8 0844 SUBLW 0x440004fa e108 BNZ 0x50c{ F:\MCP\projects\CAN\canNode\Source\Main.c0004fc 0e1e MOVLW 0x1e uartPutrs("Debug? Debug!"); F:\MCP\projects\CAN\canNode\Source\Main.c0004fe 6ee6 MOVWF 0xe6,0x0000500 0e0d MOVLW 0xd000502 6ee6 MOVWF 0xe6,0x0000504 ecdc CALL 0xbb8,0x0000506 f005000508 52e5 MOVF 0xe5,0x1,0x000050a 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00050c 0efe MOVLW 0xfe if (c=='3') F:\MCP\projects\CAN\canNode\Source\Main.c00050e 50db MOVF 0xdb,0x0,0x0000510 0833 SUBLW 0x33000512 e001 BZ 0x516000514 d0c8 BRA 0x6a6{ F:\MCP\projects\CAN\canNode\Source\Main.c000516 5060 MOVF 0x60,0x0,0x0 uartPutc(RXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.c000518 6ee6 MOVWF 0xe6,0x000051a ecae CALL 0xb5c,0x000051c f00500051e 52e5 MOVF 0xe5,0x1,0x0000520 cf50 MOVFF 0xf50,0xfe6 uartPutc(RXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.c000522 ffe6000524 ecae CALL 0xb5c,0x0000526 f005000528 52e5 MOVF 0xe5,0x1,0x000052a 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00052c 6ee6 MOVWF 0xe6,0x000052e ecae CALL 0xb5c,0x0000530 f005000532 52e5 MOVF 0xe5,0x1,0x0000534 ce20 MOVFF 0xe20,0xfe6 uartPutc(B0CON); F:\MCP\projects\CAN\canNode\Source\Main.c000536 ffe6000538 ecae CALL 0xb5c,0x000053a f00500053c 52e5 MOVF 0xe5,0x1,0x000053e ce30 MOVFF 0xe30,0xfe6 uartPutc(B1CON); F:\MCP\projects\CAN\canNode\Source\Main.c000540 ffe6000542 ecae CALL 0xb5c,0x0000544 f005000546 52e5 MOVF 0xe5,0x1,0x0000548 ce40 MOVFF 0xe40,0xfe6 uartPutc(B2CON); F:\MCP\projects\CAN\canNode\Source\Main.c00054a ffe600054c ecae CALL 0xb5c,0x000054e f005000550 52e5 MOVF 0xe5,0x1,0x0000552 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000554 6ee6 MOVWF 0xe6,0x0000556 ecae CALL 0xb5c,0x0000558 f00500055a 52e5 MOVF 0xe5,0x1,0x000055c ce50 MOVFF 0xe50,0xfe6 uartPutc(B3CON); F:\MCP\projects\CAN\canNode\Source\Main.c00055e ffe6000560 ecae CALL 0xb5c,0x0000562 f005000564 52e5 MOVF 0xe5,0x1,0x0000566 ce60 MOVFF 0xe60,0xfe6 uartPutc(B4CON); F:\MCP\projects\CAN\canNode\Source\Main.c000568 ffe600056a ecae CALL 0xb5c,0x000056c f00500056e 52e5 MOVF 0xe5,0x1,0x0000570 ce70 MOVFF 0xe70,0xfe6 uartPutc(B5CON); F:\MCP\projects\CAN\canNode\Source\Main.c000572 ffe6000574 ecae CALL 0xb5c,0x0000576 f005000578 52e5 MOVF 0xe5,0x1,0x000057a 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00057c 6ee6 MOVWF 0xe6,0x000057e ecae CALL 0xb5c,0x0000580 f005000582 52e5 MOVF 0xe5,0x1,0x0000584 506e MOVF 0x6e,0x0,0x0 uartPutc(CANSTAT); F:\MCP\projects\CAN\canNode\Source\Main.c000586 6ee6 MOVWF 0xe6,0x0000588 ecae CALL 0xb5c,0x000058a f00500058c 52e5 MOVF 0xe5,0x1,0x000058e 5074 MOVF 0x74,0x0,0x0 uartPutc(COMSTAT); F:\MCP\projects\CAN\canNode\Source\Main.c000590 6ee6 MOVWF 0xe6,0x0000592 ecae CALL 0xb5c,0x0000594 f005000596 52e5 MOVF 0xe5,0x1,0x0000598 5077 MOVF 0x77,0x0,0x0 uartPutc(ECANCON); F:\MCP\projects\CAN\canNode\Source\Main.c00059a 6ee6 MOVWF 0xe6,0x000059c ecae CALL 0xb5c,0x000059e f0050005a0 52e5 MOVF 0xe5,0x1,0x00005a2 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0005a4 6ee6 MOVWF 0xe6,0x00005a6 ecae CALL 0xb5c,0x00005a8 f0050005aa 52e5 MOVF 0xe5,0x1,0x00005ac cf40 MOVFF 0xf40,0xfe6 uartPutc(TXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.c0005ae ffe60005b0 ecae CALL 0xb5c,0x00005b2 f0050005b4 52e5 MOVF 0xe5,0x1,0x00005b6 cf30 MOVFF 0xf30,0xfe6 uartPutc(TXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.c0005b8 ffe60005ba ecae CALL 0xb5c,0x00005bc f0050005be 52e5 MOVF 0xe5,0x1,0x00005c0 cf20 MOVFF 0xf20,0xfe6 uartPutc(TXB2CON); F:\MCP\projects\CAN\canNode\Source\Main.c0005c2 ffe60005c4 ecae CALL 0xb5c,0x00005c6 f0050005c8 52e5 MOVF 0xe5,0x1,0x00005ca 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0005cc 6ee6 MOVWF 0xe6,0x00005ce ecae CALL 0xb5c,0x00005d0 f0050005d2 52e5 MOVF 0xe5,0x1,0x00005d4 50a4 MOVF 0xa4,0x0,0x0 uartPutc(PIR3); F:\MCP\projects\CAN\canNode\Source\Main.c0005d6 6ee6 MOVWF 0xe6,0x00005d8 ecae CALL 0xb5c,0x00005da f0050005dc 52e5 MOVF 0xe5,0x1,0x00005de 50a3 MOVF 0xa3,0x0,0x0 uartPutc(PIE3); F:\MCP\projects\CAN\canNode\Source\Main.c0005e0 6ee6 MOVWF 0xe6,0x00005e2 ecae CALL 0xb5c,0x00005e4 f0050005e6 52e5 MOVF 0xe5,0x1,0x00005e8 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0005ea 6ee6 MOVWF 0xe6,0x00005ec ecae CALL 0xb5c,0x00005ee f0050005f0 52e5 MOVF 0xe5,0x1,0x00005f2 5070 MOVF 0x70,0x0,0x0 uartPutc(BRGCON1); F:\MCP\projects\CAN\canNode\Source\Main.c0005f4 6ee6 MOVWF 0xe6,0x00005f6 ecae CALL 0xb5c,0x00005f8 f0050005fa 52e5 MOVF 0xe5,0x1,0x00005fc 5071 MOVF 0x71,0x0,0x0 uartPutc(BRGCON2); F:\MCP\projects\CAN\canNode\Source\Main.c0005fe 6ee6 MOVWF 0xe6,0x0000600 ecae CALL 0xb5c,0x0000602 f005000604 52e5 MOVF 0xe5,0x1,0x0000606 5072 MOVF 0x72,0x0,0x0 uartPutc(BRGCON3); F:\MCP\projects\CAN\canNode\Source\Main.c000608 6ee6 MOVWF 0xe6,0x000060a ecae CALL 0xb5c,0x000060c f00500060e 52e5 MOVF 0xe5,0x1,0x0000610 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000612 6ee6 MOVWF 0xe6,0x0000614 ecae CALL 0xb5c,0x0000616 f005000618 52e5 MOVF 0xe5,0x1,0x000061a cdd4 MOVFF 0xdd4,0xfe6 uartPutc(RXFCON0); F:\MCP\projects\CAN\canNode\Source\Main.c00061c ffe600061e ecae CALL 0xb5c,0x0000620 f005000622 52e5 MOVF 0xe5,0x1,0x0000624 cdd5 MOVFF 0xdd5,0xfe6 uartPutc(RXFCON1); F:\MCP\projects\CAN\canNode\Source\Main.c000626 ffe6000628 ecae CALL 0xb5c,0x000062a f00500062c 52e5 MOVF 0xe5,0x1,0x000062e 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000630 6ee6 MOVWF 0xe6,0x0000632 ecae CALL 0xb5c,0x0000634 f005000636 52e5 MOVF 0xe5,0x1,0x0000638 cde0 MOVFF 0xde0,0xfe6 uartPutc(RXFBCON0); F:\MCP\projects\CAN\canNode\Source\Main.c00063a ffe600063c ecae CALL 0xb5c,0x000063e f005000640 52e5 MOVF 0xe5,0x1,0x0000642 cde1 MOVFF 0xde1,0xfe6 uartPutc(RXFBCON1); F:\MCP\projects\CAN\canNode\Source\Main.c000644 ffe6000646 ecae CALL 0xb5c,0x0000648 f00500064a 52e5 MOVF 0xe5,0x1,0x000064c cde2 MOVFF 0xde2,0xfe6 uartPutc(RXFBCON2); F:\MCP\projects\CAN\canNode\Source\Main.c00064e ffe6000650 ecae CALL 0xb5c,0x0000652 f005000654 52e5 MOVF 0xe5,0x1,0x0000656 cde3 MOVFF 0xde3,0xfe6 uartPutc(RXFBCON3); F:\MCP\projects\CAN\canNode\Source\Main.c000658 ffe600065a ecae CALL 0xb5c,0x000065c f00500065e 52e5 MOVF 0xe5,0x1,0x0000660 cde4 MOVFF 0xde4,0xfe6 uartPutc(RXFBCON4); F:\MCP\projects\CAN\canNode\Source\Main.c000662 ffe6000664 ecae CALL 0xb5c,0x0000666 f005000668 52e5 MOVF 0xe5,0x1,0x000066a cde5 MOVFF 0xde5,0xfe6 uartPutc(RXFBCON5); F:\MCP\projects\CAN\canNode\Source\Main.c00066c ffe600066e ecae CALL 0xb5c,0x0000670 f005000672 52e5 MOVF 0xe5,0x1,0x0000674 cde6 MOVFF 0xde6,0xfe6 uartPutc(RXFBCON6); F:\MCP\projects\CAN\canNode\Source\Main.c000676 ffe6000678 ecae CALL 0xb5c,0x000067a f00500067c 52e5 MOVF 0xe5,0x1,0x000067e cde7 MOVFF 0xde7,0xfe6 uartPutc(RXFBCON7); F:\MCP\projects\CAN\canNode\Source\Main.c000680 ffe6000682 ecae CALL 0xb5c,0x0000684 f005000686 52e5 MOVF 0xe5,0x1,0x0000688 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00068a 6ee6 MOVWF 0xe6,0x000068c ecae CALL 0xb5c,0x000068e f005000690 52e5 MOVF 0xe5,0x1,0x0000692 cdfc MOVFF 0xdfc,0xfe6 uartPutc(TXBIE); F:\MCP\projects\CAN\canNode\Source\Main.c000694 ffe6000696 ecae CALL 0xb5c,0x0000698 f00500069a 52e5 MOVF 0xe5,0x1,0x000069c cdfa MOVFF 0xdfa,0xfe6 uartPutc(BIE0); F:\MCP\projects\CAN\canNode\Source\Main.c00069e ffe60006a0 ecae CALL 0xb5c,0x00006a2 f0050006a4 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0006a6 0e1c MOVLW 0x1c } F:\MCP\projects\CAN\canNode\Source\Main.c0006a8 5ce1 SUBWF 0xe1,0x0,0x00006aa e202 BC 0x6b00006ac 6ae1 CLRF 0xe1,0x00006ae 52e5 MOVF 0xe5,0x1,0x00006b0 6ee1 MOVWF 0xe1,0x00006b2 52e5 MOVF 0xe5,0x1,0x00006b4 cfe7 MOVFF 0xfe7,0xfd90006b6 ffd90006b8 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.c0006ba 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c0006bc 6e6f MOVWF 0x6f,0x00006be 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c0006c0 146e ANDWF 0x6e,0x0,0x00006c2 0880 SUBLW 0x800006c4 e1fc BNZ 0x6beF:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0006c6 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.c0006c8 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006ca 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.c0006cc 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c0006ce 1070 IORWF 0x70,0x0,0x00006d0 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c0006d2 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.c0006d4 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006d6 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006d8 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.c0006da 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006dc 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006de 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.c0006e0 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.c0006e2 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.c0006e4 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006e6 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006e8 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0006ea 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006ec 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006ee 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.c0006f0 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c0006f2 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.c0006f4 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006f6 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0006f8 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006fa 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c0006fc 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c0006fe 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.c000700 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.c000702 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000704 6e6f MOVWF 0x6f,0x0000706 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000708 146e ANDWF 0x6e,0x0,0x000070a 0840 SUBLW 0x4000070c e1fc BNZ 0x706#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.c00070e 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.c000710 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c000712 0b02 ANDLW 0x2000714 e106 BNZ 0x722000716 50a4 MOVF 0xa4,0x0,0x0000718 0b02 ANDLW 0x200071a e103 BNZ 0x72200071c 50a4 MOVF 0xa4,0x0,0x000071e 0b01 ANDLW 0x1000720 e03a BZ 0x796{ 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.c000722 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000724 d004 BRA 0x72e000726 0e00 MOVLW 0x0000728 1477 ANDWF 0x77,0x0,0x000072a 0910 IORLW 0x1000072c d02b BRA 0x784 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00072e 010f MOVLB 0xf000730 af50 BTFSS 0x50,0x7,0x1000732 d004 BRA 0x73c000734 0e00 MOVLW 0x0000736 1477 ANDWF 0x77,0x0,0x0000738 0911 IORLW 0x1100073a d024 BRA 0x784 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00073c 010e MOVLB 0xe00073e af20 BTFSS 0x20,0x7,0x1000740 d004 BRA 0x74a000742 0e00 MOVLW 0x0000744 1477 ANDWF 0x77,0x0,0x0000746 0912 IORLW 0x12000748 d01d BRA 0x784 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00074a af30 BTFSS 0x30,0x7,0x100074c d004 BRA 0x75600074e 0e00 MOVLW 0x0000750 1477 ANDWF 0x77,0x0,0x0000752 0913 IORLW 0x13000754 d017 BRA 0x784 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000756 af40 BTFSS 0x40,0x7,0x1000758 d004 BRA 0x76200075a 0e00 MOVLW 0x000075c 1477 ANDWF 0x77,0x0,0x000075e 0914 IORLW 0x14000760 d011 BRA 0x784 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000762 af50 BTFSS 0x50,0x7,0x1000764 d004 BRA 0x76e000766 0e00 MOVLW 0x0000768 1477 ANDWF 0x77,0x0,0x000076a 0915 IORLW 0x1500076c d00b BRA 0x784 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00076e af60 BTFSS 0x60,0x7,0x1000770 d004 BRA 0x77a000772 0e00 MOVLW 0x0000774 1477 ANDWF 0x77,0x0,0x0000776 0916 IORLW 0x16000778 d005 BRA 0x784 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00077a af70 BTFSS 0x70,0x7,0x100077c d005 BRA 0x78800077e 0e00 MOVLW 0x0000780 1477 ANDWF 0x77,0x0,0x0000782 0917 IORLW 0x17000784 6e77 MOVWF 0x77,0x0000786 d808 RCALL 0x798F:\MCP\projects\CAN\canNode\Source\CAN.c000788 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00078a d003 BRA 0x79200078c 92a4 BCF 0xa4,0x1,0x000078e b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000790 92a4 BCF 0xa4,0x1,0x0000792 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000794 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000796 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.c000798 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c00079a ffe600079c cfe1 MOVFF 0xfe1,0xfd900079e ffd90007a0 0e0e MOVLW 0xe0007a2 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.c0007a4 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c0007a6 0b08 ANDLW 0x80007a8 e102 BNZ 0x7ae0007aa 0e00 MOVLW 0x00007ac d001 BRA 0x7b00007ae 0e01 MOVLW 0x10007b0 6ee7 MOVWF 0xe7,0x00007b2 0e04 MOVLW 0x40007b4 cfe7 MOVFF 0xfe7,0xfdb0007b6 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c0007b8 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0007ba 6ade CLRF 0xde,0x00007bc 6ade CLRF 0xde,0x00007be 6add CLRF 0xdd,0x00007c0 52dd MOVF 0xdd,0x1,0x00007c2 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0007c4 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0007c6 e163 BNZ 0x88e{ 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.c0007c8 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.c0007ca 6e00 MOVWF 0x0,0x00007cc 6a01 CLRF 0x1,0x00007ce 6a02 CLRF 0x2,0x00007d0 6a03 CLRF 0x3,0x00007d2 0e15 MOVLW 0x150007d4 0b1f ANDLW 0x1f0007d6 e007 BZ 0x7e60007d8 90d8 BCF 0xd8,0x0,0x00007da 3600 RLCF 0x0,0x1,0x00007dc 3601 RLCF 0x1,0x1,0x00007de 3602 RLCF 0x2,0x1,0x00007e0 3603 RLCF 0x3,0x1,0x00007e2 06e8 DECF 0xe8,0x1,0x00007e4 e1f9 BNZ 0x7d80007e6 0ee0 MOVLW 0xe00007e8 1462 ANDWF 0x62,0x0,0x00007ea 6e04 MOVWF 0x4,0x00007ec 6a05 CLRF 0x5,0x00007ee 6a06 CLRF 0x6,0x00007f0 6a07 CLRF 0x7,0x00007f2 0e0d MOVLW 0xd0007f4 0b1f ANDLW 0x1f0007f6 e007 BZ 0x8060007f8 90d8 BCF 0xd8,0x0,0x00007fa 3604 RLCF 0x4,0x1,0x00007fc 3605 RLCF 0x5,0x1,0x00007fe 3606 RLCF 0x6,0x1,0x0000800 3607 RLCF 0x7,0x1,0x0000802 06e8 DECF 0xe8,0x1,0x0000804 e1f9 BNZ 0x7f8000806 5004 MOVF 0x4,0x0,0x0000808 2600 ADDWF 0x0,0x1,0x000080a 5005 MOVF 0x5,0x0,0x000080c 2201 ADDWFC 0x1,0x1,0x000080e 5006 MOVF 0x6,0x0,0x0000810 2202 ADDWFC 0x2,0x1,0x0000812 5007 MOVF 0x7,0x0,0x0000814 2203 ADDWFC 0x3,0x1,0x0000816 0e03 MOVLW 0x3000818 1462 ANDWF 0x62,0x0,0x000081a 6e08 MOVWF 0x8,0x000081c 6a09 CLRF 0x9,0x000081e 6a0a CLRF 0xa,0x0000820 6a0b CLRF 0xb,0x0000822 0e10 MOVLW 0x10000824 0b1f ANDLW 0x1f000826 e007 BZ 0x836000828 90d8 BCF 0xd8,0x0,0x000082a 3608 RLCF 0x8,0x1,0x000082c 3609 RLCF 0x9,0x1,0x000082e 360a RLCF 0xa,0x1,0x0000830 360b RLCF 0xb,0x1,0x0000832 06e8 DECF 0xe8,0x1,0x0000834 e1f9 BNZ 0x828000836 5008 MOVF 0x8,0x0,0x0000838 2600 ADDWF 0x0,0x1,0x000083a 5009 MOVF 0x9,0x0,0x000083c 2201 ADDWFC 0x1,0x1,0x000083e 500a MOVF 0xa,0x0,0x0000840 2202 ADDWFC 0x2,0x1,0x0000842 500b MOVF 0xb,0x0,0x0000844 2203 ADDWFC 0x3,0x1,0x0000846 5063 MOVF 0x63,0x0,0x0000848 6e0c MOVWF 0xc,0x000084a 6a0d CLRF 0xd,0x000084c 6a0e CLRF 0xe,0x000084e 6a0f CLRF 0xf,0x0000850 0e08 MOVLW 0x8000852 0b1f ANDLW 0x1f000854 e007 BZ 0x864000856 90d8 BCF 0xd8,0x0,0x0000858 360c RLCF 0xc,0x1,0x000085a 360d RLCF 0xd,0x1,0x000085c 360e RLCF 0xe,0x1,0x000085e 360f RLCF 0xf,0x1,0x0000860 06e8 DECF 0xe8,0x1,0x0000862 e1f9 BNZ 0x856000864 500c MOVF 0xc,0x0,0x0000866 2600 ADDWF 0x0,0x1,0x0000868 500d MOVF 0xd,0x0,0x000086a 2201 ADDWFC 0x1,0x1,0x000086c 500e MOVF 0xe,0x0,0x000086e 2202 ADDWFC 0x2,0x1,0x0000870 500f MOVF 0xf,0x0,0x0000872 2203 ADDWFC 0x3,0x1,0x0000874 5064 MOVF 0x64,0x0,0x0000876 6e10 MOVWF 0x10,0x0000878 6a11 CLRF 0x11,0x000087a 6a12 CLRF 0x12,0x000087c 6a13 CLRF 0x13,0x000087e 50e8 MOVF 0xe8,0x0,0x0000880 2600 ADDWF 0x0,0x1,0x0000882 5011 MOVF 0x11,0x0,0x0000884 2201 ADDWFC 0x1,0x1,0x0000886 5012 MOVF 0x12,0x0,0x0000888 2202 ADDWFC 0x2,0x1,0x000088a 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c00088c d023 BRA 0x8d4 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.c00088e 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c000890 6e00 MOVWF 0x0,0x0000892 6a01 CLRF 0x1,0x0000894 6a02 CLRF 0x2,0x0000896 6a03 CLRF 0x3,0x0000898 0e03 MOVLW 0x300089a 0b1f ANDLW 0x1f00089c e007 BZ 0x8ac00089e 90d8 BCF 0xd8,0x0,0x00008a0 3600 RLCF 0x0,0x1,0x00008a2 3601 RLCF 0x1,0x1,0x00008a4 3602 RLCF 0x2,0x1,0x00008a6 3603 RLCF 0x3,0x1,0x00008a8 06e8 DECF 0xe8,0x1,0x00008aa e1f9 BNZ 0x89e0008ac 5062 MOVF 0x62,0x0,0x00008ae 6e04 MOVWF 0x4,0x00008b0 6a05 CLRF 0x5,0x00008b2 6a06 CLRF 0x6,0x00008b4 6a07 CLRF 0x7,0x00008b6 0e05 MOVLW 0x50008b8 90d8 BCF 0xd8,0x0,0x00008ba 3207 RRCF 0x7,0x1,0x00008bc 3206 RRCF 0x6,0x1,0x00008be 3205 RRCF 0x5,0x1,0x00008c0 3204 RRCF 0x4,0x1,0x00008c2 06e8 DECF 0xe8,0x1,0x00008c4 e1f9 BNZ 0x8b80008c6 5004 MOVF 0x4,0x0,0x00008c8 2600 ADDWF 0x0,0x1,0x00008ca 5005 MOVF 0x5,0x0,0x00008cc 2201 ADDWFC 0x1,0x1,0x00008ce 5006 MOVF 0x6,0x0,0x00008d0 2202 ADDWFC 0x2,0x1,0x00008d2 5007 MOVF 0x7,0x0,0x00008d4 2203 ADDWFC 0x3,0x1,0x00008d6 c000 MOVFF 0x0,0xfdf0008d8 ffdf0008da 0e01 MOVLW 0x10008dc c001 MOVFF 0x1,0xfdb0008de ffdb0008e0 0e02 MOVLW 0x20008e2 c002 MOVFF 0x2,0xfdb0008e4 ffdb0008e6 0e03 MOVLW 0x30008e8 c003 MOVFF 0x3,0xfdb0008ea 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.c0008ec 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c0008ee cf65 MOVFF 0xf65,0xfdb0008f0 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c0008f2 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c0008f4 cf66 MOVFF 0xf66,0xfdb0008f6 ffdb0008f8 0e07 MOVLW 0x70008fa cf67 MOVFF 0xf67,0xfdb0008fc ffdb0008fe 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c000900 cf68 MOVFF 0xf68,0xfdb000902 ffdb000904 0e09 MOVLW 0x9000906 cf69 MOVFF 0xf69,0xfdb000908 ffdb00090a 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c00090c cf6a MOVFF 0xf6a,0xfdb00090e ffdb000910 0e0b MOVLW 0xb000912 cf6b MOVFF 0xf6b,0xfdb000914 ffdb000916 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c000918 cf6c MOVFF 0xf6c,0xfdb00091a ffdb00091c 0e0d MOVLW 0xd00091e cf6d MOVFF 0xf6d,0xfdb000920 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c000922 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.c000924 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c000926 ffe9000928 cfda MOVFF 0xfda,0xfea00092a ffea00092c cfee MOVFF 0xfee,0xfe600092e ffe6000930 cfee MOVFF 0xfee,0xfe6000932 ffe6000934 cfee MOVFF 0xfee,0xfe6000936 ffe6000938 cfee MOVFF 0xfee,0xfe600093a ffe600093c cfee MOVFF 0xfee,0xfe600093e ffe6000940 cfee MOVFF 0xfee,0xfe6000942 ffe6000944 cfee MOVFF 0xfee,0xfe6000946 ffe6000948 cfee MOVFF 0xfee,0xfe600094a ffe600094c cfee MOVFF 0xfee,0xfe600094e ffe6000950 cfee MOVFF 0xfee,0xfe6000952 ffe6000954 cfee MOVFF 0xfee,0xfe6000956 ffe6000958 cfee MOVFF 0xfee,0xfe600095a ffe600095c cfee MOVFF 0xfee,0xfe600095e ffe6000960 cfee MOVFF 0xfee,0xfe6000962 ffe6000964 ec04 CALL 0x208,0x0000966 f001000968 6e00 MOVWF 0x0,0x000096a 0e0e MOVLW 0xe00096c 5ee1 SUBWF 0xe1,0x1,0x000096e 5000 MOVF 0x0,0x0,0x0000970 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c000972 5ce1 SUBWF 0xe1,0x0,0x0000974 e202 BC 0x97a000976 6ae1 CLRF 0xe1,0x0000978 52e5 MOVF 0xe5,0x1,0x000097a 6ee1 MOVWF 0xe1,0x000097c 52e5 MOVF 0xe5,0x1,0x000097e cfe7 MOVFF 0xfe7,0xfd9000980 ffd9000982 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.c000984 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c000986 ffe6000988 cfe1 MOVFF 0xfe1,0xfd900098a ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.c00098c 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c00098e b740 BTFSC 0x40,0x3,0x1000990 d004 BRA 0x99a000992 0e00 MOVLW 0x0000994 1477 ANDWF 0x77,0x0,0x0000996 0903 IORLW 0x3000998 6e77 MOVWF 0x77,0x000099a 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c00099c b730 BTFSC 0x30,0x3,0x100099e d004 BRA 0x9a80009a0 0e00 MOVLW 0x00009a2 1477 ANDWF 0x77,0x0,0x00009a4 0904 IORLW 0x40009a6 6e77 MOVWF 0x77,0x00009a8 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c0009aa b720 BTFSC 0x20,0x3,0x10009ac d005 BRA 0x9b80009ae 0e00 MOVLW 0x00009b0 1477 ANDWF 0x77,0x0,0x00009b2 0905 IORLW 0x50009b4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c0009b6 d002 BRA 0x9bc else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c0009b8 0e00 MOVLW 0x00009ba d0c0 BRA 0xb3cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0009bc 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0009be 04db DECF 0xdb,0x0,0x00009c0 e15f BNZ 0xa80{ 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.c0009c2 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c0009c4 cfdb MOVFF 0xfdb,0x00009c6 f0000009c8 0ef2 MOVLW 0xf20009ca cfdb MOVFF 0xfdb,0x10009cc f0010009ce 0ef3 MOVLW 0xf30009d0 cfdb MOVFF 0xfdb,0x20009d2 f0020009d4 0ef4 MOVLW 0xf40009d6 cfdb MOVFF 0xfdb,0x30009d8 f0030009da 0e15 MOVLW 0x150009dc 90d8 BCF 0xd8,0x0,0x00009de 3203 RRCF 0x3,0x1,0x00009e0 3202 RRCF 0x2,0x1,0x00009e2 3201 RRCF 0x1,0x1,0x00009e4 3200 RRCF 0x0,0x1,0x00009e6 06e8 DECF 0xe8,0x1,0x00009e8 e1f9 BNZ 0x9dc0009ea 5000 MOVF 0x0,0x0,0x00009ec 6e61 MOVWF 0x61,0x00009ee 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c0009f0 cfdb MOVFF 0xfdb,0x50009f2 f0050009f4 0ef2 MOVLW 0xf20009f6 cfdb MOVFF 0xfdb,0x60009f8 f0060009fa 0ef3 MOVLW 0xf30009fc cfdb MOVFF 0xfdb,0x70009fe f007000a00 0ef4 MOVLW 0xf4000a02 cfdb MOVFF 0xfdb,0x8000a04 f008000a06 0e0d MOVLW 0xd000a08 90d8 BCF 0xd8,0x0,0x0000a0a 3208 RRCF 0x8,0x1,0x0000a0c 3207 RRCF 0x7,0x1,0x0000a0e 3206 RRCF 0x6,0x1,0x0000a10 3205 RRCF 0x5,0x1,0x0000a12 06e8 DECF 0xe8,0x1,0x0000a14 e1f9 BNZ 0xa08000a16 0ee0 MOVLW 0xe0000a18 1405 ANDWF 0x5,0x0,0x0000a1a 6e04 MOVWF 0x4,0x0000a1c 0ef1 MOVLW 0xf1000a1e cfdb MOVFF 0xfdb,0x0000a20 f000000a22 0ef2 MOVLW 0xf2000a24 cfdb MOVFF 0xfdb,0x1000a26 f001000a28 0ef3 MOVLW 0xf3000a2a cfdb MOVFF 0xfdb,0x2000a2c f002000a2e 0ef4 MOVLW 0xf4000a30 cfdb MOVFF 0xfdb,0x3000a32 f003000a34 0e10 MOVLW 0x10000a36 90d8 BCF 0xd8,0x0,0x0000a38 3203 RRCF 0x3,0x1,0x0000a3a 3202 RRCF 0x2,0x1,0x0000a3c 3201 RRCF 0x1,0x1,0x0000a3e 3200 RRCF 0x0,0x1,0x0000a40 06e8 DECF 0xe8,0x1,0x0000a42 e1f9 BNZ 0xa36000a44 0e03 MOVLW 0x3000a46 1400 ANDWF 0x0,0x0,0x0000a48 2404 ADDWF 0x4,0x0,0x0000a4a 6e62 MOVWF 0x62,0x0000a4c 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c000a4e cfdb MOVFF 0xfdb,0x0000a50 f000000a52 0ef2 MOVLW 0xf2000a54 cfdb MOVFF 0xfdb,0x1000a56 f001000a58 0ef3 MOVLW 0xf3000a5a cfdb MOVFF 0xfdb,0x2000a5c f002000a5e 0ef4 MOVLW 0xf4000a60 cfdb MOVFF 0xfdb,0x3000a62 f003000a64 0e08 MOVLW 0x8000a66 90d8 BCF 0xd8,0x0,0x0000a68 3203 RRCF 0x3,0x1,0x0000a6a 3202 RRCF 0x2,0x1,0x0000a6c 3201 RRCF 0x1,0x1,0x0000a6e 3200 RRCF 0x0,0x1,0x0000a70 06e8 DECF 0xe8,0x1,0x0000a72 e1f9 BNZ 0xa66000a74 5000 MOVF 0x0,0x0,0x0000a76 6e63 MOVWF 0x63,0x0000a78 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c000a7a 50db MOVF 0xdb,0x0,0x0000a7c 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000a7e d02f BRA 0xade 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.c000a80 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c000a82 cfdb MOVFF 0xfdb,0x0000a84 f000000a86 0ef2 MOVLW 0xf2000a88 cfdb MOVFF 0xfdb,0x1000a8a f001000a8c 0ef3 MOVLW 0xf3000a8e cfdb MOVFF 0xfdb,0x2000a90 f002000a92 0ef4 MOVLW 0xf4000a94 cfdb MOVFF 0xfdb,0x3000a96 f003000a98 0e03 MOVLW 0x3000a9a 90d8 BCF 0xd8,0x0,0x0000a9c 3203 RRCF 0x3,0x1,0x0000a9e 3202 RRCF 0x2,0x1,0x0000aa0 3201 RRCF 0x1,0x1,0x0000aa2 3200 RRCF 0x0,0x1,0x0000aa4 06e8 DECF 0xe8,0x1,0x0000aa6 e1f9 BNZ 0xa9a000aa8 5000 MOVF 0x0,0x0,0x0000aaa 6e61 MOVWF 0x61,0x0000aac 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000aae cfdb MOVFF 0xfdb,0x0000ab0 f000000ab2 0ef2 MOVLW 0xf2000ab4 cfdb MOVFF 0xfdb,0x1000ab6 f001000ab8 0ef3 MOVLW 0xf3000aba cfdb MOVFF 0xfdb,0x2000abc f002000abe 0ef4 MOVLW 0xf4000ac0 cfdb MOVFF 0xfdb,0x3000ac2 f003000ac4 0e05 MOVLW 0x5000ac6 0b1f ANDLW 0x1f000ac8 e007 BZ 0xad8000aca 90d8 BCF 0xd8,0x0,0x0000acc 3600 RLCF 0x0,0x1,0x0000ace 3601 RLCF 0x1,0x1,0x0000ad0 3602 RLCF 0x2,0x1,0x0000ad2 3603 RLCF 0x3,0x1,0x0000ad4 06e8 DECF 0xe8,0x1,0x0000ad6 e1f9 BNZ 0xaca000ad8 0ee0 MOVLW 0xe0000ada 1400 ANDWF 0x0,0x0,0x0000adc 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.c000ade 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c000ae0 50db MOVF 0xdb,0x0,0x0000ae2 0808 SUBLW 0x8000ae4 e203 BC 0xaec000ae6 0e08 MOVLW 0x8000ae8 6e65 MOVWF 0x65,0x0000aea d003 BRA 0xaf2000aec 0ef6 MOVLW 0xf6000aee 50db MOVF 0xdb,0x0,0x0000af0 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000af2 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000af4 50db MOVF 0xdb,0x0,0x0000af6 6e66 MOVWF 0x66,0x0000af8 0ef8 MOVLW 0xf8000afa 50db MOVF 0xdb,0x0,0x0000afc 6e67 MOVWF 0x67,0x0000afe 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000b00 50db MOVF 0xdb,0x0,0x0000b02 6e68 MOVWF 0x68,0x0000b04 0efa MOVLW 0xfa000b06 50db MOVF 0xdb,0x0,0x0000b08 6e69 MOVWF 0x69,0x0000b0a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000b0c 50db MOVF 0xdb,0x0,0x0000b0e 6e6a MOVWF 0x6a,0x0000b10 0efc MOVLW 0xfc000b12 50db MOVF 0xdb,0x0,0x0000b14 6e6b MOVWF 0x6b,0x0000b16 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000b18 50db MOVF 0xdb,0x0,0x0000b1a 6e6c MOVWF 0x6c,0x0000b1c 0efe MOVLW 0xfe000b1e 50db MOVF 0xdb,0x0,0x0000b20 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c000b22 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c000b24 04db DECF 0xdb,0x0,0x0000b26 e102 BNZ 0xb2c000b28 0e01 MOVLW 0x1000b2a d001 BRA 0xb2e000b2c 0e00 MOVLW 0x0000b2e b0e8 BTFSC 0xe8,0x0,0x0000b30 8662 BSF 0x62,0x3,0x0000b32 a0e8 BTFSS 0xe8,0x0,0x0000b34 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.c000b36 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.c000b38 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000b3a d000 BRA 0xb3cF:\MCP\projects\CAN\canNode\Source\CAN.c000b3c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000b3e cfe7 MOVFF 0xfe7,0xfd9000b40 ffd9000b42 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.c000b44 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000b46 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000b48 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000b4a 6eac MOVWF 0xac,0x0000b4c 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000b4e 6eab MOVWF 0xab,0x0000b50 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000b52 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000b54 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000b56 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.c000b58 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000b5a 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.c000b5c cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000b5e ffe6000b60 cfe1 MOVFF 0xfe1,0xfd9000b62 ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000b64 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000b66 50db MOVF 0xdb,0x0,0x0000b68 6ead MOVWF 0xad,0x0000b6a d848 RCALL 0xbfc while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000b6c 0900 IORLW 0x0000b6e e1fd BNZ 0xb6a000b70 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000b72 cfe7 MOVFF 0xfe7,0xfd9000b74 ffd9000b76 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.c000b78 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000b7a ffe6000b7c cfe1 MOVFF 0xfe1,0xfd9000b7e 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.c000b80 d83d RCALL 0xbfc while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000b82 0900 IORLW 0x0000b84 e1fd BNZ 0xb80000b86 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000b88 cfdb MOVFF 0xfdb,0xfe9000b8a ffe9000b8c 0efe MOVLW 0xfe000b8e cfdb MOVFF 0xfdb,0xfea000b90 ffea000b92 50ef MOVF 0xef,0x0,0x0000b94 6ee6 MOVWF 0xe6,0x0000b96 dfe2 RCALL 0xb5c000b98 52e5 MOVF 0xe5,0x1,0x0000b9a 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000b9c cfdb MOVFF 0xfdb,0xfe9000b9e ffe9000ba0 2adb INCF 0xdb,0x1,0x0000ba2 0efe MOVLW 0xfe000ba4 cfdb MOVFF 0xfdb,0xfea000ba6 ffea000ba8 e301 BNC 0xbac000baa 2adb INCF 0xdb,0x1,0x0000bac 50ef MOVF 0xef,0x0,0x0000bae e1e8 BNZ 0xb80000bb0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000bb2 cfe7 MOVFF 0xfe7,0xfd9000bb4 ffd9000bb6 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.c000bb8 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000bba ffe6000bbc cfe1 MOVFF 0xfe1,0xfd9000bbe 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.c000bc0 d81d RCALL 0xbfc while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000bc2 0900 IORLW 0x0000bc4 e1fd BNZ 0xbc0000bc6 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000bc8 cfdb MOVFF 0xfdb,0xff6000bca fff6000bcc 0efe MOVLW 0xfe000bce cfdb MOVFF 0xfdb,0xff7000bd0 fff7000bd2 0008 TBLRD000bd4 50f5 MOVF 0xf5,0x0,0x0000bd6 6ee6 MOVWF 0xe6,0x0000bd8 dfc1 RCALL 0xb5c000bda 52e5 MOVF 0xe5,0x1,0x0000bdc 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000bde cfdb MOVFF 0xfdb,0xff6000be0 fff6000be2 2adb INCF 0xdb,0x1,0x0000be4 0efe MOVLW 0xfe000be6 cfdb MOVFF 0xfdb,0xff7000be8 fff7000bea e301 BNC 0xbee000bec 2adb INCF 0xdb,0x1,0x0000bee 0008 TBLRD000bf0 50f5 MOVF 0xf5,0x0,0x0000bf2 e1e6 BNZ 0xbc0000bf4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000bf6 cfe7 MOVFF 0xfe7,0xfd9000bf8 ffd9000bfa 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.c000bfc 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000bfe 0b02 ANDLW 0x2000c00 0a02 XORLW 0x2000c02 e001 BZ 0xc06000c04 0e01 MOVLW 0x1000c06 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.c000c08 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000c0a 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.c000c0c 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000c0e 0b20 ANDLW 0x20000c10 e009 BZ 0xc24000c12 509d MOVF 0x9d,0x0,0x0000c14 0b20 ANDLW 0x20000c16 e006 BZ 0xc24{ F:\MCP\projects\CAN\canNode\Source\uart.c000c18 dff7 RCALL 0xc08 uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000c1a 6ee6 MOVWF 0xe6,0x0000c1c ecaa CALL 0x354,0x0000c1e f001000c20 52e5 MOVF 0xe5,0x1,0x0000c22 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000c24 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.c000cc4 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000cc6 6ed6 MOVWF 0xd6,0x0000cc8 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000cca 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.c000ccc 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000cce 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000cd0 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000cd2 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000cd4 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000cd6 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.c000cd8 c06a MOVFF 0x6a,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000cda f018000cdc c06b MOVFF 0x6b,0x19000cde f019000ce0 c06c MOVFF 0x6c,0x1a000ce2 f01a000ce4 c06d MOVFF 0x6d,0x1b000ce6 f01b000ce8 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.c000cea a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000cec d00b BRA 0xd04{ F:\MCP\projects\CAN\canNode\Source\Tick.c000cee 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000cf0 6ed7 MOVWF 0xd7,0x0000cf2 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000cf4 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000cf6 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000cf8 2b6a INCF 0x6a,0x1,0x1000cfa 0e00 MOVLW 0x0000cfc 236b ADDWFC 0x6b,0x1,0x1000cfe 236c ADDWFC 0x6c,0x1,0x1000d00 236d ADDWFC 0x6d,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000d02 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000d04 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c