Rev 129 | 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 Jan 28 14:51:25 2007Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canIR\Source\Main.c* F:\MCP\projects\CAN\canIR\Source\Main.c* Main application F:\MCP\projects\CAN\canIR\Source\Main.c* F:\MCP\projects\CAN\canIR\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canIR\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canIR/Source/Main.c $ F:\MCP\projects\CAN\canIR\Source\Main.c* Last changed: $LastChangedDate: 2006-11-19 15:59:01 +0100 (sö, 19 nov 2006) $ F:\MCP\projects\CAN\canIR\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canIR\Source\Main.c* Revision: $Revision: 125 $ F:\MCP\projects\CAN\canIR\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canIR\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canIR\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canIR\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canIR\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c#include <IRec.h> F:\MCP\projects\CAN\canIR\Source\Main.c#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001bb2 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canIR\Source\Main.c001bb4 ffe6001bb6 cfe1 MOVFF 0xfe1,0xfd9001bb8 ffd9001bba 0e0f MOVLW 0xf001bbc 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canIR\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c// Inits F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001bbe d889 RCALL 0x1cd2 mainInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001bc0 ec2e CALL 0x105c,0x0 canInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001bc2 f008F:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c001bc4 ec77 CALL 0x16ee,0x0 irecInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001bc6 f00b#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001c10 d7db BRA 0x1bc8 while(1) F:\MCP\projects\CAN\canIR\Source\Main.c{ F:\MCP\projects\CAN\canIR\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001bc8 ec8d CALL 0x1f1a,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canIR\Source\Main.c001bca f00f001bcc 0100 MOVLB 0x0001bce 518b MOVF 0x8b,0x0,0x1001bd0 5c12 SUBWF 0x12,0x0,0x0001bd2 6e00 MOVWF 0x0,0x0001bd4 518c MOVF 0x8c,0x0,0x1001bd6 5813 SUBWFB 0x13,0x0,0x0001bd8 6e01 MOVWF 0x1,0x0001bda 518d MOVF 0x8d,0x0,0x1001bdc 5814 SUBWFB 0x14,0x0,0x0001bde 6e02 MOVWF 0x2,0x0001be0 518e MOVF 0x8e,0x0,0x1001be2 5815 SUBWFB 0x15,0x0,0x0001be4 6e03 MOVWF 0x3,0x0001be6 80d8 BSF 0xd8,0x0,0x0001be8 0e64 MOVLW 0x64001bea 5400 SUBFWB 0x0,0x0,0x0001bec 0e00 MOVLW 0x0001bee 5401 SUBFWB 0x1,0x0,0x0001bf0 0e00 MOVLW 0x0001bf2 5402 SUBFWB 0x2,0x0,0x0001bf4 0e00 MOVLW 0x0001bf6 5403 SUBFWB 0x3,0x0,0x0001bf8 e20b BC 0x1c10{ F:\MCP\projects\CAN\canIR\Source\Main.c001bfa 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canIR\Source\Main.c001bfc ec8d CALL 0x1f1a,0x0 t = tickGet(); F:\MCP\projects\CAN\canIR\Source\Main.c001bfe f00f001c00 c012 MOVFF 0x12,0x8b001c02 f08b001c04 c013 MOVFF 0x13,0x8c001c06 f08c001c08 c014 MOVFF 0x14,0x8d001c0a f08d001c0c c015 MOVFF 0x15,0x8e001c0e f08e} F:\MCP\projects\CAN\canIR\Source\Main.c} F:\MCP\projects\CAN\canIR\Source\Main.c001c12 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIR\Source\Main.c001c14 5ce1 SUBWF 0xe1,0x0,0x0001c16 e202 BC 0x1c1c001c18 6ae1 CLRF 0xe1,0x0001c1a 52e5 MOVF 0xe5,0x1,0x0001c1c 6ee1 MOVWF 0xe1,0x0001c1e 52e5 MOVF 0xe5,0x1,0x0001c20 cfe7 MOVFF 0xfe7,0xfd9001c22 ffd9001c24 0012 RETURN 0x0F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canIR\Source\Main.c001c26 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canIR\Source\Main.c001c28 ffe4001c2a cfe2 MOVFF 0xfe2,0xfda001c2c ffda001c2e cfe9 MOVFF 0xfe9,0xfe4001c30 ffe4001c32 cfea MOVFF 0xfea,0xfe4001c34 ffe4001c36 cff6 MOVFF 0xff6,0xfe4001c38 ffe4001c3a cff7 MOVFF 0xff7,0xfe4001c3c ffe4001c3e cff5 MOVFF 0xff5,0xfe4001c40 ffe4001c42 cff3 MOVFF 0xff3,0xfe4001c44 ffe4001c46 cff4 MOVFF 0xff4,0xfe4001c48 ffe4001c4a cffa MOVFF 0xffa,0xfe4001c4c ffe4001c4e ee00 LFSR 0x0,0xe001c50 f00e001c52 0e0b MOVLW 0xb001c54 04e8 DECF 0xe8,0x0,0x0001c56 e303 BNC 0x1c5e001c58 cfee MOVFF 0xfee,0xfe4001c5a ffe4001c5c d7fb BRA 0x1c54001c5e ee00 LFSR 0x0,0x0001c60 f000001c62 0e0e MOVLW 0xe001c64 04e8 DECF 0xe8,0x0,0x0001c66 e303 BNC 0x1c6e001c68 cfee MOVFF 0xfee,0xfe4001c6a ffe4001c6c d7fb BRA 0x1c64001c6e 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.c001c70 ecb3 CALL 0x1166,0x0 canISR(); F:\MCP\projects\CAN\canIR\Source\Main.c001c72 f008F:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c001c74 ec82 CALL 0x1704,0x0 irecISR(); F:\MCP\projects\CAN\canIR\Source\Main.c001c76 f00b#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001c78 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c001c7a ee00 LFSR 0x0,0xd001c7c f00d001c7e 0e0e MOVLW 0xe001c80 04e8 DECF 0xe8,0x0,0x0001c82 e303 BNC 0x1c8a001c84 cfe5 MOVFF 0xfe5,0xfed001c86 ffed001c88 d7fb BRA 0x1c80001c8a ee00 LFSR 0x0,0x18001c8c f018001c8e 0e0b MOVLW 0xb001c90 04e8 DECF 0xe8,0x0,0x0001c92 e303 BNC 0x1c9a001c94 cfe5 MOVFF 0xfe5,0xfed001c96 ffed001c98 d7fb BRA 0x1c90001c9a cfe5 MOVFF 0xfe5,0xffa001c9c fffa001c9e cfe5 MOVFF 0xfe5,0xff4001ca0 fff4001ca2 cfe5 MOVFF 0xfe5,0xff3001ca4 fff3001ca6 cfe5 MOVFF 0xfe5,0xff5001ca8 fff5001caa cfe5 MOVFF 0xfe5,0xff7001cac fff7001cae cfe5 MOVFF 0xfe5,0xff6001cb0 fff6001cb2 cfe5 MOVFF 0xfe5,0xfea001cb4 ffea001cb6 cfe5 MOVFF 0xfe5,0xfe9001cb8 ffe9001cba cfe5 MOVFF 0xfe5,0xfda001cbc ffda001cbe 0011 RETFIE 0x1F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canIR\Source\Main.c001cc0 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canIR\Source\Main.c001cc2 ffe4001cc4 cfe2 MOVFF 0xfe2,0xfda001cc6 ffda001cc8 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001cca 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c001ccc cfe5 MOVFF 0xfe5,0xfda001cce ffda001cd0 0011 RETFIE 0x1F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c/* F:\MCP\projects\CAN\canIR\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canIR\Source\Main.c* F:\MCP\projects\CAN\canIR\Source\Main.c* Input: none F:\MCP\projects\CAN\canIR\Source\Main.c* Output: none F:\MCP\projects\CAN\canIR\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canIR\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canIR\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canIR\Source\Main.c*/ F:\MCP\projects\CAN\canIR\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canIR\Source\Main.c{ F:\MCP\projects\CAN\canIR\Source\Main.c001cd2 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canIR\Source\Main.c001cd4 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canIR\Source\Main.c001cd6 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canIR\Source\Main.c001cd8 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001cda 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c/* F:\MCP\projects\CAN\canIR\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canIR\Source\Main.c* F:\MCP\projects\CAN\canIR\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canIR\Source\Main.c* Output: none F:\MCP\projects\CAN\canIR\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canIR\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canIR\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canIR\Source\Main.c*/ F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001cdc cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canIR\Source\Main.c001cde ffe6001ce0 cfe1 MOVFF 0xfe1,0xfd9001ce2 ffd9001ce4 0e0f MOVLW 0xf001ce6 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001ce8 5ce1 SUBWF 0xe1,0x0,0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c001cea e202 BC 0x1cf0001cec 6ae1 CLRF 0xe1,0x0001cee 52e5 MOVF 0xe5,0x1,0x0001cf0 6ee1 MOVWF 0xe1,0x0001cf2 52e5 MOVF 0xe5,0x1,0x0001cf4 cfe7 MOVFF 0xfe7,0xfd9001cf6 ffd9001cf8 0012 RETURN 0x0F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c/* F:\MCP\projects\CAN\canIR\Source\Main.c* Function: irecParse F:\MCP\projects\CAN\canIR\Source\Main.c* F:\MCP\projects\CAN\canIR\Source\Main.c* Input: Received IR message F:\MCP\projects\CAN\canIR\Source\Main.c* Output: none F:\MCP\projects\CAN\canIR\Source\Main.c* Pre-conditions: irecInit F:\MCP\projects\CAN\canIR\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canIR\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canIR\Source\Main.c*/ F:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c001cfa cfd9 MOVFF 0xfd9,0xfe6 void irecParse(IR_TYPE type, BYTE toggle, BYTE addr, BYTE data) F:\MCP\projects\CAN\canIR\Source\Main.c001cfc ffe6001cfe cfe1 MOVFF 0xfe1,0xfd9001d00 ffd9001d02 0e0f MOVLW 0xf001d04 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIR\Source\Main.c001d06 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canIR\Source\Main.c001d08 6edf MOVWF 0xdf,0x0001d0a 6ef3 MOVWF 0xf3,0x0 outCm.funcc = FUNCC_SENSORS_IR; F:\MCP\projects\CAN\canIR\Source\Main.c001d0c cff3 MOVFF 0xff3,0xfdb001d0e ffdb001d10 0e02 MOVLW 0x2001d12 6adb CLRF 0xdb,0x0001d14 0e04 MOVLW 0x4 outCm.data_length = 4; F:\MCP\projects\CAN\canIR\Source\Main.c001d16 6ef3 MOVWF 0xf3,0x0001d18 0e06 MOVLW 0x6001d1a cff3 MOVFF 0xff3,0xfdb001d1c ffdb001d1e 0efe MOVLW 0xfe outCm.data[3] = type; F:\MCP\projects\CAN\canIR\Source\Main.c001d20 50db MOVF 0xdb,0x0,0x0001d22 6ee7 MOVWF 0xe7,0x0001d24 0e0a MOVLW 0xa001d26 cfe7 MOVFF 0xfe7,0xfdb001d28 ffdb001d2a 0efd MOVLW 0xfd outCm.data[2] = toggle; F:\MCP\projects\CAN\canIR\Source\Main.c001d2c 50db MOVF 0xdb,0x0,0x0001d2e 6ee7 MOVWF 0xe7,0x0001d30 0e09 MOVLW 0x9001d32 cfe7 MOVFF 0xfe7,0xfdb001d34 ffdb001d36 0efc MOVLW 0xfc outCm.data[1] = addr; F:\MCP\projects\CAN\canIR\Source\Main.c001d38 50db MOVF 0xdb,0x0,0x0001d3a 6ee7 MOVWF 0xe7,0x0001d3c 0e08 MOVLW 0x8001d3e cfe7 MOVFF 0xfe7,0xfdb001d40 ffdb001d42 0efb MOVLW 0xfb outCm.data[0] = data; F:\MCP\projects\CAN\canIR\Source\Main.c001d44 50db MOVF 0xdb,0x0,0x0001d46 6ee7 MOVWF 0xe7,0x0001d48 0e07 MOVLW 0x7001d4a cfe7 MOVFF 0xfe7,0xfdb001d4c ffdbF:\MCP\projects\CAN\canIR\Source\Main.c001d4e 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canIR\Source\Main.c001d50 6ee6 MOVWF 0xe6,0x0001d52 cfd9 MOVFF 0xfd9,0xfe9001d54 ffe9001d56 cfda MOVFF 0xfda,0xfea001d58 ffea001d5a cfee MOVFF 0xfee,0xfe6001d5c ffe6001d5e cfee MOVFF 0xfee,0xfe6001d60 ffe6001d62 cfee MOVFF 0xfee,0xfe6001d64 ffe6001d66 cfee MOVFF 0xfee,0xfe6001d68 ffe6001d6a cfee MOVFF 0xfee,0xfe6001d6c ffe6001d6e cfee MOVFF 0xfee,0xfe6001d70 ffe6001d72 cfee MOVFF 0xfee,0xfe6001d74 ffe6001d76 cfee MOVFF 0xfee,0xfe6001d78 ffe6001d7a cfee MOVFF 0xfee,0xfe6001d7c ffe6001d7e cfee MOVFF 0xfee,0xfe6001d80 ffe6001d82 cfee MOVFF 0xfee,0xfe6001d84 ffe6001d86 cfee MOVFF 0xfee,0xfe6001d88 ffe6001d8a cfee MOVFF 0xfee,0xfe6001d8c ffe6001d8e cfee MOVFF 0xfee,0xfe6001d90 ffe6001d92 cfee MOVFF 0xfee,0xfe6001d94 ffe6001d96 ec9e CALL 0x153c,0x0001d98 f00a001d9a 6e00 MOVWF 0x0,0x0001d9c 0e10 MOVLW 0x10001d9e 5ee1 SUBWF 0xe1,0x1,0x0001da0 5000 MOVF 0x0,0x0,0x0001da2 0900 IORLW 0x0001da4 e101 BNZ 0x1da8001da6 d7d3 BRA 0x1d4eF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001da8 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIR\Source\Main.c001daa 5ce1 SUBWF 0xe1,0x0,0x0001dac e202 BC 0x1db2001dae 6ae1 CLRF 0xe1,0x0001db0 52e5 MOVF 0xe5,0x1,0x0001db2 6ee1 MOVWF 0xe1,0x0001db4 52e5 MOVF 0xe5,0x1,0x0001db6 cfe7 MOVFF 0xfe7,0xfd9001db8 ffd9001dba 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canIR\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canIR\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canIR\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canIR\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canIR\Source\Main.c{ F:\MCP\projects\CAN\canIR\Source\Main.c001000 efa5 GOTO 0x1f4a _asm goto _startup _endasm F:\MCP\projects\CAN\canIR\Source\Main.c001002 f00f001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c#pragma code F:\MCP\projects\CAN\canIR\Source\Main.c#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canIR\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canIR\Source\Main.c{ F:\MCP\projects\CAN\canIR\Source\Main.c001008 ef13 GOTO 0x1c26 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canIR\Source\Main.c00100a f00e00100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c#pragma code F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canIR\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canIR\Source\Main.c{ F:\MCP\projects\CAN\canIR\Source\Main.c001018 ef60 GOTO 0x1cc0 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canIR\Source\Main.c00101a f00e00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c#pragma code F:\MCP\projects\CAN\canIR\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Ticker module service F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Tick.c $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Last changed: $LastChangedDate: 2006-11-14 10:55:38 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Tick.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Revision: $Revision: 86 $ F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBase\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBase\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBase\Source\Tick.c#else F:\MCP\projects\CAN\canBase\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001f06 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001f08 6ed6 MOVWF 0xd6,0x0001f0a 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001f0c 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canBase\Source\Tick.c001f0e 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001f10 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001f12 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001f14 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001f16 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001f18 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001f1a c08f MOVFF 0x8f,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001f1c f012001f1e c090 MOVFF 0x90,0x13001f20 f013001f22 c091 MOVFF 0x91,0x14001f24 f014001f26 c092 MOVFF 0x92,0x15001f28 f015001f2a d000 BRA 0x1f2c001f2c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001f2e a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001f30 d00b BRA 0x1f48{ F:\MCP\projects\CAN\canBase\Source\Tick.c001f32 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001f34 6ed7 MOVWF 0xd7,0x0001f36 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001f38 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001f3a 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001f3c 2b8f INCF 0x8f,0x1,0x1001f3e 0e00 MOVLW 0x0001f40 2390 ADDWFC 0x90,0x1,0x1001f42 2391 ADDWFC 0x91,0x1,0x1001f44 2392 ADDWFC 0x92,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001f46 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001f48 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* CAN module F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/CAN.c $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate: 2006-11-14 21:11:28 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 95 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cTICK heartbeat; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic CAN_MESSAGE outCm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c00105c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00105e 6e6f MOVWF 0x6f,0x0001060 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001062 146e ANDWF 0x6e,0x0,0x0001064 0880 SUBLW 0x80001066 e001 BZ 0x106a001068 d7fb BRA 0x1060F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// 500Khz@40Mhz (new by the book) F:\MCP\projects\CAN\canBase\Source\CAN.c00106a 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c00106c 6e70 MOVWF 0x70,0x000106e 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c001070 6e71 MOVWF 0x71,0x0001072 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c001074 6e72 MOVWF 0x72,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001078 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; // 1 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBase\Source\CAN.c00107c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00107e 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108a 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108c 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canBase\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBase\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.c#else F:\MCP\projects\CAN\canBase\Source\CAN.c00108e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001092 146e ANDWF 0x6e,0x0,0x0001094 e001 BZ 0x1098001096 d7fc BRA 0x1090#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Init ticker service F:\MCP\projects\CAN\canBase\Source\CAN.c001098 ec83 CALL 0x1f06,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c00109a f00fF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBase\Source\CAN.c00109c 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00109e 6ee6 MOVWF 0xe6,0x00010a0 6ae6 CLRF 0xe6,0x00010a2 ecde CALL 0x1dbc,0x00010a4 f00e0010a6 52e5 MOVF 0xe5,0x1,0x00010a8 52e5 MOVF 0xe5,0x1,0x00010aa 082a SUBLW 0x2a0010ac e12b BNZ 0x1104{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\CAN.c0010b0 6ee6 MOVWF 0xe6,0x00010b2 6ae6 CLRF 0xe6,0x00010b4 ecde CALL 0x1dbc,0x00010b6 f00e0010b8 52e5 MOVF 0xe5,0x1,0x00010ba 52e5 MOVF 0xe5,0x1,0x00010bc 6e00 MOVWF 0x0,0x00010be c000 MOVFF 0x0,0x10010c0 f0010010c2 6a00 CLRF 0x0,0x00010c4 c000 MOVFF 0x0,0xfe60010c6 ffe60010c8 c001 MOVFF 0x1,0xfe60010ca ffe60010cc 0e02 MOVLW 0x20010ce 6ee6 MOVWF 0xe6,0x00010d0 6ae6 CLRF 0xe6,0x00010d2 ecde CALL 0x1dbc,0x00010d4 f00e0010d6 52e5 MOVF 0xe5,0x1,0x00010d8 52e5 MOVF 0xe5,0x1,0x00010da 52e5 MOVF 0xe5,0x1,0x00010dc cfe7 MOVFF 0xfe7,0x10010de f0010010e0 52e5 MOVF 0xe5,0x1,0x00010e2 cfe7 MOVFF 0xfe7,0x00010e4 f0000010e6 0100 MOVLB 0x00010e8 2400 ADDWF 0x0,0x0,0x00010ea 6f93 MOVWF 0x93,0x10010ec 0e00 MOVLW 0x00010ee 2001 ADDWFC 0x1,0x0,0x00010f0 6f94 MOVWF 0x94,0x10010f2 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\CAN.c0010f4 6ee6 MOVWF 0xe6,0x00010f6 6ae6 CLRF 0xe6,0x00010f8 ecde CALL 0x1dbc,0x00010fa f00e0010fc 52e5 MOVF 0xe5,0x1,0x00010fe 52e5 MOVF 0xe5,0x1,0x0001100 0100 MOVLB 0x0001102 6f95 MOVWF 0x95,0x1} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Send user program startup heatbeat F:\MCP\projects\CAN\canBase\Source\CAN.c001104 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001106 6b64 CLRF 0x64,0x1001108 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c00110a 6f65 MOVWF 0x65,0x100110c 6b66 CLRF 0x66,0x100110e 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c001110 6f6a MOVWF 0x6a,0x1001112 6f6b MOVWF 0x6b,0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canBase\Source\CAN.c001114 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c001116 6ee6 MOVWF 0xe6,0x0001118 c064 MOVFF 0x64,0xfe600111a ffe600111c c065 MOVFF 0x65,0xfe600111e ffe6001120 c066 MOVFF 0x66,0xfe6001122 ffe6001124 c067 MOVFF 0x67,0xfe6001126 ffe6001128 c068 MOVFF 0x68,0xfe600112a ffe600112c c069 MOVFF 0x69,0xfe600112e ffe6001130 c06a MOVFF 0x6a,0xfe6001132 ffe6001134 c06b MOVFF 0x6b,0xfe6001136 ffe6001138 c06c MOVFF 0x6c,0xfe600113a ffe600113c c06d MOVFF 0x6d,0xfe600113e ffe6001140 c06e MOVFF 0x6e,0xfe6001142 ffe6001144 c06f MOVFF 0x6f,0xfe6001146 ffe6001148 c070 MOVFF 0x70,0xfe600114a ffe600114c c071 MOVFF 0x71,0xfe600114e ffe6001150 c072 MOVFF 0x72,0xfe6001152 ffe6001154 d9f3 RCALL 0x153c001156 6e00 MOVWF 0x0,0x0001158 0e10 MOVLW 0x1000115a 5ee1 SUBWF 0xe1,0x1,0x000115c 5000 MOVF 0x0,0x0,0x000115e 0900 IORLW 0x0001160 e101 BNZ 0x1164001162 d7d8 BRA 0x1114F:\MCP\projects\CAN\canBase\Source\CAN.c001164 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c001166 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001168 0b02 ANDLW 0x200116a e106 BNZ 0x117800116c 50a4 MOVF 0xa4,0x0,0x000116e 0b02 ANDLW 0x2001170 e103 BNZ 0x1178001172 50a4 MOVF 0xa4,0x0,0x0001174 0b01 ANDLW 0x1001176 e016 BZ 0x11a4{ F:\MCP\projects\CAN\canBase\Source\CAN.c001178 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c00117a 146f ANDWF 0x6f,0x0,0x000117c 0910 IORLW 0x1000117e 6e00 MOVWF 0x0,0x0001180 0e00 MOVLW 0x0001182 1477 ANDWF 0x77,0x0,0x0001184 1000 IORWF 0x0,0x0,0x0001186 6e77 MOVWF 0x77,0x0001188 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c00118a d86a RCALL 0x1260F:\MCP\projects\CAN\canBase\Source\CAN.c00118c a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00118e d002 BRA 0x1194001190 92a4 BCF 0xa4,0x1,0x0001192 d065 BRA 0x125e001194 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001196 d002 BRA 0x119c001198 92a4 BCF 0xa4,0x1,0x000119a d061 BRA 0x125e00119c a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00119e d002 BRA 0x11a40011a0 90a4 BCF 0xa4,0x0,0x00011a2 d05d BRA 0x125e} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0011a4 ec97 CALL 0x1f2e,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c0011a6 f00fF:\MCP\projects\CAN\canBase\Source\CAN.c0011a8 ec8d CALL 0x1f1a,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c0011aa f00f0011ac 0100 MOVLB 0x00011ae 5160 MOVF 0x60,0x0,0x10011b0 5c12 SUBWF 0x12,0x0,0x00011b2 6e00 MOVWF 0x0,0x00011b4 0100 MOVLB 0x00011b6 5161 MOVF 0x61,0x0,0x10011b8 5813 SUBWFB 0x13,0x0,0x00011ba 6e01 MOVWF 0x1,0x00011bc 0100 MOVLB 0x00011be 5162 MOVF 0x62,0x0,0x10011c0 5814 SUBWFB 0x14,0x0,0x00011c2 6e02 MOVWF 0x2,0x00011c4 0100 MOVLB 0x00011c6 5163 MOVF 0x63,0x0,0x10011c8 5815 SUBWFB 0x15,0x0,0x00011ca 6e03 MOVWF 0x3,0x00011cc 80d8 BSF 0xd8,0x0,0x00011ce 0ef4 MOVLW 0xf40011d0 5400 SUBFWB 0x0,0x0,0x00011d2 0e01 MOVLW 0x10011d4 5401 SUBFWB 0x1,0x0,0x00011d6 0e00 MOVLW 0x00011d8 5402 SUBFWB 0x2,0x0,0x00011da 0e00 MOVLW 0x00011dc 5403 SUBFWB 0x3,0x0,0x00011de e23e BC 0x125c{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0011e0 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e2 6b64 CLRF 0x64,0x10011e4 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e6 0100 MOVLB 0x00011e8 6f65 MOVWF 0x65,0x10011ea 6b66 CLRF 0x66,0x10011ec 0100 MOVLB 0x0 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011ee 0e01 MOVLW 0x10011f0 6f6a MOVWF 0x6a,0x10011f2 0100 MOVLB 0x0 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canBase\Source\CAN.c0011f4 0e02 MOVLW 0x20011f6 6f6b MOVWF 0x6b,0x10011f8 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0011fa 6ee6 MOVWF 0xe6,0x00011fc c064 MOVFF 0x64,0xfe60011fe ffe6001200 c065 MOVFF 0x65,0xfe6001202 ffe6001204 c066 MOVFF 0x66,0xfe6001206 ffe6001208 c067 MOVFF 0x67,0xfe600120a ffe600120c c068 MOVFF 0x68,0xfe600120e ffe6001210 c069 MOVFF 0x69,0xfe6001212 ffe6001214 c06a MOVFF 0x6a,0xfe6001216 ffe6001218 c06b MOVFF 0x6b,0xfe600121a ffe600121c c06c MOVFF 0x6c,0xfe600121e ffe6001220 c06d MOVFF 0x6d,0xfe6001222 ffe6001224 c06e MOVFF 0x6e,0xfe6001226 ffe6001228 c06f MOVFF 0x6f,0xfe600122a ffe600122c c070 MOVFF 0x70,0xfe600122e ffe6001230 c071 MOVFF 0x71,0xfe6001232 ffe6001234 c072 MOVFF 0x72,0xfe6001236 ffe6001238 d981 RCALL 0x153c00123a 6e00 MOVWF 0x0,0x000123c 0e10 MOVLW 0x1000123e 5ee1 SUBWF 0xe1,0x1,0x0001240 5000 MOVF 0x0,0x0,0x0001242 0900 IORLW 0x0001244 e101 BNZ 0x1248001246 d7d8 BRA 0x11f8F:\MCP\projects\CAN\canBase\Source\CAN.c001248 ec8d CALL 0x1f1a,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c00124a f00f00124c c012 MOVFF 0x12,0x6000124e f060001250 c013 MOVFF 0x13,0x61001252 f061001254 c014 MOVFF 0x14,0x62001256 f062001258 c015 MOVFF 0x15,0x6300125a f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00125c 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.c00125e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c001260 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001262 ffe6001264 cfe1 MOVFF 0xfe1,0xfd9001266 ffd9001268 0e0f MOVLW 0xf00126a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00126c 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00126e 1461 ANDWF 0x61,0x0,0x0001270 38e8 SWAPF 0xe8,0x0,0x0001272 0b0f ANDLW 0xf001274 6edf MOVWF 0xdf,0x0001276 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBase\Source\CAN.c001278 1461 ANDWF 0x61,0x0,0x000127a 6e06 MOVWF 0x6,0x000127c 6a07 CLRF 0x7,0x000127e 0e06 MOVLW 0x6001280 90d8 BCF 0xd8,0x0,0x0001282 3606 RLCF 0x6,0x1,0x0001284 3607 RLCF 0x7,0x1,0x0001286 04e8 DECF 0xe8,0x0,0x0001288 e1fb BNZ 0x128000128a 0ee0 MOVLW 0xe000128c 1462 ANDWF 0x62,0x0,0x000128e 6e08 MOVWF 0x8,0x0001290 6a09 CLRF 0x9,0x0001292 90d8 BCF 0xd8,0x0,0x0001294 3209 RRCF 0x9,0x1,0x0001296 3208 RRCF 0x8,0x1,0x0001298 90d8 BCF 0xd8,0x0,0x000129a 3209 RRCF 0x9,0x1,0x000129c 3208 RRCF 0x8,0x1,0x000129e 5006 MOVF 0x6,0x0,0x00012a0 2408 ADDWF 0x8,0x0,0x00012a2 6e04 MOVWF 0x4,0x00012a4 5007 MOVF 0x7,0x0,0x00012a6 2009 ADDWFC 0x9,0x0,0x00012a8 6e05 MOVWF 0x5,0x00012aa 0e03 MOVLW 0x30012ac 1462 ANDWF 0x62,0x0,0x00012ae 6e0a MOVWF 0xa,0x00012b0 6a0b CLRF 0xb,0x00012b2 90d8 BCF 0xd8,0x0,0x00012b4 360a RLCF 0xa,0x1,0x00012b6 360b RLCF 0xb,0x1,0x00012b8 5004 MOVF 0x4,0x0,0x00012ba 240a ADDWF 0xa,0x0,0x00012bc 6e02 MOVWF 0x2,0x00012be 5005 MOVF 0x5,0x0,0x00012c0 200b ADDWFC 0xb,0x0,0x00012c2 6e03 MOVWF 0x3,0x00012c4 0e80 MOVLW 0x800012c6 1463 ANDWF 0x63,0x0,0x00012c8 6e0c MOVWF 0xc,0x00012ca 6a0d CLRF 0xd,0x00012cc 0e07 MOVLW 0x70012ce 90d8 BCF 0xd8,0x0,0x00012d0 320d RRCF 0xd,0x1,0x00012d2 320c RRCF 0xc,0x1,0x00012d4 04e8 DECF 0xe8,0x0,0x00012d6 e1fb BNZ 0x12ce0012d8 5002 MOVF 0x2,0x0,0x00012da 240c ADDWF 0xc,0x0,0x00012dc 6e00 MOVWF 0x0,0x00012de 5003 MOVF 0x3,0x0,0x00012e0 200d ADDWFC 0xd,0x0,0x00012e2 6e01 MOVWF 0x1,0x00012e4 0e01 MOVLW 0x10012e6 c000 MOVFF 0x0,0xfdb0012e8 ffdb0012ea 0e02 MOVLW 0x20012ec c001 MOVFF 0x1,0xfdb0012ee ffdb0012f0 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0012f2 1463 ANDWF 0x63,0x0,0x00012f4 40e8 RRNCF 0xe8,0x0,0x00012f6 0b7f ANDLW 0x7f0012f8 6ee7 MOVWF 0xe7,0x00012fa 0e03 MOVLW 0x30012fc cfe7 MOVFF 0xfe7,0xfdb0012fe ffdb001300 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c001302 1463 ANDWF 0x63,0x0,0x0001304 6e02 MOVWF 0x2,0x0001306 c002 MOVFF 0x2,0x3001308 f00300130a 6a02 CLRF 0x2,0x000130c 5064 MOVF 0x64,0x0,0x000130e 0100 MOVLB 0x0001310 2402 ADDWF 0x2,0x0,0x0001312 6e00 MOVWF 0x0,0x0001314 0e00 MOVLW 0x0001316 2003 ADDWFC 0x3,0x0,0x0001318 6e01 MOVWF 0x1,0x000131a 0e04 MOVLW 0x400131c c000 MOVFF 0x0,0xfdb00131e ffdb001320 0e05 MOVLW 0x5001322 c001 MOVFF 0x1,0xfdb001324 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001326 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c001328 0b01 ANDLW 0x100132a 6e02 MOVWF 0x2,0x000132c 5065 MOVF 0x65,0x0,0x000132e 0b02 ANDLW 0x2001330 e001 BZ 0x1334001332 0e01 MOVLW 0x1001334 24e8 ADDWF 0xe8,0x0,0x0001336 6e01 MOVWF 0x1,0x0001338 5065 MOVF 0x65,0x0,0x000133a 0b04 ANDLW 0x400133c e001 BZ 0x134000133e 0e01 MOVLW 0x1001340 0d04 MULLW 0x4001342 cff3 MOVFF 0xff3,0x0001344 f000001346 5065 MOVF 0x65,0x0,0x0001348 0b08 ANDLW 0x800134a e001 BZ 0x134e00134c 0e01 MOVLW 0x100134e 0d08 MULLW 0x8001350 50f3 MOVF 0xf3,0x0,0x0001352 2400 ADDWF 0x0,0x0,0x0001354 2401 ADDWF 0x1,0x0,0x0001356 2402 ADDWF 0x2,0x0,0x0001358 6ee7 MOVWF 0xe7,0x000135a 0e06 MOVLW 0x600135c cfe7 MOVFF 0xfe7,0xfdb00135e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001360 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001362 cf66 MOVFF 0xf66,0xfdb001364 ffdb001366 0e08 MOVLW 0x8001368 cf67 MOVFF 0xf67,0xfdb00136a ffdb00136c 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00136e cf68 MOVFF 0xf68,0xfdb001370 ffdb001372 0e0a MOVLW 0xa001374 cf69 MOVFF 0xf69,0xfdb001376 ffdb001378 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c00137a cf6a MOVFF 0xf6a,0xfdb00137c ffdb00137e 0e0c MOVLW 0xc001380 cf6b MOVFF 0xf6b,0xfdb001382 ffdb001384 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001386 cf6c MOVFF 0xf6c,0xfdb001388 ffdb00138a 0e0e MOVLW 0xe00138c cf6d MOVFF 0xf6d,0xfdb00138e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001390 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Check if FUNCT_BOOTLOADER specific. F:\MCP\projects\CAN\canBase\Source\CAN.c// reset and id change F:\MCP\projects\CAN\canBase\Source\CAN.c001392 50df MOVF 0xdf,0x0,0x0 if (cm.funct==FUNCT_BOOTLOADER) F:\MCP\projects\CAN\canBase\Source\CAN.c001394 e001 BZ 0x1398001396 d0a0 BRA 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c001398 0e03 MOVLW 0x3 if (cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00139a 50db MOVF 0xdb,0x0,0x000139c 0100 MOVLB 0x000139e 5d95 SUBWF 0x95,0x0,0x10013a0 e001 BZ 0x13a40013a2 d09a BRA 0x14d80013a4 0e0c MOVLW 0xc0013a6 cfdb MOVFF 0xfdb,0x20013a8 f0020013aa c002 MOVFF 0x2,0x30013ac f0030013ae 6a02 CLRF 0x2,0x00013b0 0e0b MOVLW 0xb0013b2 50db MOVF 0xdb,0x0,0x00013b4 0100 MOVLB 0x00013b6 2402 ADDWF 0x2,0x0,0x00013b8 6e00 MOVWF 0x0,0x00013ba 0e00 MOVLW 0x00013bc 2003 ADDWFC 0x3,0x0,0x00013be 6e01 MOVWF 0x1,0x00013c0 0100 MOVLB 0x00013c2 5193 MOVF 0x93,0x0,0x10013c4 1800 XORWF 0x0,0x0,0x00013c6 e102 BNZ 0x13cc0013c8 5194 MOVF 0x94,0x0,0x10013ca 1801 XORWF 0x1,0x0,0x00013cc e001 BZ 0x13d00013ce d084 BRA 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013d0 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0013d2 0f01 ADDLW 0x10013d4 6ee9 MOVWF 0xe9,0x00013d6 cfda MOVFF 0xfda,0xfea0013d8 ffea0013da 0e01 MOVLW 0x10013dc 18ee XORWF 0xee,0x0,0x00013de e101 BNZ 0x13e20013e0 50ed MOVF 0xed,0x0,0x00013e2 e101 BNZ 0x13e60013e4 00ff RESET0013e6 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_SET_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013e8 0f01 ADDLW 0x10013ea 6ee9 MOVWF 0xe9,0x00013ec cfda MOVFF 0xfda,0xfea0013ee ffea0013f0 0e06 MOVLW 0x60013f2 18ee XORWF 0xee,0x0,0x00013f4 e101 BNZ 0x13f80013f6 50ed MOVF 0xed,0x0,0x00013f8 e16f BNZ 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0013fa 0e08 MOVLW 0x8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013fc cfdb MOVFF 0xfdb,0x00013fe f000001400 c000 MOVFF 0x0,0x1001402 f001001404 6a00 CLRF 0x0,0x0001406 0e07 MOVLW 0x7001408 50db MOVF 0xdb,0x0,0x000140a 0100 MOVLB 0x000140c 2400 ADDWF 0x0,0x0,0x000140e 6f93 MOVWF 0x93,0x1001410 0e00 MOVLW 0x0001412 2001 ADDWFC 0x1,0x0,0x0001414 6f94 MOVWF 0x94,0x1001416 0e09 MOVLW 0x9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c001418 cfdb MOVFF 0xfdb,0x9500141a f09500141c 0e08 MOVLW 0x8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00141e cfdb MOVFF 0xfdb,0xfe6001420 ffe6001422 0e01 MOVLW 0x1001424 6ee6 MOVWF 0xe6,0x0001426 6ae6 CLRF 0xe6,0x0001428 ec03 CALL 0x1e06,0x000142a f00f00142c 52e5 MOVF 0xe5,0x1,0x000142e 52e5 MOVF 0xe5,0x1,0x0001430 52e5 MOVF 0xe5,0x1,0x0001432 0e07 MOVLW 0x7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001434 cfdb MOVFF 0xfdb,0xfe6001436 ffe6001438 0e02 MOVLW 0x200143a 6ee6 MOVWF 0xe6,0x000143c 6ae6 CLRF 0xe6,0x000143e ec03 CALL 0x1e06,0x0001440 f00f001442 52e5 MOVF 0xe5,0x1,0x0001444 52e5 MOVF 0xe5,0x1,0x0001446 52e5 MOVF 0xe5,0x1,0x0001448 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00144a cfdb MOVFF 0xfdb,0xfe600144c ffe600144e 0e03 MOVLW 0x3001450 6ee6 MOVWF 0xe6,0x0001452 6ae6 CLRF 0xe6,0x0001454 ec03 CALL 0x1e06,0x0001456 f00f001458 52e5 MOVF 0xe5,0x1,0x000145a 52e5 MOVF 0xe5,0x1,0x000145c 52e5 MOVF 0xe5,0x1,0x000145e 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c001460 6ee6 MOVWF 0xe6,0x0001462 0e00 MOVLW 0x0001464 6ee6 MOVWF 0xe6,0x0001466 6ae6 CLRF 0xe6,0x0001468 ec03 CALL 0x1e06,0x000146a f00f00146c 52e5 MOVF 0xe5,0x1,0x000146e 52e5 MOVF 0xe5,0x1,0x0001470 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c001472 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001474 6b64 CLRF 0x64,0x1001476 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\CAN.c001478 0100 MOVLB 0x000147a 6f65 MOVWF 0x65,0x100147c 6b66 CLRF 0x66,0x100147e 0100 MOVLB 0x0 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\CAN.c001480 0e08 MOVLW 0x8001482 6f6a MOVWF 0x6a,0x1001484 0100 MOVLB 0x0 outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\CAN.c001486 6b6f CLRF 0x6f,0x1001488 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c00148a 6ee6 MOVWF 0xe6,0x000148c c064 MOVFF 0x64,0xfe600148e ffe6001490 c065 MOVFF 0x65,0xfe6001492 ffe6001494 c066 MOVFF 0x66,0xfe6001496 ffe6001498 c067 MOVFF 0x67,0xfe600149a ffe600149c c068 MOVFF 0x68,0xfe600149e ffe60014a0 c069 MOVFF 0x69,0xfe60014a2 ffe60014a4 c06a MOVFF 0x6a,0xfe60014a6 ffe60014a8 c06b MOVFF 0x6b,0xfe60014aa ffe60014ac c06c MOVFF 0x6c,0xfe60014ae ffe60014b0 c06d MOVFF 0x6d,0xfe60014b2 ffe60014b4 c06e MOVFF 0x6e,0xfe60014b6 ffe60014b8 c06f MOVFF 0x6f,0xfe60014ba ffe60014bc c070 MOVFF 0x70,0xfe60014be ffe60014c0 c071 MOVFF 0x71,0xfe60014c2 ffe60014c4 c072 MOVFF 0x72,0xfe60014c6 ffe60014c8 d839 RCALL 0x153c0014ca 6e00 MOVWF 0x0,0x00014cc 0e10 MOVLW 0x100014ce 5ee1 SUBWF 0xe1,0x1,0x00014d0 5000 MOVF 0x0,0x0,0x00014d2 0900 IORLW 0x00014d4 e101 BNZ 0x14d80014d6 d7d8 BRA 0x1488} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c0014d8 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0014da ffe90014dc cfda MOVFF 0xfda,0xfea0014de ffea0014e0 cfee MOVFF 0xfee,0xfe60014e2 ffe60014e4 cfee MOVFF 0xfee,0xfe60014e6 ffe60014e8 cfee MOVFF 0xfee,0xfe60014ea ffe60014ec cfee MOVFF 0xfee,0xfe60014ee ffe60014f0 cfee MOVFF 0xfee,0xfe60014f2 ffe60014f4 cfee MOVFF 0xfee,0xfe60014f6 ffe60014f8 cfee MOVFF 0xfee,0xfe60014fa ffe60014fc cfee MOVFF 0xfee,0xfe60014fe ffe6001500 cfee MOVFF 0xfee,0xfe6001502 ffe6001504 cfee MOVFF 0xfee,0xfe6001506 ffe6001508 cfee MOVFF 0xfee,0xfe600150a ffe600150c cfee MOVFF 0xfee,0xfe600150e ffe6001510 cfee MOVFF 0xfee,0xfe6001512 ffe6001514 cfee MOVFF 0xfee,0xfe6001516 ffe6001518 cfee MOVFF 0xfee,0xfe600151a ffe600151c ec6e CALL 0x1cdc,0x000151e f00e001520 6e00 MOVWF 0x0,0x0001522 0e0f MOVLW 0xf001524 5ee1 SUBWF 0xe1,0x1,0x0001526 5000 MOVF 0x0,0x0,0x0001528 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00152a 5ce1 SUBWF 0xe1,0x0,0x000152c e202 BC 0x153200152e 6ae1 CLRF 0xe1,0x0001530 52e5 MOVF 0xe5,0x1,0x0001532 6ee1 MOVWF 0xe1,0x0001534 52e5 MOVF 0xe5,0x1,0x0001536 cfe7 MOVFF 0xfe7,0xfd9001538 ffd900153a 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c00153c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c00153e ffe6001540 cfe1 MOVFF 0xfe1,0xfd9001542 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001544 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001546 b740 BTFSC 0x40,0x3,0x1001548 d004 BRA 0x155200154a 0e00 MOVLW 0x000154c 1477 ANDWF 0x77,0x0,0x000154e 0903 IORLW 0x3001550 6e77 MOVWF 0x77,0x0001552 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001554 b730 BTFSC 0x30,0x3,0x1001556 d004 BRA 0x1560001558 0e00 MOVLW 0x000155a 1477 ANDWF 0x77,0x0,0x000155c 0904 IORLW 0x400155e 6e77 MOVWF 0x77,0x0001560 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001562 b720 BTFSC 0x20,0x3,0x1001564 d005 BRA 0x1570001566 0e00 MOVLW 0x0001568 1477 ANDWF 0x77,0x0,0x000156a 0905 IORLW 0x500156c 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c00156e d002 BRA 0x1574 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001570 0e00 MOVLW 0x0001572 d0b9 BRA 0x16e6F:\MCP\projects\CAN\canBase\Source\CAN.c001574 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001576 cfdb MOVFF 0xfdb,0x0001578 f00000157a 3400 RLCF 0x0,0x0,0x000157c e20e BC 0x159a00157e 0eef MOVLW 0xef001580 cfdb MOVFF 0xfdb,0x1001582 f001001584 0e03 MOVLW 0x3001586 6ee7 MOVWF 0xe7,0x0001588 1801 XORWF 0x1,0x0,0x000158a aee8 BTFSS 0xe8,0x7,0x000158c d002 BRA 0x159200158e 3401 RLCF 0x1,0x0,0x0001590 d003 BRA 0x1598001592 50e7 MOVF 0xe7,0x0,0x0001594 80d8 BSF 0xd8,0x0,0x0001596 5401 SUBFWB 0x1,0x0,0x0001598 e202 BC 0x159e00159a 0eef MOVLW 0xef00159c 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Append my id and nid F:\MCP\projects\CAN\canBase\Source\CAN.c00159e 0ef3 MOVLW 0xf3 cm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015a0 c095 MOVFF 0x95,0xfdb0015a2 ffdb0015a4 0ef4 MOVLW 0xf4 cm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015a6 c093 MOVFF 0x93,0xfdb0015a8 ffdb0015aa 0ef5 MOVLW 0xf50015ac c094 MOVFF 0x94,0xfdb0015ae ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0015b0 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0015b2 cfdb MOVFF 0xfdb,0x00015b4 f0000015b6 0ef2 MOVLW 0xf20015b8 cfdb MOVFF 0xfdb,0x10015ba f0010015bc 0ec0 MOVLW 0xc00015be 1600 ANDWF 0x0,0x1,0x00015c0 0e03 MOVLW 0x30015c2 1601 ANDWF 0x1,0x1,0x00015c4 0e06 MOVLW 0x60015c6 90d8 BCF 0xd8,0x0,0x00015c8 3201 RRCF 0x1,0x1,0x00015ca 3200 RRCF 0x0,0x1,0x00015cc 04e8 DECF 0xe8,0x0,0x00015ce e1fb BNZ 0x15c60015d0 0ef0 MOVLW 0xf00015d2 50db MOVF 0xdb,0x0,0x00015d4 0b0f ANDLW 0xf0015d6 0d10 MULLW 0x100015d8 50f3 MOVF 0xf3,0x0,0x00015da 2400 ADDWF 0x0,0x0,0x00015dc 6e61 MOVWF 0x61,0x00015de 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015e0 6ee7 MOVWF 0xe7,0x00015e2 0ef1 MOVLW 0xf10015e4 cfdb MOVFF 0xfdb,0x20015e6 f0020015e8 0ef2 MOVLW 0xf20015ea cfdb MOVFF 0xfdb,0x30015ec f0030015ee 50e7 MOVF 0xe7,0x0,0x00015f0 1602 ANDWF 0x2,0x1,0x00015f2 6a03 CLRF 0x3,0x00015f4 90d8 BCF 0xd8,0x0,0x00015f6 3203 RRCF 0x3,0x1,0x00015f8 3202 RRCF 0x2,0x1,0x00015fa 0e3f MOVLW 0x3f0015fc 6ee7 MOVWF 0xe7,0x00015fe 0ef1 MOVLW 0xf1001600 cfdb MOVFF 0xfdb,0x0001602 f000001604 0ef2 MOVLW 0xf2001606 cfdb MOVFF 0xfdb,0x1001608 f00100160a 50e7 MOVF 0xe7,0x0,0x000160c 1600 ANDWF 0x0,0x1,0x000160e 6a01 CLRF 0x1,0x0001610 90d8 BCF 0xd8,0x0,0x0001612 3600 RLCF 0x0,0x1,0x0001614 3601 RLCF 0x1,0x1,0x0001616 90d8 BCF 0xd8,0x0,0x0001618 3600 RLCF 0x0,0x1,0x000161a 3601 RLCF 0x1,0x1,0x000161c 5000 MOVF 0x0,0x0,0x000161e 2402 ADDWF 0x2,0x0,0x0001620 6e62 MOVWF 0x62,0x0001622 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c001624 cfdb MOVFF 0xfdb,0x2001626 f002001628 0ef5 MOVLW 0xf500162a cfdb MOVFF 0xfdb,0x300162c f00300162e 0e00 MOVLW 0x0001630 1602 ANDWF 0x2,0x1,0x0001632 0e01 MOVLW 0x1001634 1603 ANDWF 0x3,0x1,0x0001636 c003 MOVFF 0x3,0x2001638 f00200163a 6a03 CLRF 0x3,0x000163c 0e01 MOVLW 0x100163e 6ee7 MOVWF 0xe7,0x0001640 0ef1 MOVLW 0xf1001642 cfdb MOVFF 0xfdb,0x0001644 f000001646 0ef2 MOVLW 0xf2001648 cfdb MOVFF 0xfdb,0x100164a f00100164c 50e7 MOVF 0xe7,0x0,0x000164e 1600 ANDWF 0x0,0x1,0x0001650 6a01 CLRF 0x1,0x0001652 0e07 MOVLW 0x7001654 90d8 BCF 0xd8,0x0,0x0001656 3600 RLCF 0x0,0x1,0x0001658 3601 RLCF 0x1,0x1,0x000165a 04e8 DECF 0xe8,0x0,0x000165c e1fb BNZ 0x165400165e 0ef3 MOVLW 0xf3001660 50db MOVF 0xdb,0x0,0x0001662 0b3f ANDLW 0x3f001664 24e8 ADDWF 0xe8,0x0,0x0001666 2400 ADDWF 0x0,0x0,0x0001668 2402 ADDWF 0x2,0x0,0x000166a 6e63 MOVWF 0x63,0x000166c 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c00166e 6ee7 MOVWF 0xe7,0x0001670 0ef4 MOVLW 0xf4001672 cfdb MOVFF 0xfdb,0x0001674 f000001676 0ef5 MOVLW 0xf5001678 cfdb MOVFF 0xfdb,0x100167a f00100167c 50e7 MOVF 0xe7,0x0,0x000167e 1600 ANDWF 0x0,0x1,0x0001680 6a01 CLRF 0x1,0x0001682 5000 MOVF 0x0,0x0,0x0001684 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001686 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001688 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00168a 50db MOVF 0xdb,0x0,0x000168c 0808 SUBLW 0x800168e e203 BC 0x1696001690 0e08 MOVLW 0x8001692 6e65 MOVWF 0x65,0x0001694 d003 BRA 0x169c001696 0ef6 MOVLW 0xf6001698 50db MOVF 0xdb,0x0,0x000169a 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// NOT Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c00169c 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00169e 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016a0 50db MOVF 0xdb,0x0,0x00016a2 6e66 MOVWF 0x66,0x00016a4 0ef8 MOVLW 0xf80016a6 50db MOVF 0xdb,0x0,0x00016a8 6e67 MOVWF 0x67,0x00016aa 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 50db MOVF 0xdb,0x0,0x00016ae 6e68 MOVWF 0x68,0x00016b0 0efa MOVLW 0xfa0016b2 50db MOVF 0xdb,0x0,0x00016b4 6e69 MOVWF 0x69,0x00016b6 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 50db MOVF 0xdb,0x0,0x00016ba 6e6a MOVWF 0x6a,0x00016bc 0efc MOVLW 0xfc0016be 50db MOVF 0xdb,0x0,0x00016c0 6e6b MOVWF 0x6b,0x00016c2 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c4 50db MOVF 0xdb,0x0,0x00016c6 6e6c MOVWF 0x6c,0x00016c8 0efe MOVLW 0xfe0016ca 50db MOVF 0xdb,0x0,0x00016cc 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0016ce 8662 BSF 0x62,0x3,0x0 RXB0SIDLbits.EXID=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Priority F:\MCP\projects\CAN\canBase\Source\CAN.c0016d0 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d2 cfdb MOVFF 0xfdb,0xfe60016d4 ffe60016d6 0efc MOVLW 0xfc0016d8 1460 ANDWF 0x60,0x0,0x00016da 52e5 MOVF 0xe5,0x1,0x00016dc 10e7 IORWF 0xe7,0x0,0x00016de 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c0016e0 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0016e2 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0016e4 d000 BRA 0x16e6F:\MCP\projects\CAN\canBase\Source\CAN.c0016e6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0016e8 cfe7 MOVFF 0xfe7,0xfd90016ea ffd90016ec 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EERead F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to read from. F:\MCP\projects\CAN\Include\EEAccess.c* Output: Byte read. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001dbc cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001dbe ffe6001dc0 cfe1 MOVFF 0xfe1,0xfd9001dc2 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001dc4 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001dc6 cfdb MOVFF 0xfdb,0x0001dc8 f000001dca 0efe MOVLW 0xfe001dcc cfdb MOVFF 0xfdb,0x1001dce f001001dd0 c001 MOVFF 0x1,0x0001dd2 f000001dd4 6a01 CLRF 0x1,0x0001dd6 5000 MOVF 0x0,0x0,0x0001dd8 6eaa MOVWF 0xaa,0x0001dda 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001ddc 6ee7 MOVWF 0xe7,0x0001dde 0efd MOVLW 0xfd001de0 cfdb MOVFF 0xfdb,0x0001de2 f000001de4 0efe MOVLW 0xfe001de6 cfdb MOVFF 0xfdb,0x1001de8 f001001dea 50e7 MOVF 0xe7,0x0,0x0001dec 1600 ANDWF 0x0,0x1,0x0001dee 6a01 CLRF 0x1,0x0001df0 5000 MOVF 0x0,0x0,0x0001df2 6ea9 MOVWF 0xa9,0x0001df4 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001df6 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001df8 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001dfa 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001dfc d000 BRA 0x1dfe001dfe 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001e00 cfe7 MOVFF 0xfe7,0xfd9001e02 ffd9001e04 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EEWrite F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to write to and BYTE data to write. F:\MCP\projects\CAN\Include\EEAccess.c* Output: none. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001e06 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001e08 ffe6001e0a cfe1 MOVFF 0xfe1,0xfd9001e0c ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001e0e 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001e10 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001e12 cfdb MOVFF 0xfdb,0x0001e14 f000001e16 0efe MOVLW 0xfe001e18 cfdb MOVFF 0xfdb,0x1001e1a f001001e1c c001 MOVFF 0x1,0x0001e1e f000001e20 6a01 CLRF 0x1,0x0001e22 5000 MOVF 0x0,0x0,0x0001e24 6eaa MOVWF 0xaa,0x0001e26 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001e28 6ee7 MOVWF 0xe7,0x0001e2a 0efd MOVLW 0xfd001e2c cfdb MOVFF 0xfdb,0x0001e2e f000001e30 0efe MOVLW 0xfe001e32 cfdb MOVFF 0xfdb,0x1001e34 f001001e36 50e7 MOVF 0xe7,0x0,0x0001e38 1600 ANDWF 0x0,0x1,0x0001e3a 6a01 CLRF 0x1,0x0001e3c 5000 MOVF 0x0,0x0,0x0001e3e 6ea9 MOVWF 0xa9,0x0001e40 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001e42 50db MOVF 0xdb,0x0,0x0001e44 6ea8 MOVWF 0xa8,0x0001e46 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001e48 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001e4a 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001e4c 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001e4e 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001e50 6ea7 MOVWF 0xa7,0x0001e52 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001e54 6ea7 MOVWF 0xa7,0x0001e56 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001e58 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001e5a a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001e5c d7fe BRA 0x1e5a001e5e 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001e60 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001e62 cfe7 MOVFF 0xfe7,0xfd9001e64 ffd9001e66 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\canIR\Source\IRec.c* F:\MCP\projects\CAN\canIR\Source\IRec.c* IR reciver module F:\MCP\projects\CAN\canIR\Source\IRec.c* F:\MCP\projects\CAN\canIR\Source\IRec.c********************************************************************* F:\MCP\projects\CAN\canIR\Source\IRec.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canIR/Source/IRec.c $ F:\MCP\projects\CAN\canIR\Source\IRec.c* Last changed: $LastChangedDate: 2006-11-18 22:14:33 +0100 (lö, 18 nov 2006) $ F:\MCP\projects\CAN\canIR\Source\IRec.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canIR\Source\IRec.c* Revision: $Revision: 124 $ F:\MCP\projects\CAN\canIR\Source\IRec.c********************************************************************/ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c#include <IRec.h> F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c#include <CAN.h> F:\MCP\projects\CAN\canIR\Source\IRec.c#include <funcdefs.h> F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cstatic BYTE toggle = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BYTE addr = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BYTE data = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BYTE bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic IR_TYPE type = IR_NONE; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c/* F:\MCP\projects\CAN\canIR\Source\IRec.c* Function: irecInit F:\MCP\projects\CAN\canIR\Source\IRec.c* F:\MCP\projects\CAN\canIR\Source\IRec.c* Input: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Output: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Pre-conditions: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Affects: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Depends: TIMER 3 is free F:\MCP\projects\CAN\canIR\Source\IRec.c*/ F:\MCP\projects\CAN\canIR\Source\IRec.cvoid irecInit() F:\MCP\projects\CAN\canIR\Source\IRec.c{ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// Setup timer 3 to be source for CCP1 F:\MCP\projects\CAN\canIR\Source\IRec.c0016ee 0ef9 MOVLW 0xf9 T3CON = 0b11111001; F:\MCP\projects\CAN\canIR\Source\IRec.c0016f0 6eb1 MOVWF 0xb1,0x0F:\MCP\projects\CAN\canIR\Source\IRec.c// configure timer 3 interrupt (for overflow) F:\MCP\projects\CAN\canIR\Source\IRec.c0016f2 92a1 BCF 0xa1,0x1,0x0 PIR2bits.TMR3IF = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c0016f4 82a0 BSF 0xa0,0x1,0x0 PIE2bits.TMR3IE = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c0016f6 82a2 BSF 0xa2,0x1,0x0 IPR2bits.TMR3IP = 1; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// Setup CCP1 to use capture on falling edge F:\MCP\projects\CAN\canIR\Source\IRec.c0016f8 0e04 MOVLW 0x4 CCP1CON=0x04; F:\MCP\projects\CAN\canIR\Source\IRec.c0016fa 6ebd MOVWF 0xbd,0x0F:\MCP\projects\CAN\canIR\Source\IRec.c// Enable CCP1 interrupt and set priority to high. F:\MCP\projects\CAN\canIR\Source\IRec.c0016fc 949e BCF 0x9e,0x2,0x0 PIR1bits.CCP1IF=0; F:\MCP\projects\CAN\canIR\Source\IRec.c0016fe 849d BSF 0x9d,0x2,0x0 PIE1bits.CCP1IE=1; F:\MCP\projects\CAN\canIR\Source\IRec.c001700 849f BSF 0x9f,0x2,0x0 IPR1bits.CCP1IP=1; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001702 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c/* F:\MCP\projects\CAN\canIR\Source\IRec.c* Function: irecISR F:\MCP\projects\CAN\canIR\Source\IRec.c* F:\MCP\projects\CAN\canIR\Source\IRec.c* Input: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Output: none F:\MCP\projects\CAN\canIR\Source\IRec.c* Pre-conditions: a call to irecInit() F:\MCP\projects\CAN\canIR\Source\IRec.c* Affects: ... F:\MCP\projects\CAN\canIR\Source\IRec.c* Depends: ... F:\MCP\projects\CAN\canIR\Source\IRec.c*/ F:\MCP\projects\CAN\canIR\Source\IRec.cvoid irecISR() F:\MCP\projects\CAN\canIR\Source\IRec.c{ F:\MCP\projects\CAN\canIR\Source\IRec.cstatic WORD timediff = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BOOL started = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BYTE lastbit = 1; F:\MCP\projects\CAN\canIR\Source\IRec.cstatic BOOL second = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// If IR bit F:\MCP\projects\CAN\canIR\Source\IRec.c001704 509e MOVF 0x9e,0x0,0x0 if(PIR1bits.CCP1IF && PIE1bits.CCP1IE) F:\MCP\projects\CAN\canIR\Source\IRec.c001706 0b04 ANDLW 0x4001708 e101 BNZ 0x170c00170a d232 BRA 0x1b7000170c 509d MOVF 0x9d,0x0,0x000170e 0b04 ANDLW 0x4001710 e101 BNZ 0x1714001712 d22e BRA 0x1b70{ F:\MCP\projects\CAN\canIR\Source\IRec.c// Read timediff F:\MCP\projects\CAN\canIR\Source\IRec.c001714 50b2 MOVF 0xb2,0x0,0x0 timediff = TMR3L; F:\MCP\projects\CAN\canIR\Source\IRec.c001716 0100 MOVLB 0x0001718 6f82 MOVWF 0x82,0x100171a 6b83 CLRF 0x83,0x100171c 50b3 MOVF 0xb3,0x0,0x0 timediff += (((WORD)TMR3H)<<8); F:\MCP\projects\CAN\canIR\Source\IRec.c00171e 6e00 MOVWF 0x0,0x0001720 c000 MOVFF 0x0,0x1001722 f001001724 6a00 CLRF 0x0,0x0001726 5000 MOVF 0x0,0x0,0x0001728 2782 ADDWF 0x82,0x1,0x100172a 5001 MOVF 0x1,0x0,0x000172c 2383 ADDWFC 0x83,0x1,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c// Clear timer. F:\MCP\projects\CAN\canIR\Source\IRec.c00172e 6ab3 CLRF 0xb3,0x0 TMR3H = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001730 6ab2 CLRF 0xb2,0x0 TMR3L = 0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// Wait on inverse edge F:\MCP\projects\CAN\canIR\Source\IRec.c001732 70bd BTG 0xbd,0x0,0x0 CCP1CONbits.CCP1M0=~CCP1CONbits.CCP1M0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// Disable interrupt F:\MCP\projects\CAN\canIR\Source\IRec.c001734 949e BCF 0x9e,0x2,0x0 PIR1bits.CCP1IF=0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// If found RC5 och RC5X startbit... F:\MCP\projects\CAN\canIR\Source\IRec.c001736 0584 DECF 0x84,0x0,0x1 if (started==TRUE && (type==IR_RC5 || type==IR_RC5X)) F:\MCP\projects\CAN\canIR\Source\IRec.c001738 e001 BZ 0x173c00173a d0d0 BRA 0x18dc00173c 0581 DECF 0x81,0x0,0x100173e e004 BZ 0x1748001740 0e02 MOVLW 0x2001742 5d81 SUBWF 0x81,0x0,0x1001744 e001 BZ 0x1748001746 d0ca BRA 0x18dc{ F:\MCP\projects\CAN\canIR\Source\IRec.c// Parse message F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001748 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c00174a 80d8 BSF 0xd8,0x0,0x000174c 5582 SUBFWB 0x82,0x0,0x100174e 0e03 MOVLW 0x3001750 5583 SUBFWB 0x83,0x0,0x1001752 e235 BC 0x17be001754 0e27 MOVLW 0x27001756 5d82 SUBWF 0x82,0x0,0x1001758 0e05 MOVLW 0x500175a 5983 SUBWFB 0x83,0x0,0x100175c e230 BC 0x17be00175e 5186 MOVF 0x86,0x0,0x1001760 e12e BNZ 0x17be{ F:\MCP\projects\CAN\canIR\Source\IRec.c001762 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c001764 e102 BNZ 0x176a001766 c085 MOVFF 0x85,0x7d001768 f07d00176a 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00176c 5d80 SUBWF 0x80,0x0,0x100176e e310 BNC 0x1790001770 5180 MOVF 0x80,0x0,0x1001772 0805 SUBLW 0x5001774 e30d BNC 0x1790001776 0e05 MOVLW 0x5001778 80d8 BSF 0xd8,0x0,0x000177a 5580 SUBFWB 0x80,0x0,0x100177c 6e00 MOVWF 0x0,0x000177e 5185 MOVF 0x85,0x0,0x1001780 5200 MOVF 0x0,0x1,0x0001782 e004 BZ 0x178c001784 46e8 RLNCF 0xe8,0x1,0x0001786 0bfe ANDLW 0xfe001788 0600 DECF 0x0,0x1,0x000178a e1fc BNZ 0x178400178c 0100 MOVLB 0x000178e 277e ADDWF 0x7e,0x1,0x1001790 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001792 5d80 SUBWF 0x80,0x0,0x1001794 e310 BNC 0x17b6001796 5180 MOVF 0x80,0x0,0x1001798 080b SUBLW 0xb00179a e30d BNC 0x17b600179c 0e0b MOVLW 0xb00179e 80d8 BSF 0xd8,0x0,0x00017a0 5580 SUBFWB 0x80,0x0,0x10017a2 6e00 MOVWF 0x0,0x00017a4 5185 MOVF 0x85,0x0,0x10017a6 5200 MOVF 0x0,0x1,0x00017a8 e004 BZ 0x17b20017aa 46e8 RLNCF 0xe8,0x1,0x00017ac 0bfe ANDLW 0xfe0017ae 0600 DECF 0x0,0x1,0x00017b0 e1fc BNZ 0x17aa0017b2 0100 MOVLB 0x00017b4 277f ADDWF 0x7f,0x1,0x10017b6 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0017b8 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c0017ba 6f86 MOVWF 0x86,0x10017bc d1f9 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0017be 0e8f MOVLW 0x8f if ((t4-250)<timediff && timediff<(t4+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c0017c0 80d8 BSF 0xd8,0x0,0x00017c2 5582 SUBFWB 0x82,0x0,0x10017c4 0e07 MOVLW 0x70017c6 5583 SUBFWB 0x83,0x0,0x10017c8 e23b BC 0x18400017ca 0e83 MOVLW 0x830017cc 5d82 SUBWF 0x82,0x0,0x10017ce 0e09 MOVLW 0x90017d0 5983 SUBWFB 0x83,0x0,0x10017d2 e236 BC 0x18400017d4 5186 MOVF 0x86,0x0,0x10017d6 e134 BNZ 0x1840{ F:\MCP\projects\CAN\canIR\Source\IRec.c0017d8 5185 MOVF 0x85,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c0017da e002 BZ 0x17e00017dc 0e00 MOVLW 0x00017de d001 BRA 0x17e20017e0 0e01 MOVLW 0x10017e2 6f85 MOVWF 0x85,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c0017e4 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c0017e6 e102 BNZ 0x17ec0017e8 c085 MOVFF 0x85,0x7d0017ea f07d0017ec 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0017ee 5d80 SUBWF 0x80,0x0,0x10017f0 e310 BNC 0x18120017f2 5180 MOVF 0x80,0x0,0x10017f4 0805 SUBLW 0x50017f6 e30d BNC 0x18120017f8 0e05 MOVLW 0x50017fa 80d8 BSF 0xd8,0x0,0x00017fc 5580 SUBFWB 0x80,0x0,0x10017fe 6e00 MOVWF 0x0,0x0001800 5185 MOVF 0x85,0x0,0x1001802 5200 MOVF 0x0,0x1,0x0001804 e004 BZ 0x180e001806 46e8 RLNCF 0xe8,0x1,0x0001808 0bfe ANDLW 0xfe00180a 0600 DECF 0x0,0x1,0x000180c e1fc BNZ 0x180600180e 0100 MOVLB 0x0001810 277e ADDWF 0x7e,0x1,0x1001812 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001814 5d80 SUBWF 0x80,0x0,0x1001816 e310 BNC 0x1838001818 5180 MOVF 0x80,0x0,0x100181a 080b SUBLW 0xb00181c e30d BNC 0x183800181e 0e0b MOVLW 0xb001820 80d8 BSF 0xd8,0x0,0x0001822 5580 SUBFWB 0x80,0x0,0x1001824 6e00 MOVWF 0x0,0x0001826 5185 MOVF 0x85,0x0,0x1001828 5200 MOVF 0x0,0x1,0x000182a e004 BZ 0x183400182c 46e8 RLNCF 0xe8,0x1,0x000182e 0bfe ANDLW 0xfe001830 0600 DECF 0x0,0x1,0x0001832 e1fc BNZ 0x182c001834 0100 MOVLB 0x0001836 277f ADDWF 0x7f,0x1,0x1001838 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c00183a 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c00183c 6f86 MOVWF 0x86,0x100183e d1b8 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001840 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c001842 80d8 BSF 0xd8,0x0,0x0001844 5582 SUBFWB 0x82,0x0,0x1001846 0e03 MOVLW 0x3001848 5583 SUBFWB 0x83,0x0,0x100184a e209 BC 0x185e00184c 0e27 MOVLW 0x2700184e 5d82 SUBWF 0x82,0x0,0x1001850 0e05 MOVLW 0x5001852 5983 SUBWFB 0x83,0x0,0x1001854 e204 BC 0x185e001856 0586 DECF 0x86,0x0,0x1001858 e102 BNZ 0x185e{ F:\MCP\projects\CAN\canIR\Source\IRec.c00185a 6b86 CLRF 0x86,0x1 second = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c00185c d1a9 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c00185e 0e8f MOVLW 0x8f if ((t4-250)<timediff && timediff<(t4+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c001860 80d8 BSF 0xd8,0x0,0x0001862 5582 SUBFWB 0x82,0x0,0x1001864 0e07 MOVLW 0x7001866 5583 SUBFWB 0x83,0x0,0x1001868 e239 BC 0x18dc00186a 0e83 MOVLW 0x8300186c 5d82 SUBWF 0x82,0x0,0x100186e 0e09 MOVLW 0x9001870 5983 SUBWFB 0x83,0x0,0x1001872 e234 BC 0x18dc001874 0586 DECF 0x86,0x0,0x1001876 e132 BNZ 0x18dc{ F:\MCP\projects\CAN\canIR\Source\IRec.c001878 5185 MOVF 0x85,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c00187a e002 BZ 0x188000187c 0e00 MOVLW 0x000187e d001 BRA 0x1882001880 0e01 MOVLW 0x1001882 6f85 MOVWF 0x85,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c001884 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c001886 e102 BNZ 0x188c001888 c085 MOVFF 0x85,0x7d00188a f07d00188c 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00188e 5d80 SUBWF 0x80,0x0,0x1001890 e310 BNC 0x18b2001892 5180 MOVF 0x80,0x0,0x1001894 0805 SUBLW 0x5001896 e30d BNC 0x18b2001898 0e05 MOVLW 0x500189a 80d8 BSF 0xd8,0x0,0x000189c 5580 SUBFWB 0x80,0x0,0x100189e 6e00 MOVWF 0x0,0x00018a0 5185 MOVF 0x85,0x0,0x10018a2 5200 MOVF 0x0,0x1,0x00018a4 e004 BZ 0x18ae0018a6 46e8 RLNCF 0xe8,0x1,0x00018a8 0bfe ANDLW 0xfe0018aa 0600 DECF 0x0,0x1,0x00018ac e1fc BNZ 0x18a60018ae 0100 MOVLB 0x00018b0 277e ADDWF 0x7e,0x1,0x10018b2 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0018b4 5d80 SUBWF 0x80,0x0,0x10018b6 e310 BNC 0x18d80018b8 5180 MOVF 0x80,0x0,0x10018ba 080b SUBLW 0xb0018bc e30d BNC 0x18d80018be 0e0b MOVLW 0xb0018c0 80d8 BSF 0xd8,0x0,0x00018c2 5580 SUBFWB 0x80,0x0,0x10018c4 6e00 MOVWF 0x0,0x00018c6 5185 MOVF 0x85,0x0,0x10018c8 5200 MOVF 0x0,0x1,0x00018ca e004 BZ 0x18d40018cc 46e8 RLNCF 0xe8,0x1,0x00018ce 0bfe ANDLW 0xfe0018d0 0600 DECF 0x0,0x1,0x00018d2 e1fc BNZ 0x18cc0018d4 0100 MOVLB 0x00018d6 277f ADDWF 0x7f,0x1,0x10018d8 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0018da d16a BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c} // if started and type == RC5 or RC5X F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// If RC6... F:\MCP\projects\CAN\canIR\Source\IRec.c0018dc 0584 DECF 0x84,0x0,0x1 if (started==TRUE && type==IR_RC6) F:\MCP\projects\CAN\canIR\Source\IRec.c0018de e001 BZ 0x18e20018e0 d0ce BRA 0x1a7e0018e2 0e03 MOVLW 0x30018e4 5d81 SUBWF 0x81,0x0,0x10018e6 e001 BZ 0x18ea0018e8 d0ca BRA 0x1a7e{ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0018ea 0e1c MOVLW 0x1c if ((t1-250)<timediff && timediff<(t1+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c0018ec 80d8 BSF 0xd8,0x0,0x00018ee 5582 SUBFWB 0x82,0x0,0x10018f0 0e01 MOVLW 0x10018f2 5583 SUBFWB 0x83,0x0,0x10018f4 e235 BC 0x19600018f6 0e10 MOVLW 0x100018f8 5d82 SUBWF 0x82,0x0,0x10018fa 0e03 MOVLW 0x30018fc 5983 SUBWFB 0x83,0x0,0x10018fe e230 BC 0x1960001900 5186 MOVF 0x86,0x0,0x1001902 e12e BNZ 0x1960{ F:\MCP\projects\CAN\canIR\Source\IRec.c001904 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c001906 e102 BNZ 0x190c001908 c085 MOVFF 0x85,0x7d00190a f07d00190c 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00190e 5d80 SUBWF 0x80,0x0,0x1001910 e310 BNC 0x1932001912 5180 MOVF 0x80,0x0,0x1001914 0808 SUBLW 0x8001916 e30d BNC 0x1932001918 0e08 MOVLW 0x800191a 80d8 BSF 0xd8,0x0,0x000191c 5580 SUBFWB 0x80,0x0,0x100191e 6e00 MOVWF 0x0,0x0001920 5185 MOVF 0x85,0x0,0x1001922 5200 MOVF 0x0,0x1,0x0001924 e004 BZ 0x192e001926 46e8 RLNCF 0xe8,0x1,0x0001928 0bfe ANDLW 0xfe00192a 0600 DECF 0x0,0x1,0x000192c e1fc BNZ 0x192600192e 0100 MOVLB 0x0001930 277e ADDWF 0x7e,0x1,0x1001932 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001934 5d80 SUBWF 0x80,0x0,0x1001936 e310 BNC 0x1958001938 5180 MOVF 0x80,0x0,0x100193a 0810 SUBLW 0x1000193c e30d BNC 0x195800193e 0e10 MOVLW 0x10001940 80d8 BSF 0xd8,0x0,0x0001942 5580 SUBFWB 0x80,0x0,0x1001944 6e00 MOVWF 0x0,0x0001946 5185 MOVF 0x85,0x0,0x1001948 5200 MOVF 0x0,0x1,0x000194a e004 BZ 0x195400194c 46e8 RLNCF 0xe8,0x1,0x000194e 0bfe ANDLW 0xfe001950 0600 DECF 0x0,0x1,0x0001952 e1fc BNZ 0x194c001954 0100 MOVLB 0x0001956 277f ADDWF 0x7f,0x1,0x1001958 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c00195a 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c00195c 6f86 MOVWF 0x86,0x100195e d128 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001960 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c001962 80d8 BSF 0xd8,0x0,0x0001964 5582 SUBFWB 0x82,0x0,0x1001966 0e03 MOVLW 0x3001968 5583 SUBFWB 0x83,0x0,0x100196a e23b BC 0x19e200196c 0e27 MOVLW 0x2700196e 5d82 SUBWF 0x82,0x0,0x1001970 0e05 MOVLW 0x5001972 5983 SUBWFB 0x83,0x0,0x1001974 e236 BC 0x19e2001976 5186 MOVF 0x86,0x0,0x1001978 e134 BNZ 0x19e2{ F:\MCP\projects\CAN\canIR\Source\IRec.c00197a 5185 MOVF 0x85,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c00197c e002 BZ 0x198200197e 0e00 MOVLW 0x0001980 d001 BRA 0x1984001982 0e01 MOVLW 0x1001984 6f85 MOVWF 0x85,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c001986 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c001988 e102 BNZ 0x198e00198a c085 MOVFF 0x85,0x7d00198c f07d00198e 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001990 5d80 SUBWF 0x80,0x0,0x1001992 e310 BNC 0x19b4001994 5180 MOVF 0x80,0x0,0x1001996 0808 SUBLW 0x8001998 e30d BNC 0x19b400199a 0e08 MOVLW 0x800199c 80d8 BSF 0xd8,0x0,0x000199e 5580 SUBFWB 0x80,0x0,0x10019a0 6e00 MOVWF 0x0,0x00019a2 5185 MOVF 0x85,0x0,0x10019a4 5200 MOVF 0x0,0x1,0x00019a6 e004 BZ 0x19b00019a8 46e8 RLNCF 0xe8,0x1,0x00019aa 0bfe ANDLW 0xfe0019ac 0600 DECF 0x0,0x1,0x00019ae e1fc BNZ 0x19a80019b0 0100 MOVLB 0x00019b2 277e ADDWF 0x7e,0x1,0x10019b4 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0019b6 5d80 SUBWF 0x80,0x0,0x10019b8 e310 BNC 0x19da0019ba 5180 MOVF 0x80,0x0,0x10019bc 0810 SUBLW 0x100019be e30d BNC 0x19da0019c0 0e10 MOVLW 0x100019c2 80d8 BSF 0xd8,0x0,0x00019c4 5580 SUBFWB 0x80,0x0,0x10019c6 6e00 MOVWF 0x0,0x00019c8 5185 MOVF 0x85,0x0,0x10019ca 5200 MOVF 0x0,0x1,0x00019cc e004 BZ 0x19d60019ce 46e8 RLNCF 0xe8,0x1,0x00019d0 0bfe ANDLW 0xfe0019d2 0600 DECF 0x0,0x1,0x00019d4 e1fc BNZ 0x19ce0019d6 0100 MOVLB 0x00019d8 277f ADDWF 0x7f,0x1,0x10019da 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0019dc 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c0019de 6f86 MOVWF 0x86,0x10019e0 d0e7 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0019e2 0e1c MOVLW 0x1c if ((t1-250)<timediff && timediff<(t1+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c0019e4 80d8 BSF 0xd8,0x0,0x00019e6 5582 SUBFWB 0x82,0x0,0x10019e8 0e01 MOVLW 0x10019ea 5583 SUBFWB 0x83,0x0,0x10019ec e209 BC 0x1a000019ee 0e10 MOVLW 0x100019f0 5d82 SUBWF 0x82,0x0,0x10019f2 0e03 MOVLW 0x30019f4 5983 SUBWFB 0x83,0x0,0x10019f6 e204 BC 0x1a000019f8 0586 DECF 0x86,0x0,0x10019fa e102 BNZ 0x1a00{ F:\MCP\projects\CAN\canIR\Source\IRec.c0019fc 6b86 CLRF 0x86,0x1 second = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c0019fe d0d8 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a00 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c001a02 80d8 BSF 0xd8,0x0,0x0001a04 5582 SUBFWB 0x82,0x0,0x1001a06 0e03 MOVLW 0x3001a08 5583 SUBFWB 0x83,0x0,0x1001a0a e239 BC 0x1a7e001a0c 0e27 MOVLW 0x27001a0e 5d82 SUBWF 0x82,0x0,0x1001a10 0e05 MOVLW 0x5001a12 5983 SUBWFB 0x83,0x0,0x1001a14 e234 BC 0x1a7e001a16 0586 DECF 0x86,0x0,0x1001a18 e132 BNZ 0x1a7e{ F:\MCP\projects\CAN\canIR\Source\IRec.c001a1a 5185 MOVF 0x85,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c001a1c e002 BZ 0x1a22001a1e 0e00 MOVLW 0x0001a20 d001 BRA 0x1a24001a22 0e01 MOVLW 0x1001a24 6f85 MOVWF 0x85,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c001a26 5180 MOVF 0x80,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c001a28 e102 BNZ 0x1a2e001a2a c085 MOVFF 0x85,0x7d001a2c f07d001a2e 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001a30 5d80 SUBWF 0x80,0x0,0x1001a32 e310 BNC 0x1a54001a34 5180 MOVF 0x80,0x0,0x1001a36 0808 SUBLW 0x8001a38 e30d BNC 0x1a54001a3a 0e08 MOVLW 0x8001a3c 80d8 BSF 0xd8,0x0,0x0001a3e 5580 SUBFWB 0x80,0x0,0x1001a40 6e00 MOVWF 0x0,0x0001a42 5185 MOVF 0x85,0x0,0x1001a44 5200 MOVF 0x0,0x1,0x0001a46 e004 BZ 0x1a50001a48 46e8 RLNCF 0xe8,0x1,0x0001a4a 0bfe ANDLW 0xfe001a4c 0600 DECF 0x0,0x1,0x0001a4e e1fc BNZ 0x1a48001a50 0100 MOVLB 0x0001a52 277e ADDWF 0x7e,0x1,0x1001a54 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001a56 5d80 SUBWF 0x80,0x0,0x1001a58 e310 BNC 0x1a7a001a5a 5180 MOVF 0x80,0x0,0x1001a5c 0810 SUBLW 0x10001a5e e30d BNC 0x1a7a001a60 0e10 MOVLW 0x10001a62 80d8 BSF 0xd8,0x0,0x0001a64 5580 SUBFWB 0x80,0x0,0x1001a66 6e00 MOVWF 0x0,0x0001a68 5185 MOVF 0x85,0x0,0x1001a6a 5200 MOVF 0x0,0x1,0x0001a6c e004 BZ 0x1a76001a6e 46e8 RLNCF 0xe8,0x1,0x0001a70 0bfe ANDLW 0xfe001a72 0600 DECF 0x0,0x1,0x0001a74 e1fc BNZ 0x1a6e001a76 0100 MOVLB 0x0001a78 277f ADDWF 0x7f,0x1,0x1001a7a 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a7c d099 BRA 0x1bb0 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c} // if started and type == RC6 F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a7e 2b80 INCF 0x80,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a80 5184 MOVF 0x84,0x0,0x1 if (started==FALSE && type==IR_NONE && bitIndex==2 && (t2-250)<timediff && timediff<(t2+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001a82 e113 BNZ 0x1aaa001a84 5181 MOVF 0x81,0x0,0x1001a86 e111 BNZ 0x1aaa001a88 0e02 MOVLW 0x2001a8a 5d80 SUBWF 0x80,0x0,0x1001a8c e10e BNZ 0x1aaa001a8e 0e33 MOVLW 0x33001a90 80d8 BSF 0xd8,0x0,0x0001a92 5582 SUBFWB 0x82,0x0,0x1001a94 0e03 MOVLW 0x3001a96 5583 SUBFWB 0x83,0x0,0x1001a98 e208 BC 0x1aaa001a9a 0e27 MOVLW 0x27001a9c 5d82 SUBWF 0x82,0x0,0x1001a9e 0e05 MOVLW 0x5001aa0 5983 SUBWFB 0x83,0x0,0x1001aa2 e203 BC 0x1aaa{ F:\MCP\projects\CAN\canIR\Source\IRec.c001aa4 0e01 MOVLW 0x1 type=IR_RC5; F:\MCP\projects\CAN\canIR\Source\IRec.c001aa6 6f81 MOVWF 0x81,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c001aa8 d063 BRA 0x1b70 else if (started==FALSE && type==IR_NONE && bitIndex==2 && (t4-250)<timediff && timediff<(t4+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001aaa 5184 MOVF 0x84,0x0,0x1001aac e117 BNZ 0x1adc001aae 5181 MOVF 0x81,0x0,0x1001ab0 e115 BNZ 0x1adc001ab2 0e02 MOVLW 0x2001ab4 5d80 SUBWF 0x80,0x0,0x1001ab6 e112 BNZ 0x1adc001ab8 0e8f MOVLW 0x8f001aba 80d8 BSF 0xd8,0x0,0x0001abc 5582 SUBFWB 0x82,0x0,0x1001abe 0e07 MOVLW 0x7001ac0 5583 SUBFWB 0x83,0x0,0x1001ac2 e20c BC 0x1adc001ac4 0e83 MOVLW 0x83001ac6 5d82 SUBWF 0x82,0x0,0x1001ac8 0e09 MOVLW 0x9001aca 5983 SUBWFB 0x83,0x0,0x1001acc e207 BC 0x1adc{ F:\MCP\projects\CAN\canIR\Source\IRec.c001ace 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001ad0 6f84 MOVWF 0x84,0x1001ad2 6b80 CLRF 0x80,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001ad4 6f85 MOVWF 0x85,0x1 lastbit = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c001ad6 0e02 MOVLW 0x2 type=IR_RC5X; F:\MCP\projects\CAN\canIR\Source\IRec.c001ad8 6f81 MOVWF 0x81,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c001ada d04a BRA 0x1b70 else if (started==FALSE && type==IR_NONE && bitIndex==2 && (t6-250)<timediff && timediff<(t6+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001adc 5184 MOVF 0x84,0x0,0x1001ade e113 BNZ 0x1b06001ae0 5181 MOVF 0x81,0x0,0x1001ae2 e111 BNZ 0x1b06001ae4 0e02 MOVLW 0x2001ae6 5d80 SUBWF 0x80,0x0,0x1001ae8 e10e BNZ 0x1b06001aea 0e8a MOVLW 0x8a001aec 80d8 BSF 0xd8,0x0,0x0001aee 5582 SUBFWB 0x82,0x0,0x1001af0 0e0b MOVLW 0xb001af2 5583 SUBFWB 0x83,0x0,0x1001af4 e208 BC 0x1b06001af6 0e7e MOVLW 0x7e001af8 5d82 SUBWF 0x82,0x0,0x1001afa 0e0d MOVLW 0xd001afc 5983 SUBWFB 0x83,0x0,0x1001afe e203 BC 0x1b06{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b00 0e03 MOVLW 0x3 type=IR_RC6; F:\MCP\projects\CAN\canIR\Source\IRec.c001b02 6f81 MOVWF 0x81,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c001b04 d035 BRA 0x1b70 else if (started==FALSE && type==IR_RC6 && bitIndex==9) F:\MCP\projects\CAN\canIR\Source\IRec.c001b06 5184 MOVF 0x84,0x0,0x1001b08 e10f BNZ 0x1b28001b0a 0e03 MOVLW 0x3001b0c 5d81 SUBWF 0x81,0x0,0x1001b0e e10c BNZ 0x1b28001b10 0e09 MOVLW 0x9001b12 5d80 SUBWF 0x80,0x0,0x1001b14 e109 BNZ 0x1b28{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b16 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001b18 6f84 MOVWF 0x84,0x1001b1a 6b80 CLRF 0x80,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001b1c 6b85 CLRF 0x85,0x1 lastbit = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001b1e 0e03 MOVLW 0x3 type=IR_RC6; F:\MCP\projects\CAN\canIR\Source\IRec.c001b20 6f81 MOVWF 0x81,0x1001b22 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001b24 6f86 MOVWF 0x86,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c001b26 d024 BRA 0x1b70 else if (started==FALSE && type==IR_RC5 && bitIndex==3 && (t2-250)<timediff && timediff<(t2+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001b28 5184 MOVF 0x84,0x0,0x1001b2a e116 BNZ 0x1b58001b2c 0581 DECF 0x81,0x0,0x1001b2e e114 BNZ 0x1b58001b30 0e03 MOVLW 0x3001b32 5d80 SUBWF 0x80,0x0,0x1001b34 e111 BNZ 0x1b58001b36 0e33 MOVLW 0x33001b38 80d8 BSF 0xd8,0x0,0x0001b3a 5582 SUBFWB 0x82,0x0,0x1001b3c 0e03 MOVLW 0x3001b3e 5583 SUBFWB 0x83,0x0,0x1001b40 e20b BC 0x1b58001b42 0e27 MOVLW 0x27001b44 5d82 SUBWF 0x82,0x0,0x1001b46 0e05 MOVLW 0x5001b48 5983 SUBWFB 0x83,0x0,0x1001b4a e206 BC 0x1b58{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b4c 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001b4e 6f84 MOVWF 0x84,0x1001b50 6b80 CLRF 0x80,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001b52 6f85 MOVWF 0x85,0x1 lastbit = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c001b54 6f81 MOVWF 0x81,0x1 type=IR_RC5; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.c001b56 d00c BRA 0x1b70 else if(bitIndex>2 && type!=IR_RC6) F:\MCP\projects\CAN\canIR\Source\IRec.c001b58 5180 MOVF 0x80,0x0,0x1001b5a 0802 SUBLW 0x2001b5c e205 BC 0x1b68001b5e 0e03 MOVLW 0x3001b60 5d81 SUBWF 0x81,0x0,0x1001b62 e002 BZ 0x1b68{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b64 6b81 CLRF 0x81,0x1 type=IR_NONE; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.c001b66 d004 BRA 0x1b70 else if(bitIndex>9) F:\MCP\projects\CAN\canIR\Source\IRec.c001b68 5180 MOVF 0x80,0x0,0x1001b6a 0809 SUBLW 0x9001b6c e201 BC 0x1b70{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b6e 6b81 CLRF 0x81,0x1 type=IR_NONE; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// If timer 3 overflow F:\MCP\projects\CAN\canIR\Source\IRec.c001b70 50a1 MOVF 0xa1,0x0,0x0 if(PIR2bits.TMR3IF && PIE2bits.TMR3IE) F:\MCP\projects\CAN\canIR\Source\IRec.c001b72 0b02 ANDLW 0x2001b74 e01d BZ 0x1bb0001b76 50a0 MOVF 0xa0,0x0,0x0001b78 0b02 ANDLW 0x2001b7a e01a BZ 0x1bb0{ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001b7c 92a1 BCF 0xa1,0x1,0x0 PIR2bits.TMR3IF=0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001b7e 0100 MOVLB 0x0 if (type!=IR_NONE) F:\MCP\projects\CAN\canIR\Source\IRec.c001b80 5181 MOVF 0x81,0x0,0x1001b82 e00e BZ 0x1ba0{ F:\MCP\projects\CAN\canIR\Source\IRec.c001b84 c07f MOVFF 0x7f,0xfe6 irecParse(type,toggle,addr,data); F:\MCP\projects\CAN\canIR\Source\IRec.c001b86 ffe6001b88 c07e MOVFF 0x7e,0xfe6001b8a ffe6001b8c c07d MOVFF 0x7d,0xfe6001b8e ffe6001b90 c081 MOVFF 0x81,0xfe6001b92 ffe6001b94 ec7d CALL 0x1cfa,0x0001b96 f00e001b98 52e5 MOVF 0xe5,0x1,0x0001b9a 52e5 MOVF 0xe5,0x1,0x0001b9c 52e5 MOVF 0xe5,0x1,0x0001b9e 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001ba0 0100 MOVLB 0x0 started = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c001ba2 6b84 CLRF 0x84,0x1001ba4 6b80 CLRF 0x80,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001ba6 6b7e CLRF 0x7e,0x1 addr = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001ba8 6b7d CLRF 0x7d,0x1 toggle = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001baa 6b7f CLRF 0x7f,0x1 data = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001bac 6b81 CLRF 0x81,0x1 type = IR_NONE; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c// wait in falling edge. F:\MCP\projects\CAN\canIR\Source\IRec.c001bae 90bd BCF 0xbd,0x0,0x0 CCP1CONbits.CCP1M0=0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001bb0 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c#endif F:\MCP\projects\CAN\canIR\Source\IRec.c