Rev 33 | 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 21:37:49 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.cBYTE ldc = 50; 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 d947 RCALL 0x2e0 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 ec22 CALL 0x844,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000054 f004#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 ec67 CALL 0xcce,0x0 uartInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000058 f006#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00005a ec34 CALL 0xe68,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00005c f007F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c00005e ec3e CALL 0xe7c,0x0 if ((tickGet()-t)>=5*TICK_SECOND && heartBeatEnabled==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c000060 f007000062 0100 MOVLB 0x0000064 5162 MOVF 0x62,0x0,0x1000066 5c18 SUBWF 0x18,0x0,0x0000068 6e00 MOVWF 0x0,0x000006a 5163 MOVF 0x63,0x0,0x100006c 5819 SUBWFB 0x19,0x0,0x000006e 6e01 MOVWF 0x1,0x0000070 5164 MOVF 0x64,0x0,0x1000072 581a SUBWFB 0x1a,0x0,0x0000074 6e02 MOVWF 0x2,0x0000076 5165 MOVF 0x65,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 ec3e CALL 0xe7c,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000094 f007000096 c018 MOVFF 0x18,0x62000098 f06200009a c019 MOVFF 0x19,0x6300009c f06300009e c01a MOVFF 0x1a,0x640000a0 f0640000a2 c01b MOVFF 0x1b,0x650000a4 f065F:\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 ec87 CALL 0xb0e,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#endif 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,0x0000174 cfd9 MOVFF 0xfd9,0xfe6000176 ffe6000178 cfe1 MOVFF 0xfe1,0xfd900017a ffd900017c 0e0e MOVLW 0xe00017e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c//if(ldc--<=1) {LED0_IO=~LED0_IO; ldc=50; } 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.c000180 ec4d CALL 0x89a,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000182 f004#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.c000184 eccb CALL 0xd96,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000186 f006#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000188 50f2 MOVF 0xf2,0x0,0x0 if (INTCONbits.INT0IE && INTCONbits.INT0IF) F:\MCP\projects\CAN\canNode\Source\Main.c00018a 0b10 ANDLW 0x1000018c e064 BZ 0x25600018e 50f2 MOVF 0xf2,0x0,0x0000190 0b02 ANDLW 0x2000192 e061 BZ 0x256{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000194 ec3e CALL 0xe7c,0x0 if ((tickGet()-t)>TICK_SECOND/2) F:\MCP\projects\CAN\canNode\Source\Main.c000196 f007000198 0100 MOVLB 0x000019a 5166 MOVF 0x66,0x0,0x100019c 5c18 SUBWF 0x18,0x0,0x000019e 6e1f MOVWF 0x1f,0x00001a0 5167 MOVF 0x67,0x0,0x10001a2 5819 SUBWFB 0x19,0x0,0x00001a4 6e20 MOVWF 0x20,0x00001a6 5168 MOVF 0x68,0x0,0x10001a8 581a SUBWFB 0x1a,0x0,0x00001aa 6e21 MOVWF 0x21,0x00001ac 5169 MOVF 0x69,0x0,0x10001ae 581b SUBWFB 0x1b,0x0,0x00001b0 6e22 MOVWF 0x22,0x00001b2 80d8 BSF 0xd8,0x0,0x00001b4 0e32 MOVLW 0x320001b6 541f SUBFWB 0x1f,0x0,0x00001b8 0e00 MOVLW 0x00001ba 5420 SUBFWB 0x20,0x0,0x00001bc 0e00 MOVLW 0x00001be 5421 SUBFWB 0x21,0x0,0x00001c0 0e00 MOVLW 0x00001c2 5422 SUBFWB 0x22,0x0,0x00001c4 e247 BC 0x254{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0001c6 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c0001c8 0e66 MOVLW 0x66 cm.ident=0x00000666; F:\MCP\projects\CAN\canNode\Source\Main.c0001ca 6ede MOVWF 0xde,0x00001cc 0e06 MOVLW 0x60001ce 6ede MOVWF 0xde,0x00001d0 6ade CLRF 0xde,0x00001d2 6add CLRF 0xdd,0x00001d4 52dd MOVF 0xdd,0x1,0x00001d6 52dd MOVF 0xdd,0x1,0x00001d8 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0001da 6adb CLRF 0xdb,0x00001dc 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c0001de 6ef3 MOVWF 0xf3,0x00001e0 0e05 MOVLW 0x50001e2 cff3 MOVFF 0xff3,0xfdb0001e4 ffdb0001e6 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0001e8 6ef3 MOVWF 0xf3,0x00001ea 0e06 MOVLW 0x60001ec cff3 MOVFF 0xff3,0xfdb0001ee ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0001f0 cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0001f2 ffe90001f4 cfda MOVFF 0xfda,0xfea0001f6 ffea0001f8 cfee MOVFF 0xfee,0xfe60001fa ffe60001fc cfee MOVFF 0xfee,0xfe60001fe ffe6000200 cfee MOVFF 0xfee,0xfe6000202 ffe6000204 cfee MOVFF 0xfee,0xfe6000206 ffe6000208 cfee MOVFF 0xfee,0xfe600020a ffe600020c cfee MOVFF 0xfee,0xfe600020e ffe6000210 cfee MOVFF 0xfee,0xfe6000212 ffe6000214 cfee MOVFF 0xfee,0xfe6000216 ffe6000218 cfee MOVFF 0xfee,0xfe600021a ffe600021c cfee MOVFF 0xfee,0xfe600021e ffe6000220 cfee MOVFF 0xfee,0xfe6000222 ffe6000224 cfee MOVFF 0xfee,0xfe6000226 ffe6000228 cfee MOVFF 0xfee,0xfe600022a ffe600022c cfee MOVFF 0xfee,0xfe600022e ffe6000230 ec87 CALL 0xb0e,0x0000232 f005000234 6e1f MOVWF 0x1f,0x0000236 0e0e MOVLW 0xe000238 5ee1 SUBWF 0xe1,0x1,0x000023a 501f MOVF 0x1f,0x0,0x000023c 0900 IORLW 0x000023e e0d8 BZ 0x1f0F:\MCP\projects\CAN\canNode\Source\Main.c000240 ec3e CALL 0xe7c,0x0 t=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000242 f007000244 c018 MOVFF 0x18,0x66000246 f066000248 c019 MOVFF 0x19,0x6700024a f06700024c c01a MOVFF 0x1a,0x6800024e f068000250 c01b MOVFF 0x1b,0x69000252 f069} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000254 92f2 BCF 0xf2,0x1,0x0 INTCONbits.INT0IF=0; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c//if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000256 ec47 CALL 0xe8e,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c000258 f00700025a 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\Main.c00025c 5ce1 SUBWF 0xe1,0x0,0x000025e e202 BC 0x264000260 6ae1 CLRF 0xe1,0x0000262 52e5 MOVF 0xe5,0x1,0x0000264 6ee1 MOVWF 0xe1,0x0000266 52e5 MOVF 0xe5,0x1,0x0000268 cfe7 MOVFF 0xfe7,0xfd900026a ffd900026c 52e5 MOVF 0xe5,0x1,0x000026e ee00 LFSR 0x0,0x13000270 f013000272 0e14 MOVLW 0x14000274 04e8 DECF 0xe8,0x0,0x0000276 e303 BNC 0x27e000278 cfe5 MOVFF 0xfe5,0xfed00027a ffed00027c d7fb BRA 0x27400027e ee00 LFSR 0x0,0x1e000280 f01e000282 0e0b MOVLW 0xb000284 04e8 DECF 0xe8,0x0,0x0000286 e303 BNC 0x28e000288 cfe5 MOVFF 0xfe5,0xfed00028a ffed00028c d7fb BRA 0x28400028e cfe5 MOVFF 0xfe5,0xffa000290 fffa000292 cfe5 MOVFF 0xfe5,0xff4000294 fff4000296 cfe5 MOVFF 0xfe5,0xff3000298 fff300029a cfe5 MOVFF 0xfe5,0xff500029c fff500029e cfe5 MOVFF 0xfe5,0xff70002a0 fff70002a2 cfe5 MOVFF 0xfe5,0xff60002a4 fff60002a6 cfe5 MOVFF 0xfe5,0xfea0002a8 ffea0002aa cfe5 MOVFF 0xfe5,0xfe90002ac ffe90002ae cfe5 MOVFF 0xfe5,0xfda0002b0 ffda0002b2 50e5 MOVF 0xe5,0x0,0x00002b4 cfe5 MOVFF 0xfe5,0xfe00002b6 ffe00002b8 cfe5 MOVFF 0xfe5,0xfd80002ba ffd80002bc 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.c0002be cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0002c0 ffe40002c2 cfe0 MOVFF 0xfe0,0xfe40002c4 ffe40002c6 6ee4 MOVWF 0xe4,0x00002c8 cfda MOVFF 0xfda,0xfe40002ca ffe40002cc 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0002ce 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0002d0 cfe5 MOVFF 0xfe5,0xfda0002d2 ffda0002d4 50e5 MOVF 0xe5,0x0,0x00002d6 cfe5 MOVFF 0xfe5,0xfe00002d8 ffe00002da cfe5 MOVFF 0xfe5,0xfd80002dc ffd80002de 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 ef5f GOTO 0x2be _asm goto LowISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00001a f00100001c 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.c0002e0 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.c0002e2 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.c0002e4 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c0002e6 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// RB0 interrupt F:\MCP\projects\CAN\canNode\Source\Main.c0002e8 8cf1 BSF 0xf1,0x6,0x0 INTCON2bits.INTEDG0 = 1; //rising edge F:\MCP\projects\CAN\canNode\Source\Main.c0002ea 88f2 BSF 0xf2,0x4,0x0 INTCONbits.INT0IE = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canNode\Source\Main.c0002ec 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0002ee 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.c0002f0 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c0002f2 ffe60002f4 cfe1 MOVFF 0xfe1,0xfd90002f6 ffd90002f8 0e02 MOVLW 0x20002fa 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c0002fc 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canNode\Source\Main.c0002fe 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000300 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canNode\Source\Main.c000302 6ee6 MOVWF 0xe6,0x0000304 ec73 CALL 0xce6,0x0000306 f006000308 52e5 MOVF 0xe5,0x1,0x000030a 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canNode\Source\Main.c00030c cfdb MOVFF 0xfdb,0xfe600030e ffe6000310 ec73 CALL 0xce6,0x0000312 f006000314 52e5 MOVF 0xe5,0x1,0x0000316 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canNode\Source\Main.c000318 cfdb MOVFF 0xfdb,0x000031a f00000031c 0ef2 MOVLW 0xf200031e cfdb MOVFF 0xfdb,0x1000320 f001000322 0ef3 MOVLW 0xf3000324 cfdb MOVFF 0xfdb,0x2000326 f002000328 0ef4 MOVLW 0xf400032a cfdb MOVFF 0xfdb,0x300032c f00300032e 0e08 MOVLW 0x8000330 90d8 BCF 0xd8,0x0,0x0000332 3203 RRCF 0x3,0x1,0x0000334 3202 RRCF 0x2,0x1,0x0000336 3201 RRCF 0x1,0x1,0x0000338 3200 RRCF 0x0,0x1,0x000033a 06e8 DECF 0xe8,0x1,0x000033c e1f9 BNZ 0x33000033e 5000 MOVF 0x0,0x0,0x0000340 6ee6 MOVWF 0xe6,0x0000342 ec73 CALL 0xce6,0x0000344 f006000346 52e5 MOVF 0xe5,0x1,0x0000348 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canNode\Source\Main.c00034a cfdb MOVFF 0xfdb,0x000034c f00000034e 0ef2 MOVLW 0xf2000350 cfdb MOVFF 0xfdb,0x1000352 f001000354 0ef3 MOVLW 0xf3000356 cfdb MOVFF 0xfdb,0x2000358 f00200035a 0ef4 MOVLW 0xf400035c cfdb MOVFF 0xfdb,0x300035e f003000360 0e10 MOVLW 0x10000362 90d8 BCF 0xd8,0x0,0x0000364 3203 RRCF 0x3,0x1,0x0000366 3202 RRCF 0x2,0x1,0x0000368 3201 RRCF 0x1,0x1,0x000036a 3200 RRCF 0x0,0x1,0x000036c 06e8 DECF 0xe8,0x1,0x000036e e1f9 BNZ 0x362000370 5000 MOVF 0x0,0x0,0x0000372 6ee6 MOVWF 0xe6,0x0000374 ec73 CALL 0xce6,0x0000376 f006000378 52e5 MOVF 0xe5,0x1,0x000037a 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canNode\Source\Main.c00037c cfdb MOVFF 0xfdb,0x000037e f000000380 0ef2 MOVLW 0xf2000382 cfdb MOVFF 0xfdb,0x1000384 f001000386 0ef3 MOVLW 0xf3000388 cfdb MOVFF 0xfdb,0x200038a f00200038c 0ef4 MOVLW 0xf400038e cfdb MOVFF 0xfdb,0x3000390 f003000392 0e18 MOVLW 0x18000394 90d8 BCF 0xd8,0x0,0x0000396 3203 RRCF 0x3,0x1,0x0000398 3202 RRCF 0x2,0x1,0x000039a 3201 RRCF 0x1,0x1,0x000039c 3200 RRCF 0x0,0x1,0x000039e 06e8 DECF 0xe8,0x1,0x00003a0 e1f9 BNZ 0x3940003a2 5000 MOVF 0x0,0x0,0x00003a4 6ee6 MOVWF 0xe6,0x00003a6 ec73 CALL 0xce6,0x00003a8 f0060003aa 52e5 MOVF 0xe5,0x1,0x00003ac 0ef5 MOVLW 0xf5 uartPutc(cm.extended); F:\MCP\projects\CAN\canNode\Source\Main.c0003ae cfdb MOVFF 0xfdb,0xfe60003b0 ffe60003b2 ec73 CALL 0xce6,0x00003b4 f0060003b6 52e5 MOVF 0xe5,0x1,0x00003b8 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canNode\Source\Main.c0003ba cfdb MOVFF 0xfdb,0xfe60003bc ffe60003be ec73 CALL 0xce6,0x00003c0 f0060003c2 52e5 MOVF 0xe5,0x1,0x00003c4 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); F:\MCP\projects\CAN\canNode\Source\Main.c0003c6 6add CLRF 0xdd,0x00003c8 cfde MOVFF 0xfde,0x00003ca f0000003cc cfdd MOVFF 0xfdd,0x10003ce f0010003d0 90d8 BCF 0xd8,0x0,0x00003d2 5001 MOVF 0x1,0x0,0x00003d4 e604 BN 0x3de0003d6 0e08 MOVLW 0x80003d8 5c00 SUBWF 0x0,0x0,0x00003da 0e00 MOVLW 0x00003dc 5801 SUBWFB 0x1,0x0,0x00003de e216 BC 0x40c0003e0 50d9 MOVF 0xd9,0x0,0x00003e2 0ff7 ADDLW 0xf70003e4 6e00 MOVWF 0x0,0x00003e6 0eff MOVLW 0xff0003e8 20da ADDWFC 0xda,0x0,0x00003ea 6e01 MOVWF 0x1,0x00003ec 50de MOVF 0xde,0x0,0x00003ee 2400 ADDWF 0x0,0x0,0x00003f0 6ee9 MOVWF 0xe9,0x00003f2 50dd MOVF 0xdd,0x0,0x00003f4 2001 ADDWFC 0x1,0x0,0x00003f6 6eea MOVWF 0xea,0x00003f8 50ef MOVF 0xef,0x0,0x00003fa 6ee6 MOVWF 0xe6,0x00003fc ec73 CALL 0xce6,0x00003fe f006000400 52e5 MOVF 0xe5,0x1,0x0000402 2adf INCF 0xdf,0x1,0x0000404 0e01 MOVLW 0x1000406 e3e0 BNC 0x3c8000408 2adb INCF 0xdb,0x1,0x000040a d7de BRA 0x3c800040c 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canNode\Source\Main.c00040e 6ee6 MOVWF 0xe6,0x0000410 ec73 CALL 0xce6,0x0000412 f006000414 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000416 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canNode\Source\Main.c000418 5ce1 SUBWF 0xe1,0x0,0x000041a e202 BC 0x42000041c 6ae1 CLRF 0xe1,0x000041e 52e5 MOVF 0xe5,0x1,0x0000420 6ee1 MOVWF 0xe1,0x0000422 52e5 MOVF 0xe5,0x1,0x0000424 cfe7 MOVFF 0xfe7,0xfd9000426 ffd9000428 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.c00042a cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canNode\Source\Main.c00042c ffe600042e cfe1 MOVFF 0xfe1,0xfd9000430 ffd9000432 0e11 MOVLW 0x11000434 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cBYTE i; F:\MCP\projects\CAN\canNode\Source\Main.c000436 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canNode\Source\Main.c000438 6adb CLRF 0xdb,0x000043a 0e02 MOVLW 0x200043c 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.cF:\MCP\projects\CAN\canNode\Source\Main.c00043e 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canNode\Source\Main.c000440 056a DECF 0x6a,0x0,0x1000442 e11a BNZ 0x478000444 ec3e CALL 0xe7c,0x0000446 f007000448 0100 MOVLB 0x000044a 516b MOVF 0x6b,0x0,0x100044c 5c18 SUBWF 0x18,0x0,0x000044e 6e00 MOVWF 0x0,0x0000450 516c MOVF 0x6c,0x0,0x1000452 5819 SUBWFB 0x19,0x0,0x0000454 6e01 MOVWF 0x1,0x0000456 516d MOVF 0x6d,0x0,0x1000458 581a SUBWFB 0x1a,0x0,0x000045a 6e02 MOVWF 0x2,0x000045c 516e MOVF 0x6e,0x0,0x100045e 581b SUBWFB 0x1b,0x0,0x0000460 6e03 MOVWF 0x3,0x0000462 80d8 BSF 0xd8,0x0,0x0000464 0e05 MOVLW 0x5000466 5400 SUBFWB 0x0,0x0,0x0000468 0e00 MOVLW 0x000046a 5401 SUBFWB 0x1,0x0,0x000046c 0e00 MOVLW 0x000046e 5402 SUBFWB 0x2,0x0,0x0000470 0e00 MOVLW 0x0000472 5403 SUBFWB 0x3,0x0,0x0000474 e201 BC 0x478{ F:\MCP\projects\CAN\canNode\Source\Main.c000476 6b6a CLRF 0x6a,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.cF:\MCP\projects\CAN\canNode\Source\Main.c000478 056a DECF 0x6a,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c00047a e001 BZ 0x47e00047c d08c BRA 0x596{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00047e ec3e CALL 0xe7c,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c000480 f007000482 c018 MOVFF 0x18,0x6b000484 f06b000486 c019 MOVFF 0x19,0x6c000488 f06c00048a c01a MOVFF 0x1a,0x6d00048c f06d00048e c01b MOVFF 0x1b,0x6e000490 f06eF:\MCP\projects\CAN\canNode\Source\Main.c// UART END F:\MCP\projects\CAN\canNode\Source\Main.c000492 0e0e MOVLW 0xe if(count>=14) F:\MCP\projects\CAN\canNode\Source\Main.c000494 0100 MOVLB 0x0000496 5d6f SUBWF 0x6f,0x0,0x1000498 e335 BNC 0x504{ F:\MCP\projects\CAN\canNode\Source\Main.c00049a 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canNode\Source\Main.c00049c 50db MOVF 0xdb,0x0,0x000049e 6e00 MOVWF 0x0,0x00004a0 6a01 CLRF 0x1,0x00004a2 0efa MOVLW 0xfa0004a4 1800 XORWF 0x0,0x0,0x00004a6 e12b BNZ 0x4fe0004a8 5001 MOVF 0x1,0x0,0x00004aa e129 BNZ 0x4fe{ F:\MCP\projects\CAN\canNode\Source\Main.c0004ac 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0004ae 0f03 ADDLW 0x30004b0 6ee9 MOVWF 0xe9,0x00004b2 cfda MOVFF 0xfda,0xfea0004b4 ffea0004b6 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 cfee MOVFF 0xfee,0xfe60004d4 ffe60004d6 cfee MOVFF 0xfee,0xfe60004d8 ffe60004da cfee MOVFF 0xfee,0xfe60004dc ffe60004de cfee MOVFF 0xfee,0xfe60004e0 ffe60004e2 cfee MOVFF 0xfee,0xfe60004e4 ffe60004e6 cfee MOVFF 0xfee,0xfe60004e8 ffe60004ea cfee MOVFF 0xfee,0xfe60004ec ffe60004ee ec87 CALL 0xb0e,0x00004f0 f0050004f2 6e00 MOVWF 0x0,0x00004f4 0e0e MOVLW 0xe0004f6 5ee1 SUBWF 0xe1,0x1,0x00004f8 5000 MOVF 0x0,0x0,0x00004fa 0900 IORLW 0x00004fc e0d7 BZ 0x4ac} F:\MCP\projects\CAN\canNode\Source\Main.c0004fe 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000500 6b6a CLRF 0x6a,0x1000502 d196 BRA 0x830 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.c000504 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canNode\Source\Main.c000506 5d6f SUBWF 0x6f,0x0,0x1000508 e30f BNC 0x528{ F:\MCP\projects\CAN\canNode\Source\Main.c00050a 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-6]=c; F:\MCP\projects\CAN\canNode\Source\Main.c00050c 0f09 ADDLW 0x900050e 6e00 MOVWF 0x0,0x0000510 0e06 MOVLW 0x6000512 5d6f SUBWF 0x6f,0x0,0x1000514 010f MOVLB 0xf000516 2400 ADDWF 0x0,0x0,0x0000518 6ee9 MOVWF 0xe9,0x000051a 0e00 MOVLW 0x000051c 20da ADDWFC 0xda,0x0,0x000051e 6eea MOVWF 0xea,0x0000520 0efe MOVLW 0xfe000522 cfdb MOVFF 0xfdb,0xfef000524 ffefcount++; F:\MCP\projects\CAN\canNode\Source\Main.c000526 d034 BRA 0x590 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.c000528 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canNode\Source\Main.c00052a 5d6f SUBWF 0x6f,0x0,0x100052c e305 BNC 0x538{ F:\MCP\projects\CAN\canNode\Source\Main.c00052e 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canNode\Source\Main.c000530 50db MOVF 0xdb,0x0,0x0000532 6ee7 MOVWF 0xe7,0x0000534 0e08 MOVLW 0x8count++; F:\MCP\projects\CAN\canNode\Source\Main.c000536 d007 BRA 0x546 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.c000538 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canNode\Source\Main.c00053a 5d6f SUBWF 0x6f,0x0,0x100053c e307 BNC 0x54c{ F:\MCP\projects\CAN\canNode\Source\Main.c00053e 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canNode\Source\Main.c000540 50db MOVF 0xdb,0x0,0x0000542 6ee7 MOVWF 0xe7,0x0000544 0e07 MOVLW 0x7000546 cfe7 MOVFF 0xfe7,0xfdb000548 ffdbcount++; F:\MCP\projects\CAN\canNode\Source\Main.c00054a d023 BRA 0x592 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.c00054c 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canNode\Source\Main.c00054e 5d6f SUBWF 0x6f,0x0,0x1000550 e322 BNC 0x596{ F:\MCP\projects\CAN\canNode\Source\Main.c000552 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canNode\Source\Main.c000554 cfdb MOVFF 0xfdb,0x0000556 f000000558 6a01 CLRF 0x1,0x000055a 6a02 CLRF 0x2,0x000055c 6a03 CLRF 0x3,0x000055e 0e08 MOVLW 0x8000560 036f MULWF 0x6f,0x1000562 50f3 MOVF 0xf3,0x0,0x0000564 0b1f ANDLW 0x1f000566 e007 BZ 0x576000568 90d8 BCF 0xd8,0x0,0x000056a 3600 RLCF 0x0,0x1,0x000056c 3601 RLCF 0x1,0x1,0x000056e 3602 RLCF 0x2,0x1,0x0000570 3603 RLCF 0x3,0x1,0x0000572 06e8 DECF 0xe8,0x1,0x0000574 e1f9 BNZ 0x568000576 50d9 MOVF 0xd9,0x0,0x0000578 0f03 ADDLW 0x300057a 6ee9 MOVWF 0xe9,0x000057c cfda MOVFF 0xfda,0xfea00057e ffea000580 5000 MOVF 0x0,0x0,0x0000582 26ee ADDWF 0xee,0x1,0x0000584 5001 MOVF 0x1,0x0,0x0000586 22ee ADDWFC 0xee,0x1,0x0000588 5002 MOVF 0x2,0x0,0x000058a 22ee ADDWFC 0xee,0x1,0x000058c 5003 MOVF 0x3,0x0,0x000058e 22ee ADDWFC 0xee,0x1,0x0000590 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canNode\Source\Main.c000592 2b6f INCF 0x6f,0x1,0x1000594 d14d BRA 0x830 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.c000596 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c000598 50db MOVF 0xdb,0x0,0x000059a 6e00 MOVWF 0x0,0x000059c 6a01 CLRF 0x1,0x000059e 0efd MOVLW 0xfd0005a0 1800 XORWF 0x0,0x0,0x00005a2 e11b BNZ 0x5da0005a4 5001 MOVF 0x1,0x0,0x00005a6 e119 BNZ 0x5da0005a8 516a MOVF 0x6a,0x0,0x10005aa e117 BNZ 0x5da{ F:\MCP\projects\CAN\canNode\Source\Main.c0005ac 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0005ae 6f6a MOVWF 0x6a,0x10005b0 ec3e CALL 0xe7c,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0005b2 f0070005b4 c018 MOVFF 0x18,0x6b0005b6 f06b0005b8 c019 MOVFF 0x19,0x6c0005ba f06c0005bc c01a MOVFF 0x1a,0x6d0005be f06d0005c0 c01b MOVFF 0x1b,0x6e0005c2 f06e0005c4 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canNode\Source\Main.c0005c6 6b6f CLRF 0x6f,0x10005c8 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\Main.c0005ca 6adb CLRF 0xdb,0x00005cc 0e04 MOVLW 0x40005ce 6adb CLRF 0xdb,0x00005d0 0e05 MOVLW 0x50005d2 6adb CLRF 0xdb,0x00005d4 0e06 MOVLW 0x60005d6 6adb CLRF 0xdb,0x00005d8 d12b BRA 0x830 return; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005da 0efe MOVLW 0xfe if(c=='1' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c0005dc 50db MOVF 0xdb,0x0,0x00005de 0831 SUBLW 0x310005e0 e154 BNZ 0x68a0005e2 516a MOVF 0x6a,0x0,0x10005e4 e152 BNZ 0x68a{ F:\MCP\projects\CAN\canNode\Source\Main.c0005e6 0e23 MOVLW 0x23 cm.ident=0x00000123; F:\MCP\projects\CAN\canNode\Source\Main.c0005e8 6ef3 MOVWF 0xf3,0x00005ea 0e03 MOVLW 0x30005ec cff3 MOVFF 0xff3,0xfdb0005ee ffdb0005f0 0e01 MOVLW 0x10005f2 6ef3 MOVWF 0xf3,0x00005f4 0e04 MOVLW 0x40005f6 cff3 MOVFF 0xff3,0xfdb0005f8 ffdb0005fa 0e05 MOVLW 0x50005fc 6adb CLRF 0xdb,0x00005fe 0e06 MOVLW 0x6000600 6adb CLRF 0xdb,0x0000602 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000604 6adb CLRF 0xdb,0x0000606 0e04 MOVLW 0x4 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c000608 6ef3 MOVWF 0xf3,0x000060a 0e08 MOVLW 0x800060c cff3 MOVFF 0xff3,0xfdb00060e ffdb000610 0e48 MOVLW 0x48 cm.data[3]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c000612 6ef3 MOVWF 0xf3,0x0000614 0e0c MOVLW 0xc000616 cff3 MOVFF 0xff3,0xfdb000618 ffdb00061a 0e65 MOVLW 0x65 cm.data[2]='e'; F:\MCP\projects\CAN\canNode\Source\Main.c00061c 6ef3 MOVWF 0xf3,0x000061e 0e0b MOVLW 0xb000620 cff3 MOVFF 0xff3,0xfdb000622 ffdb000624 0e6a MOVLW 0x6a cm.data[1]='j'; F:\MCP\projects\CAN\canNode\Source\Main.c000626 6ef3 MOVWF 0xf3,0x0000628 0e0a MOVLW 0xa00062a cff3 MOVFF 0xff3,0xfdb00062c ffdb00062e 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000630 6ef3 MOVWF 0xf3,0x0000632 0e09 MOVLW 0x9000634 cff3 MOVFF 0xff3,0xfdb000636 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c000638 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c00063a 0f03 ADDLW 0x300063c 6ee9 MOVWF 0xe9,0x000063e cfda MOVFF 0xfda,0xfea000640 ffea000642 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 cfee MOVFF 0xfee,0xfe6000670 ffe6000672 cfee MOVFF 0xfee,0xfe6000674 ffe6000676 cfee MOVFF 0xfee,0xfe6000678 ffe600067a ec87 CALL 0xb0e,0x000067c f00500067e 6e00 MOVWF 0x0,0x0000680 0e0e MOVLW 0xe000682 5ee1 SUBWF 0xe1,0x1,0x0000684 5000 MOVF 0x0,0x0,0x0000686 0900 IORLW 0x0000688 e0d7 BZ 0x638} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00068a 0efe MOVLW 0xfe if(c=='2' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c00068c 50db MOVF 0xdb,0x0,0x000068e 0832 SUBLW 0x32000690 e16f BNZ 0x770000692 0100 MOVLB 0x0000694 516a MOVF 0x6a,0x0,0x1000696 e16c BNZ 0x770{ F:\MCP\projects\CAN\canNode\Source\Main.c000698 0ef0 MOVLW 0xf0 cm.ident=0x0ABCDEF0; F:\MCP\projects\CAN\canNode\Source\Main.c00069a 6ef3 MOVWF 0xf3,0x000069c 0e03 MOVLW 0x300069e cff3 MOVFF 0xff3,0xfdb0006a0 ffdb0006a2 0ede MOVLW 0xde0006a4 6ef3 MOVWF 0xf3,0x00006a6 0e04 MOVLW 0x40006a8 cff3 MOVFF 0xff3,0xfdb0006aa ffdb0006ac 0ebc MOVLW 0xbc0006ae 6ef3 MOVWF 0xf3,0x00006b0 0e05 MOVLW 0x50006b2 cff3 MOVFF 0xff3,0xfdb0006b4 ffdb0006b6 0e0a MOVLW 0xa0006b8 6ef3 MOVWF 0xf3,0x00006ba 0e06 MOVLW 0x60006bc cff3 MOVFF 0xff3,0xfdb0006be ffdb0006c0 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c0006c2 6ef3 MOVWF 0xf3,0x00006c4 0e07 MOVLW 0x70006c6 cff3 MOVFF 0xff3,0xfdb0006c8 ffdb0006ca 0e08 MOVLW 0x8 cm.data_length=8; F:\MCP\projects\CAN\canNode\Source\Main.c0006cc 6edb MOVWF 0xdb,0x00006ce 0e47 MOVLW 0x47 cm.data[7]='G'; F:\MCP\projects\CAN\canNode\Source\Main.c0006d0 6ef3 MOVWF 0xf3,0x00006d2 0e10 MOVLW 0x100006d4 cff3 MOVFF 0xff3,0xfdb0006d6 ffdb0006d8 0e6f MOVLW 0x6f cm.data[6]='o'; F:\MCP\projects\CAN\canNode\Source\Main.c0006da 6ef3 MOVWF 0xf3,0x00006dc 0e0f MOVLW 0xf0006de cff3 MOVFF 0xff3,0xfdb0006e0 ffdb0006e2 0e64 MOVLW 0x64 cm.data[5]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c0006e4 6ef3 MOVWF 0xf3,0x00006e6 0e0e MOVLW 0xe0006e8 cff3 MOVFF 0xff3,0xfdb0006ea ffdb0006ec 0e20 MOVLW 0x20 cm.data[4]=' '; F:\MCP\projects\CAN\canNode\Source\Main.c0006ee 6ef3 MOVWF 0xf3,0x00006f0 0e0d MOVLW 0xd0006f2 cff3 MOVFF 0xff3,0xfdb0006f4 ffdb0006f6 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c0006f8 6ef3 MOVWF 0xf3,0x00006fa 0e0c MOVLW 0xc0006fc cff3 MOVFF 0xff3,0xfdb0006fe ffdb000700 0e61 MOVLW 0x61 cm.data[2]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c000702 6ef3 MOVWF 0xf3,0x0000704 0e0b MOVLW 0xb000706 cff3 MOVFF 0xff3,0xfdb000708 ffdb00070a 0e67 MOVLW 0x67 cm.data[1]='g'; F:\MCP\projects\CAN\canNode\Source\Main.c00070c 6ef3 MOVWF 0xf3,0x000070e 0e0a MOVLW 0xa000710 cff3 MOVFF 0xff3,0xfdb000712 ffdb000714 0e21 MOVLW 0x21 cm.data[0]='!'; F:\MCP\projects\CAN\canNode\Source\Main.c000716 6ef3 MOVWF 0xf3,0x0000718 0e09 MOVLW 0x900071a cff3 MOVFF 0xff3,0xfdb00071c ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00071e 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c000720 0f03 ADDLW 0x3000722 6ee9 MOVWF 0xe9,0x0000724 cfda MOVFF 0xfda,0xfea000726 ffea000728 cfee MOVFF 0xfee,0xfe600072a ffe600072c cfee MOVFF 0xfee,0xfe600072e ffe6000730 cfee MOVFF 0xfee,0xfe6000732 ffe6000734 cfee MOVFF 0xfee,0xfe6000736 ffe6000738 cfee MOVFF 0xfee,0xfe600073a ffe600073c cfee MOVFF 0xfee,0xfe600073e ffe6000740 cfee MOVFF 0xfee,0xfe6000742 ffe6000744 cfee MOVFF 0xfee,0xfe6000746 ffe6000748 cfee MOVFF 0xfee,0xfe600074a ffe600074c cfee MOVFF 0xfee,0xfe600074e ffe6000750 cfee MOVFF 0xfee,0xfe6000752 ffe6000754 cfee MOVFF 0xfee,0xfe6000756 ffe6000758 cfee MOVFF 0xfee,0xfe600075a ffe600075c cfee MOVFF 0xfee,0xfe600075e ffe6000760 ec87 CALL 0xb0e,0x0000762 f005000764 6e00 MOVWF 0x0,0x0000766 0e0e MOVLW 0xe000768 5ee1 SUBWF 0xe1,0x1,0x000076a 5000 MOVF 0x0,0x0,0x000076c 0900 IORLW 0x000076e e0d7 BZ 0x71e} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000770 0efe MOVLW 0xfe if(c=='3' && waitingMessage==FALSE) F:\MCP\projects\CAN\canNode\Source\Main.c000772 50db MOVF 0xdb,0x0,0x0000774 0833 SUBLW 0x33000776 e15c BNZ 0x830000778 0100 MOVLB 0x000077a 516a MOVF 0x6a,0x0,0x100077c e159 BNZ 0x830{ F:\MCP\projects\CAN\canNode\Source\Main.c00077e 0e10 MOVLW 0x10 cm.ident=0x00000010; F:\MCP\projects\CAN\canNode\Source\Main.c000780 6ef3 MOVWF 0xf3,0x0000782 0e03 MOVLW 0x3000784 cff3 MOVFF 0xff3,0xfdb000786 ffdb000788 0e04 MOVLW 0x400078a 6adb CLRF 0xdb,0x000078c 0e05 MOVLW 0x500078e 6adb CLRF 0xdb,0x0000790 0e06 MOVLW 0x6000792 6adb CLRF 0xdb,0x0000794 0e07 MOVLW 0x7 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c000796 6adb CLRF 0xdb,0x0000798 0e06 MOVLW 0x6 cm.data_length=6; F:\MCP\projects\CAN\canNode\Source\Main.c00079a 6ef3 MOVWF 0xf3,0x000079c 0e08 MOVLW 0x800079e cff3 MOVFF 0xff3,0xfdb0007a0 ffdb0007a2 0e35 MOVLW 0x35 cm.data[5]='5'; F:\MCP\projects\CAN\canNode\Source\Main.c0007a4 6ef3 MOVWF 0xf3,0x00007a6 0e0e MOVLW 0xe0007a8 cff3 MOVFF 0xff3,0xfdb0007aa ffdb0007ac 0e34 MOVLW 0x34 cm.data[4]='4'; F:\MCP\projects\CAN\canNode\Source\Main.c0007ae 6ef3 MOVWF 0xf3,0x00007b0 0e0d MOVLW 0xd0007b2 cff3 MOVFF 0xff3,0xfdb0007b4 ffdb0007b6 0e33 MOVLW 0x33 cm.data[3]='3'; F:\MCP\projects\CAN\canNode\Source\Main.c0007b8 6ef3 MOVWF 0xf3,0x00007ba 0e0c MOVLW 0xc0007bc cff3 MOVFF 0xff3,0xfdb0007be ffdb0007c0 0e32 MOVLW 0x32 cm.data[2]='2'; F:\MCP\projects\CAN\canNode\Source\Main.c0007c2 6ef3 MOVWF 0xf3,0x00007c4 0e0b MOVLW 0xb0007c6 cff3 MOVFF 0xff3,0xfdb0007c8 ffdb0007ca 0e31 MOVLW 0x31 cm.data[1]='1'; F:\MCP\projects\CAN\canNode\Source\Main.c0007cc 6ef3 MOVWF 0xf3,0x00007ce 0e0a MOVLW 0xa0007d0 cff3 MOVFF 0xff3,0xfdb0007d2 ffdb0007d4 0e30 MOVLW 0x30 cm.data[0]='0'; F:\MCP\projects\CAN\canNode\Source\Main.c0007d6 6ef3 MOVWF 0xf3,0x00007d8 0e09 MOVLW 0x90007da cff3 MOVFF 0xff3,0xfdb0007dc ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0007de 50d9 MOVF 0xd9,0x0,0x0 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0007e0 0f03 ADDLW 0x30007e2 6ee9 MOVWF 0xe9,0x00007e4 cfda MOVFF 0xfda,0xfea0007e6 ffea0007e8 cfee MOVFF 0xfee,0xfe60007ea ffe60007ec cfee MOVFF 0xfee,0xfe60007ee ffe60007f0 cfee MOVFF 0xfee,0xfe60007f2 ffe60007f4 cfee MOVFF 0xfee,0xfe60007f6 ffe60007f8 cfee MOVFF 0xfee,0xfe60007fa ffe60007fc cfee MOVFF 0xfee,0xfe60007fe ffe6000800 cfee MOVFF 0xfee,0xfe6000802 ffe6000804 cfee MOVFF 0xfee,0xfe6000806 ffe6000808 cfee MOVFF 0xfee,0xfe600080a ffe600080c cfee MOVFF 0xfee,0xfe600080e ffe6000810 cfee MOVFF 0xfee,0xfe6000812 ffe6000814 cfee MOVFF 0xfee,0xfe6000816 ffe6000818 cfee MOVFF 0xfee,0xfe600081a ffe600081c cfee MOVFF 0xfee,0xfe600081e ffe6000820 ec87 CALL 0xb0e,0x0000822 f005000824 6e00 MOVWF 0x0,0x0000826 0e0e MOVLW 0xe000828 5ee1 SUBWF 0xe1,0x1,0x000082a 5000 MOVF 0x0,0x0,0x000082c 0900 IORLW 0x000082e e0d7 BZ 0x7de} 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.c000830 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canNode\Source\Main.c000832 5ce1 SUBWF 0xe1,0x0,0x0000834 e202 BC 0x83a000836 6ae1 CLRF 0xe1,0x0000838 52e5 MOVF 0xe5,0x1,0x000083a 6ee1 MOVWF 0xe1,0x000083c 52e5 MOVF 0xe5,0x1,0x000083e cfe7 MOVFF 0xfe7,0xfd9000840 ffd9000842 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.c000844 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c000846 6e6f MOVWF 0x6f,0x0000848 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c00084a 146e ANDWF 0x6e,0x0,0x000084c 0880 SUBLW 0x8000084e e1fc BNZ 0x848F:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000850 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.c000852 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000854 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.c000856 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c000858 1070 IORWF 0x70,0x0,0x000085a 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c00085c 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.c00085e 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000860 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000862 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.c000864 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000866 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000868 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.c00086a 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.c00086c 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.c00086e 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000870 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000872 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000874 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000876 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000878 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.c00087a 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c00087c 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.c00087e 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000880 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000882 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000884 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c000886 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000888 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.c00088a 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.c00088c 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c00088e 6e6f MOVWF 0x6f,0x0000890 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000892 146e ANDWF 0x6e,0x0,0x0000894 0840 SUBLW 0x40000896 e1fc BNZ 0x890#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.c000898 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.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00089a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c00089c 0b02 ANDLW 0x200089e e106 BNZ 0x8ac0008a0 50a4 MOVF 0xa4,0x0,0x00008a2 0b02 ANDLW 0x20008a4 e103 BNZ 0x8ac0008a6 50a4 MOVF 0xa4,0x0,0x00008a8 0b01 ANDLW 0x10008aa e03a BZ 0x920{ F:\MCP\projects\CAN\canNode\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canNode\Source\CAN.c0008ac ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008ae d004 BRA 0x8b80008b0 0e00 MOVLW 0x00008b2 1477 ANDWF 0x77,0x0,0x00008b4 0910 IORLW 0x100008b6 d02b BRA 0x90e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008b8 010f MOVLB 0xf0008ba af50 BTFSS 0x50,0x7,0x10008bc d004 BRA 0x8c60008be 0e00 MOVLW 0x00008c0 1477 ANDWF 0x77,0x0,0x00008c2 0911 IORLW 0x110008c4 d024 BRA 0x90e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008c6 010e MOVLB 0xe0008c8 af20 BTFSS 0x20,0x7,0x10008ca d004 BRA 0x8d40008cc 0e00 MOVLW 0x00008ce 1477 ANDWF 0x77,0x0,0x00008d0 0912 IORLW 0x120008d2 d01d BRA 0x90e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008d4 af30 BTFSS 0x30,0x7,0x10008d6 d004 BRA 0x8e00008d8 0e00 MOVLW 0x00008da 1477 ANDWF 0x77,0x0,0x00008dc 0913 IORLW 0x130008de d017 BRA 0x90e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008e0 af40 BTFSS 0x40,0x7,0x10008e2 d004 BRA 0x8ec0008e4 0e00 MOVLW 0x00008e6 1477 ANDWF 0x77,0x0,0x00008e8 0914 IORLW 0x140008ea d011 BRA 0x90e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008ec af50 BTFSS 0x50,0x7,0x10008ee d004 BRA 0x8f80008f0 0e00 MOVLW 0x00008f2 1477 ANDWF 0x77,0x0,0x00008f4 0915 IORLW 0x150008f6 d00b BRA 0x90e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0008f8 af60 BTFSS 0x60,0x7,0x10008fa d004 BRA 0x9040008fc 0e00 MOVLW 0x00008fe 1477 ANDWF 0x77,0x0,0x0000900 0916 IORLW 0x16000902 d005 BRA 0x90e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000904 af70 BTFSS 0x70,0x7,0x1000906 d005 BRA 0x912000908 0e00 MOVLW 0x000090a 1477 ANDWF 0x77,0x0,0x000090c 0917 IORLW 0x1700090e 6e77 MOVWF 0x77,0x0000910 d808 RCALL 0x922F:\MCP\projects\CAN\canNode\Source\CAN.c000912 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c000914 d003 BRA 0x91c000916 92a4 BCF 0xa4,0x1,0x0000918 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00091a 92a4 BCF 0xa4,0x1,0x000091c b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00091e 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000920 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.c000922 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c000924 ffe6000926 cfe1 MOVFF 0xfe1,0xfd9000928 ffd900092a 0e0e MOVLW 0xe00092c 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.c00092e 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c000930 0b08 ANDLW 0x8000932 e102 BNZ 0x938000934 0e00 MOVLW 0x0000936 d001 BRA 0x93a000938 0e01 MOVLW 0x100093a 6ee7 MOVWF 0xe7,0x000093c 0e04 MOVLW 0x400093e cfe7 MOVFF 0xfe7,0xfdb000940 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c000942 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c000944 6ade CLRF 0xde,0x0000946 6ade CLRF 0xde,0x0000948 6add CLRF 0xdd,0x000094a 52dd MOVF 0xdd,0x1,0x000094c 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00094e 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000950 e163 BNZ 0xa18{ 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.c000952 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.c000954 6e00 MOVWF 0x0,0x0000956 6a01 CLRF 0x1,0x0000958 6a02 CLRF 0x2,0x000095a 6a03 CLRF 0x3,0x000095c 0e15 MOVLW 0x1500095e 0b1f ANDLW 0x1f000960 e007 BZ 0x970000962 90d8 BCF 0xd8,0x0,0x0000964 3600 RLCF 0x0,0x1,0x0000966 3601 RLCF 0x1,0x1,0x0000968 3602 RLCF 0x2,0x1,0x000096a 3603 RLCF 0x3,0x1,0x000096c 06e8 DECF 0xe8,0x1,0x000096e e1f9 BNZ 0x962000970 0ee0 MOVLW 0xe0000972 1462 ANDWF 0x62,0x0,0x0000974 6e04 MOVWF 0x4,0x0000976 6a05 CLRF 0x5,0x0000978 6a06 CLRF 0x6,0x000097a 6a07 CLRF 0x7,0x000097c 0e0d MOVLW 0xd00097e 0b1f ANDLW 0x1f000980 e007 BZ 0x990000982 90d8 BCF 0xd8,0x0,0x0000984 3604 RLCF 0x4,0x1,0x0000986 3605 RLCF 0x5,0x1,0x0000988 3606 RLCF 0x6,0x1,0x000098a 3607 RLCF 0x7,0x1,0x000098c 06e8 DECF 0xe8,0x1,0x000098e e1f9 BNZ 0x982000990 5004 MOVF 0x4,0x0,0x0000992 2600 ADDWF 0x0,0x1,0x0000994 5005 MOVF 0x5,0x0,0x0000996 2201 ADDWFC 0x1,0x1,0x0000998 5006 MOVF 0x6,0x0,0x000099a 2202 ADDWFC 0x2,0x1,0x000099c 5007 MOVF 0x7,0x0,0x000099e 2203 ADDWFC 0x3,0x1,0x00009a0 0e03 MOVLW 0x30009a2 1462 ANDWF 0x62,0x0,0x00009a4 6e08 MOVWF 0x8,0x00009a6 6a09 CLRF 0x9,0x00009a8 6a0a CLRF 0xa,0x00009aa 6a0b CLRF 0xb,0x00009ac 0e10 MOVLW 0x100009ae 0b1f ANDLW 0x1f0009b0 e007 BZ 0x9c00009b2 90d8 BCF 0xd8,0x0,0x00009b4 3608 RLCF 0x8,0x1,0x00009b6 3609 RLCF 0x9,0x1,0x00009b8 360a RLCF 0xa,0x1,0x00009ba 360b RLCF 0xb,0x1,0x00009bc 06e8 DECF 0xe8,0x1,0x00009be e1f9 BNZ 0x9b20009c0 5008 MOVF 0x8,0x0,0x00009c2 2600 ADDWF 0x0,0x1,0x00009c4 5009 MOVF 0x9,0x0,0x00009c6 2201 ADDWFC 0x1,0x1,0x00009c8 500a MOVF 0xa,0x0,0x00009ca 2202 ADDWFC 0x2,0x1,0x00009cc 500b MOVF 0xb,0x0,0x00009ce 2203 ADDWFC 0x3,0x1,0x00009d0 5063 MOVF 0x63,0x0,0x00009d2 6e0c MOVWF 0xc,0x00009d4 6a0d CLRF 0xd,0x00009d6 6a0e CLRF 0xe,0x00009d8 6a0f CLRF 0xf,0x00009da 0e08 MOVLW 0x80009dc 0b1f ANDLW 0x1f0009de e007 BZ 0x9ee0009e0 90d8 BCF 0xd8,0x0,0x00009e2 360c RLCF 0xc,0x1,0x00009e4 360d RLCF 0xd,0x1,0x00009e6 360e RLCF 0xe,0x1,0x00009e8 360f RLCF 0xf,0x1,0x00009ea 06e8 DECF 0xe8,0x1,0x00009ec e1f9 BNZ 0x9e00009ee 500c MOVF 0xc,0x0,0x00009f0 2600 ADDWF 0x0,0x1,0x00009f2 500d MOVF 0xd,0x0,0x00009f4 2201 ADDWFC 0x1,0x1,0x00009f6 500e MOVF 0xe,0x0,0x00009f8 2202 ADDWFC 0x2,0x1,0x00009fa 500f MOVF 0xf,0x0,0x00009fc 2203 ADDWFC 0x3,0x1,0x00009fe 5064 MOVF 0x64,0x0,0x0000a00 6e10 MOVWF 0x10,0x0000a02 6a11 CLRF 0x11,0x0000a04 6a12 CLRF 0x12,0x0000a06 6a13 CLRF 0x13,0x0000a08 50e8 MOVF 0xe8,0x0,0x0000a0a 2600 ADDWF 0x0,0x1,0x0000a0c 5011 MOVF 0x11,0x0,0x0000a0e 2201 ADDWFC 0x1,0x1,0x0000a10 5012 MOVF 0x12,0x0,0x0000a12 2202 ADDWFC 0x2,0x1,0x0000a14 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000a16 d023 BRA 0xa5e 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.c000a18 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c000a1a 6e00 MOVWF 0x0,0x0000a1c 6a01 CLRF 0x1,0x0000a1e 6a02 CLRF 0x2,0x0000a20 6a03 CLRF 0x3,0x0000a22 0e03 MOVLW 0x3000a24 0b1f ANDLW 0x1f000a26 e007 BZ 0xa36000a28 90d8 BCF 0xd8,0x0,0x0000a2a 3600 RLCF 0x0,0x1,0x0000a2c 3601 RLCF 0x1,0x1,0x0000a2e 3602 RLCF 0x2,0x1,0x0000a30 3603 RLCF 0x3,0x1,0x0000a32 06e8 DECF 0xe8,0x1,0x0000a34 e1f9 BNZ 0xa28000a36 5062 MOVF 0x62,0x0,0x0000a38 6e04 MOVWF 0x4,0x0000a3a 6a05 CLRF 0x5,0x0000a3c 6a06 CLRF 0x6,0x0000a3e 6a07 CLRF 0x7,0x0000a40 0e05 MOVLW 0x5000a42 90d8 BCF 0xd8,0x0,0x0000a44 3207 RRCF 0x7,0x1,0x0000a46 3206 RRCF 0x6,0x1,0x0000a48 3205 RRCF 0x5,0x1,0x0000a4a 3204 RRCF 0x4,0x1,0x0000a4c 06e8 DECF 0xe8,0x1,0x0000a4e e1f9 BNZ 0xa42000a50 5004 MOVF 0x4,0x0,0x0000a52 2600 ADDWF 0x0,0x1,0x0000a54 5005 MOVF 0x5,0x0,0x0000a56 2201 ADDWFC 0x1,0x1,0x0000a58 5006 MOVF 0x6,0x0,0x0000a5a 2202 ADDWFC 0x2,0x1,0x0000a5c 5007 MOVF 0x7,0x0,0x0000a5e 2203 ADDWFC 0x3,0x1,0x0000a60 c000 MOVFF 0x0,0xfdf000a62 ffdf000a64 0e01 MOVLW 0x1000a66 c001 MOVFF 0x1,0xfdb000a68 ffdb000a6a 0e02 MOVLW 0x2000a6c c002 MOVFF 0x2,0xfdb000a6e ffdb000a70 0e03 MOVLW 0x3000a72 c003 MOVFF 0x3,0xfdb000a74 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.c000a76 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c000a78 cf65 MOVFF 0xf65,0xfdb000a7a ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000a7c 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c000a7e cf66 MOVFF 0xf66,0xfdb000a80 ffdb000a82 0e07 MOVLW 0x7000a84 cf67 MOVFF 0xf67,0xfdb000a86 ffdb000a88 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c000a8a cf68 MOVFF 0xf68,0xfdb000a8c ffdb000a8e 0e09 MOVLW 0x9000a90 cf69 MOVFF 0xf69,0xfdb000a92 ffdb000a94 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c000a96 cf6a MOVFF 0xf6a,0xfdb000a98 ffdb000a9a 0e0b MOVLW 0xb000a9c cf6b MOVFF 0xf6b,0xfdb000a9e ffdb000aa0 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c000aa2 cf6c MOVFF 0xf6c,0xfdb000aa4 ffdb000aa6 0e0d MOVLW 0xd000aa8 cf6d MOVFF 0xf6d,0xfdb000aaa ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c000aac 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.c000aae cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c000ab0 ffe9000ab2 cfda MOVFF 0xfda,0xfea000ab4 ffea000ab6 cfee MOVFF 0xfee,0xfe6000ab8 ffe6000aba cfee MOVFF 0xfee,0xfe6000abc ffe6000abe cfee MOVFF 0xfee,0xfe6000ac0 ffe6000ac2 cfee MOVFF 0xfee,0xfe6000ac4 ffe6000ac6 cfee MOVFF 0xfee,0xfe6000ac8 ffe6000aca cfee MOVFF 0xfee,0xfe6000acc ffe6000ace cfee MOVFF 0xfee,0xfe6000ad0 ffe6000ad2 cfee MOVFF 0xfee,0xfe6000ad4 ffe6000ad6 cfee MOVFF 0xfee,0xfe6000ad8 ffe6000ada cfee MOVFF 0xfee,0xfe6000adc ffe6000ade cfee MOVFF 0xfee,0xfe6000ae0 ffe6000ae2 cfee MOVFF 0xfee,0xfe6000ae4 ffe6000ae6 cfee MOVFF 0xfee,0xfe6000ae8 ffe6000aea cfee MOVFF 0xfee,0xfe6000aec ffe6000aee ec78 CALL 0x2f0,0x0000af0 f001000af2 6e00 MOVWF 0x0,0x0000af4 0e0e MOVLW 0xe000af6 5ee1 SUBWF 0xe1,0x1,0x0000af8 5000 MOVF 0x0,0x0,0x0000afa 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c000afc 5ce1 SUBWF 0xe1,0x0,0x0000afe e202 BC 0xb04000b00 6ae1 CLRF 0xe1,0x0000b02 52e5 MOVF 0xe5,0x1,0x0000b04 6ee1 MOVWF 0xe1,0x0000b06 52e5 MOVF 0xe5,0x1,0x0000b08 cfe7 MOVFF 0xfe7,0xfd9000b0a ffd9000b0c 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.c000b0e cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c000b10 ffe6000b12 cfe1 MOVFF 0xfe1,0xfd9000b14 ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000b16 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c000b18 b740 BTFSC 0x40,0x3,0x1000b1a d004 BRA 0xb24000b1c 0e00 MOVLW 0x0000b1e 1477 ANDWF 0x77,0x0,0x0000b20 0903 IORLW 0x3000b22 6e77 MOVWF 0x77,0x0000b24 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c000b26 b730 BTFSC 0x30,0x3,0x1000b28 d004 BRA 0xb32000b2a 0e00 MOVLW 0x0000b2c 1477 ANDWF 0x77,0x0,0x0000b2e 0904 IORLW 0x4000b30 6e77 MOVWF 0x77,0x0000b32 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c000b34 b720 BTFSC 0x20,0x3,0x1000b36 d005 BRA 0xb42000b38 0e00 MOVLW 0x0000b3a 1477 ANDWF 0x77,0x0,0x0000b3c 0905 IORLW 0x5000b3e 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c000b40 d002 BRA 0xb46 else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c000b42 0e00 MOVLW 0x0000b44 d0c0 BRA 0xcc6F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000b46 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000b48 04db DECF 0xdb,0x0,0x0000b4a e15f BNZ 0xc0a{ 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.c000b4c 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c000b4e cfdb MOVFF 0xfdb,0x0000b50 f000000b52 0ef2 MOVLW 0xf2000b54 cfdb MOVFF 0xfdb,0x1000b56 f001000b58 0ef3 MOVLW 0xf3000b5a cfdb MOVFF 0xfdb,0x2000b5c f002000b5e 0ef4 MOVLW 0xf4000b60 cfdb MOVFF 0xfdb,0x3000b62 f003000b64 0e15 MOVLW 0x15000b66 90d8 BCF 0xd8,0x0,0x0000b68 3203 RRCF 0x3,0x1,0x0000b6a 3202 RRCF 0x2,0x1,0x0000b6c 3201 RRCF 0x1,0x1,0x0000b6e 3200 RRCF 0x0,0x1,0x0000b70 06e8 DECF 0xe8,0x1,0x0000b72 e1f9 BNZ 0xb66000b74 5000 MOVF 0x0,0x0,0x0000b76 6e61 MOVWF 0x61,0x0000b78 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000b7a cfdb MOVFF 0xfdb,0x5000b7c f005000b7e 0ef2 MOVLW 0xf2000b80 cfdb MOVFF 0xfdb,0x6000b82 f006000b84 0ef3 MOVLW 0xf3000b86 cfdb MOVFF 0xfdb,0x7000b88 f007000b8a 0ef4 MOVLW 0xf4000b8c cfdb MOVFF 0xfdb,0x8000b8e f008000b90 0e0d MOVLW 0xd000b92 90d8 BCF 0xd8,0x0,0x0000b94 3208 RRCF 0x8,0x1,0x0000b96 3207 RRCF 0x7,0x1,0x0000b98 3206 RRCF 0x6,0x1,0x0000b9a 3205 RRCF 0x5,0x1,0x0000b9c 06e8 DECF 0xe8,0x1,0x0000b9e e1f9 BNZ 0xb92000ba0 0ee0 MOVLW 0xe0000ba2 1405 ANDWF 0x5,0x0,0x0000ba4 6e04 MOVWF 0x4,0x0000ba6 0ef1 MOVLW 0xf1000ba8 cfdb MOVFF 0xfdb,0x0000baa f000000bac 0ef2 MOVLW 0xf2000bae cfdb MOVFF 0xfdb,0x1000bb0 f001000bb2 0ef3 MOVLW 0xf3000bb4 cfdb MOVFF 0xfdb,0x2000bb6 f002000bb8 0ef4 MOVLW 0xf4000bba cfdb MOVFF 0xfdb,0x3000bbc f003000bbe 0e10 MOVLW 0x10000bc0 90d8 BCF 0xd8,0x0,0x0000bc2 3203 RRCF 0x3,0x1,0x0000bc4 3202 RRCF 0x2,0x1,0x0000bc6 3201 RRCF 0x1,0x1,0x0000bc8 3200 RRCF 0x0,0x1,0x0000bca 06e8 DECF 0xe8,0x1,0x0000bcc e1f9 BNZ 0xbc0000bce 0e03 MOVLW 0x3000bd0 1400 ANDWF 0x0,0x0,0x0000bd2 2404 ADDWF 0x4,0x0,0x0000bd4 6e62 MOVWF 0x62,0x0000bd6 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c000bd8 cfdb MOVFF 0xfdb,0x0000bda f000000bdc 0ef2 MOVLW 0xf2000bde cfdb MOVFF 0xfdb,0x1000be0 f001000be2 0ef3 MOVLW 0xf3000be4 cfdb MOVFF 0xfdb,0x2000be6 f002000be8 0ef4 MOVLW 0xf4000bea cfdb MOVFF 0xfdb,0x3000bec f003000bee 0e08 MOVLW 0x8000bf0 90d8 BCF 0xd8,0x0,0x0000bf2 3203 RRCF 0x3,0x1,0x0000bf4 3202 RRCF 0x2,0x1,0x0000bf6 3201 RRCF 0x1,0x1,0x0000bf8 3200 RRCF 0x0,0x1,0x0000bfa 06e8 DECF 0xe8,0x1,0x0000bfc e1f9 BNZ 0xbf0000bfe 5000 MOVF 0x0,0x0,0x0000c00 6e63 MOVWF 0x63,0x0000c02 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c000c04 50db MOVF 0xdb,0x0,0x0000c06 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c000c08 d02f BRA 0xc68 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.c000c0a 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c000c0c cfdb MOVFF 0xfdb,0x0000c0e f000000c10 0ef2 MOVLW 0xf2000c12 cfdb MOVFF 0xfdb,0x1000c14 f001000c16 0ef3 MOVLW 0xf3000c18 cfdb MOVFF 0xfdb,0x2000c1a f002000c1c 0ef4 MOVLW 0xf4000c1e cfdb MOVFF 0xfdb,0x3000c20 f003000c22 0e03 MOVLW 0x3000c24 90d8 BCF 0xd8,0x0,0x0000c26 3203 RRCF 0x3,0x1,0x0000c28 3202 RRCF 0x2,0x1,0x0000c2a 3201 RRCF 0x1,0x1,0x0000c2c 3200 RRCF 0x0,0x1,0x0000c2e 06e8 DECF 0xe8,0x1,0x0000c30 e1f9 BNZ 0xc24000c32 5000 MOVF 0x0,0x0,0x0000c34 6e61 MOVWF 0x61,0x0000c36 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000c38 cfdb MOVFF 0xfdb,0x0000c3a f000000c3c 0ef2 MOVLW 0xf2000c3e cfdb MOVFF 0xfdb,0x1000c40 f001000c42 0ef3 MOVLW 0xf3000c44 cfdb MOVFF 0xfdb,0x2000c46 f002000c48 0ef4 MOVLW 0xf4000c4a cfdb MOVFF 0xfdb,0x3000c4c f003000c4e 0e05 MOVLW 0x5000c50 0b1f ANDLW 0x1f000c52 e007 BZ 0xc62000c54 90d8 BCF 0xd8,0x0,0x0000c56 3600 RLCF 0x0,0x1,0x0000c58 3601 RLCF 0x1,0x1,0x0000c5a 3602 RLCF 0x2,0x1,0x0000c5c 3603 RLCF 0x3,0x1,0x0000c5e 06e8 DECF 0xe8,0x1,0x0000c60 e1f9 BNZ 0xc54000c62 0ee0 MOVLW 0xe0000c64 1400 ANDWF 0x0,0x0,0x0000c66 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.c000c68 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c000c6a 50db MOVF 0xdb,0x0,0x0000c6c 0808 SUBLW 0x8000c6e e203 BC 0xc76000c70 0e08 MOVLW 0x8000c72 6e65 MOVWF 0x65,0x0000c74 d003 BRA 0xc7c000c76 0ef6 MOVLW 0xf6000c78 50db MOVF 0xdb,0x0,0x0000c7a 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000c7c 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000c7e 50db MOVF 0xdb,0x0,0x0000c80 6e66 MOVWF 0x66,0x0000c82 0ef8 MOVLW 0xf8000c84 50db MOVF 0xdb,0x0,0x0000c86 6e67 MOVWF 0x67,0x0000c88 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000c8a 50db MOVF 0xdb,0x0,0x0000c8c 6e68 MOVWF 0x68,0x0000c8e 0efa MOVLW 0xfa000c90 50db MOVF 0xdb,0x0,0x0000c92 6e69 MOVWF 0x69,0x0000c94 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000c96 50db MOVF 0xdb,0x0,0x0000c98 6e6a MOVWF 0x6a,0x0000c9a 0efc MOVLW 0xfc000c9c 50db MOVF 0xdb,0x0,0x0000c9e 6e6b MOVWF 0x6b,0x0000ca0 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000ca2 50db MOVF 0xdb,0x0,0x0000ca4 6e6c MOVWF 0x6c,0x0000ca6 0efe MOVLW 0xfe000ca8 50db MOVF 0xdb,0x0,0x0000caa 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c000cac 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c000cae 04db DECF 0xdb,0x0,0x0000cb0 e102 BNZ 0xcb6000cb2 0e01 MOVLW 0x1000cb4 d001 BRA 0xcb8000cb6 0e00 MOVLW 0x0000cb8 b0e8 BTFSC 0xe8,0x0,0x0000cba 8662 BSF 0x62,0x3,0x0000cbc a0e8 BTFSS 0xe8,0x0,0x0000cbe 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.c000cc0 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.c000cc2 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000cc4 d000 BRA 0xcc6F:\MCP\projects\CAN\canNode\Source\CAN.c000cc6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000cc8 cfe7 MOVFF 0xfe7,0xfd9000cca ffd9000ccc 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.c000cce 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000cd0 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000cd2 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000cd4 6eac MOVWF 0xac,0x0000cd6 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000cd8 6eab MOVWF 0xab,0x0000cda 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000cdc 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000cde 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000ce0 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.c000ce2 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000ce4 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.c000ce6 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000ce8 ffe6000cea cfe1 MOVFF 0xfe1,0xfd9000cec ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000cee 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000cf0 50db MOVF 0xdb,0x0,0x0000cf2 6ead MOVWF 0xad,0x0000cf4 d848 RCALL 0xd86 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000cf6 0900 IORLW 0x0000cf8 e1fd BNZ 0xcf4000cfa 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000cfc cfe7 MOVFF 0xfe7,0xfd9000cfe ffd9000d00 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.c000d02 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000d04 ffe6000d06 cfe1 MOVFF 0xfe1,0xfd9000d08 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.c000d0a d83d RCALL 0xd86 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000d0c 0900 IORLW 0x0000d0e e1fd BNZ 0xd0a000d10 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000d12 cfdb MOVFF 0xfdb,0xfe9000d14 ffe9000d16 0efe MOVLW 0xfe000d18 cfdb MOVFF 0xfdb,0xfea000d1a ffea000d1c 50ef MOVF 0xef,0x0,0x0000d1e 6ee6 MOVWF 0xe6,0x0000d20 dfe2 RCALL 0xce6000d22 52e5 MOVF 0xe5,0x1,0x0000d24 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000d26 cfdb MOVFF 0xfdb,0xfe9000d28 ffe9000d2a 2adb INCF 0xdb,0x1,0x0000d2c 0efe MOVLW 0xfe000d2e cfdb MOVFF 0xfdb,0xfea000d30 ffea000d32 e301 BNC 0xd36000d34 2adb INCF 0xdb,0x1,0x0000d36 50ef MOVF 0xef,0x0,0x0000d38 e1e8 BNZ 0xd0a000d3a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000d3c cfe7 MOVFF 0xfe7,0xfd9000d3e ffd9000d40 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.c000d42 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000d44 ffe6000d46 cfe1 MOVFF 0xfe1,0xfd9000d48 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.c000d4a d81d RCALL 0xd86 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000d4c 0900 IORLW 0x0000d4e e1fd BNZ 0xd4a000d50 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000d52 cfdb MOVFF 0xfdb,0xff6000d54 fff6000d56 0efe MOVLW 0xfe000d58 cfdb MOVFF 0xfdb,0xff7000d5a fff7000d5c 0008 TBLRD000d5e 50f5 MOVF 0xf5,0x0,0x0000d60 6ee6 MOVWF 0xe6,0x0000d62 dfc1 RCALL 0xce6000d64 52e5 MOVF 0xe5,0x1,0x0000d66 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000d68 cfdb MOVFF 0xfdb,0xff6000d6a fff6000d6c 2adb INCF 0xdb,0x1,0x0000d6e 0efe MOVLW 0xfe000d70 cfdb MOVFF 0xfdb,0xff7000d72 fff7000d74 e301 BNC 0xd78000d76 2adb INCF 0xdb,0x1,0x0000d78 0008 TBLRD000d7a 50f5 MOVF 0xf5,0x0,0x0000d7c e1e6 BNZ 0xd4a000d7e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000d80 cfe7 MOVFF 0xfe7,0xfd9000d82 ffd9000d84 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.c000d86 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000d88 0b02 ANDLW 0x2000d8a 0a02 XORLW 0x2000d8c e001 BZ 0xd90000d8e 0e01 MOVLW 0x1000d90 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.c000d92 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000d94 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.c000d96 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000d98 0b20 ANDLW 0x20000d9a e00d BZ 0xdb6000d9c 509d MOVF 0x9d,0x0,0x0000d9e 0b20 ANDLW 0x20000da0 e00a BZ 0xdb6{ F:\MCP\projects\CAN\canNode\Source\uart.c000da2 a2ab BTFSS 0xab,0x1,0x0 if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\canNode\Source\uart.c000da4 d002 BRA 0xdaa000da6 98ab BCF 0xab,0x4,0x0000da8 88ab BSF 0xab,0x4,0x0F:\MCP\projects\CAN\canNode\Source\uart.c000daa dff3 RCALL 0xd92 uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000dac 6ee6 MOVWF 0xe6,0x0000dae ec15 CALL 0x42a,0x0000db0 f002000db2 52e5 MOVF 0xe5,0x1,0x0000db4 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000db6 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.c000db8 a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canNode\Source\uart.c000dba d002 BRA 0xdc0{ F:\MCP\projects\CAN\canNode\Source\uart.c000dbc 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canNode\Source\uart.c000dbe 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000dc0 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canNode\Source\uart.c000dc2 0b20 ANDLW 0x20000dc4 e001 BZ 0xdc8000dc6 0e01 MOVLW 0x1000dc8 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.c000e68 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000e6a 6ed6 MOVWF 0xd6,0x0000e6c 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000e6e 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.c000e70 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000e72 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000e74 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000e76 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000e78 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000e7a 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.c000e7c c07a MOVFF 0x7a,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000e7e f018000e80 c07b MOVFF 0x7b,0x19000e82 f019000e84 c07c MOVFF 0x7c,0x1a000e86 f01a000e88 c07d MOVFF 0x7d,0x1b000e8a f01b000e8c 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.c000e8e a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000e90 d00b BRA 0xea8{ F:\MCP\projects\CAN\canNode\Source\Tick.c000e92 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000e94 6ed7 MOVWF 0xd7,0x0000e96 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000e98 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000e9a 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000e9c 2b7a INCF 0x7a,0x1,0x1000e9e 0e00 MOVLW 0x0000ea0 237b ADDWFC 0x7b,0x1,0x1000ea2 237c ADDWFC 0x7c,0x1,0x1000ea4 237d ADDWFC 0x7d,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000ea6 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000ea8 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c