Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sat Oct 21 10:45:47 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----#include "../Include/compiler.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/Tick.h" F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/CAN.h" F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c000046 ffe6000048 cfe1 MOVFF 0xfe1,0xfd900004a ffd900004c 0e0e MOVLW 0xe00004e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Inits F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000050 d8d6 RCALL 0x1fe mainInit(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000052 eced CALL 0x5da,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000054 f002#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c000056 ec3c CALL 0xa78,0x0 uartInit(); F:\MCP\projects\CAN\canNode\Source\Main.c000058 f00500005a 0e60 MOVLW 0x60 uartPutrs("BOOT OK!"); F:\MCP\projects\CAN\canNode\Source\Main.c00005c 6ee6 MOVWF 0xe6,0x000005e 0e0c MOVLW 0xc000060 6ee6 MOVWF 0xe6,0x0000062 ec76 CALL 0xaec,0x0000064 f005000066 52e5 MOVF 0xe5,0x1,0x0000068 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00006a ecfc CALL 0xbf8,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00006c f005F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c00006e ec06 CALL 0xc0c,0x0 if ((tickGet()-t)>=10*TICK_SECOND) F:\MCP\projects\CAN\canNode\Source\Main.c000070 f006000072 0100 MOVLB 0x0000074 516e MOVF 0x6e,0x0,0x1000076 5c18 SUBWF 0x18,0x0,0x0000078 6e00 MOVWF 0x0,0x000007a 516f MOVF 0x6f,0x0,0x100007c 5819 SUBWFB 0x19,0x0,0x000007e 6e01 MOVWF 0x1,0x0000080 5170 MOVF 0x70,0x0,0x1000082 581a SUBWFB 0x1a,0x0,0x0000084 6e02 MOVWF 0x2,0x0000086 5171 MOVF 0x71,0x0,0x1000088 581b SUBWFB 0x1b,0x0,0x000008a 6e03 MOVWF 0x3,0x000008c 0ee8 MOVLW 0xe800008e 5c00 SUBWF 0x0,0x0,0x0000090 0e03 MOVLW 0x3000092 5801 SUBWFB 0x1,0x0,0x0000094 0e00 MOVLW 0x0000096 5802 SUBWFB 0x2,0x0,0x0000098 0e00 MOVLW 0x000009a 5803 SUBWFB 0x3,0x0,0x000009c e3e8 BNC 0x6e{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00009e ec06 CALL 0xc0c,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0000a0 f0060000a2 c018 MOVFF 0x18,0x6e0000a4 f06e0000a6 c019 MOVFF 0x19,0x6f0000a8 f06f0000aa c01a MOVFF 0x1a,0x700000ac f0700000ae c01b MOVFF 0x1b,0x710000b0 f071F:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c0000b2 0e07 MOVLW 0x7 cm.ident=0x00000707; F:\MCP\projects\CAN\canNode\Source\Main.c0000b4 6ede MOVWF 0xde,0x00000b6 6ede MOVWF 0xde,0x00000b8 6ade CLRF 0xde,0x00000ba 6add CLRF 0xdd,0x00000bc 52dd MOVF 0xdd,0x1,0x00000be 52dd MOVF 0xdd,0x1,0x00000c0 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0000c2 6adb CLRF 0xdb,0x00000c4 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c0000c6 6ef3 MOVWF 0xf3,0x00000c8 0e05 MOVLW 0x50000ca cff3 MOVFF 0xff3,0xfdb0000cc ffdb0000ce 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0000d0 6ef3 MOVWF 0xf3,0x00000d2 0e06 MOVLW 0x60000d4 cff3 MOVFF 0xff3,0xfdb0000d6 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0000d8 cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0000da ffe90000dc cfda MOVFF 0xfda,0xfea0000de ffea0000e0 cfee MOVFF 0xfee,0xfe60000e2 ffe60000e4 cfee MOVFF 0xfee,0xfe60000e6 ffe60000e8 cfee MOVFF 0xfee,0xfe60000ea ffe60000ec cfee MOVFF 0xfee,0xfe60000ee ffe60000f0 cfee MOVFF 0xfee,0xfe60000f2 ffe60000f4 cfee MOVFF 0xfee,0xfe60000f6 ffe60000f8 cfee MOVFF 0xfee,0xfe60000fa ffe60000fc cfee MOVFF 0xfee,0xfe60000fe ffe6000100 cfee MOVFF 0xfee,0xfe6000102 ffe6000104 cfee MOVFF 0xfee,0xfe6000106 ffe6000108 cfee MOVFF 0xfee,0xfe600010a ffe600010c cfee MOVFF 0xfee,0xfe600010e ffe6000110 cfee MOVFF 0xfee,0xfe6000112 ffe6000114 cfee MOVFF 0xfee,0xfe6000116 ffe6000118 ec52 CALL 0x8a4,0x000011a f00400011c 6e00 MOVWF 0x0,0x000011e 0e0e MOVLW 0xe000120 5ee1 SUBWF 0xe1,0x1,0x0000122 5000 MOVF 0x0,0x0,0x0000124 0900 IORLW 0x0000126 e1a3 BNZ 0x6e000128 d7d7 BRA 0xd8F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canNode\Source\Main.c00012a cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c00012c ffe400012e cfe0 MOVFF 0xfe0,0xfe4000130 ffe4000132 6ee4 MOVWF 0xe4,0x0000134 cfda MOVFF 0xfda,0xfe4000136 ffe4000138 cfe2 MOVFF 0xfe2,0xfda00013a ffda00013c cfe9 MOVFF 0xfe9,0xfe400013e ffe4000140 cfea MOVFF 0xfea,0xfe4000142 ffe4000144 cff6 MOVFF 0xff6,0xfe4000146 ffe4000148 cff7 MOVFF 0xff7,0xfe400014a ffe400014c cff5 MOVFF 0xff5,0xfe400014e ffe4000150 cff3 MOVFF 0xff3,0xfe4000152 ffe4000154 cff4 MOVFF 0xff4,0xfe4000156 ffe4000158 cffa MOVFF 0xffa,0xfe400015a ffe400015c ee00 LFSR 0x0,0x1400015e f014000160 0e0b MOVLW 0xb000162 04e8 DECF 0xe8,0x0,0x0000164 e303 BNC 0x16c000166 cfee MOVFF 0xfee,0xfe4000168 ffe400016a d7fb BRA 0x16200016c ee00 LFSR 0x0,0x000016e f000000170 0e14 MOVLW 0x14000172 04e8 DECF 0xe8,0x0,0x0000174 e303 BNC 0x17c000176 cfee MOVFF 0xfee,0xfe4000178 ffe400017a d7fb BRA 0x17200017c 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c00017e ec18 CALL 0x630,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000180 f003#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c000182 eca0 CALL 0xb40,0x0 uartISR(); F:\MCP\projects\CAN\canNode\Source\Main.c000184 f005#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000186 ec0f CALL 0xc1e,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c000188 f00600018a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c00018c ee00 LFSR 0x0,0x1300018e f013000190 0e14 MOVLW 0x14000192 04e8 DECF 0xe8,0x0,0x0000194 e303 BNC 0x19c000196 cfe5 MOVFF 0xfe5,0xfed000198 ffed00019a d7fb BRA 0x19200019c ee00 LFSR 0x0,0x1e00019e f01e0001a0 0e0b MOVLW 0xb0001a2 04e8 DECF 0xe8,0x0,0x00001a4 e303 BNC 0x1ac0001a6 cfe5 MOVFF 0xfe5,0xfed0001a8 ffed0001aa d7fb BRA 0x1a20001ac cfe5 MOVFF 0xfe5,0xffa0001ae fffa0001b0 cfe5 MOVFF 0xfe5,0xff40001b2 fff40001b4 cfe5 MOVFF 0xfe5,0xff30001b6 fff30001b8 cfe5 MOVFF 0xfe5,0xff50001ba fff50001bc cfe5 MOVFF 0xfe5,0xff70001be fff70001c0 cfe5 MOVFF 0xfe5,0xff60001c2 fff60001c4 cfe5 MOVFF 0xfe5,0xfea0001c6 ffea0001c8 cfe5 MOVFF 0xfe5,0xfe90001ca ffe90001cc cfe5 MOVFF 0xfe5,0xfda0001ce ffda0001d0 50e5 MOVF 0xe5,0x0,0x00001d2 cfe5 MOVFF 0xfe5,0xfe00001d4 ffe00001d6 cfe5 MOVFF 0xfe5,0xfd80001d8 ffd80001da 0010 RETFIE 0x0#pragma code highVector=0x08 F:\MCP\projects\CAN\canNode\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c000008 ef95 GOTO 0x12a _asm goto HighISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00000a f00000000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow LowISR F:\MCP\projects\CAN\canNode\Source\Main.c0001dc cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0001de ffe40001e0 cfe0 MOVFF 0xfe0,0xfe40001e2 ffe40001e4 6ee4 MOVWF 0xe4,0x00001e6 cfda MOVFF 0xfda,0xfe40001e8 ffe40001ea 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0001ec 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0001ee cfe5 MOVFF 0xfe5,0xfda0001f0 ffda0001f2 50e5 MOVF 0xe5,0x0,0x00001f4 cfe5 MOVFF 0xfe5,0xfe00001f6 ffe00001f8 cfe5 MOVFF 0xfe5,0xfd80001fa ffd80001fc 0010 RETFIE 0x0#pragma code lowVector=0x18 F:\MCP\projects\CAN\canNode\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c000018 efee GOTO 0x1dc _asm goto LowISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00001a f00000001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: none F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c0001fe 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canNode\Source\Main.c000200 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canNode\Source\Main.c000202 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c000204 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000206 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c000208 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c00020a ffe600020c cfe1 MOVFF 0xfe1,0xfd900020e ffd9000210 0e02 MOVLW 0x2000212 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c000214 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canNode\Source\Main.c000216 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000218 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\Main.c00021a 04db DECF 0xdb,0x0,0x000021c e132 BNZ 0x282{ F:\MCP\projects\CAN\canNode\Source\Main.c00021e 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canNode\Source\Main.c000220 cfdb MOVFF 0xfdb,0x0000222 f000000224 0ef2 MOVLW 0xf2000226 cfdb MOVFF 0xfdb,0x1000228 f00100022a 0ef3 MOVLW 0xf300022c cfdb MOVFF 0xfdb,0x200022e f002000230 0ef4 MOVLW 0xf4000232 cfdb MOVFF 0xfdb,0x3000234 f003000236 0e18 MOVLW 0x18000238 90d8 BCF 0xd8,0x0,0x000023a 3203 RRCF 0x3,0x1,0x000023c 3202 RRCF 0x2,0x1,0x000023e 3201 RRCF 0x1,0x1,0x0000240 3200 RRCF 0x0,0x1,0x0000242 06e8 DECF 0xe8,0x1,0x0000244 e1f9 BNZ 0x238000246 5000 MOVF 0x0,0x0,0x0000248 6ee6 MOVWF 0xe6,0x000024a ec48 CALL 0xa90,0x000024c f00500024e 52e5 MOVF 0xe5,0x1,0x0000250 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canNode\Source\Main.c000252 cfdb MOVFF 0xfdb,0x0000254 f000000256 0ef2 MOVLW 0xf2000258 cfdb MOVFF 0xfdb,0x100025a f00100025c 0ef3 MOVLW 0xf300025e cfdb MOVFF 0xfdb,0x2000260 f002000262 0ef4 MOVLW 0xf4000264 cfdb MOVFF 0xfdb,0x3000266 f003000268 0e10 MOVLW 0x1000026a 90d8 BCF 0xd8,0x0,0x000026c 3203 RRCF 0x3,0x1,0x000026e 3202 RRCF 0x2,0x1,0x0000270 3201 RRCF 0x1,0x1,0x0000272 3200 RRCF 0x0,0x1,0x0000274 06e8 DECF 0xe8,0x1,0x0000276 e1f9 BNZ 0x26a000278 5000 MOVF 0x0,0x0,0x000027a 6ee6 MOVWF 0xe6,0x000027c ec48 CALL 0xa90,0x000027e f005000280 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.c000282 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canNode\Source\Main.c000284 cfdb MOVFF 0xfdb,0x0000286 f000000288 0ef2 MOVLW 0xf200028a cfdb MOVFF 0xfdb,0x100028c f00100028e 0ef3 MOVLW 0xf3000290 cfdb MOVFF 0xfdb,0x2000292 f002000294 0ef4 MOVLW 0xf4000296 cfdb MOVFF 0xfdb,0x3000298 f00300029a 0e08 MOVLW 0x800029c 90d8 BCF 0xd8,0x0,0x000029e 3203 RRCF 0x3,0x1,0x00002a0 3202 RRCF 0x2,0x1,0x00002a2 3201 RRCF 0x1,0x1,0x00002a4 3200 RRCF 0x0,0x1,0x00002a6 06e8 DECF 0xe8,0x1,0x00002a8 e1f9 BNZ 0x29c0002aa 5000 MOVF 0x0,0x0,0x00002ac 6ee6 MOVWF 0xe6,0x00002ae ec48 CALL 0xa90,0x00002b0 f0050002b2 52e5 MOVF 0xe5,0x1,0x00002b4 0ef1 MOVLW 0xf1 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canNode\Source\Main.c0002b6 cfdb MOVFF 0xfdb,0xfe60002b8 ffe60002ba ec48 CALL 0xa90,0x00002bc f0050002be 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c0002c0 6ade CLRF 0xde,0x0 for(i=0;i<cm.data_length && i<8;i++) F:\MCP\projects\CAN\canNode\Source\Main.c0002c2 6add CLRF 0xdd,0x00002c4 cfde MOVFF 0xfde,0x00002c6 f0000002c8 cfdd MOVFF 0xfdd,0x10002ca f0010002cc 0ef6 MOVLW 0xf60002ce 50db MOVF 0xdb,0x0,0x00002d0 0100 MOVLB 0x00002d2 ae01 BTFSS 0x1,0x7,0x00002d4 d002 BRA 0x2da0002d6 90d8 BCF 0xd8,0x0,0x00002d8 d003 BRA 0x2e00002da 5c00 SUBWF 0x0,0x0,0x00002dc 0e00 MOVLW 0x00002de 5801 SUBWFB 0x1,0x0,0x00002e0 e22f BC 0x3400002e2 cfde MOVFF 0xfde,0x20002e4 f0020002e6 cfdd MOVFF 0xfdd,0x30002e8 f0030002ea 90d8 BCF 0xd8,0x0,0x00002ec 5003 MOVF 0x3,0x0,0x00002ee e604 BN 0x2f80002f0 0e08 MOVLW 0x80002f2 5c02 SUBWF 0x2,0x0,0x00002f4 0e00 MOVLW 0x00002f6 5803 SUBWFB 0x3,0x0,0x00002f8 e223 BC 0x340000336 2adf INCF 0xdf,0x1,0x0000338 0e01 MOVLW 0x100033a e3c4 BNC 0x2c400033c 2adb INCF 0xdb,0x1,0x000033e d7c2 BRA 0x2c40002fa 50d9 MOVF 0xd9,0x0,0x0 uartPutc(cm.data[cm.data_length-i-1]); F:\MCP\projects\CAN\canNode\Source\Main.c0002fc 0ff7 ADDLW 0xf70002fe 6e00 MOVWF 0x0,0x0000300 0eff MOVLW 0xff000302 20da ADDWFC 0xda,0x0,0x0000304 6e01 MOVWF 0x1,0x0000306 0ef6 MOVLW 0xf6000308 50db MOVF 0xdb,0x0,0x000030a 6e04 MOVWF 0x4,0x000030c 6a05 CLRF 0x5,0x000030e 50de MOVF 0xde,0x0,0x0000310 5c04 SUBWF 0x4,0x0,0x0000312 6e02 MOVWF 0x2,0x0000314 50dd MOVF 0xdd,0x0,0x0000316 5805 SUBWFB 0x5,0x0,0x0000318 6e03 MOVWF 0x3,0x000031a 0602 DECF 0x2,0x1,0x000031c 0e00 MOVLW 0x000031e 5a03 SUBWFB 0x3,0x1,0x0000320 5000 MOVF 0x0,0x0,0x0000322 2402 ADDWF 0x2,0x0,0x0000324 6ee9 MOVWF 0xe9,0x0000326 5001 MOVF 0x1,0x0,0x0000328 2003 ADDWFC 0x3,0x0,0x000032a 6eea MOVWF 0xea,0x000032c 50ef MOVF 0xef,0x0,0x000032e 6ee6 MOVWF 0xe6,0x0000330 ec48 CALL 0xa90,0x0000332 f005000334 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canNode\Source\Main.c000340 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canNode\Source\Main.c000342 5ce1 SUBWF 0xe1,0x0,0x0000344 e202 BC 0x34a000346 6ae1 CLRF 0xe1,0x0000348 52e5 MOVF 0xe5,0x1,0x000034a 6ee1 MOVWF 0xe1,0x000034c 52e5 MOVF 0xe5,0x1,0x000034e cfe7 MOVFF 0xfe7,0xfd9000350 ffd9000352 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: uartParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received uart message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: uartInit and received byte. F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\Main.c000354 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canNode\Source\Main.c000356 ffe6000358 cfe1 MOVFF 0xfe1,0xfd900035a ffd900035c 0e0e MOVLW 0xe00035e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000360 0efe MOVLW 0xfe if (c=='1') F:\MCP\projects\CAN\canNode\Source\Main.c000362 50db MOVF 0xdb,0x0,0x0000364 0831 SUBLW 0x31000366 e14d BNZ 0x402{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.c000368 68de SETF 0xde,0x0 cm.ident=0x1FFF07FF; F:\MCP\projects\CAN\canNode\Source\Main.c00036a 0e07 MOVLW 0x700036c 6ede MOVWF 0xde,0x000036e 68de SETF 0xde,0x0000370 0e1f MOVLW 0x1f000372 6edd MOVWF 0xdd,0x0000374 52dd MOVF 0xdd,0x1,0x0000376 52dd MOVF 0xdd,0x1,0x0000378 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c00037a 6ef3 MOVWF 0xf3,0x000037c 0e04 MOVLW 0x400037e cff3 MOVFF 0xff3,0xfdb000380 ffdb000382 6ef3 MOVWF 0xf3,0x0 cm.data_length=4; F:\MCP\projects\CAN\canNode\Source\Main.c000384 0e05 MOVLW 0x5000386 cff3 MOVFF 0xff3,0xfdb000388 ffdb00038a 0e61 MOVLW 0x61 cm.data[0]='a'; F:\MCP\projects\CAN\canNode\Source\Main.c00038c 6ef3 MOVWF 0xf3,0x000038e 0e06 MOVLW 0x6000390 cff3 MOVFF 0xff3,0xfdb000392 ffdb000394 0e62 MOVLW 0x62 cm.data[1]='b'; F:\MCP\projects\CAN\canNode\Source\Main.c000396 6ef3 MOVWF 0xf3,0x0000398 0e07 MOVLW 0x700039a cff3 MOVFF 0xff3,0xfdb00039c ffdb00039e 0e63 MOVLW 0x63 cm.data[2]='c'; F:\MCP\projects\CAN\canNode\Source\Main.c0003a0 6ef3 MOVWF 0xf3,0x00003a2 0e08 MOVLW 0x80003a4 cff3 MOVFF 0xff3,0xfdb0003a6 ffdb0003a8 0e64 MOVLW 0x64 cm.data[3]='d'; F:\MCP\projects\CAN\canNode\Source\Main.c0003aa 6ef3 MOVWF 0xf3,0x00003ac 0e09 MOVLW 0x90003ae cff3 MOVFF 0xff3,0xfdb0003b0 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0003b2 cfd9 MOVFF 0xfd9,0xfe9 while(!canSendMessage(cm)); F:\MCP\projects\CAN\canNode\Source\Main.c0003b4 ffe90003b6 cfda MOVFF 0xfda,0xfea0003b8 ffea0003ba cfee MOVFF 0xfee,0xfe60003bc ffe60003be cfee MOVFF 0xfee,0xfe60003c0 ffe60003c2 cfee MOVFF 0xfee,0xfe60003c4 ffe60003c6 cfee MOVFF 0xfee,0xfe60003c8 ffe60003ca cfee MOVFF 0xfee,0xfe60003cc ffe60003ce cfee MOVFF 0xfee,0xfe60003d0 ffe60003d2 cfee MOVFF 0xfee,0xfe60003d4 ffe60003d6 cfee MOVFF 0xfee,0xfe60003d8 ffe60003da cfee MOVFF 0xfee,0xfe60003dc ffe60003de cfee MOVFF 0xfee,0xfe60003e0 ffe60003e2 cfee MOVFF 0xfee,0xfe60003e4 ffe60003e6 cfee MOVFF 0xfee,0xfe60003e8 ffe60003ea cfee MOVFF 0xfee,0xfe60003ec ffe60003ee cfee MOVFF 0xfee,0xfe60003f0 ffe60003f2 ec52 CALL 0x8a4,0x00003f4 f0040003f6 6e00 MOVWF 0x0,0x00003f8 0e0e MOVLW 0xe0003fa 5ee1 SUBWF 0xe1,0x1,0x00003fc 5000 MOVF 0x0,0x0,0x00003fe 0900 IORLW 0x0000400 e0d8 BZ 0x3b2} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000402 0efe MOVLW 0xfe if (c=='d') F:\MCP\projects\CAN\canNode\Source\Main.c000404 50db MOVF 0xdb,0x0,0x0000406 0864 SUBLW 0x64000408 e105 BNZ 0x414{ F:\MCP\projects\CAN\canNode\Source\Main.c00040a 0e44 MOVLW 0x44 uartPutc('D'); F:\MCP\projects\CAN\canNode\Source\Main.c00040c 6ee6 MOVWF 0xe6,0x000040e ec48 CALL 0xa90,0x0000410 f005000412 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c000414 0efe MOVLW 0xfe if (c=='D') F:\MCP\projects\CAN\canNode\Source\Main.c000416 50db MOVF 0xdb,0x0,0x0000418 0844 SUBLW 0x4400041a e108 BNZ 0x42c{ F:\MCP\projects\CAN\canNode\Source\Main.c00041c 0e52 MOVLW 0x52 uartPutrs("Debug? Debug!"); F:\MCP\projects\CAN\canNode\Source\Main.c00041e 6ee6 MOVWF 0xe6,0x0000420 0e0c MOVLW 0xc000422 6ee6 MOVWF 0xe6,0x0000424 ec76 CALL 0xaec,0x0000426 f005000428 52e5 MOVF 0xe5,0x1,0x000042a 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00042c 0efe MOVLW 0xfe if (c=='2') F:\MCP\projects\CAN\canNode\Source\Main.c00042e 50db MOVF 0xdb,0x0,0x0000430 0832 SUBLW 0x32000432 e001 BZ 0x436000434 d0c8 BRA 0x5c6{ F:\MCP\projects\CAN\canNode\Source\Main.c000436 5060 MOVF 0x60,0x0,0x0 uartPutc(RXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.c000438 6ee6 MOVWF 0xe6,0x000043a ec48 CALL 0xa90,0x000043c f00500043e 52e5 MOVF 0xe5,0x1,0x0000440 cf50 MOVFF 0xf50,0xfe6 uartPutc(RXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.c000442 ffe6000444 ec48 CALL 0xa90,0x0000446 f005000448 52e5 MOVF 0xe5,0x1,0x000044a 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00044c 6ee6 MOVWF 0xe6,0x000044e ec48 CALL 0xa90,0x0000450 f005000452 52e5 MOVF 0xe5,0x1,0x0000454 ce20 MOVFF 0xe20,0xfe6 uartPutc(B0CON); F:\MCP\projects\CAN\canNode\Source\Main.c000456 ffe6000458 ec48 CALL 0xa90,0x000045a f00500045c 52e5 MOVF 0xe5,0x1,0x000045e ce30 MOVFF 0xe30,0xfe6 uartPutc(B1CON); F:\MCP\projects\CAN\canNode\Source\Main.c000460 ffe6000462 ec48 CALL 0xa90,0x0000464 f005000466 52e5 MOVF 0xe5,0x1,0x0000468 ce40 MOVFF 0xe40,0xfe6 uartPutc(B2CON); F:\MCP\projects\CAN\canNode\Source\Main.c00046a ffe600046c ec48 CALL 0xa90,0x000046e f005000470 52e5 MOVF 0xe5,0x1,0x0000472 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000474 6ee6 MOVWF 0xe6,0x0000476 ec48 CALL 0xa90,0x0000478 f00500047a 52e5 MOVF 0xe5,0x1,0x000047c ce50 MOVFF 0xe50,0xfe6 uartPutc(B3CON); F:\MCP\projects\CAN\canNode\Source\Main.c00047e ffe6000480 ec48 CALL 0xa90,0x0000482 f005000484 52e5 MOVF 0xe5,0x1,0x0000486 ce60 MOVFF 0xe60,0xfe6 uartPutc(B4CON); F:\MCP\projects\CAN\canNode\Source\Main.c000488 ffe600048a ec48 CALL 0xa90,0x000048c f00500048e 52e5 MOVF 0xe5,0x1,0x0000490 ce70 MOVFF 0xe70,0xfe6 uartPutc(B5CON); F:\MCP\projects\CAN\canNode\Source\Main.c000492 ffe6000494 ec48 CALL 0xa90,0x0000496 f005000498 52e5 MOVF 0xe5,0x1,0x000049a 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00049c 6ee6 MOVWF 0xe6,0x000049e ec48 CALL 0xa90,0x00004a0 f0050004a2 52e5 MOVF 0xe5,0x1,0x00004a4 506e MOVF 0x6e,0x0,0x0 uartPutc(CANSTAT); F:\MCP\projects\CAN\canNode\Source\Main.c0004a6 6ee6 MOVWF 0xe6,0x00004a8 ec48 CALL 0xa90,0x00004aa f0050004ac 52e5 MOVF 0xe5,0x1,0x00004ae 5074 MOVF 0x74,0x0,0x0 uartPutc(COMSTAT); F:\MCP\projects\CAN\canNode\Source\Main.c0004b0 6ee6 MOVWF 0xe6,0x00004b2 ec48 CALL 0xa90,0x00004b4 f0050004b6 52e5 MOVF 0xe5,0x1,0x00004b8 5077 MOVF 0x77,0x0,0x0 uartPutc(ECANCON); F:\MCP\projects\CAN\canNode\Source\Main.c0004ba 6ee6 MOVWF 0xe6,0x00004bc ec48 CALL 0xa90,0x00004be f0050004c0 52e5 MOVF 0xe5,0x1,0x00004c2 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0004c4 6ee6 MOVWF 0xe6,0x00004c6 ec48 CALL 0xa90,0x00004c8 f0050004ca 52e5 MOVF 0xe5,0x1,0x00004cc cf40 MOVFF 0xf40,0xfe6 uartPutc(TXB0CON); F:\MCP\projects\CAN\canNode\Source\Main.c0004ce ffe60004d0 ec48 CALL 0xa90,0x00004d2 f0050004d4 52e5 MOVF 0xe5,0x1,0x00004d6 cf30 MOVFF 0xf30,0xfe6 uartPutc(TXB1CON); F:\MCP\projects\CAN\canNode\Source\Main.c0004d8 ffe60004da ec48 CALL 0xa90,0x00004dc f0050004de 52e5 MOVF 0xe5,0x1,0x00004e0 cf20 MOVFF 0xf20,0xfe6 uartPutc(TXB2CON); F:\MCP\projects\CAN\canNode\Source\Main.c0004e2 ffe60004e4 ec48 CALL 0xa90,0x00004e6 f0050004e8 52e5 MOVF 0xe5,0x1,0x00004ea 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0004ec 6ee6 MOVWF 0xe6,0x00004ee ec48 CALL 0xa90,0x00004f0 f0050004f2 52e5 MOVF 0xe5,0x1,0x00004f4 50a4 MOVF 0xa4,0x0,0x0 uartPutc(PIR3); F:\MCP\projects\CAN\canNode\Source\Main.c0004f6 6ee6 MOVWF 0xe6,0x00004f8 ec48 CALL 0xa90,0x00004fa f0050004fc 52e5 MOVF 0xe5,0x1,0x00004fe 50a3 MOVF 0xa3,0x0,0x0 uartPutc(PIE3); F:\MCP\projects\CAN\canNode\Source\Main.c000500 6ee6 MOVWF 0xe6,0x0000502 ec48 CALL 0xa90,0x0000504 f005000506 52e5 MOVF 0xe5,0x1,0x0000508 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c00050a 6ee6 MOVWF 0xe6,0x000050c ec48 CALL 0xa90,0x000050e f005000510 52e5 MOVF 0xe5,0x1,0x0000512 5070 MOVF 0x70,0x0,0x0 uartPutc(BRGCON1); F:\MCP\projects\CAN\canNode\Source\Main.c000514 6ee6 MOVWF 0xe6,0x0000516 ec48 CALL 0xa90,0x0000518 f00500051a 52e5 MOVF 0xe5,0x1,0x000051c 5071 MOVF 0x71,0x0,0x0 uartPutc(BRGCON2); F:\MCP\projects\CAN\canNode\Source\Main.c00051e 6ee6 MOVWF 0xe6,0x0000520 ec48 CALL 0xa90,0x0000522 f005000524 52e5 MOVF 0xe5,0x1,0x0000526 5072 MOVF 0x72,0x0,0x0 uartPutc(BRGCON3); F:\MCP\projects\CAN\canNode\Source\Main.c000528 6ee6 MOVWF 0xe6,0x000052a ec48 CALL 0xa90,0x000052c f00500052e 52e5 MOVF 0xe5,0x1,0x0000530 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000532 6ee6 MOVWF 0xe6,0x0000534 ec48 CALL 0xa90,0x0000536 f005000538 52e5 MOVF 0xe5,0x1,0x000053a cdd4 MOVFF 0xdd4,0xfe6 uartPutc(RXFCON0); F:\MCP\projects\CAN\canNode\Source\Main.c00053c ffe600053e ec48 CALL 0xa90,0x0000540 f005000542 52e5 MOVF 0xe5,0x1,0x0000544 cdd5 MOVFF 0xdd5,0xfe6 uartPutc(RXFCON1); F:\MCP\projects\CAN\canNode\Source\Main.c000546 ffe6000548 ec48 CALL 0xa90,0x000054a f00500054c 52e5 MOVF 0xe5,0x1,0x000054e 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c000550 6ee6 MOVWF 0xe6,0x0000552 ec48 CALL 0xa90,0x0000554 f005000556 52e5 MOVF 0xe5,0x1,0x0000558 cde0 MOVFF 0xde0,0xfe6 uartPutc(RXFBCON0); F:\MCP\projects\CAN\canNode\Source\Main.c00055a ffe600055c ec48 CALL 0xa90,0x000055e f005000560 52e5 MOVF 0xe5,0x1,0x0000562 cde1 MOVFF 0xde1,0xfe6 uartPutc(RXFBCON1); F:\MCP\projects\CAN\canNode\Source\Main.c000564 ffe6000566 ec48 CALL 0xa90,0x0000568 f00500056a 52e5 MOVF 0xe5,0x1,0x000056c cde2 MOVFF 0xde2,0xfe6 uartPutc(RXFBCON2); F:\MCP\projects\CAN\canNode\Source\Main.c00056e ffe6000570 ec48 CALL 0xa90,0x0000572 f005000574 52e5 MOVF 0xe5,0x1,0x0000576 cde3 MOVFF 0xde3,0xfe6 uartPutc(RXFBCON3); F:\MCP\projects\CAN\canNode\Source\Main.c000578 ffe600057a ec48 CALL 0xa90,0x000057c f00500057e 52e5 MOVF 0xe5,0x1,0x0000580 cde4 MOVFF 0xde4,0xfe6 uartPutc(RXFBCON4); F:\MCP\projects\CAN\canNode\Source\Main.c000582 ffe6000584 ec48 CALL 0xa90,0x0000586 f005000588 52e5 MOVF 0xe5,0x1,0x000058a cde5 MOVFF 0xde5,0xfe6 uartPutc(RXFBCON5); F:\MCP\projects\CAN\canNode\Source\Main.c00058c ffe600058e ec48 CALL 0xa90,0x0000590 f005000592 52e5 MOVF 0xe5,0x1,0x0000594 cde6 MOVFF 0xde6,0xfe6 uartPutc(RXFBCON6); F:\MCP\projects\CAN\canNode\Source\Main.c000596 ffe6000598 ec48 CALL 0xa90,0x000059a f00500059c 52e5 MOVF 0xe5,0x1,0x000059e cde7 MOVFF 0xde7,0xfe6 uartPutc(RXFBCON7); F:\MCP\projects\CAN\canNode\Source\Main.c0005a0 ffe60005a2 ec48 CALL 0xa90,0x00005a4 f0050005a6 52e5 MOVF 0xe5,0x1,0x00005a8 0e7b MOVLW 0x7b uartPutc(123); F:\MCP\projects\CAN\canNode\Source\Main.c0005aa 6ee6 MOVWF 0xe6,0x00005ac ec48 CALL 0xa90,0x00005ae f0050005b0 52e5 MOVF 0xe5,0x1,0x00005b2 cdfc MOVFF 0xdfc,0xfe6 uartPutc(TXBIE); F:\MCP\projects\CAN\canNode\Source\Main.c0005b4 ffe60005b6 ec48 CALL 0xa90,0x00005b8 f0050005ba 52e5 MOVF 0xe5,0x1,0x00005bc cdfa MOVFF 0xdfa,0xfe6 uartPutc(BIE0); F:\MCP\projects\CAN\canNode\Source\Main.c0005be ffe60005c0 ec48 CALL 0xa90,0x00005c2 f0050005c4 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0005c6 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\Main.c0005c8 5ce1 SUBWF 0xe1,0x0,0x00005ca e202 BC 0x5d00005cc 6ae1 CLRF 0xe1,0x00005ce 52e5 MOVF 0xe5,0x1,0x00005d0 6ee1 MOVWF 0xe1,0x00005d2 52e5 MOVF 0xe5,0x1,0x00005d4 cfe7 MOVFF 0xfe7,0xfd90005d6 ffd90005d8 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.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.c0005da 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c0005dc 6e6f MOVWF 0x6f,0x00005de 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c0005e0 146e ANDWF 0x6e,0x0,0x00005e2 0880 SUBLW 0x800005e4 e1fc BNZ 0x5deF:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0005e6 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.c0005e8 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005ea 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.c0005ec 0e09 MOVLW 0x9 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c0005ee 1070 IORWF 0x70,0x0,0x00005f0 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c0005f2 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.c0005f4 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005f6 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005f8 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.c0005fa 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005fc 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0005fe 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.c000600 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.c000602 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.c000604 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000606 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000608 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00060a 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c00060c 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00060e 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.c000610 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c000612 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.c000614 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c000616 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c000618 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c00061a 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c00061c 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c00061e 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.c000620 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.c000622 0e40 MOVLW 0x40 CANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000624 6e6f MOVWF 0x6f,0x0000626 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c000628 146e ANDWF 0x6e,0x0,0x000062a 0840 SUBLW 0x4000062c e1fc BNZ 0x626#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.c00062e 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.c000630 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c000632 0b02 ANDLW 0x2000634 e106 BNZ 0x642000636 50a4 MOVF 0xa4,0x0,0x0000638 0b02 ANDLW 0x200063a e103 BNZ 0x64200063c 50a4 MOVF 0xa4,0x0,0x000063e 0b01 ANDLW 0x1000640 e03a BZ 0x6b6{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canNode\Source\CAN.c000642 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000644 d004 BRA 0x64e000646 0e00 MOVLW 0x0000648 1477 ANDWF 0x77,0x0,0x000064a 0910 IORLW 0x1000064c d02b BRA 0x6a4 else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00064e 010f MOVLB 0xf000650 af50 BTFSS 0x50,0x7,0x1000652 d004 BRA 0x65c000654 0e00 MOVLW 0x0000656 1477 ANDWF 0x77,0x0,0x0000658 0911 IORLW 0x1100065a d024 BRA 0x6a4 else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00065c 010e MOVLB 0xe00065e af20 BTFSS 0x20,0x7,0x1000660 d004 BRA 0x66a000662 0e00 MOVLW 0x0000664 1477 ANDWF 0x77,0x0,0x0000666 0912 IORLW 0x12000668 d01d BRA 0x6a4 else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00066a af30 BTFSS 0x30,0x7,0x100066c d004 BRA 0x67600066e 0e00 MOVLW 0x0000670 1477 ANDWF 0x77,0x0,0x0000672 0913 IORLW 0x13000674 d017 BRA 0x6a4 else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000676 af40 BTFSS 0x40,0x7,0x1000678 d004 BRA 0x68200067a 0e00 MOVLW 0x000067c 1477 ANDWF 0x77,0x0,0x000067e 0914 IORLW 0x14000680 d011 BRA 0x6a4 else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c000682 af50 BTFSS 0x50,0x7,0x1000684 d004 BRA 0x68e000686 0e00 MOVLW 0x0000688 1477 ANDWF 0x77,0x0,0x000068a 0915 IORLW 0x1500068c d00b BRA 0x6a4 else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00068e af60 BTFSS 0x60,0x7,0x1000690 d004 BRA 0x69a000692 0e00 MOVLW 0x0000694 1477 ANDWF 0x77,0x0,0x0000696 0916 IORLW 0x16000698 d005 BRA 0x6a4 else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c00069a af70 BTFSS 0x70,0x7,0x100069c d005 BRA 0x6a800069e 0e00 MOVLW 0x00006a0 1477 ANDWF 0x77,0x0,0x00006a2 0917 IORLW 0x170006a4 6e77 MOVWF 0x77,0x00006a6 d808 RCALL 0x6b8F:\MCP\projects\CAN\canNode\Source\CAN.c0006a8 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006aa d003 BRA 0x6b20006ac 92a4 BCF 0xa4,0x1,0x00006ae b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006b0 92a4 BCF 0xa4,0x1,0x00006b2 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c0006b4 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0006b6 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.c0006b8 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c0006ba ffe60006bc cfe1 MOVFF 0xfe1,0xfd90006be ffd90006c0 0e0e MOVLW 0xe0006c2 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.c0006c4 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c0006c6 0b08 ANDLW 0x80006c8 e102 BNZ 0x6ce0006ca 0e00 MOVLW 0x00006cc d001 BRA 0x6d00006ce 0e01 MOVLW 0x10006d0 6ee7 MOVWF 0xe7,0x00006d2 0e04 MOVLW 0x40006d4 cfe7 MOVFF 0xfe7,0xfdb0006d6 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c0006d8 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c0006da 6ade CLRF 0xde,0x00006dc 6ade CLRF 0xde,0x00006de 6add CLRF 0xdd,0x00006e0 52dd MOVF 0xdd,0x1,0x00006e2 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0006e4 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0006e6 e163 BNZ 0x7ae{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.c//cm.ident[3] = RXB0SIDH>>3; F:\MCP\projects\CAN\canNode\Source\CAN.c//cm.ident[2] = (RXB0SIDL & 0x03) + ((RXB0SIDL & 0xE0)>>3) + (BYTE)(RXB0SIDH<<5); F:\MCP\projects\CAN\canNode\Source\CAN.c//cm.ident[1] = RXB0EIDH; F:\MCP\projects\CAN\canNode\Source\CAN.c//cm.ident[0] = RXB0EIDL; 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.c0006e8 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.c0006ea 6e00 MOVWF 0x0,0x00006ec 6a01 CLRF 0x1,0x00006ee 6a02 CLRF 0x2,0x00006f0 6a03 CLRF 0x3,0x00006f2 0e15 MOVLW 0x150006f4 0b1f ANDLW 0x1f0006f6 e007 BZ 0x7060006f8 90d8 BCF 0xd8,0x0,0x00006fa 3600 RLCF 0x0,0x1,0x00006fc 3601 RLCF 0x1,0x1,0x00006fe 3602 RLCF 0x2,0x1,0x0000700 3603 RLCF 0x3,0x1,0x0000702 06e8 DECF 0xe8,0x1,0x0000704 e1f9 BNZ 0x6f8000706 0ee0 MOVLW 0xe0000708 1462 ANDWF 0x62,0x0,0x000070a 6e04 MOVWF 0x4,0x000070c 6a05 CLRF 0x5,0x000070e 6a06 CLRF 0x6,0x0000710 6a07 CLRF 0x7,0x0000712 0e0d MOVLW 0xd000714 0b1f ANDLW 0x1f000716 e007 BZ 0x726000718 90d8 BCF 0xd8,0x0,0x000071a 3604 RLCF 0x4,0x1,0x000071c 3605 RLCF 0x5,0x1,0x000071e 3606 RLCF 0x6,0x1,0x0000720 3607 RLCF 0x7,0x1,0x0000722 06e8 DECF 0xe8,0x1,0x0000724 e1f9 BNZ 0x718000726 5004 MOVF 0x4,0x0,0x0000728 2600 ADDWF 0x0,0x1,0x000072a 5005 MOVF 0x5,0x0,0x000072c 2201 ADDWFC 0x1,0x1,0x000072e 5006 MOVF 0x6,0x0,0x0000730 2202 ADDWFC 0x2,0x1,0x0000732 5007 MOVF 0x7,0x0,0x0000734 2203 ADDWFC 0x3,0x1,0x0000736 0e03 MOVLW 0x3000738 1462 ANDWF 0x62,0x0,0x000073a 6e08 MOVWF 0x8,0x000073c 6a09 CLRF 0x9,0x000073e 6a0a CLRF 0xa,0x0000740 6a0b CLRF 0xb,0x0000742 0e10 MOVLW 0x10000744 0b1f ANDLW 0x1f000746 e007 BZ 0x756000748 90d8 BCF 0xd8,0x0,0x000074a 3608 RLCF 0x8,0x1,0x000074c 3609 RLCF 0x9,0x1,0x000074e 360a RLCF 0xa,0x1,0x0000750 360b RLCF 0xb,0x1,0x0000752 06e8 DECF 0xe8,0x1,0x0000754 e1f9 BNZ 0x748000756 5008 MOVF 0x8,0x0,0x0000758 2600 ADDWF 0x0,0x1,0x000075a 5009 MOVF 0x9,0x0,0x000075c 2201 ADDWFC 0x1,0x1,0x000075e 500a MOVF 0xa,0x0,0x0000760 2202 ADDWFC 0x2,0x1,0x0000762 500b MOVF 0xb,0x0,0x0000764 2203 ADDWFC 0x3,0x1,0x0000766 5063 MOVF 0x63,0x0,0x0000768 6e0c MOVWF 0xc,0x000076a 6a0d CLRF 0xd,0x000076c 6a0e CLRF 0xe,0x000076e 6a0f CLRF 0xf,0x0000770 0e08 MOVLW 0x8000772 0b1f ANDLW 0x1f000774 e007 BZ 0x784000776 90d8 BCF 0xd8,0x0,0x0000778 360c RLCF 0xc,0x1,0x000077a 360d RLCF 0xd,0x1,0x000077c 360e RLCF 0xe,0x1,0x000077e 360f RLCF 0xf,0x1,0x0000780 06e8 DECF 0xe8,0x1,0x0000782 e1f9 BNZ 0x776000784 500c MOVF 0xc,0x0,0x0000786 2600 ADDWF 0x0,0x1,0x0000788 500d MOVF 0xd,0x0,0x000078a 2201 ADDWFC 0x1,0x1,0x000078c 500e MOVF 0xe,0x0,0x000078e 2202 ADDWFC 0x2,0x1,0x0000790 500f MOVF 0xf,0x0,0x0000792 2203 ADDWFC 0x3,0x1,0x0000794 5064 MOVF 0x64,0x0,0x0000796 6e10 MOVWF 0x10,0x0000798 6a11 CLRF 0x11,0x000079a 6a12 CLRF 0x12,0x000079c 6a13 CLRF 0x13,0x000079e 50e8 MOVF 0xe8,0x0,0x00007a0 2600 ADDWF 0x0,0x1,0x00007a2 5011 MOVF 0x11,0x0,0x00007a4 2201 ADDWFC 0x1,0x1,0x00007a6 5012 MOVF 0x12,0x0,0x00007a8 2202 ADDWFC 0x2,0x1,0x00007aa 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0007ac d023 BRA 0x7f4 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.c//cm.ident[1]=RXB0SIDH>>5; F:\MCP\projects\CAN\canNode\Source\CAN.c//cm.ident[0]=((RXB0SIDL & 0b11100000)>>5)+(BYTE)(RXB0SIDH<<3); 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.c0007ae 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c0007b0 6e00 MOVWF 0x0,0x00007b2 6a01 CLRF 0x1,0x00007b4 6a02 CLRF 0x2,0x00007b6 6a03 CLRF 0x3,0x00007b8 0e03 MOVLW 0x30007ba 0b1f ANDLW 0x1f0007bc e007 BZ 0x7cc0007be 90d8 BCF 0xd8,0x0,0x00007c0 3600 RLCF 0x0,0x1,0x00007c2 3601 RLCF 0x1,0x1,0x00007c4 3602 RLCF 0x2,0x1,0x00007c6 3603 RLCF 0x3,0x1,0x00007c8 06e8 DECF 0xe8,0x1,0x00007ca e1f9 BNZ 0x7be0007cc 5062 MOVF 0x62,0x0,0x00007ce 6e04 MOVWF 0x4,0x00007d0 6a05 CLRF 0x5,0x00007d2 6a06 CLRF 0x6,0x00007d4 6a07 CLRF 0x7,0x00007d6 0e05 MOVLW 0x50007d8 90d8 BCF 0xd8,0x0,0x00007da 3207 RRCF 0x7,0x1,0x00007dc 3206 RRCF 0x6,0x1,0x00007de 3205 RRCF 0x5,0x1,0x00007e0 3204 RRCF 0x4,0x1,0x00007e2 06e8 DECF 0xe8,0x1,0x00007e4 e1f9 BNZ 0x7d80007e6 5004 MOVF 0x4,0x0,0x00007e8 2600 ADDWF 0x0,0x1,0x00007ea 5005 MOVF 0x5,0x0,0x00007ec 2201 ADDWFC 0x1,0x1,0x00007ee 5006 MOVF 0x6,0x0,0x00007f0 2202 ADDWFC 0x2,0x1,0x00007f2 5007 MOVF 0x7,0x0,0x00007f4 2203 ADDWFC 0x3,0x1,0x00007f6 c000 MOVFF 0x0,0xfdf0007f8 ffdf0007fa 0e01 MOVLW 0x10007fc c001 MOVFF 0x1,0xfdb0007fe ffdb000800 0e02 MOVLW 0x2000802 c002 MOVFF 0x2,0xfdb000804 ffdb000806 0e03 MOVLW 0x3000808 c003 MOVFF 0x3,0xfdb00080a 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.c00080c 0e05 MOVLW 0x5 cm.data_length=RXB0DLC; F:\MCP\projects\CAN\canNode\Source\CAN.c00080e cf65 MOVFF 0xf65,0xfdb000810 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000812 0e06 MOVLW 0x6 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c000814 cf66 MOVFF 0xf66,0xfdb000816 ffdb000818 0e07 MOVLW 0x700081a cf67 MOVFF 0xf67,0xfdb00081c ffdb00081e 0e08 MOVLW 0x8 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c000820 cf68 MOVFF 0xf68,0xfdb000822 ffdb000824 0e09 MOVLW 0x9000826 cf69 MOVFF 0xf69,0xfdb000828 ffdb00082a 0e0a MOVLW 0xa cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c00082c cf6a MOVFF 0xf6a,0xfdb00082e ffdb000830 0e0b MOVLW 0xb000832 cf6b MOVFF 0xf6b,0xfdb000834 ffdb000836 0e0c MOVLW 0xc cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c000838 cf6c MOVFF 0xf6c,0xfdb00083a ffdb00083c 0e0d MOVLW 0xd00083e cf6d MOVFF 0xf6d,0xfdb000840 ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c000842 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.c000844 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c000846 ffe9000848 cfda MOVFF 0xfda,0xfea00084a ffea00084c cfee MOVFF 0xfee,0xfe600084e ffe6000850 cfee MOVFF 0xfee,0xfe6000852 ffe6000854 cfee MOVFF 0xfee,0xfe6000856 ffe6000858 cfee MOVFF 0xfee,0xfe600085a ffe600085c cfee MOVFF 0xfee,0xfe600085e ffe6000860 cfee MOVFF 0xfee,0xfe6000862 ffe6000864 cfee MOVFF 0xfee,0xfe6000866 ffe6000868 cfee MOVFF 0xfee,0xfe600086a ffe600086c cfee MOVFF 0xfee,0xfe600086e ffe6000870 cfee MOVFF 0xfee,0xfe6000872 ffe6000874 cfee MOVFF 0xfee,0xfe6000876 ffe6000878 cfee MOVFF 0xfee,0xfe600087a ffe600087c cfee MOVFF 0xfee,0xfe600087e ffe6000880 cfee MOVFF 0xfee,0xfe6000882 ffe6000884 ec04 CALL 0x208,0x0000886 f001000888 6e00 MOVWF 0x0,0x000088a 0e0e MOVLW 0xe00088c 5ee1 SUBWF 0xe1,0x1,0x000088e 5000 MOVF 0x0,0x0,0x0000890 0e0e MOVLW 0xe } F:\MCP\projects\CAN\canNode\Source\CAN.c000892 5ce1 SUBWF 0xe1,0x0,0x0000894 e202 BC 0x89a000896 6ae1 CLRF 0xe1,0x0000898 52e5 MOVF 0xe5,0x1,0x000089a 6ee1 MOVWF 0xe1,0x000089c 52e5 MOVF 0xe5,0x1,0x000089e cfe7 MOVFF 0xfe7,0xfd90008a0 ffd90008a2 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.c0008a4 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\CAN.c0008a6 ffe60008a8 cfe1 MOVFF 0xfe1,0xfd90008aa ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0008ac 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008ae b740 BTFSC 0x40,0x3,0x10008b0 d004 BRA 0x8ba0008b2 0e00 MOVLW 0x00008b4 1477 ANDWF 0x77,0x0,0x00008b6 0903 IORLW 0x30008b8 6e77 MOVWF 0x77,0x00008ba 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008bc b730 BTFSC 0x30,0x3,0x10008be d004 BRA 0x8c80008c0 0e00 MOVLW 0x00008c2 1477 ANDWF 0x77,0x0,0x00008c4 0904 IORLW 0x40008c6 6e77 MOVWF 0x77,0x00008c8 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c0008ca b720 BTFSC 0x20,0x3,0x10008cc d005 BRA 0x8d80008ce 0e00 MOVLW 0x00008d0 1477 ANDWF 0x77,0x0,0x00008d2 0905 IORLW 0x50008d4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c0008d6 d002 BRA 0x8dc else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c0008d8 0e00 MOVLW 0x00008da d0ca BRA 0xa70F:\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.c0008dc 0ef5 MOVLW 0xf5 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c0008de 04db DECF 0xdb,0x0,0x00008e0 e102 BNZ 0x8e60008e2 0e01 MOVLW 0x10008e4 d001 BRA 0x8e80008e6 0e00 MOVLW 0x00008e8 b0e8 BTFSC 0xe8,0x0,0x00008ea 8662 BSF 0x62,0x3,0x00008ec a0e8 BTFSS 0xe8,0x0,0x00008ee 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0008f0 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0008f2 04db DECF 0xdb,0x0,0x00008f4 e104 BNZ 0x8fe{ F:\MCP\projects\CAN\canNode\Source\CAN.c0008f6 0e08 MOVLW 0x8 RXB0SIDL=RXB0SIDL|0b00001000; F:\MCP\projects\CAN\canNode\Source\CAN.c0008f8 1062 IORWF 0x62,0x0,0x00008fa 6e62 MOVWF 0x62,0x0// _asm F:\MCP\projects\CAN\canNode\Source\CAN.c// bsf RXB0SIDL, 3, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c// _endasm F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0008fc d003 BRA 0x904 else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c0008fe 0ef7 MOVLW 0xf7 RXB0SIDL=RXB0SIDL&0b11110111; F:\MCP\projects\CAN\canNode\Source\CAN.c000900 1462 ANDWF 0x62,0x0,0x0000902 6e62 MOVWF 0x62,0x0// _asm F:\MCP\projects\CAN\canNode\Source\CAN.c// bcf RXB0SIDL, 3, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c// _endasm 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.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000904 0ef5 MOVLW 0xf5 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c000906 04db DECF 0xdb,0x0,0x0000908 e15f BNZ 0x9c8{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH = (BYTE)(cm.ident[3]<<3)+((cm.ident[2] & 0xE0)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL = (BYTE)((cm.ident[2] & 0x1C)<<3)+(cm.ident[2] & 0x03); F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDH = cm.ident[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDL = cm.ident[0]; 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.c00090a 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c00090c cfdb MOVFF 0xfdb,0x000090e f000000910 0ef2 MOVLW 0xf2000912 cfdb MOVFF 0xfdb,0x1000914 f001000916 0ef3 MOVLW 0xf3000918 cfdb MOVFF 0xfdb,0x200091a f00200091c 0ef4 MOVLW 0xf400091e cfdb MOVFF 0xfdb,0x3000920 f003000922 0e15 MOVLW 0x15000924 90d8 BCF 0xd8,0x0,0x0000926 3203 RRCF 0x3,0x1,0x0000928 3202 RRCF 0x2,0x1,0x000092a 3201 RRCF 0x1,0x1,0x000092c 3200 RRCF 0x0,0x1,0x000092e 06e8 DECF 0xe8,0x1,0x0000930 e1f9 BNZ 0x924000932 5000 MOVF 0x0,0x0,0x0000934 6e61 MOVWF 0x61,0x0000936 0ef1 MOVLW 0xf1 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c000938 cfdb MOVFF 0xfdb,0x500093a f00500093c 0ef2 MOVLW 0xf200093e cfdb MOVFF 0xfdb,0x6000940 f006000942 0ef3 MOVLW 0xf3000944 cfdb MOVFF 0xfdb,0x7000946 f007000948 0ef4 MOVLW 0xf400094a cfdb MOVFF 0xfdb,0x800094c f00800094e 0e0d MOVLW 0xd000950 90d8 BCF 0xd8,0x0,0x0000952 3208 RRCF 0x8,0x1,0x0000954 3207 RRCF 0x7,0x1,0x0000956 3206 RRCF 0x6,0x1,0x0000958 3205 RRCF 0x5,0x1,0x000095a 06e8 DECF 0xe8,0x1,0x000095c e1f9 BNZ 0x95000095e 0ee0 MOVLW 0xe0000960 1405 ANDWF 0x5,0x0,0x0000962 6e04 MOVWF 0x4,0x0000964 0ef1 MOVLW 0xf1000966 cfdb MOVFF 0xfdb,0x0000968 f00000096a 0ef2 MOVLW 0xf200096c cfdb MOVFF 0xfdb,0x100096e f001000970 0ef3 MOVLW 0xf3000972 cfdb MOVFF 0xfdb,0x2000974 f002000976 0ef4 MOVLW 0xf4000978 cfdb MOVFF 0xfdb,0x300097a f00300097c 0e10 MOVLW 0x1000097e 90d8 BCF 0xd8,0x0,0x0000980 3203 RRCF 0x3,0x1,0x0000982 3202 RRCF 0x2,0x1,0x0000984 3201 RRCF 0x1,0x1,0x0000986 3200 RRCF 0x0,0x1,0x0000988 06e8 DECF 0xe8,0x1,0x000098a e1f9 BNZ 0x97e00098c 0e03 MOVLW 0x300098e 1400 ANDWF 0x0,0x0,0x0000990 2404 ADDWF 0x4,0x0,0x0000992 6e62 MOVWF 0x62,0x0000994 0ef1 MOVLW 0xf1 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c000996 cfdb MOVFF 0xfdb,0x0000998 f00000099a 0ef2 MOVLW 0xf200099c cfdb MOVFF 0xfdb,0x100099e f0010009a0 0ef3 MOVLW 0xf30009a2 cfdb MOVFF 0xfdb,0x20009a4 f0020009a6 0ef4 MOVLW 0xf40009a8 cfdb MOVFF 0xfdb,0x30009aa f0030009ac 0e08 MOVLW 0x80009ae 90d8 BCF 0xd8,0x0,0x00009b0 3203 RRCF 0x3,0x1,0x00009b2 3202 RRCF 0x2,0x1,0x00009b4 3201 RRCF 0x1,0x1,0x00009b6 3200 RRCF 0x0,0x1,0x00009b8 06e8 DECF 0xe8,0x1,0x00009ba e1f9 BNZ 0x9ae0009bc 5000 MOVF 0x0,0x0,0x00009be 6e63 MOVWF 0x63,0x00009c0 0ef1 MOVLW 0xf1 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c0009c2 50db MOVF 0xdb,0x0,0x00009c4 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0009c6 d02f BRA 0xa26 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.c//RXB0SIDH=(cm.ident[1]<<5)+(cm.ident[0]>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL=(RXB0SIDL & 0b00011111)+(BYTE)(cm.ident[0]<<5); 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.c0009c8 0ef1 MOVLW 0xf1 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c0009ca cfdb MOVFF 0xfdb,0x00009cc f0000009ce 0ef2 MOVLW 0xf20009d0 cfdb MOVFF 0xfdb,0x10009d2 f0010009d4 0ef3 MOVLW 0xf30009d6 cfdb MOVFF 0xfdb,0x20009d8 f0020009da 0ef4 MOVLW 0xf40009dc cfdb MOVFF 0xfdb,0x30009de f0030009e0 0e03 MOVLW 0x30009e2 90d8 BCF 0xd8,0x0,0x00009e4 3203 RRCF 0x3,0x1,0x00009e6 3202 RRCF 0x2,0x1,0x00009e8 3201 RRCF 0x1,0x1,0x00009ea 3200 RRCF 0x0,0x1,0x00009ec 06e8 DECF 0xe8,0x1,0x00009ee e1f9 BNZ 0x9e20009f0 5000 MOVF 0x0,0x0,0x00009f2 6e61 MOVWF 0x61,0x00009f4 0ef1 MOVLW 0xf1 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c0009f6 cfdb MOVFF 0xfdb,0x00009f8 f0000009fa 0ef2 MOVLW 0xf20009fc cfdb MOVFF 0xfdb,0x10009fe f001000a00 0ef3 MOVLW 0xf3000a02 cfdb MOVFF 0xfdb,0x2000a04 f002000a06 0ef4 MOVLW 0xf4000a08 cfdb MOVFF 0xfdb,0x3000a0a f003000a0c 0e05 MOVLW 0x5000a0e 0b1f ANDLW 0x1f000a10 e007 BZ 0xa20000a12 90d8 BCF 0xd8,0x0,0x0000a14 3600 RLCF 0x0,0x1,0x0000a16 3601 RLCF 0x1,0x1,0x0000a18 3602 RLCF 0x2,0x1,0x0000a1a 3603 RLCF 0x3,0x1,0x0000a1c 06e8 DECF 0xe8,0x1,0x0000a1e e1f9 BNZ 0xa12000a20 0ee0 MOVLW 0xe0000a22 1400 ANDWF 0x0,0x0,0x0000a24 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.c000a26 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c000a28 50db MOVF 0xdb,0x0,0x0000a2a 0808 SUBLW 0x8000a2c e203 BC 0xa34000a2e 0e08 MOVLW 0x8000a30 6e65 MOVWF 0x65,0x0000a32 d003 BRA 0xa3a000a34 0ef6 MOVLW 0xf6000a36 50db MOVF 0xdb,0x0,0x0000a38 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c000a3a 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a3c 50db MOVF 0xdb,0x0,0x0000a3e 6e66 MOVWF 0x66,0x0000a40 0ef8 MOVLW 0xf8000a42 50db MOVF 0xdb,0x0,0x0000a44 6e67 MOVWF 0x67,0x0000a46 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a48 50db MOVF 0xdb,0x0,0x0000a4a 6e68 MOVWF 0x68,0x0000a4c 0efa MOVLW 0xfa000a4e 50db MOVF 0xdb,0x0,0x0000a50 6e69 MOVWF 0x69,0x0000a52 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a54 50db MOVF 0xdb,0x0,0x0000a56 6e6a MOVWF 0x6a,0x0000a58 0efc MOVLW 0xfc000a5a 50db MOVF 0xdb,0x0,0x0000a5c 6e6b MOVWF 0x6b,0x0000a5e 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c000a60 50db MOVF 0xdb,0x0,0x0000a62 6e6c MOVWF 0x6c,0x0000a64 0efe MOVLW 0xfe000a66 50db MOVF 0xdb,0x0,0x0000a68 6e6d MOVWF 0x6d,0x0F:\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.c000a6a 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c_endasm F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c000a6c 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c000a6e d000 BRA 0xa70F:\MCP\projects\CAN\canNode\Source\CAN.c000a70 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c000a72 cfe7 MOVFF 0xfe7,0xfd9000a74 ffd9000a76 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#include "../Include/stackTasks.h" F:\MCP\projects\CAN\canNode\Source\uart.c#include "../Include/uart.h" F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#ifdef USE_UART F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cstatic char uartBusy(void); F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c/* F:\MCP\projects\CAN\canNode\Source\uart.c* Function: uartInit F:\MCP\projects\CAN\canNode\Source\uart.c* F:\MCP\projects\CAN\canNode\Source\uart.c* Input: none F:\MCP\projects\CAN\canNode\Source\uart.c* Output: none F:\MCP\projects\CAN\canNode\Source\uart.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\uart.c* Affects: none F:\MCP\projects\CAN\canNode\Source\uart.c* Depends: none F:\MCP\projects\CAN\canNode\Source\uart.c*/ F:\MCP\projects\CAN\canNode\Source\uart.cvoid uartInit() F:\MCP\projects\CAN\canNode\Source\uart.c{ F:\MCP\projects\CAN\canNode\Source\uart.c// Configure USART F:\MCP\projects\CAN\canNode\Source\uart.c000a78 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canNode\Source\uart.c000a7a 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canNode\Source\uart.c000a7c 0e20 MOVLW 0x20 TXSTA=0b00100000; // Low BRG speed F:\MCP\projects\CAN\canNode\Source\uart.c000a7e 6eac MOVWF 0xac,0x0000a80 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canNode\Source\uart.c000a82 6eab MOVWF 0xab,0x0000a84 0e1f MOVLW 0x1f SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canNode\Source\uart.c000a86 6eaf MOVWF 0xaf,0x0// USART RX interrupt F:\MCP\projects\CAN\canNode\Source\uart.c000a88 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c000a8a 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.c000a8c 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canNode\Source\uart.c000a8e 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.c000a90 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canNode\Source\uart.c000a92 ffe6000a94 cfe1 MOVFF 0xfe1,0xfd9000a96 ffd9{ F:\MCP\projects\CAN\canNode\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canNode\Source\uart.c000a98 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canNode\Source\uart.c000a9a 50db MOVF 0xdb,0x0,0x0000a9c 6ead MOVWF 0xad,0x0000a9e d848 RCALL 0xb30 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000aa0 0900 IORLW 0x0000aa2 e1fd BNZ 0xa9e000aa4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000aa6 cfe7 MOVFF 0xfe7,0xfd9000aa8 ffd9000aaa 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.c000aac cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canNode\Source\uart.c000aae ffe6000ab0 cfe1 MOVFF 0xfe1,0xfd9000ab2 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.c000ab4 d83d RCALL 0xb30 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000ab6 0900 IORLW 0x0000ab8 e1fd BNZ 0xab4000aba 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000abc cfdb MOVFF 0xfdb,0xfe9000abe ffe9000ac0 0efe MOVLW 0xfe000ac2 cfdb MOVFF 0xfdb,0xfea000ac4 ffea000ac6 50ef MOVF 0xef,0x0,0x0000ac8 6ee6 MOVWF 0xe6,0x0000aca dfe2 RCALL 0xa90000acc 52e5 MOVF 0xe5,0x1,0x0000ace 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000ad0 cfdb MOVFF 0xfdb,0xfe9000ad2 ffe9000ad4 2adb INCF 0xdb,0x1,0x0000ad6 0efe MOVLW 0xfe000ad8 cfdb MOVFF 0xfdb,0xfea000ada ffea000adc e301 BNC 0xae0000ade 2adb INCF 0xdb,0x1,0x0000ae0 50ef MOVF 0xef,0x0,0x0000ae2 e1e8 BNZ 0xab4000ae4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000ae6 cfe7 MOVFF 0xfe7,0xfd9000ae8 ffd9000aea 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.c000aec cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canNode\Source\uart.c000aee ffe6000af0 cfe1 MOVFF 0xfe1,0xfd9000af2 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.c000af4 d81d RCALL 0xb30 while(uartBusy()); F:\MCP\projects\CAN\canNode\Source\uart.c000af6 0900 IORLW 0x0000af8 e1fd BNZ 0xaf4000afa 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canNode\Source\uart.c000afc cfdb MOVFF 0xfdb,0xff6000afe fff6000b00 0efe MOVLW 0xfe000b02 cfdb MOVFF 0xfdb,0xff7000b04 fff7000b06 0008 TBLRD000b08 50f5 MOVF 0xf5,0x0,0x0000b0a 6ee6 MOVWF 0xe6,0x0000b0c dfc1 RCALL 0xa90000b0e 52e5 MOVF 0xe5,0x1,0x0000b10 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canNode\Source\uart.c000b12 cfdb MOVFF 0xfdb,0xff6000b14 fff6000b16 2adb INCF 0xdb,0x1,0x0000b18 0efe MOVLW 0xfe000b1a cfdb MOVFF 0xfdb,0xff7000b1c fff7000b1e e301 BNC 0xb22000b20 2adb INCF 0xdb,0x1,0x0000b22 0008 TBLRD000b24 50f5 MOVF 0xf5,0x0,0x0000b26 e1e6 BNZ 0xaf4000b28 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\uart.c000b2a cfe7 MOVFF 0xfe7,0xfd9000b2c ffd9000b2e 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.c000b30 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canNode\Source\uart.c000b32 0b02 ANDLW 0x2000b34 0a02 XORLW 0x2000b36 e001 BZ 0xb3a000b38 0e01 MOVLW 0x1000b3a 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.c000b3c 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canNode\Source\uart.c000b3e 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.c000b40 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canNode\Source\uart.c000b42 0b20 ANDLW 0x20000b44 e009 BZ 0xb58000b46 509d MOVF 0x9d,0x0,0x0000b48 0b20 ANDLW 0x20000b4a e006 BZ 0xb58{ F:\MCP\projects\CAN\canNode\Source\uart.c000b4c dff7 RCALL 0xb3c uartParse(uartGet()); F:\MCP\projects\CAN\canNode\Source\uart.c000b4e 6ee6 MOVWF 0xe6,0x0000b50 ecaa CALL 0x354,0x0000b52 f001000b54 52e5 MOVF 0xe5,0x1,0x0000b56 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canNode\Source\uart.c} F:\MCP\projects\CAN\canNode\Source\uart.c000b58 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.cF:\MCP\projects\CAN\canNode\Source\uart.c#endif F:\MCP\projects\CAN\canNode\Source\uart.c#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.c000bf8 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000bfa 6ed6 MOVWF 0xd6,0x0000bfc 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000bfe 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.c000c00 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c000c02 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c000c04 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c000c06 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000c08 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c000c0a 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.c000c0c c06a MOVFF 0x6a,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c000c0e f018000c10 c06b MOVFF 0x6b,0x19000c12 f019000c14 c06c MOVFF 0x6c,0x1a000c16 f01a000c18 c06d MOVFF 0x6d,0x1b000c1a f01b000c1c 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.c000c1e a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c000c20 d00b BRA 0xc38{ F:\MCP\projects\CAN\canNode\Source\Tick.c000c22 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c000c24 6ed7 MOVWF 0xd7,0x0000c26 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c000c28 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c000c2a 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c000c2c 2b6a INCF 0x6a,0x1,0x1000c2e 0e00 MOVLW 0x0000c30 236b ADDWFC 0x6b,0x1,0x1000c32 236c ADDWFC 0x6c,0x1,0x1000c34 236d ADDWFC 0x6d,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c000c36 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c000c38 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c