Rev 32 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Oct 22 08:29:11 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Main application F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/compiler.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/Tick.h" F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/CAN.h" F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic BOOL heartBeatEnabled = FALSE; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c000046 ffe6000048 cfe1 MOVFF 0xfe1,0xfd900004a ffd900004c 0e0e MOVLW 0xe00004e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Inits F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000050 d8d1 RCALL 0x1f4 mainInit(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000052 eca9 CALL 0x752,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 ecee CALL 0xbdc,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 ecb7 CALL 0xd6e,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00005c f006F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c00005e ecc1 CALL 0xd82,0x0 if ((tickGet()-t)>=5*TICK_SECOND && heartBeatEnabled==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c000060 f006000062 0100 MOVLB 0x0000064 5161 MOVF 0x61,0x0,0x1000066 5c18 SUBWF 0x18,0x0,0x0000068 6e00 MOVWF 0x0,0x000006a 5162 MOVF 0x62,0x0,0x100006c 5819 SUBWFB 0x19,0x0,0x000006e 6e01 MOVWF 0x1,0x0000070 5163 MOVF 0x63,0x0,0x1000072 581a SUBWFB 0x1a,0x0,0x0000074 6e02 MOVWF 0x2,0x0000076 5164 MOVF 0x64,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 0560 DECF 0x60,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 ecc1 CALL 0xd82,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000094 f006000096 c018 MOVFF 0x18,0x61000098 f06100009a c019 MOVFF 0x19,0x6200009c f06200009e c01a MOVFF 0x1a,0x630000a0 f0630000a2 c01b MOVFF 0x1b,0x640000a4 f064F:\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 ec0e CALL 0xa1c,0x0000110 f005000112 6e00 MOVWF 0x0,0x0000114 0e0e MOVLW 0xe000116 5ee1 SUBWF 0xe1,0x1,0x0000118 5000 MOVF 0x0,0x0,0x000011a 0900 IORLW 0x000011c e1a0 BNZ 0x5e00011e d7d7 BRA 0xceF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canNode\Source\Main.c000120 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c000122 ffe4000124 cfe0 MOVFF 0xfe0,0xfe4000126 ffe4000128 6ee4 MOVWF 0xe4,0x000012a cfda MOVFF 0xfda,0xfe400012c ffe400012e cfe2 MOVFF 0xfe2,0xfda000130 ffda000132 cfe9 MOVFF 0xfe9,0xfe4000134 ffe4000136 cfea MOVFF 0xfea,0xfe4000138 ffe400013a cff6 MOVFF 0xff6,0xfe400013c ffe400013e cff7 MOVFF 0xff7,0xfe4000140 ffe4000142 cff5 MOVFF 0xff5,0xfe4000144 ffe4000146 cff3 MOVFF 0xff3,0xfe4000148 ffe400014a cff4 MOVFF 0xff4,0xfe400014c ffe400014e cffa MOVFF 0xffa,0xfe4000150 ffe4000152 ee00 LFSR 0x0,0x14000154 f014000156 0e0b MOVLW 0xb000158 04e8 DECF 0xe8,0x0,0x000015a e303 BNC 0x16200015c cfee MOVFF 0xfee,0xfe400015e ffe4000160 d7fb BRA 0x158000162 ee00 LFSR 0x0,0x0000164 f000000166 0e14 MOVLW 0x14000168 04e8 DECF 0xe8,0x0,0x000016a e303 BNC 0x17200016c cfee MOVFF 0xfee,0xfe400016e ffe4000170 d7fb BRA 0x168000172 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000174 ecd4 CALL 0x7a8,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 ec52 CALL 0xca4,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c00017a f006#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00017c ecca CALL 0xd94,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,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 ecfa CALL 0xbf4,0x00002ce f0050002d0 52e5 MOVF 0xe5,0x1,0x00002d2 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); 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 e216 BC 0x31a0002ee 50d9 MOVF 0xd9,0x0,0x00002f0 0ff7 ADDLW 0xf70002f2 6e00 MOVWF 0x0,0x00002f4 0eff MOVLW 0xff0002f6 20da ADDWFC 0xda,0x0,0x00002f8 6e01 MOVWF 0x1,0x00002fa 50de MOVF 0xde,0x0,0x00002fc 2400 ADDWF 0x0,0x0,0x00002fe 6ee9 MOVWF 0xe9,0x0000300 50dd MOVF 0xdd,0x0,0x0000302 2001 ADDWFC 0x1,0x0,0x0000304 6eea MOVWF 0xea,0x0000306 50ef MOVF 0xef,0x0,0x0000308 6ee6 MOVWF 0xe6,0x000030a ecfa CALL 0xbf4,0x000030c f00500030e 52e5 MOVF 0xe5,0x1,0x0000310 2adf INCF 0xdf,0x1,0x0000312 0e01 MOVLW 0x1000314 e3e0 BNC 0x2d6000316 2adb INCF 0xdb,0x1,0x0000318 d7de BRA 0x2d600031a 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canNode\Source\Main.c00031c 6ee6 MOVWF 0xe6,0x000031e ecfa CALL 0xbf4,0x0000320 f005000322 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000324 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canNode\Source\Main.c000326 5ce1 SUBWF 0xe1,0x0,0x0000328 e202 BC 0x32e00032a 6ae1 CLRF 0xe1,0x000032c 52e5 MOVF 0xe5,0x1,0x000032e 6ee1 MOVWF 0xe1,0x0000330 52e5 MOVF 0xe5,0x1,0x0000332 cfe7 MOVFF 0xfe7,0xfd9000334 ffd9000336 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.c000338 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canNode\Source\Main.c00033a ffe600033c cfe1 MOVFF 0xfe1,0xfd900033e ffd9000340 0e11 MOVLW 0x11000342 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cBYTE i; F:\MCP\projects\CAN\canNode\Source\Main.c000344 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canNode\Source\Main.c000346 6adb CLRF 0xdb,0x0000348 0e02 MOVLW 0x200034a 6adb CLRF 0xdb,0x0CAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cstatic BOOL waitingMessage = FALSE; F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK timeout=0; F:\MCP\projects\CAN\canNode\Source\Main.cstatic BYTE count=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00034c 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canNode\Source\Main.c00034e 0565 DECF 0x65,0x0,0x1000350 e11a BNZ 0x386000352 ecc1 CALL 0xd82,0x0000354 f006000356 0100 MOVLB 0x0000358 5166 MOVF 0x66,0x0,0x100035a 5c18 SUBWF 0x18,0x0,0x000035c 6e00 MOVWF 0x0,0x000035e 5167 MOVF 0x67,0x0,0x1000360 5819 SUBWFB 0x19,0x0,0x0000362 6e01 MOVWF 0x1,0x0000364 5168 MOVF 0x68,0x0,0x1000366 581a SUBWFB 0x1a,0x0,0x0000368 6e02 MOVWF 0x2,0x000036a 5169 MOVF 0x69,0x0,0x100036c 581b SUBWFB 0x1b,0x0,0x000036e 6e03 MOVWF 0x3,0x0000370 80d8 BSF 0xd8,0x0,0x0000372 0e05 MOVLW 0x5000374 5400 SUBFWB 0x0,0x0,0x0000376 0e00 MOVLW 0x0000378 5401 SUBFWB 0x1,0x0,0x000037a 0e00 MOVLW 0x000037c 5402 SUBFWB 0x2,0x0,0x000037e 0e00 MOVLW 0x0000380 5403 SUBFWB 0x3,0x0,0x0000382 e201 BC 0x386{ F:\MCP\projects\CAN\canNode\Source\Main.c000384 6b65 CLRF 0x65,0x1 waitingMessage=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000386 0565 DECF 0x65,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c000388 e001 BZ 0x38c00038a d08c BRA 0x4a4{ F:\MCP\projects\CAN\canNode\Source\Main.c00038c ecc1 CALL 0xd82,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c00038e f006000390 c018 MOVFF 0x18,0x66000392 f066000394 c019 MOVFF 0x19,0x67000396 f067000398 c01a MOVFF 0x1a,0x6800039a f06800039c c01b MOVFF 0x1b,0x6900039e f069F:\MCP\projects\CAN\canNode\Source\Main.c// UART END F:\MCP\projects\CAN\canNode\Source\Main.c0003a0 0e0e MOVLW 0xe if(count>=14) F:\MCP\projects\CAN\canNode\Source\Main.c0003a2 0100 MOVLB 0x00003a4 5d6a SUBWF 0x6a,0x0,0x10003a6 e335 BNC 0x412{ F:\MCP\projects\CAN\canNode\Source\Main.c0003a8 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canNode\Source\Main.c0003aa 50db MOVF 0xdb,0x0,0x00003ac 6e00 MOVWF 0x0,0x00003ae 6a01 CLRF 0x1,0x00003b0 0efa MOVLW 0xfa0003b2 1800 XORWF 0x0,0x0,0x00003b4 e12b BNZ 0x40c0003b6 5001 MOVF 0x1,0x0,0x00003b8 e129 BNZ 0x40c{ F:\MCP\projects\CAN\canNode\Source\Main.c0003ba 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0003bc 0f03 ADDLW 0x30003be 6ee9 MOVWF 0xe9,0x00003c0 cfda MOVFF 0xfda,0xfea0003c2 ffea0003c4 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 cfee MOVFF 0xfee,0xfe60003ee ffe60003f0 cfee MOVFF 0xfee,0xfe60003f2 ffe60003f4 cfee MOVFF 0xfee,0xfe60003f6 ffe60003f8 cfee MOVFF 0xfee,0xfe60003fa ffe60003fc ec0e CALL 0xa1c,0x00003fe f005000400 6e00 MOVWF 0x0,0x0000402 0e0e MOVLW 0xe000404 5ee1 SUBWF 0xe1,0x1,0x0000406 5000 MOVF 0x0,0x0,0x0000408 0900 IORLW 0x000040a e0d7 BZ 0x3ba} F:\MCP\projects\CAN\canNode\Source\Main.c00040c 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c00040e 6b65 CLRF 0x65,0x1000410 d196 BRA 0x73e return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// data F:\MCP\projects\CAN\canNode\Source\Main.c000412 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canNode\Source\Main.c000414 5d6a SUBWF 0x6a,0x0,0x1000416 e30f BNC 0x436{ F:\MCP\projects\CAN\canNode\Source\Main.c000418 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-6]=c; F:\MCP\projects\CAN\canNode\Source\Main.c00041a 0f09 ADDLW 0x900041c 6e00 MOVWF 0x0,0x000041e 0e06 MOVLW 0x6000420 5d6a SUBWF 0x6a,0x0,0x1000422 010f MOVLB 0xf000424 2400 ADDWF 0x0,0x0,0x0000426 6ee9 MOVWF 0xe9,0x0000428 0e00 MOVLW 0x000042a 20da ADDWFC 0xda,0x0,0x000042c 6eea MOVWF 0xea,0x000042e 0efe MOVLW 0xfe000430 cfdb MOVFF 0xfdb,0xfef000432 ffefcount++; F:\MCP\projects\CAN\canNode\Source\Main.c000434 d034 BRA 0x49e return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// data length F:\MCP\projects\CAN\canNode\Source\Main.c000436 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canNode\Source\Main.c000438 5d6a SUBWF 0x6a,0x0,0x100043a e305 BNC 0x446{ F:\MCP\projects\CAN\canNode\Source\Main.c00043c 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canNode\Source\Main.c00043e 50db MOVF 0xdb,0x0,0x0000440 6ee7 MOVWF 0xe7,0x0000442 0e08 MOVLW 0x8count++; F:\MCP\projects\CAN\canNode\Source\Main.c000444 d007 BRA 0x454 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// extended F:\MCP\projects\CAN\canNode\Source\Main.c000446 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canNode\Source\Main.c000448 5d6a SUBWF 0x6a,0x0,0x100044a e307 BNC 0x45a{ F:\MCP\projects\CAN\canNode\Source\Main.c00044c 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canNode\Source\Main.c00044e 50db MOVF 0xdb,0x0,0x0000450 6ee7 MOVWF 0xe7,0x0000452 0e07 MOVLW 0x7000454 cfe7 MOVFF 0xfe7,0xfdb000456 ffdbcount++; F:\MCP\projects\CAN\canNode\Source\Main.c000458 d023 BRA 0x4a0 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// ident F:\MCP\projects\CAN\canNode\Source\Main.c00045a 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canNode\Source\Main.c00045c 5d6a SUBWF 0x6a,0x0,0x100045e e322 BNC 0x4a4{ F:\MCP\projects\CAN\canNode\Source\Main.c000460 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canNode\Source\Main.c000462 cfdb MOVFF 0xfdb,0x0000464 f000000466 6a01 CLRF 0x1,0x0000468 6a02 CLRF 0x2,0x000046a 6a03 CLRF 0x3,0x000046c 0e08 MOVLW 0x800046e 036a MULWF 0x6a,0x1000470 50f3 MOVF 0xf3,0x0,0x0000472 0b1f ANDLW 0x1f000474 e007 BZ 0x484000476 90d8 BCF 0xd8,0x0,0x0000478 3600 RLCF 0x0,0x1,0x000047a 3601 RLCF 0x1,0x1,0x000047c 3602 RLCF 0x2,0x1,0x000047e 3603 RLCF 0x3,0x1,0x0000480 06e8 DECF 0xe8,0x1,0x0000482 e1f9 BNZ 0x476000484 50d9 MOVF 0xd9,0x0,0x0000486 0f03 ADDLW 0x3000488 6ee9 MOVWF 0xe9,0x000048a cfda MOVFF 0xfda,0xfea00048c ffea00048e 5000 MOVF 0x0,0x0,0x0000490 26ee ADDWF 0xee,0x1,0x0000492 5001 MOVF 0x1,0x0,0x0000494 22ee ADDWFC 0xee,0x1,0x0000496 5002 MOVF 0x2,0x0,0x0000498 22ee ADDWFC 0xee,0x1,0x000049a 5003 MOVF 0x3,0x0,0x000049c 22ee ADDWFC 0xee,0x1,0x000049e 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canNode\Source\Main.c0004a0 2b6a INCF 0x6a,0x1,0x10004a2 d14d BRA 0x73e return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004a4 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0004a6 50db MOVF 0xdb,0x0,0x00004a8 6e00 MOVWF 0x0,0x00004aa 6a01 CLRF 0x1,0x00004ac 0efd MOVLW 0xfd0004ae 1800 XORWF 0x0,0x0,0x00004b0 e11b BNZ 0x4e80004b2 5001 MOVF 0x1,0x0,0x00004b4 e119 BNZ 0x4e80004b6 5165 MOVF 0x65,0x0,0x10004b8 e117 BNZ 0x4e8{ F:\MCP\projects\CAN\canNode\Source\Main.c0004ba 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0004bc 6f65 MOVWF 0x65,0x10004be ecc1 CALL 0xd82,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0004c0 f0060004c2 c018 MOVFF 0x18,0x660004c4 f0660004c6 c019 MOVFF 0x19,0x670004c8 f0670004ca c01a MOVFF 0x1a,0x680004cc f0680004ce c01b MOVFF 0x1b,0x690004d0 f0690004d2 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canNode\Source\Main.c0004d4 6b6a CLRF 0x6a,0x10004d6 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\Main.c0004d8 6adb CLRF 0xdb,0x00004da 0e04 MOVLW 0x40004dc 6adb CLRF 0xdb,0x00004de 0e05 MOVLW 0x50004e0 6adb CLRF 0xdb,0x00004e2 0e06 MOVLW 0x60004e4 6adb CLRF 0xdb,0x00004e6 d12b BRA 0x73e return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0004e8 0efe MOVLW 0xfe if(c=='1' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0004ea 50db MOVF 0xdb,0x0,0x00004ec 0831 SUBLW 0x310004ee e154 BNZ 0x5980004f0 5165 MOVF 0x65,0x0,0x10004f2 e152 BNZ 0x598{ F:\MCP\projects\CAN\canNode\Source\Main.c0004f4 0e23 MOVLW 0x23 cm.ident=0x00000123; F:\MCP\projects\CAN\canNode\Source\Main.c0004f6 6ef3 MOVWF 0xf3,0x00004f8 0e03 MOVLW 0x30004fa cff3 MOVFF 0xff3,0xfdb0004fc ffdb0004fe 0e01 MOVLW 0x1000500 6ef3 MOVWF 0xf3,0x0000502 0e04 MOVLW 0x4000504 cff3 MOVFF 0xff3,0xfdb000506 ffdb000508 0e05 MOVLW 0x500050a 6adb CLRF 0xdb,0x000050c 0e06 MOVLW 0x600050e 6adb CLRF 0xdb,0x0000510 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000512 6adb CLRF 0xdb,0x0000514 0e04 MOVLW 0x4 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c000516 6ef3 MOVWF 0xf3,0x0000518 0e08 MOVLW 0x800051a cff3 MOVFF 0xff3,0xfdb00051c ffdb00051e 0e48 MOVLW 0x48 cm.data[3]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c000520 6ef3 MOVWF 0xf3,0x0000522 0e0c MOVLW 0xc000524 cff3 MOVFF 0xff3,0xfdb000526 ffdb000528 0e65 MOVLW 0x65 cm.data[2]='e'; F:\MCP\projects\CAN\canNode\Source\Main.c00052a 6ef3 MOVWF 0xf3,0x000052c 0e0b MOVLW 0xb00052e cff3 MOVFF 0xff3,0xfdb000530 ffdb000532 0e6a MOVLW 0x6a cm.data[1]='j'; F:\MCP\projects\CAN\canNode\Source\Main.c000534 6ef3 MOVWF 0xf3,0x0000536 0e0a MOVLW 0xa000538 cff3 MOVFF 0xff3,0xfdb00053a ffdb00053c 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c00053e 6ef3 MOVWF 0xf3,0x0000540 0e09 MOVLW 0x9000542 cff3 MOVFF 0xff3,0xfdb000544 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c000546 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000548 0f03 ADDLW 0x300054a 6ee9 MOVWF 0xe9,0x000054c cfda MOVFF 0xfda,0xfea00054e ffea000550 cfee MOVFF 0xfee,0xfe6000552 ffe6000554 cfee MOVFF 0xfee,0xfe6000556 ffe6000558 cfee MOVFF 0xfee,0xfe600055a ffe600055c cfee MOVFF 0xfee,0xfe600055e ffe6000560 cfee MOVFF 0xfee,0xfe6000562 ffe6000564 cfee MOVFF 0xfee,0xfe6000566 ffe6000568 cfee MOVFF 0xfee,0xfe600056a ffe600056c cfee MOVFF 0xfee,0xfe600056e ffe6000570 cfee MOVFF 0xfee,0xfe6000572 ffe6000574 cfee MOVFF 0xfee,0xfe6000576 ffe6000578 cfee MOVFF 0xfee,0xfe600057a ffe600057c cfee MOVFF 0xfee,0xfe600057e ffe6000580 cfee MOVFF 0xfee,0xfe6000582 ffe6000584 cfee MOVFF 0xfee,0xfe6000586 ffe6000588 ec0e CALL 0xa1c,0x000058a f00500058c 6e00 MOVWF 0x0,0x000058e 0e0e MOVLW 0xe000590 5ee1 SUBWF 0xe1,0x1,0x0000592 5000 MOVF 0x0,0x0,0x0000594 0900 IORLW 0x0000596 e0d7 BZ 0x546} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000598 0efe MOVLW 0xfe if(c=='2' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c00059a 50db MOVF 0xdb,0x0,0x000059c 0832 SUBLW 0x3200059e e16f BNZ 0x67e0005a0 0100 MOVLB 0x00005a2 5165 MOVF 0x65,0x0,0x10005a4 e16c BNZ 0x67e{ F:\MCP\projects\CAN\canNode\Source\Main.c0005a6 0ef0 MOVLW 0xf0 cm.ident=0x0ABCDEF0; F:\MCP\projects\CAN\canNode\Source\Main.c0005a8 6ef3 MOVWF 0xf3,0x00005aa 0e03 MOVLW 0x30005ac cff3 MOVFF 0xff3,0xfdb0005ae ffdb0005b0 0ede MOVLW 0xde0005b2 6ef3 MOVWF 0xf3,0x00005b4 0e04 MOVLW 0x40005b6 cff3 MOVFF 0xff3,0xfdb0005b8 ffdb0005ba 0ebc MOVLW 0xbc0005bc 6ef3 MOVWF 0xf3,0x00005be 0e05 MOVLW 0x50005c0 cff3 MOVFF 0xff3,0xfdb0005c2 ffdb0005c4 0e0a MOVLW 0xa0005c6 6ef3 MOVWF 0xf3,0x00005c8 0e06 MOVLW 0x60005ca cff3 MOVFF 0xff3,0xfdb0005cc ffdb0005ce 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0005d0 6ef3 MOVWF 0xf3,0x00005d2 0e07 MOVLW 0x70005d4 cff3 MOVFF 0xff3,0xfdb0005d6 ffdb0005d8 0e08 MOVLW 0x8 cm.data_length=8; F:\MCP\projects\CAN\canNode\Source\Main.c0005da 6edb MOVWF 0xdb,0x00005dc 0e47 MOVLW 0x47 cm.data[7]='G'; F:\MCP\projects\CAN\canNode\Source\Main.c0005de 6ef3 MOVWF 0xf3,0x00005e0 0e10 MOVLW 0x100005e2 cff3 MOVFF 0xff3,0xfdb0005e4 ffdb0005e6 0e6f MOVLW 0x6f cm.data[6]='o'; F:\MCP\projects\CAN\canNode\Source\Main.c0005e8 6ef3 MOVWF 0xf3,0x00005ea 0e0f MOVLW 0xf0005ec cff3 MOVFF 0xff3,0xfdb0005ee ffdb0005f0 0e64 MOVLW 0x64 cm.data[5]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c0005f2 6ef3 MOVWF 0xf3,0x00005f4 0e0e MOVLW 0xe0005f6 cff3 MOVFF 0xff3,0xfdb0005f8 ffdb0005fa 0e20 MOVLW 0x20 cm.data[4]=' '; F:\MCP\projects\CAN\canNode\Source\Main.c0005fc 6ef3 MOVWF 0xf3,0x00005fe 0e0d MOVLW 0xd000600 cff3 MOVFF 0xff3,0xfdb000602 ffdb000604 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c000606 6ef3 MOVWF 0xf3,0x0000608 0e0c MOVLW 0xc00060a cff3 MOVFF 0xff3,0xfdb00060c ffdb00060e 0e61 MOVLW 0x61 cm.data[2]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c000610 6ef3 MOVWF 0xf3,0x0000612 0e0b MOVLW 0xb000614 cff3 MOVFF 0xff3,0xfdb000616 ffdb000618 0e67 MOVLW 0x67 cm.data[1]='g'; F:\MCP\projects\CAN\canNode\Source\Main.c00061a 6ef3 MOVWF 0xf3,0x000061c 0e0a MOVLW 0xa00061e cff3 MOVFF 0xff3,0xfdb000620 ffdb000622 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000624 6ef3 MOVWF 0xf3,0x0000626 0e09 MOVLW 0x9000628 cff3 MOVFF 0xff3,0xfdb00062a ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00062c 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c00062e 0f03 ADDLW 0x3000630 6ee9 MOVWF 0xe9,0x0000632 cfda MOVFF 0xfda,0xfea000634 ffea000636 cfee MOVFF 0xfee,0xfe6000638 ffe600063a cfee MOVFF 0xfee,0xfe600063c ffe600063e cfee MOVFF 0xfee,0xfe6000640 ffe6000642 cfee MOVFF 0xfee,0xfe6000644 ffe6000646 cfee MOVFF 0xfee,0xfe6000648 ffe600064a cfee MOVFF 0xfee,0xfe600064c ffe600064e cfee MOVFF 0xfee,0xfe6000650 ffe6000652 cfee MOVFF 0xfee,0xfe6000654 ffe6000656 cfee MOVFF 0xfee,0xfe6000658 ffe600065a cfee MOVFF 0xfee,0xfe600065c ffe600065e cfee MOVFF 0xfee,0xfe6000660 ffe6000662 cfee MOVFF 0xfee,0xfe6000664 ffe6000666 cfee MOVFF 0xfee,0xfe6000668 ffe600066a cfee MOVFF 0xfee,0xfe600066c ffe600066e ec0e CALL 0xa1c,0x0000670 f005000672 6e00 MOVWF 0x0,0x0000674 0e0e MOVLW 0xe000676 5ee1 SUBWF 0xe1,0x1,0x0000678 5000 MOVF 0x0,0x0,0x000067a 0900 IORLW 0x000067c e0d7 BZ 0x62c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00067e 0efe MOVLW 0xfe if(c=='3' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c000680 50db MOVF 0xdb,0x0,0x0000682 0833 SUBLW 0x33000684 e15c BNZ 0x73e000686 0100 MOVLB 0x0000688 5165 MOVF 0x65,0x0,0x100068a e159 BNZ 0x73e{ F:\MCP\projects\CAN\canNode\Source\Main.c00068c 0e10 MOVLW 0x10 cm.ident=0x00000010; F:\MCP\projects\CAN\canNode\Source\Main.c00068e 6ef3 MOVWF 0xf3,0x0000690 0e03 MOVLW 0x3000692 cff3 MOVFF 0xff3,0xfdb000694 ffdb000696 0e04 MOVLW 0x4000698 6adb CLRF 0xdb,0x000069a 0e05 MOVLW 0x500069c 6adb CLRF 0xdb,0x000069e 0e06 MOVLW 0x60006a0 6adb CLRF 0xdb,0x00006a2 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0006a4 6adb CLRF 0xdb,0x00006a6 0e06 MOVLW 0x6 cm.data_length=6; F:\MCP\projects\CAN\canNode\Source\Main.c0006a8 6ef3 MOVWF 0xf3,0x00006aa 0e08 MOVLW 0x80006ac cff3 MOVFF 0xff3,0xfdb0006ae ffdb0006b0 0e35 MOVLW 0x35 cm.data[5]='5'; F:\MCP\projects\CAN\canNode\Source\Main.c0006b2 6ef3 MOVWF 0xf3,0x00006b4 0e0e MOVLW 0xe0006b6 cff3 MOVFF 0xff3,0xfdb0006b8 ffdb0006ba 0e34 MOVLW 0x34 cm.data[4]='4'; F:\MCP\projects\CAN\canNode\Source\Main.c0006bc 6ef3 MOVWF 0xf3,0x00006be 0e0d MOVLW 0xd0006c0 cff3 MOVFF 0xff3,0xfdb0006c2 ffdb0006c4 0e33 MOVLW 0x33 cm.data[3]='3'; F:\MCP\projects\CAN\canNode\Source\Main.c0006c6 6ef3 MOVWF 0xf3,0x00006c8 0e0c MOVLW 0xc0006ca cff3 MOVFF 0xff3,0xfdb0006cc ffdb0006ce 0e32 MOVLW 0x32 cm.data[2]='2'; F:\MCP\projects\CAN\canNode\Source\Main.c0006d0 6ef3 MOVWF 0xf3,0x00006d2 0e0b MOVLW 0xb0006d4 cff3 MOVFF 0xff3,0xfdb0006d6 ffdb0006d8 0e31 MOVLW 0x31 cm.data[1]='1'; F:\MCP\projects\CAN\canNode\Source\Main.c0006da 6ef3 MOVWF 0xf3,0x00006dc 0e0a MOVLW 0xa0006de cff3 MOVFF 0xff3,0xfdb0006e0 ffdb0006e2 0e30 MOVLW 0x30 cm.data[0]='0'; F:\MCP\projects\CAN\canNode\Source\Main.c0006e4 6ef3 MOVWF 0xf3,0x00006e6 0e09 MOVLW 0x90006e8 cff3 MOVFF 0xff3,0xfdb0006ea ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0006ec 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0006ee 0f03 ADDLW 0x30006f0 6ee9 MOVWF 0xe9,0x00006f2 cfda MOVFF 0xfda,0xfea0006f4 ffea0006f6 cfee MOVFF 0xfee,0xfe60006f8 ffe60006fa cfee MOVFF 0xfee,0xfe60006fc ffe60006fe cfee MOVFF 0xfee,0xfe6000700 ffe6000702 cfee MOVFF 0xfee,0xfe6000704 ffe6000706 cfee MOVFF 0xfee,0xfe6000708 ffe600070a cfee MOVFF 0xfee,0xfe600070c ffe600070e cfee MOVFF 0xfee,0xfe6000710 ffe6000712 cfee MOVFF 0xfee,0xfe6000714 ffe6000716 cfee MOVFF 0xfee,0xfe6000718 ffe600071a cfee MOVFF 0xfee,0xfe600071c ffe600071e cfee MOVFF 0xfee,0xfe6000720 ffe6000722 cfee MOVFF 0xfee,0xfe6000724 ffe6000726 cfee MOVFF 0xfee,0xfe6000728 ffe600072a cfee MOVFF 0xfee,0xfe600072c ffe600072e ec0e CALL 0xa1c,0x0000730 f005000732 6e00 MOVWF 0x0,0x0000734 0e0e MOVLW 0xe000736 5ee1 SUBWF 0xe1,0x1,0x0000738 5000 MOVF 0x0,0x0,0x000073a 0900 IORLW 0x000073c e0d7 BZ 0x6ec} 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.c00073e 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canNode\Source\Main.c000740 5ce1 SUBWF 0xe1,0x0,0x0000742 e202 BC 0x748000744 6ae1 CLRF 0xe1,0x0000746 52e5 MOVF 0xe5,0x1,0x0000748 6ee1 MOVWF 0xe1,0x000074a 52e5 MOVF 0xe5,0x1,0x000074c cfe7 MOVFF 0xfe7,0xfd900074e ffd9000750 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.c000752 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c000754 6e6f MOVWF 0x6f,0x0000756 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c000758 146e ANDWF 0x6e,0x0,0x000075a 0880 SUBLW 0x8000075c e1fc BNZ 0x756F:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00075e 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.c000760 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000762 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.c000764 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c000766 1070 IORWF 0x70,0x0,0x0000768 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c00076a 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.c00076c 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00076e 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000770 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.c000772 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000774 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000776 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.c000778 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.c00077a 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.c00077c 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00077e 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000780 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000782 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000784 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000786 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.c000788 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c00078a 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.c00078c 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00078e 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000790 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000792 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c000794 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000796 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.c000798 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.c00079a 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c00079c 6e6f MOVWF 0x6f,0x000079e 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c0007a0 146e ANDWF 0x6e,0x0,0x00007a2 0840 SUBLW 0x400007a4 e1fc BNZ 0x79e#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.c0007a6 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.c0007a8 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c0007aa 0b02 ANDLW 0x20007ac e106 BNZ 0x7ba0007ae 50a4 MOVF 0xa4,0x0,0x00007b0 0b02 ANDLW 0x20007b2 e103 BNZ 0x7ba0007b4 50a4 MOVF 0xa4,0x0,0x00007b6 0b01 ANDLW 0x10007b8 e03a BZ 0x82e{ 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.c0007ba ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007bc d004 BRA 0x7c60007be 0e00 MOVLW 0x00007c0 1477 ANDWF 0x77,0x0,0x00007c2 0910 IORLW 0x100007c4 d02b BRA 0x81c else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007c6 010f MOVLB 0xf0007c8 af50 BTFSS 0x50,0x7,0x10007ca d004 BRA 0x7d40007cc 0e00 MOVLW 0x00007ce 1477 ANDWF 0x77,0x0,0x00007d0 0911 IORLW 0x110007d2 d024 BRA 0x81c else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007d4 010e MOVLB 0xe0007d6 af20 BTFSS 0x20,0x7,0x10007d8 d004 BRA 0x7e20007da 0e00 MOVLW 0x00007dc 1477 ANDWF 0x77,0x0,0x00007de 0912 IORLW 0x120007e0 d01d BRA 0x81c else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007e2 af30 BTFSS 0x30,0x7,0x10007e4 d004 BRA 0x7ee0007e6 0e00 MOVLW 0x00007e8 1477 ANDWF 0x77,0x0,0x00007ea 0913 IORLW 0x130007ec d017 BRA 0x81c else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007ee af40 BTFSS 0x40,0x7,0x10007f0 d004 BRA 0x7fa0007f2 0e00 MOVLW 0x00007f4 1477 ANDWF 0x77,0x0,0x00007f6 0914 IORLW 0x140007f8 d011 BRA 0x81c else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0007fa af50 BTFSS 0x50,0x7,0x10007fc d004 BRA 0x8060007fe 0e00 MOVLW 0x0000800 1477 ANDWF 0x77,0x0,0x0000802 0915 IORLW 0x15000804 d00b BRA 0x81c else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000806 af60 BTFSS 0x60,0x7,0x1000808 d004 BRA 0x81200080a 0e00 MOVLW 0x000080c 1477 ANDWF 0x77,0x0,0x000080e 0916 IORLW 0x16000810 d005 BRA 0x81c else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000812 af70 BTFSS 0x70,0x7,0x1000814 d005 BRA 0x820000816 0e00 MOVLW 0x0000818 1477 ANDWF 0x77,0x0,0x000081a 0917 IORLW 0x1700081c 6e77 MOVWF 0x77,0x000081e d808 RCALL 0x830F:\MCP\projects\CAN\canNode\Source\CAN.c000820 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000822 d003 BRA 0x82a000824 92a4 BCF 0xa4,0x1,0x0000826 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000828 92a4 BCF 0xa4,0x1,0x000082a b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00082c 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c00082e 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.c000830 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c000832 ffe6000834 cfe1 MOVFF 0xfe1,0xfd9000836 ffd9000838 0e0e MOVLW 0xe00083a 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.c00083c 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c00083e 0b08 ANDLW 0x8000840 e102 BNZ 0x846000842 0e00 MOVLW 0x0000844 d001 BRA 0x848000846 0e01 MOVLW 0x1000848 6ee7 MOVWF 0xe7,0x000084a 0e04 MOVLW 0x400084c cfe7 MOVFF 0xfe7,0xfdb00084e ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c000850 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000852 6ade CLRF 0xde,0x0000854 6ade CLRF 0xde,0x0000856 6add CLRF 0xdd,0x0000858 52dd MOVF 0xdd,0x1,0x000085a 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00085c 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c00085e e163 BNZ 0x926{ 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.c000860 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.c000862 6e00 MOVWF 0x0,0x0000864 6a01 CLRF 0x1,0x0000866 6a02 CLRF 0x2,0x0000868 6a03 CLRF 0x3,0x000086a 0e15 MOVLW 0x1500086c 0b1f ANDLW 0x1f00086e e007 BZ 0x87e000870 90d8 BCF 0xd8,0x0,0x0000872 3600 RLCF 0x0,0x1,0x0000874 3601 RLCF 0x1,0x1,0x0000876 3602 RLCF 0x2,0x1,0x0000878 3603 RLCF 0x3,0x1,0x000087a 06e8 DECF 0xe8,0x1,0x000087c e1f9 BNZ 0x87000087e 0ee0 MOVLW 0xe0000880 1462 ANDWF 0x62,0x0,0x0000882 6e04 MOVWF 0x4,0x0000884 6a05 CLRF 0x5,0x0000886 6a06 CLRF 0x6,0x0000888 6a07 CLRF 0x7,0x000088a 0e0d MOVLW 0xd00088c 0b1f ANDLW 0x1f00088e e007 BZ 0x89e000890 90d8 BCF 0xd8,0x0,0x0000892 3604 RLCF 0x4,0x1,0x0000894 3605 RLCF 0x5,0x1,0x0000896 3606 RLCF 0x6,0x1,0x0000898 3607 RLCF 0x7,0x1,0x000089a 06e8 DECF 0xe8,0x1,0x000089c e1f9 BNZ 0x89000089e 5004 MOVF 0x4,0x0,0x00008a0 2600 ADDWF 0x0,0x1,0x00008a2 5005 MOVF 0x5,0x0,0x00008a4 2201 ADDWFC 0x1,0x1,0x00008a6 5006 MOVF 0x6,0x0,0x00008a8 2202 ADDWFC 0x2,0x1,0x00008aa 5007 MOVF 0x7,0x0,0x00008ac 2203 ADDWFC 0x3,0x1,0x00008ae 0e03 MOVLW 0x30008b0 1462 ANDWF 0x62,0x0,0x00008b2 6e08 MOVWF 0x8,0x00008b4 6a09 CLRF 0x9,0x00008b6 6a0a CLRF 0xa,0x00008b8 6a0b CLRF 0xb,0x00008ba 0e10 MOVLW 0x100008bc 0b1f ANDLW 0x1f0008be e007 BZ 0x8ce0008c0 90d8 BCF 0xd8,0x0,0x00008c2 3608 RLCF 0x8,0x1,0x00008c4 3609 RLCF 0x9,0x1,0x00008c6 360a RLCF 0xa,0x1,0x00008c8 360b RLCF 0xb,0x1,0x00008ca 06e8 DECF 0xe8,0x1,0x00008cc e1f9 BNZ 0x8c00008ce 5008 MOVF 0x8,0x0,0x00008d0 2600 ADDWF 0x0,0x1,0x00008d2 5009 MOVF 0x9,0x0,0x00008d4 2201 ADDWFC 0x1,0x1,0x00008d6 500a MOVF 0xa,0x0,0x00008d8 2202 ADDWFC 0x2,0x1,0x00008da 500b MOVF 0xb,0x0,0x00008dc 2203 ADDWFC 0x3,0x1,0x00008de 5063 MOVF 0x63,0x0,0x00008e0 6e0c MOVWF 0xc,0x00008e2 6a0d CLRF 0xd,0x00008e4 6a0e CLRF 0xe,0x00008e6 6a0f CLRF 0xf,0x00008e8 0e08 MOVLW 0x80008ea 0b1f ANDLW 0x1f0008ec e007 BZ 0x8fc0008ee 90d8 BCF 0xd8,0x0,0x00008f0 360c RLCF 0xc,0x1,0x00008f2 360d RLCF 0xd,0x1,0x00008f4 360e RLCF 0xe,0x1,0x00008f6 360f RLCF 0xf,0x1,0x00008f8 06e8 DECF 0xe8,0x1,0x00008fa e1f9 BNZ 0x8ee0008fc 500c MOVF 0xc,0x0,0x00008fe 2600 ADDWF 0x0,0x1,0x0000900 500d MOVF 0xd,0x0,0x0000902 2201 ADDWFC 0x1,0x1,0x0000904 500e MOVF 0xe,0x0,0x0000906 2202 ADDWFC 0x2,0x1,0x0000908 500f MOVF 0xf,0x0,0x000090a 2203 ADDWFC 0x3,0x1,0x000090c 5064 MOVF 0x64,0x0,0x000090e 6e10 MOVWF 0x10,0x0000910 6a11 CLRF 0x11,0x0000912 6a12 CLRF 0x12,0x0000914 6a13 CLRF 0x13,0x0000916 50e8 MOVF 0xe8,0x0,0x0000918 2600 ADDWF 0x0,0x1,0x000091a 5011 MOVF 0x11,0x0,0x000091c 2201 ADDWFC 0x1,0x1,0x000091e 5012 MOVF 0x12,0x0,0x0000920 2202 ADDWFC 0x2,0x1,0x0000922 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000924 d023 BRA 0x96c 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.c000926 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c000928 6e00 MOVWF 0x0,0x000092a 6a01 CLRF 0x1,0x000092c 6a02 CLRF 0x2,0x000092e 6a03 CLRF 0x3,0x0000930 0e03 MOVLW 0x3000932 0b1f ANDLW 0x1f000934 e007 BZ 0x944000936 90d8 BCF 0xd8,0x0,0x0000938 3600 RLCF 0x0,0x1,0x000093a 3601 RLCF 0x1,0x1,0x000093c 3602 RLCF 0x2,0x1,0x000093e 3603 RLCF 0x3,0x1,0x0000940 06e8 DECF 0xe8,0x1,0x0000942 e1f9 BNZ 0x936000944 5062 MOVF 0x62,0x0,0x0000946 6e04 MOVWF 0x4,0x0000948 6a05 CLRF 0x5,0x000094a 6a06 CLRF 0x6,0x000094c 6a07 CLRF 0x7,0x000094e 0e05 MOVLW 0x5000950 90d8 BCF 0xd8,0x0,0x0000952 3207 RRCF 0x7,0x1,0x0000954 3206 RRCF 0x6,0x1,0x0000956 3205 RRCF 0x5,0x1,0x0000958 3204 RRCF 0x4,0x1,0x000095a 06e8 DECF 0xe8,0x1,0x000095c e1f9 BNZ 0x95000095e 5004 MOVF 0x4,0x0,0x0000960 2600 ADDWF 0x0,0x1,0x0000962 5005 MOVF 0x5,0x0,0x0000964 2201 ADDWFC 0x1,0x1,0x0000966 5006 MOVF 0x6,0x0,0x0000968 2202 ADDWFC 0x2,0x1,0x000096a 5007 MOVF 0x7,0x0,0x000096c 2203 ADDWFC 0x3,0x1,0x000096e c000 MOVFF 0x0,0xfdf000970 ffdf000972 0e01 MOVLW 0x1000974 c001 MOVFF 0x1,0xfdb000976 ffdb000978 0e02 MOVLW 0x200097a c002 MOVFF 0x2,0xfdb00097c ffdb00097e 0e03 MOVLW 0x3000980 c003 MOVFF 0x3,0xfdb000982 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.c000984 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c000986 cf65 MOVFF 0xf65,0xfdb000988 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c00098a 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c00098c cf66 MOVFF 0xf66,0xfdb00098e ffdb000990 0e07 MOVLW 0x7000992 cf67 MOVFF 0xf67,0xfdb000994 ffdb000996 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c000998 cf68 MOVFF 0xf68,0xfdb00099a ffdb00099c 0e09 MOVLW 0x900099e cf69 MOVFF 0xf69,0xfdb0009a0 ffdb0009a2 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c0009a4 cf6a MOVFF 0xf6a,0xfdb0009a6 ffdb0009a8 0e0b MOVLW 0xb0009aa cf6b MOVFF 0xf6b,0xfdb0009ac ffdb0009ae 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c0009b0 cf6c MOVFF 0xf6c,0xfdb0009b2 ffdb0009b4 0e0d MOVLW 0xd0009b6 cf6d MOVFF 0xf6d,0xfdb0009b8 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c0009ba 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.c0009bc cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c0009be ffe90009c0 cfda MOVFF 0xfda,0xfea0009c2 ffea0009c4 cfee MOVFF 0xfee,0xfe60009c6 ffe60009c8 cfee MOVFF 0xfee,0xfe60009ca ffe60009cc cfee MOVFF 0xfee,0xfe60009ce ffe60009d0 cfee MOVFF 0xfee,0xfe60009d2 ffe60009d4 cfee MOVFF 0xfee,0xfe60009d6 ffe60009d8 cfee MOVFF 0xfee,0xfe60009da ffe60009dc cfee MOVFF 0xfee,0xfe60009de ffe60009e0 cfee MOVFF 0xfee,0xfe60009e2 ffe60009e4 cfee MOVFF 0xfee,0xfe60009e6 ffe60009e8 cfee MOVFF 0xfee,0xfe60009ea ffe60009ec cfee MOVFF 0xfee,0xfe60009ee ffe60009f0 cfee MOVFF 0xfee,0xfe60009f2 ffe60009f4 cfee MOVFF 0xfee,0xfe60009f6 ffe60009f8 cfee MOVFF 0xfee,0xfe60009fa ffe60009fc ecff CALL 0x1fe,0x00009fe f000000a00 6e00 MOVWF 0x0,0x0000a02 0e0e MOVLW 0xe000a04 5ee1 SUBWF 0xe1,0x1,0x0000a06 5000 MOVF 0x0,0x0,0x0000a08 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c000a0a 5ce1 SUBWF 0xe1,0x0,0x0000a0c e202 BC 0xa12000a0e 6ae1 CLRF 0xe1,0x0000a10 52e5 MOVF 0xe5,0x1,0x0000a12 6ee1 MOVWF 0xe1,0x0000a14 52e5 MOVF 0xe5,0x1,0x0000a16 cfe7 MOVFF 0xfe7,0xfd9000a18 ffd9000a1a 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.c000a1c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c000a1e ffe6000a20 cfe1 MOVFF 0xfe1,0xfd9000a22 ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.c000a24 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a26 b740 BTFSC 0x40,0x3,0x1000a28 d004 BRA 0xa32000a2a 0e00 MOVLW 0x0000a2c 1477 ANDWF 0x77,0x0,0x0000a2e 0903 IORLW 0x3000a30 6e77 MOVWF 0x77,0x0000a32 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a34 b730 BTFSC 0x30,0x3,0x1000a36 d004 BRA 0xa40000a38 0e00 MOVLW 0x0000a3a 1477 ANDWF 0x77,0x0,0x0000a3c 0904 IORLW 0x4000a3e 6e77 MOVWF 0x77,0x0000a40 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c000a42 b720 BTFSC 0x20,0x3,0x1000a44 d005 BRA 0xa50000a46 0e00 MOVLW 0x0000a48 1477 ANDWF 0x77,0x0,0x0000a4a 0905 IORLW 0x5000a4c 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c000a4e d002 BRA 0xa54 else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c000a50 0e00 MOVLW 0x0000a52 d0c0 BRA 0xbd4F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000a54 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000a56 04db DECF 0xdb,0x0,0x0000a58 e15f BNZ 0xb18{ 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.c000a5a 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c000a5c cfdb MOVFF 0xfdb,0x0000a5e f000000a60 0ef2 MOVLW 0xf2000a62 cfdb MOVFF 0xfdb,0x1000a64 f001000a66 0ef3 MOVLW 0xf3000a68 cfdb MOVFF 0xfdb,0x2000a6a f002000a6c 0ef4 MOVLW 0xf4000a6e cfdb MOVFF 0xfdb,0x3000a70 f003000a72 0e15 MOVLW 0x15000a74 90d8 BCF 0xd8,0x0,0x0000a76 3203 RRCF 0x3,0x1,0x0000a78 3202 RRCF 0x2,0x1,0x0000a7a 3201 RRCF 0x1,0x1,0x0000a7c 3200 RRCF 0x0,0x1,0x0000a7e 06e8 DECF 0xe8,0x1,0x0000a80 e1f9 BNZ 0xa74000a82 5000 MOVF 0x0,0x0,0x0000a84 6e61 MOVWF 0x61,0x0000a86 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000a88 cfdb MOVFF 0xfdb,0x5000a8a f005000a8c 0ef2 MOVLW 0xf2000a8e cfdb MOVFF 0xfdb,0x6000a90 f006000a92 0ef3 MOVLW 0xf3000a94 cfdb MOVFF 0xfdb,0x7000a96 f007000a98 0ef4 MOVLW 0xf4000a9a cfdb MOVFF 0xfdb,0x8000a9c f008000a9e 0e0d MOVLW 0xd000aa0 90d8 BCF 0xd8,0x0,0x0000aa2 3208 RRCF 0x8,0x1,0x0000aa4 3207 RRCF 0x7,0x1,0x0000aa6 3206 RRCF 0x6,0x1,0x0000aa8 3205 RRCF 0x5,0x1,0x0000aaa 06e8 DECF 0xe8,0x1,0x0000aac e1f9 BNZ 0xaa0000aae 0ee0 MOVLW 0xe0000ab0 1405 ANDWF 0x5,0x0,0x0000ab2 6e04 MOVWF 0x4,0x0000ab4 0ef1 MOVLW 0xf1000ab6 cfdb MOVFF 0xfdb,0x0000ab8 f000000aba 0ef2 MOVLW 0xf2000abc cfdb MOVFF 0xfdb,0x1000abe f001000ac0 0ef3 MOVLW 0xf3000ac2 cfdb MOVFF 0xfdb,0x2000ac4 f002000ac6 0ef4 MOVLW 0xf4000ac8 cfdb MOVFF 0xfdb,0x3000aca f003000acc 0e10 MOVLW 0x10000ace 90d8 BCF 0xd8,0x0,0x0000ad0 3203 RRCF 0x3,0x1,0x0000ad2 3202 RRCF 0x2,0x1,0x0000ad4 3201 RRCF 0x1,0x1,0x0000ad6 3200 RRCF 0x0,0x1,0x0000ad8 06e8 DECF 0xe8,0x1,0x0000ada e1f9 BNZ 0xace000adc 0e03 MOVLW 0x3000ade 1400 ANDWF 0x0,0x0,0x0000ae0 2404 ADDWF 0x4,0x0,0x0000ae2 6e62 MOVWF 0x62,0x0000ae4 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c000ae6 cfdb MOVFF 0xfdb,0x0000ae8 f000000aea 0ef2 MOVLW 0xf2000aec cfdb MOVFF 0xfdb,0x1000aee f001000af0 0ef3 MOVLW 0xf3000af2 cfdb MOVFF 0xfdb,0x2000af4 f002000af6 0ef4 MOVLW 0xf4000af8 cfdb MOVFF 0xfdb,0x3000afa f003000afc 0e08 MOVLW 0x8000afe 90d8 BCF 0xd8,0x0,0x0000b00 3203 RRCF 0x3,0x1,0x0000b02 3202 RRCF 0x2,0x1,0x0000b04 3201 RRCF 0x1,0x1,0x0000b06 3200 RRCF 0x0,0x1,0x0000b08 06e8 DECF 0xe8,0x1,0x0000b0a e1f9 BNZ 0xafe000b0c 5000 MOVF 0x0,0x0,0x0000b0e 6e63 MOVWF 0x63,0x0000b10 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c000b12 50db MOVF 0xdb,0x0,0x0000b14 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000b16 d02f BRA 0xb76 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.c000b18 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c000b1a cfdb MOVFF 0xfdb,0x0000b1c f000000b1e 0ef2 MOVLW 0xf2000b20 cfdb MOVFF 0xfdb,0x1000b22 f001000b24 0ef3 MOVLW 0xf3000b26 cfdb MOVFF 0xfdb,0x2000b28 f002000b2a 0ef4 MOVLW 0xf4000b2c cfdb MOVFF 0xfdb,0x3000b2e f003000b30 0e03 MOVLW 0x3000b32 90d8 BCF 0xd8,0x0,0x0000b34 3203 RRCF 0x3,0x1,0x0000b36 3202 RRCF 0x2,0x1,0x0000b38 3201 RRCF 0x1,0x1,0x0000b3a 3200 RRCF 0x0,0x1,0x0000b3c 06e8 DECF 0xe8,0x1,0x0000b3e e1f9 BNZ 0xb32000b40 5000 MOVF 0x0,0x0,0x0000b42 6e61 MOVWF 0x61,0x0000b44 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000b46 cfdb MOVFF 0xfdb,0x0000b48 f000000b4a 0ef2 MOVLW 0xf2000b4c cfdb MOVFF 0xfdb,0x1000b4e f001000b50 0ef3 MOVLW 0xf3000b52 cfdb MOVFF 0xfdb,0x2000b54 f002000b56 0ef4 MOVLW 0xf4000b58 cfdb MOVFF 0xfdb,0x3000b5a f003000b5c 0e05 MOVLW 0x5000b5e 0b1f ANDLW 0x1f000b60 e007 BZ 0xb70000b62 90d8 BCF 0xd8,0x0,0x0000b64 3600 RLCF 0x0,0x1,0x0000b66 3601 RLCF 0x1,0x1,0x0000b68 3602 RLCF 0x2,0x1,0x0000b6a 3603 RLCF 0x3,0x1,0x0000b6c 06e8 DECF 0xe8,0x1,0x0000b6e e1f9 BNZ 0xb62000b70 0ee0 MOVLW 0xe0000b72 1400 ANDWF 0x0,0x0,0x0000b74 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.c000b76 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c000b78 50db MOVF 0xdb,0x0,0x0000b7a 0808 SUBLW 0x8000b7c e203 BC 0xb84000b7e 0e08 MOVLW 0x8000b80 6e65 MOVWF 0x65,0x0000b82 d003 BRA 0xb8a000b84 0ef6 MOVLW 0xf6000b86 50db MOVF 0xdb,0x0,0x0000b88 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000b8a 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000b8c 50db MOVF 0xdb,0x0,0x0000b8e 6e66 MOVWF 0x66,0x0000b90 0ef8 MOVLW 0xf8000b92 50db MOVF 0xdb,0x0,0x0000b94 6e67 MOVWF 0x67,0x0000b96 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000b98 50db MOVF 0xdb,0x0,0x0000b9a 6e68 MOVWF 0x68,0x0000b9c 0efa MOVLW 0xfa000b9e 50db MOVF 0xdb,0x0,0x0000ba0 6e69 MOVWF 0x69,0x0000ba2 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000ba4 50db MOVF 0xdb,0x0,0x0000ba6 6e6a MOVWF 0x6a,0x0000ba8 0efc MOVLW 0xfc000baa 50db MOVF 0xdb,0x0,0x0000bac 6e6b MOVWF 0x6b,0x0000bae 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000bb0 50db MOVF 0xdb,0x0,0x0000bb2 6e6c MOVWF 0x6c,0x0000bb4 0efe MOVLW 0xfe000bb6 50db MOVF 0xdb,0x0,0x0000bb8 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c000bba 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c000bbc 04db DECF 0xdb,0x0,0x0000bbe e102 BNZ 0xbc4000bc0 0e01 MOVLW 0x1000bc2 d001 BRA 0xbc6000bc4 0e00 MOVLW 0x0000bc6 b0e8 BTFSC 0xe8,0x0,0x0000bc8 8662 BSF 0x62,0x3,0x0000bca a0e8 BTFSS 0xe8,0x0,0x0000bcc 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.c000bce 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.c000bd0 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000bd2 d000 BRA 0xbd4F:\MCP\projects\CAN\canNode\Source\CAN.c000bd4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000bd6 cfe7 MOVFF 0xfe7,0xfd9000bd8 ffd9000bda 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canNode\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* UART F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\uart.c* FileName: uart.c F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\uart.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\uart.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\uart.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\uart.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cstatic char uartBusy(void); F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartInit F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cvoid uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c// Configure USART F:\MCP\projects\CAN\canNode\Source\uart.c000bdc 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000bde 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000be0 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000be2 6eac MOVWF 0xac,0x0000be4 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000be6 6eab MOVWF 0xab,0x0000be8 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000bea 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000bec 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000bee 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.c000bf0 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000bf2 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.c000bf4 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000bf6 ffe6000bf8 cfe1 MOVFF 0xfe1,0xfd9000bfa ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000bfc 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000bfe 50db MOVF 0xdb,0x0,0x0000c00 6ead MOVWF 0xad,0x0000c02 d848 RCALL 0xc94 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c04 0900 IORLW 0x0000c06 e1fd BNZ 0xc02000c08 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000c0a cfe7 MOVFF 0xfe7,0xfd9000c0c ffd9000c0e 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.c000c10 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000c12 ffe6000c14 cfe1 MOVFF 0xfe1,0xfd9000c16 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.c000c18 d83d RCALL 0xc94 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c1a 0900 IORLW 0x0000c1c e1fd BNZ 0xc18000c1e 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000c20 cfdb MOVFF 0xfdb,0xfe9000c22 ffe9000c24 0efe MOVLW 0xfe000c26 cfdb MOVFF 0xfdb,0xfea000c28 ffea000c2a 50ef MOVF 0xef,0x0,0x0000c2c 6ee6 MOVWF 0xe6,0x0000c2e dfe2 RCALL 0xbf4000c30 52e5 MOVF 0xe5,0x1,0x0000c32 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000c34 cfdb MOVFF 0xfdb,0xfe9000c36 ffe9000c38 2adb INCF 0xdb,0x1,0x0000c3a 0efe MOVLW 0xfe000c3c cfdb MOVFF 0xfdb,0xfea000c3e ffea000c40 e301 BNC 0xc44000c42 2adb INCF 0xdb,0x1,0x0000c44 50ef MOVF 0xef,0x0,0x0000c46 e1e8 BNZ 0xc18000c48 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000c4a cfe7 MOVFF 0xfe7,0xfd9000c4c ffd9000c4e 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.c000c50 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000c52 ffe6000c54 cfe1 MOVFF 0xfe1,0xfd9000c56 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.c000c58 d81d RCALL 0xc94 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000c5a 0900 IORLW 0x0000c5c e1fd BNZ 0xc58000c5e 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000c60 cfdb MOVFF 0xfdb,0xff6000c62 fff6000c64 0efe MOVLW 0xfe000c66 cfdb MOVFF 0xfdb,0xff7000c68 fff7000c6a 0008 TBLRD000c6c 50f5 MOVF 0xf5,0x0,0x0000c6e 6ee6 MOVWF 0xe6,0x0000c70 dfc1 RCALL 0xbf4000c72 52e5 MOVF 0xe5,0x1,0x0000c74 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000c76 cfdb MOVFF 0xfdb,0xff6000c78 fff6000c7a 2adb INCF 0xdb,0x1,0x0000c7c 0efe MOVLW 0xfe000c7e cfdb MOVFF 0xfdb,0xff7000c80 fff7000c82 e301 BNC 0xc86000c84 2adb INCF 0xdb,0x1,0x0000c86 0008 TBLRD000c88 50f5 MOVF 0xf5,0x0,0x0000c8a e1e6 BNZ 0xc58000c8c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000c8e cfe7 MOVFF 0xfe7,0xfd9000c90 ffd9000c92 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.c000c94 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000c96 0b02 ANDLW 0x2000c98 0a02 XORLW 0x2000c9a e001 BZ 0xc9e000c9c 0e01 MOVLW 0x1000c9e 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.c000ca0 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000ca2 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.c000ca4 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000ca6 0b20 ANDLW 0x20000ca8 e009 BZ 0xcbc000caa 509d MOVF 0x9d,0x0,0x0000cac 0b20 ANDLW 0x20000cae e006 BZ 0xcbc{ F:\MCP\projects\CAN\canNode\Source\uart.c000cb0 dff7 RCALL 0xca0 uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000cb2 6ee6 MOVWF 0xe6,0x0000cb4 ec9c CALL 0x338,0x0000cb6 f001000cb8 52e5 MOVF 0xe5,0x1,0x0000cba 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000cbc 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartDataRedy F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none. F:\MCP\projects\CAN\canNode\Source\uart.c* Output: If usart data are redy to be read. F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cchar uartDataRedy(void) F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c000cbe a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canNode\Source\uart.c000cc0 d002 BRA 0xcc6{ F:\MCP\projects\CAN\canNode\Source\uart.c000cc2 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canNode\Source\uart.c000cc4 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000cc6 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canNode\Source\uart.c000cc8 0b20 ANDLW 0x20000cca e001 BZ 0xcce000ccc 0e01 MOVLW 0x1000cce 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#endif F:\MCP\projects\CAN\canNode\Source\uart.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Ticker service F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#include "..\Include\Tick.h" F:\MCP\projects\CAN\canNode\Source\Tick.c#include "..\Include\Compiler.h" F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canNode\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canNode\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canNode\Source\Tick.c#else F:\MCP\projects\CAN\canNode\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canNode\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000d6e 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000d70 6ed6 MOVWF 0xd6,0x0000d72 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000d74 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.c000d76 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000d78 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000d7a 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000d7c 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000d7e 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000d80 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.c000d82 c075 MOVFF 0x75,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000d84 f018000d86 c076 MOVFF 0x76,0x19000d88 f019000d8a c077 MOVFF 0x77,0x1a000d8c f01a000d8e c078 MOVFF 0x78,0x1b000d90 f01b000d92 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.c000d94 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000d96 d00b BRA 0xdae{ F:\MCP\projects\CAN\canNode\Source\Tick.c000d98 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000d9a 6ed7 MOVWF 0xd7,0x0000d9c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000d9e 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000da0 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000da2 2b75 INCF 0x75,0x1,0x1000da4 0e00 MOVLW 0x0000da6 2376 ADDWFC 0x76,0x1,0x1000da8 2377 ADDWFC 0x77,0x1,0x1000daa 2378 ADDWFC 0x78,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000dac 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000dae 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c