Rev 125 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Nov 20 17:42:34 2006Address 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 <EEaccess.h> F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canIR\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canIR\Source\Main.c#endif F:\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.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canIR\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001050 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canIR\Source\Main.c001052 ffe6001054 cfe1 MOVFF 0xfe1,0xfd9001056 ffd9001058 0e0f MOVLW 0xf00105a 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.c00105c d975 RCALL 0x1348 mainInit(); F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canIR\Source\Main.c00105e ec3c CALL 0x1a78,0x0 canInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001060 f00d#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c001062 ecda CALL 0x15b4,0x0 irecInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001064 f00a#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001066 ecc7 CALL 0x1f8e,0x0 tickInit(); F:\MCP\projects\CAN\canIR\Source\Main.c001068 f00fF:\MCP\projects\CAN\canIR\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canIR\Source\Main.c00106a 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canIR\Source\Main.c00106c 6ee6 MOVWF 0xe6,0x000106e 6ae6 CLRF 0xe6,0x0001070 ec22 CALL 0x1e44,0x0001072 f00f001074 52e5 MOVF 0xe5,0x1,0x0001076 52e5 MOVF 0xe5,0x1,0x0001078 082a SUBLW 0x2a00107a e12b BNZ 0x10d2{ F:\MCP\projects\CAN\canIR\Source\Main.c00107c 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canIR\Source\Main.c00107e 6ee6 MOVWF 0xe6,0x0001080 6ae6 CLRF 0xe6,0x0001082 ec22 CALL 0x1e44,0x0001084 f00f001086 52e5 MOVF 0xe5,0x1,0x0001088 52e5 MOVF 0xe5,0x1,0x000108a 6e00 MOVWF 0x0,0x000108c c000 MOVFF 0x0,0x100108e f001001090 6a00 CLRF 0x0,0x0001092 c000 MOVFF 0x0,0xfe6001094 ffe6001096 c001 MOVFF 0x1,0xfe6001098 ffe600109a 0e02 MOVLW 0x200109c 6ee6 MOVWF 0xe6,0x000109e 6ae6 CLRF 0xe6,0x00010a0 ec22 CALL 0x1e44,0x00010a2 f00f0010a4 52e5 MOVF 0xe5,0x1,0x00010a6 52e5 MOVF 0xe5,0x1,0x00010a8 52e5 MOVF 0xe5,0x1,0x00010aa cfe7 MOVFF 0xfe7,0x10010ac f0010010ae 52e5 MOVF 0xe5,0x1,0x00010b0 cfe7 MOVFF 0xfe7,0x00010b2 f0000010b4 0100 MOVLB 0x00010b6 2400 ADDWF 0x0,0x0,0x00010b8 6f60 MOVWF 0x60,0x10010ba 0e00 MOVLW 0x00010bc 2001 ADDWFC 0x1,0x0,0x00010be 6f61 MOVWF 0x61,0x10010c0 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canIR\Source\Main.c0010c2 6ee6 MOVWF 0xe6,0x00010c4 6ae6 CLRF 0xe6,0x00010c6 ec22 CALL 0x1e44,0x00010c8 f00f0010ca 52e5 MOVF 0xe5,0x1,0x00010cc 52e5 MOVF 0xe5,0x1,0x00010ce 0100 MOVLB 0x00010d0 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c// Send user program startup heatbeat F:\MCP\projects\CAN\canIR\Source\Main.c0010d2 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canIR\Source\Main.c0010d4 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canIR\Source\Main.c0010d6 6ef3 MOVWF 0xf3,0x00010d8 0e01 MOVLW 0x10010da cff3 MOVFF 0xff3,0xfdb0010dc ffdb0010de 0e02 MOVLW 0x20010e0 6adb CLRF 0xdb,0x00010e2 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canIR\Source\Main.c0010e4 c062 MOVFF 0x62,0xfdb0010e6 ffdb0010e8 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canIR\Source\Main.c0010ea c060 MOVFF 0x60,0xfdb0010ec ffdb0010ee 0e05 MOVLW 0x50010f0 c061 MOVFF 0x61,0xfdb0010f2 ffdb0010f4 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canIR\Source\Main.c0010f6 6ef3 MOVWF 0xf3,0x00010f8 0e06 MOVLW 0x60010fa cff3 MOVFF 0xff3,0xfdb0010fc ffdb0010fe 0e01 MOVLW 0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canIR\Source\Main.c001100 6ef3 MOVWF 0xf3,0x0001102 0e07 MOVLW 0x7001104 cff3 MOVFF 0xff3,0xfdb001106 ffdb001108 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canIR\Source\Main.c00110a 6ee6 MOVWF 0xe6,0x000110c cfd9 MOVFF 0xfd9,0xfe900110e ffe9001110 cfda MOVFF 0xfda,0xfea001112 ffea001114 cfee MOVFF 0xfee,0xfe6001116 ffe6001118 cfee MOVFF 0xfee,0xfe600111a ffe600111c cfee MOVFF 0xfee,0xfe600111e ffe6001120 cfee MOVFF 0xfee,0xfe6001122 ffe6001124 cfee MOVFF 0xfee,0xfe6001126 ffe6001128 cfee MOVFF 0xfee,0xfe600112a ffe600112c cfee MOVFF 0xfee,0xfe600112e ffe6001130 cfee MOVFF 0xfee,0xfe6001132 ffe6001134 cfee MOVFF 0xfee,0xfe6001136 ffe6001138 cfee MOVFF 0xfee,0xfe600113a ffe600113c cfee MOVFF 0xfee,0xfe600113e ffe6001140 cfee MOVFF 0xfee,0xfe6001142 ffe6001144 cfee MOVFF 0xfee,0xfe6001146 ffe6001148 cfee MOVFF 0xfee,0xfe600114a ffe600114c cfee MOVFF 0xfee,0xfe600114e ffe6001150 ec52 CALL 0x1ca4,0x0001152 f00e001154 6e00 MOVWF 0x0,0x0001156 0e10 MOVLW 0x10001158 5ee1 SUBWF 0xe1,0x1,0x000115a 5000 MOVF 0x0,0x0,0x000115c 0900 IORLW 0x000115e e101 BNZ 0x1162001160 d7d3 BRA 0x1108F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001280 d770 BRA 0x1162 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.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001162 ecd1 CALL 0x1fa2,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canIR\Source\Main.c001164 f00f001166 0100 MOVLB 0x0001168 516b MOVF 0x6b,0x0,0x100116a 5c12 SUBWF 0x12,0x0,0x000116c 6e00 MOVWF 0x0,0x000116e 516c MOVF 0x6c,0x0,0x1001170 5813 SUBWFB 0x13,0x0,0x0001172 6e01 MOVWF 0x1,0x0001174 516d MOVF 0x6d,0x0,0x1001176 5814 SUBWFB 0x14,0x0,0x0001178 6e02 MOVWF 0x2,0x000117a 516e MOVF 0x6e,0x0,0x100117c 5815 SUBWFB 0x15,0x0,0x000117e 6e03 MOVWF 0x3,0x0001180 80d8 BSF 0xd8,0x0,0x0001182 0ef4 MOVLW 0xf4001184 5400 SUBFWB 0x0,0x0,0x0001186 0e01 MOVLW 0x1001188 5401 SUBFWB 0x1,0x0,0x000118a 0e00 MOVLW 0x000118c 5402 SUBFWB 0x2,0x0,0x000118e 0e00 MOVLW 0x0001190 5403 SUBFWB 0x3,0x0,0x0001192 e252 BC 0x1238{ F:\MCP\projects\CAN\canIR\Source\Main.c// Send alive heartbeat F:\MCP\projects\CAN\canIR\Source\Main.c001194 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canIR\Source\Main.c001196 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canIR\Source\Main.c001198 6ef3 MOVWF 0xf3,0x000119a 0e01 MOVLW 0x100119c cff3 MOVFF 0xff3,0xfdb00119e ffdb0011a0 0e02 MOVLW 0x20011a2 6adb CLRF 0xdb,0x00011a4 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canIR\Source\Main.c0011a6 c062 MOVFF 0x62,0xfdb0011a8 ffdb0011aa 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canIR\Source\Main.c0011ac c060 MOVFF 0x60,0xfdb0011ae ffdb0011b0 0e05 MOVLW 0x50011b2 c061 MOVFF 0x61,0xfdb0011b4 ffdb0011b6 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canIR\Source\Main.c0011b8 6ef3 MOVWF 0xf3,0x00011ba 0e06 MOVLW 0x60011bc cff3 MOVFF 0xff3,0xfdb0011be ffdb0011c0 0e02 MOVLW 0x2 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canIR\Source\Main.c0011c2 6ef3 MOVWF 0xf3,0x00011c4 0e07 MOVLW 0x70011c6 cff3 MOVFF 0xff3,0xfdb0011c8 ffdb0011ca 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canIR\Source\Main.c0011cc 6ee6 MOVWF 0xe6,0x00011ce cfd9 MOVFF 0xfd9,0xfe90011d0 ffe90011d2 cfda MOVFF 0xfda,0xfea0011d4 ffea0011d6 cfee MOVFF 0xfee,0xfe60011d8 ffe60011da cfee MOVFF 0xfee,0xfe60011dc ffe60011de cfee MOVFF 0xfee,0xfe60011e0 ffe60011e2 cfee MOVFF 0xfee,0xfe60011e4 ffe60011e6 cfee MOVFF 0xfee,0xfe60011e8 ffe60011ea cfee MOVFF 0xfee,0xfe60011ec ffe60011ee cfee MOVFF 0xfee,0xfe60011f0 ffe60011f2 cfee MOVFF 0xfee,0xfe60011f4 ffe60011f6 cfee MOVFF 0xfee,0xfe60011f8 ffe60011fa cfee MOVFF 0xfee,0xfe60011fc ffe60011fe cfee MOVFF 0xfee,0xfe6001200 ffe6001202 cfee MOVFF 0xfee,0xfe6001204 ffe6001206 cfee MOVFF 0xfee,0xfe6001208 ffe600120a cfee MOVFF 0xfee,0xfe600120c ffe600120e cfee MOVFF 0xfee,0xfe6001210 ffe6001212 ec52 CALL 0x1ca4,0x0001214 f00e001216 6e00 MOVWF 0x0,0x0001218 0e10 MOVLW 0x1000121a 5ee1 SUBWF 0xe1,0x1,0x000121c 5000 MOVF 0x0,0x0,0x000121e 0900 IORLW 0x0001220 e101 BNZ 0x1224001222 d7d3 BRA 0x11caF:\MCP\projects\CAN\canIR\Source\Main.c001224 ecd1 CALL 0x1fa2,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canIR\Source\Main.c001226 f00f001228 c012 MOVFF 0x12,0x6b00122a f06b00122c c013 MOVFF 0x13,0x6c00122e f06c001230 c014 MOVFF 0x14,0x6d001232 f06d001234 c015 MOVFF 0x15,0x6e001236 f06e} F:\MCP\projects\CAN\canIR\Source\Main.c001238 ecd1 CALL 0x1fa2,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canIR\Source\Main.c00123a f00f00123c 0100 MOVLB 0x000123e 5167 MOVF 0x67,0x0,0x1001240 5c12 SUBWF 0x12,0x0,0x0001242 6e00 MOVWF 0x0,0x0001244 5168 MOVF 0x68,0x0,0x1001246 5813 SUBWFB 0x13,0x0,0x0001248 6e01 MOVWF 0x1,0x000124a 5169 MOVF 0x69,0x0,0x100124c 5814 SUBWFB 0x14,0x0,0x000124e 6e02 MOVWF 0x2,0x0001250 516a MOVF 0x6a,0x0,0x1001252 5815 SUBWFB 0x15,0x0,0x0001254 6e03 MOVWF 0x3,0x0001256 80d8 BSF 0xd8,0x0,0x0001258 0e64 MOVLW 0x6400125a 5400 SUBFWB 0x0,0x0,0x000125c 0e00 MOVLW 0x000125e 5401 SUBFWB 0x1,0x0,0x0001260 0e00 MOVLW 0x0001262 5402 SUBFWB 0x2,0x0,0x0001264 0e00 MOVLW 0x0001266 5403 SUBFWB 0x3,0x0,0x0001268 e20b BC 0x1280{ F:\MCP\projects\CAN\canIR\Source\Main.c00126a 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canIR\Source\Main.c00126c ecd1 CALL 0x1fa2,0x0 t = tickGet(); F:\MCP\projects\CAN\canIR\Source\Main.c00126e f00f001270 c012 MOVFF 0x12,0x67001272 f067001274 c013 MOVFF 0x13,0x68001276 f068001278 c014 MOVFF 0x14,0x6900127a f06900127c c015 MOVFF 0x15,0x6a00127e f06a} F:\MCP\projects\CAN\canIR\Source\Main.c} F:\MCP\projects\CAN\canIR\Source\Main.c001282 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIR\Source\Main.c001284 5ce1 SUBWF 0xe1,0x0,0x0001286 e202 BC 0x128c001288 6ae1 CLRF 0xe1,0x000128a 52e5 MOVF 0xe5,0x1,0x000128c 6ee1 MOVWF 0xe1,0x000128e 52e5 MOVF 0xe5,0x1,0x0001290 cfe7 MOVFF 0xfe7,0xfd9001292 ffd9001294 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.c001296 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canIR\Source\Main.c001298 ffe400129a cfe2 MOVFF 0xfe2,0xfda00129c ffda00129e cfe9 MOVFF 0xfe9,0xfe40012a0 ffe40012a2 cfea MOVFF 0xfea,0xfe40012a4 ffe40012a6 cff6 MOVFF 0xff6,0xfe40012a8 ffe40012aa cff7 MOVFF 0xff7,0xfe40012ac ffe40012ae cff5 MOVFF 0xff5,0xfe40012b0 ffe40012b2 cff3 MOVFF 0xff3,0xfe40012b4 ffe40012b6 cff4 MOVFF 0xff4,0xfe40012b8 ffe40012ba cffa MOVFF 0xffa,0xfe40012bc ffe40012be ee00 LFSR 0x0,0xe0012c0 f00e0012c2 0e0b MOVLW 0xb0012c4 04e8 DECF 0xe8,0x0,0x00012c6 e303 BNC 0x12ce0012c8 cfee MOVFF 0xfee,0xfe40012ca ffe40012cc d7fb BRA 0x12c40012ce ee00 LFSR 0x0,0x00012d0 f0000012d2 0e0e MOVLW 0xe0012d4 04e8 DECF 0xe8,0x0,0x00012d6 e303 BNC 0x12de0012d8 cfee MOVFF 0xfee,0xfe40012da ffe40012dc d7fb BRA 0x12d40012de 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.c0012e0 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canIR\Source\Main.c0012e2 ec67 CALL 0x1ace,0x0 canISR(); F:\MCP\projects\CAN\canIR\Source\Main.c0012e4 f00d#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c#ifdef USE_IREC F:\MCP\projects\CAN\canIR\Source\Main.c0012e6 ece5 CALL 0x15ca,0x0 irecISR(); F:\MCP\projects\CAN\canIR\Source\Main.c0012e8 f00a#endif F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c0012ea ecdb CALL 0x1fb6,0x0 tickUpdate(); F:\MCP\projects\CAN\canIR\Source\Main.c0012ec f00fF:\MCP\projects\CAN\canIR\Source\Main.c0012ee 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c0012f0 ee00 LFSR 0x0,0xd0012f2 f00d0012f4 0e0e MOVLW 0xe0012f6 04e8 DECF 0xe8,0x0,0x00012f8 e303 BNC 0x13000012fa cfe5 MOVFF 0xfe5,0xfed0012fc ffed0012fe d7fb BRA 0x12f6001300 ee00 LFSR 0x0,0x18001302 f018001304 0e0b MOVLW 0xb001306 04e8 DECF 0xe8,0x0,0x0001308 e303 BNC 0x131000130a cfe5 MOVFF 0xfe5,0xfed00130c ffed00130e d7fb BRA 0x1306001310 cfe5 MOVFF 0xfe5,0xffa001312 fffa001314 cfe5 MOVFF 0xfe5,0xff4001316 fff4001318 cfe5 MOVFF 0xfe5,0xff300131a fff300131c cfe5 MOVFF 0xfe5,0xff500131e fff5001320 cfe5 MOVFF 0xfe5,0xff7001322 fff7001324 cfe5 MOVFF 0xfe5,0xff6001326 fff6001328 cfe5 MOVFF 0xfe5,0xfea00132a ffea00132c cfe5 MOVFF 0xfe5,0xfe900132e ffe9001330 cfe5 MOVFF 0xfe5,0xfda001332 ffda001334 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.c001336 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canIR\Source\Main.c001338 ffe400133a cfe2 MOVFF 0xfe2,0xfda00133c ffda00133e 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001340 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIR\Source\Main.c001342 cfe5 MOVFF 0xfe5,0xfda001344 ffda001346 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.c001348 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.c00134a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canIR\Source\Main.c00134c 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.c00134e 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.c001350 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.c#ifdef USE_CAN F:\MCP\projects\CAN\canIR\Source\Main.c001352 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canIR\Source\Main.c001354 ffe6001356 cfe1 MOVFF 0xfe1,0xfd9001358 ffd900135a 0e0f MOVLW 0xf00135c 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.c00135e 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c001360 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canIR\Source\Main.c001362 50db MOVF 0xdb,0x0,0x0001364 e001 BZ 0x1368001366 d0b2 BRA 0x14cc{ F:\MCP\projects\CAN\canIR\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canIR\Source\Main.c001368 0ef3 MOVLW 0xf3 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\canIR\Source\Main.c00136a 50db MOVF 0xdb,0x0,0x000136c 0100 MOVLB 0x000136e 5d62 SUBWF 0x62,0x0,0x1001370 e001 BZ 0x1374001372 d0ab BRA 0x14ca001374 0efc MOVLW 0xfc001376 cfdb MOVFF 0xfdb,0x2001378 f00200137a c002 MOVFF 0x2,0x300137c f00300137e 6a02 CLRF 0x2,0x0001380 0efb MOVLW 0xfb001382 50db MOVF 0xdb,0x0,0x0001384 0100 MOVLB 0x0001386 2402 ADDWF 0x2,0x0,0x0001388 6e00 MOVWF 0x0,0x000138a 0e00 MOVLW 0x000138c 2003 ADDWFC 0x3,0x0,0x000138e 6e01 MOVWF 0x1,0x0001390 0100 MOVLB 0x0001392 5160 MOVF 0x60,0x0,0x1001394 1800 XORWF 0x0,0x0,0x0001396 e102 BNZ 0x139c001398 5161 MOVF 0x61,0x0,0x100139a 1801 XORWF 0x1,0x0,0x000139c e001 BZ 0x13a000139e d095 BRA 0x14ca{ F:\MCP\projects\CAN\canIR\Source\Main.c0013a0 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canIR\Source\Main.c0013a2 cfdb MOVFF 0xfdb,0x140013a4 f0140013a6 0ef2 MOVLW 0xf20013a8 cfdb MOVFF 0xfdb,0x150013aa f0150013ac 0e06 MOVLW 0x60013ae 1814 XORWF 0x14,0x0,0x00013b0 e101 BNZ 0x13b40013b2 5015 MOVF 0x15,0x0,0x00013b4 e008 BZ 0x13c60013b6 0e01 MOVLW 0x10013b8 1814 XORWF 0x14,0x0,0x00013ba e101 BNZ 0x13be0013bc 5015 MOVF 0x15,0x0,0x00013be e001 BZ 0x13c20013c0 d084 BRA 0x14ca{ F:\MCP\projects\CAN\canIR\Source\Main.c0013c2 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canIR\Source\Main.c0013c4 d082 BRA 0x14cacase FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canIR\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canIR\Source\Main.c0013c6 0ef8 MOVLW 0xf8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canIR\Source\Main.c0013c8 cfdb MOVFF 0xfdb,0x00013ca f0000013cc c000 MOVFF 0x0,0x10013ce f0010013d0 6a00 CLRF 0x0,0x00013d2 0ef7 MOVLW 0xf70013d4 50db MOVF 0xdb,0x0,0x00013d6 0100 MOVLB 0x00013d8 2400 ADDWF 0x0,0x0,0x00013da 6f60 MOVWF 0x60,0x10013dc 0e00 MOVLW 0x00013de 2001 ADDWFC 0x1,0x0,0x00013e0 6f61 MOVWF 0x61,0x10013e2 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canIR\Source\Main.c0013e4 cfdb MOVFF 0xfdb,0x620013e6 f0620013e8 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canIR\Source\Main.c0013ea cfdb MOVFF 0xfdb,0xfe60013ec ffe60013ee 0e01 MOVLW 0x10013f0 6ee6 MOVWF 0xe6,0x00013f2 6ae6 CLRF 0xe6,0x00013f4 ec47 CALL 0x1e8e,0x00013f6 f00f0013f8 52e5 MOVF 0xe5,0x1,0x00013fa 52e5 MOVF 0xe5,0x1,0x00013fc 52e5 MOVF 0xe5,0x1,0x00013fe 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canIR\Source\Main.c001400 cfdb MOVFF 0xfdb,0xfe6001402 ffe6001404 0e02 MOVLW 0x2001406 6ee6 MOVWF 0xe6,0x0001408 6ae6 CLRF 0xe6,0x000140a ec47 CALL 0x1e8e,0x000140c f00f00140e 52e5 MOVF 0xe5,0x1,0x0001410 52e5 MOVF 0xe5,0x1,0x0001412 52e5 MOVF 0xe5,0x1,0x0001414 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canIR\Source\Main.c001416 cfdb MOVFF 0xfdb,0xfe6001418 ffe600141a 0e03 MOVLW 0x300141c 6ee6 MOVWF 0xe6,0x000141e 6ae6 CLRF 0xe6,0x0001420 ec47 CALL 0x1e8e,0x0001422 f00f001424 52e5 MOVF 0xe5,0x1,0x0001426 52e5 MOVF 0xe5,0x1,0x0001428 52e5 MOVF 0xe5,0x1,0x000142a 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canIR\Source\Main.c00142c 6ee6 MOVWF 0xe6,0x000142e 0e00 MOVLW 0x0001430 6ee6 MOVWF 0xe6,0x0001432 6ae6 CLRF 0xe6,0x0001434 ec47 CALL 0x1e8e,0x0001436 f00f001438 52e5 MOVF 0xe5,0x1,0x000143a 52e5 MOVF 0xe5,0x1,0x000143c 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canIR\Source\Main.c00143e 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canIR\Source\Main.c001440 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canIR\Source\Main.c001442 6ef3 MOVWF 0xf3,0x0001444 0e01 MOVLW 0x1001446 cff3 MOVFF 0xff3,0xfdb001448 ffdb00144a 0e02 MOVLW 0x200144c 6adb CLRF 0xdb,0x000144e 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canIR\Source\Main.c001450 c062 MOVFF 0x62,0xfdb001452 ffdb001454 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canIR\Source\Main.c001456 c060 MOVFF 0x60,0xfdb001458 ffdb00145a 0e05 MOVLW 0x500145c c061 MOVFF 0x61,0xfdb00145e ffdb001460 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canIR\Source\Main.c001462 6ef3 MOVWF 0xf3,0x0001464 0e06 MOVLW 0x6001466 cff3 MOVFF 0xff3,0xfdb001468 ffdb00146a 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canIR\Source\Main.c00146c 6adb CLRF 0xdb,0x000146e 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canIR\Source\Main.c001470 6ee6 MOVWF 0xe6,0x0001472 cfd9 MOVFF 0xfd9,0xfe9001474 ffe9001476 cfda MOVFF 0xfda,0xfea001478 ffea00147a cfee MOVFF 0xfee,0xfe600147c ffe600147e cfee MOVFF 0xfee,0xfe6001480 ffe6001482 cfee MOVFF 0xfee,0xfe6001484 ffe6001486 cfee MOVFF 0xfee,0xfe6001488 ffe600148a cfee MOVFF 0xfee,0xfe600148c ffe600148e cfee MOVFF 0xfee,0xfe6001490 ffe6001492 cfee MOVFF 0xfee,0xfe6001494 ffe6001496 cfee MOVFF 0xfee,0xfe6001498 ffe600149a cfee MOVFF 0xfee,0xfe600149c ffe600149e cfee MOVFF 0xfee,0xfe60014a0 ffe60014a2 cfee MOVFF 0xfee,0xfe60014a4 ffe60014a6 cfee MOVFF 0xfee,0xfe60014a8 ffe60014aa cfee MOVFF 0xfee,0xfe60014ac ffe60014ae cfee MOVFF 0xfee,0xfe60014b0 ffe60014b2 cfee MOVFF 0xfee,0xfe60014b4 ffe60014b6 ec52 CALL 0x1ca4,0x00014b8 f00e0014ba 6e00 MOVWF 0x0,0x00014bc 0e10 MOVLW 0x100014be 5ee1 SUBWF 0xe1,0x1,0x00014c0 5000 MOVF 0x0,0x0,0x00014c2 0900 IORLW 0x00014c4 e101 BNZ 0x14c80014c6 d7d3 BRA 0x146e0014c8 d000 BRA 0x14ca break; F:\MCP\projects\CAN\canIR\Source\Main.c} 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.c0014ca d000 BRA 0x14cc break; F:\MCP\projects\CAN\canIR\Source\Main.c} F:\MCP\projects\CAN\canIR\Source\Main.c0014cc 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIR\Source\Main.c0014ce 5ce1 SUBWF 0xe1,0x0,0x00014d0 e202 BC 0x14d60014d2 6ae1 CLRF 0xe1,0x00014d4 52e5 MOVF 0xe5,0x1,0x00014d6 6ee1 MOVWF 0xe1,0x00014d8 52e5 MOVF 0xe5,0x1,0x00014da cfe7 MOVFF 0xfe7,0xfd90014dc ffd90014de 0012 RETURN 0x0#endif F:\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.c0014e0 cfd9 MOVFF 0xfd9,0xfe6 void irecParse(IR_TYPE type, BYTE toggle, BYTE addr, BYTE data) F:\MCP\projects\CAN\canIR\Source\Main.c0014e2 ffe60014e4 cfe1 MOVFF 0xfe1,0xfd90014e6 ffd90014e8 0e0f MOVLW 0xf0014ea 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIR\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIR\Source\Main.c0014ec 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canIR\Source\Main.c0014ee 6edf MOVWF 0xdf,0x00014f0 6ef3 MOVWF 0xf3,0x0 outCm.funcc = FUNCC_SENSORS_IR; F:\MCP\projects\CAN\canIR\Source\Main.c0014f2 cff3 MOVFF 0xff3,0xfdb0014f4 ffdb0014f6 0e02 MOVLW 0x20014f8 6adb CLRF 0xdb,0x00014fa 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canIR\Source\Main.c0014fc c062 MOVFF 0x62,0xfdb0014fe ffdb001500 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canIR\Source\Main.c001502 c060 MOVFF 0x60,0xfdb001504 ffdb001506 0e05 MOVLW 0x5001508 c061 MOVFF 0x61,0xfdb00150a ffdb00150c 0e04 MOVLW 0x4 outCm.data_length = 4; F:\MCP\projects\CAN\canIR\Source\Main.c00150e 6ef3 MOVWF 0xf3,0x0001510 0e06 MOVLW 0x6001512 cff3 MOVFF 0xff3,0xfdb001514 ffdb001516 0efe MOVLW 0xfe outCm.data[3] = type; F:\MCP\projects\CAN\canIR\Source\Main.c001518 50db MOVF 0xdb,0x0,0x000151a 6ee7 MOVWF 0xe7,0x000151c 0e0a MOVLW 0xa00151e cfe7 MOVFF 0xfe7,0xfdb001520 ffdb001522 0efd MOVLW 0xfd outCm.data[2] = toggle; F:\MCP\projects\CAN\canIR\Source\Main.c001524 50db MOVF 0xdb,0x0,0x0001526 6ee7 MOVWF 0xe7,0x0001528 0e09 MOVLW 0x900152a cfe7 MOVFF 0xfe7,0xfdb00152c ffdb00152e 0efc MOVLW 0xfc outCm.data[1] = addr; F:\MCP\projects\CAN\canIR\Source\Main.c001530 50db MOVF 0xdb,0x0,0x0001532 6ee7 MOVWF 0xe7,0x0001534 0e08 MOVLW 0x8001536 cfe7 MOVFF 0xfe7,0xfdb001538 ffdb00153a 0efb MOVLW 0xfb outCm.data[0] = data; F:\MCP\projects\CAN\canIR\Source\Main.c00153c 50db MOVF 0xdb,0x0,0x000153e 6ee7 MOVWF 0xe7,0x0001540 0e07 MOVLW 0x7001542 cfe7 MOVFF 0xfe7,0xfdb001544 ffdbF:\MCP\projects\CAN\canIR\Source\Main.c001546 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canIR\Source\Main.c001548 6ee6 MOVWF 0xe6,0x000154a cfd9 MOVFF 0xfd9,0xfe900154c ffe900154e cfda MOVFF 0xfda,0xfea001550 ffea001552 cfee MOVFF 0xfee,0xfe6001554 ffe6001556 cfee MOVFF 0xfee,0xfe6001558 ffe600155a cfee MOVFF 0xfee,0xfe600155c ffe600155e cfee MOVFF 0xfee,0xfe6001560 ffe6001562 cfee MOVFF 0xfee,0xfe6001564 ffe6001566 cfee MOVFF 0xfee,0xfe6001568 ffe600156a cfee MOVFF 0xfee,0xfe600156c ffe600156e cfee MOVFF 0xfee,0xfe6001570 ffe6001572 cfee MOVFF 0xfee,0xfe6001574 ffe6001576 cfee MOVFF 0xfee,0xfe6001578 ffe600157a cfee MOVFF 0xfee,0xfe600157c ffe600157e cfee MOVFF 0xfee,0xfe6001580 ffe6001582 cfee MOVFF 0xfee,0xfe6001584 ffe6001586 cfee MOVFF 0xfee,0xfe6001588 ffe600158a cfee MOVFF 0xfee,0xfe600158c ffe600158e ec52 CALL 0x1ca4,0x0001590 f00e001592 6e00 MOVWF 0x0,0x0001594 0e10 MOVLW 0x10001596 5ee1 SUBWF 0xe1,0x1,0x0001598 5000 MOVF 0x0,0x0,0x000159a 0900 IORLW 0x000159c e101 BNZ 0x15a000159e d7d3 BRA 0x1546F:\MCP\projects\CAN\canIR\Source\Main.cF:\MCP\projects\CAN\canIR\Source\Main.c0015a0 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIR\Source\Main.c0015a2 5ce1 SUBWF 0xe1,0x0,0x00015a4 e202 BC 0x15aa0015a6 6ae1 CLRF 0xe1,0x00015a8 52e5 MOVF 0xe5,0x1,0x00015aa 6ee1 MOVWF 0xe1,0x00015ac 52e5 MOVF 0xe5,0x1,0x00015ae cfe7 MOVFF 0xfe7,0xfd90015b0 ffd90015b2 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 efe9 GOTO 0x1fd2 _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 ef4b GOTO 0x1296 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canIR\Source\Main.c00100a f00900100c 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 ef9b GOTO 0x1336 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canIR\Source\Main.c00101a f00900101c 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.c001f8e 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001f90 6ed6 MOVWF 0xd6,0x0001f92 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001f94 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.c001f96 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001f98 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001f9a 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001f9c 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001f9e 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001fa0 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.c001fa2 c083 MOVFF 0x83,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001fa4 f012001fa6 c084 MOVFF 0x84,0x13001fa8 f013001faa c085 MOVFF 0x85,0x14001fac f014001fae c086 MOVFF 0x86,0x15001fb0 f015001fb2 d000 BRA 0x1fb4001fb4 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.c001fb6 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001fb8 d00b BRA 0x1fd0{ F:\MCP\projects\CAN\canBase\Source\Tick.c001fba 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001fbc 6ed7 MOVWF 0xd7,0x0001fbe 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001fc0 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001fc2 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001fc4 2b83 INCF 0x83,0x1,0x1001fc6 0e00 MOVLW 0x0001fc8 2384 ADDWFC 0x84,0x1,0x1001fca 2385 ADDWFC 0x85,0x1,0x1001fcc 2386 ADDWFC 0x86,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001fce 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001fd0 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.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.c#ifdef USE_CAN 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.c001a78 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c001a7a 6e6f MOVWF 0x6f,0x0001a7c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001a7e 146e ANDWF 0x6e,0x0,0x0001a80 0880 SUBLW 0x80001a82 e001 BZ 0x1a86001a84 d7fb BRA 0x1a7cF:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001a86 6a70 CLRF 0x70,0x0 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.c001a88 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a8a 8c70 BSF 0x70,0x6,0x0 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.c001a8c 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c001a8e 1070 IORWF 0x70,0x0,0x0001a90 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c001a92 8e71 BSF 0x71,0x7,0x0 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.c001a94 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a96 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a98 8671 BSF 0x71,0x3,0x0 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.c001a9a 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a9c 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a9e 8071 BSF 0x71,0x0,0x0 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.c001aa0 9e72 BCF 0x72,0x7,0x0 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.c001aa2 9c72 BCF 0x72,0x6,0x0 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.c001aa4 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001aa6 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001aa8 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001aaa 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001aac 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001aae 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.c001ab0 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c001ab2 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.c001ab4 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001ab6 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001ab8 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001aba 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001abc 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001abe 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.c001ac0 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.c001ac2 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001ac4 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001ac6 146e ANDWF 0x6e,0x0,0x0001ac8 e001 BZ 0x1acc001aca d7fc BRA 0x1ac4#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001acc 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.c001ace 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001ad0 0b02 ANDLW 0x2001ad2 e106 BNZ 0x1ae0001ad4 50a4 MOVF 0xa4,0x0,0x0001ad6 0b02 ANDLW 0x2001ad8 e103 BNZ 0x1ae0001ada 50a4 MOVF 0xa4,0x0,0x0001adc 0b01 ANDLW 0x1001ade e016 BZ 0x1b0c{ F:\MCP\projects\CAN\canBase\Source\CAN.c001ae0 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001ae2 146f ANDWF 0x6f,0x0,0x0001ae4 0910 IORLW 0x10001ae6 6e00 MOVWF 0x0,0x0001ae8 0e00 MOVLW 0x0001aea 1477 ANDWF 0x77,0x0,0x0001aec 1000 IORWF 0x0,0x0,0x0001aee 6e77 MOVWF 0x77,0x0001af0 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c001af2 d80d RCALL 0x1b0eF:\MCP\projects\CAN\canBase\Source\CAN.c001af4 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001af6 d002 BRA 0x1afc001af8 92a4 BCF 0xa4,0x1,0x0001afa d008 BRA 0x1b0c001afc a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001afe d002 BRA 0x1b04001b00 92a4 BCF 0xa4,0x1,0x0001b02 d004 BRA 0x1b0c001b04 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001b06 d002 BRA 0x1b0c001b08 90a4 BCF 0xa4,0x0,0x0001b0a d000 BRA 0x1b0c} F:\MCP\projects\CAN\canBase\Source\CAN.c001b0c 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.c001b0e cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001b10 ffe6001b12 cfe1 MOVFF 0xfe1,0xfd9001b14 ffd9001b16 0e0f MOVLW 0xf001b18 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.c001b1a 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c001b1c 1461 ANDWF 0x61,0x0,0x0001b1e 38e8 SWAPF 0xe8,0x0,0x0001b20 0b0f ANDLW 0xf001b22 6edf MOVWF 0xdf,0x0001b24 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.c001b26 1461 ANDWF 0x61,0x0,0x0001b28 6e06 MOVWF 0x6,0x0001b2a 6a07 CLRF 0x7,0x0001b2c 0e06 MOVLW 0x6001b2e 90d8 BCF 0xd8,0x0,0x0001b30 3606 RLCF 0x6,0x1,0x0001b32 3607 RLCF 0x7,0x1,0x0001b34 04e8 DECF 0xe8,0x0,0x0001b36 e1fb BNZ 0x1b2e001b38 0ee0 MOVLW 0xe0001b3a 1462 ANDWF 0x62,0x0,0x0001b3c 6e08 MOVWF 0x8,0x0001b3e 6a09 CLRF 0x9,0x0001b40 90d8 BCF 0xd8,0x0,0x0001b42 3209 RRCF 0x9,0x1,0x0001b44 3208 RRCF 0x8,0x1,0x0001b46 90d8 BCF 0xd8,0x0,0x0001b48 3209 RRCF 0x9,0x1,0x0001b4a 3208 RRCF 0x8,0x1,0x0001b4c 5006 MOVF 0x6,0x0,0x0001b4e 2408 ADDWF 0x8,0x0,0x0001b50 6e04 MOVWF 0x4,0x0001b52 5007 MOVF 0x7,0x0,0x0001b54 2009 ADDWFC 0x9,0x0,0x0001b56 6e05 MOVWF 0x5,0x0001b58 0e03 MOVLW 0x3001b5a 1462 ANDWF 0x62,0x0,0x0001b5c 6e0a MOVWF 0xa,0x0001b5e 6a0b CLRF 0xb,0x0001b60 90d8 BCF 0xd8,0x0,0x0001b62 360a RLCF 0xa,0x1,0x0001b64 360b RLCF 0xb,0x1,0x0001b66 5004 MOVF 0x4,0x0,0x0001b68 240a ADDWF 0xa,0x0,0x0001b6a 6e02 MOVWF 0x2,0x0001b6c 5005 MOVF 0x5,0x0,0x0001b6e 200b ADDWFC 0xb,0x0,0x0001b70 6e03 MOVWF 0x3,0x0001b72 0e80 MOVLW 0x80001b74 1463 ANDWF 0x63,0x0,0x0001b76 6e0c MOVWF 0xc,0x0001b78 6a0d CLRF 0xd,0x0001b7a 0e07 MOVLW 0x7001b7c 90d8 BCF 0xd8,0x0,0x0001b7e 320d RRCF 0xd,0x1,0x0001b80 320c RRCF 0xc,0x1,0x0001b82 04e8 DECF 0xe8,0x0,0x0001b84 e1fb BNZ 0x1b7c001b86 5002 MOVF 0x2,0x0,0x0001b88 240c ADDWF 0xc,0x0,0x0001b8a 6e00 MOVWF 0x0,0x0001b8c 5003 MOVF 0x3,0x0,0x0001b8e 200d ADDWFC 0xd,0x0,0x0001b90 6e01 MOVWF 0x1,0x0001b92 0e01 MOVLW 0x1001b94 c000 MOVFF 0x0,0xfdb001b96 ffdb001b98 0e02 MOVLW 0x2001b9a c001 MOVFF 0x1,0xfdb001b9c ffdb001b9e 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001ba0 1463 ANDWF 0x63,0x0,0x0001ba2 40e8 RRNCF 0xe8,0x0,0x0001ba4 0b7f ANDLW 0x7f001ba6 6ee7 MOVWF 0xe7,0x0001ba8 0e03 MOVLW 0x3001baa cfe7 MOVFF 0xfe7,0xfdb001bac ffdb001bae 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c001bb0 1463 ANDWF 0x63,0x0,0x0001bb2 6e02 MOVWF 0x2,0x0001bb4 c002 MOVFF 0x2,0x3001bb6 f003001bb8 6a02 CLRF 0x2,0x0001bba 5064 MOVF 0x64,0x0,0x0001bbc 0100 MOVLB 0x0001bbe 2402 ADDWF 0x2,0x0,0x0001bc0 6e00 MOVWF 0x0,0x0001bc2 0e00 MOVLW 0x0001bc4 2003 ADDWFC 0x3,0x0,0x0001bc6 6e01 MOVWF 0x1,0x0001bc8 0e04 MOVLW 0x4001bca c000 MOVFF 0x0,0xfdb001bcc ffdb001bce 0e05 MOVLW 0x5001bd0 c001 MOVFF 0x1,0xfdb001bd2 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001bd4 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.c001bd6 0b01 ANDLW 0x1001bd8 6e02 MOVWF 0x2,0x0001bda 5065 MOVF 0x65,0x0,0x0001bdc 0b02 ANDLW 0x2001bde e001 BZ 0x1be2001be0 0e01 MOVLW 0x1001be2 24e8 ADDWF 0xe8,0x0,0x0001be4 6e01 MOVWF 0x1,0x0001be6 5065 MOVF 0x65,0x0,0x0001be8 0b04 ANDLW 0x4001bea e001 BZ 0x1bee001bec 0e01 MOVLW 0x1001bee 0d04 MULLW 0x4001bf0 cff3 MOVFF 0xff3,0x0001bf2 f000001bf4 5065 MOVF 0x65,0x0,0x0001bf6 0b08 ANDLW 0x8001bf8 e001 BZ 0x1bfc001bfa 0e01 MOVLW 0x1001bfc 0d08 MULLW 0x8001bfe 50f3 MOVF 0xf3,0x0,0x0001c00 2400 ADDWF 0x0,0x0,0x0001c02 2401 ADDWF 0x1,0x0,0x0001c04 2402 ADDWF 0x2,0x0,0x0001c06 6ee7 MOVWF 0xe7,0x0001c08 0e06 MOVLW 0x6001c0a cfe7 MOVFF 0xfe7,0xfdb001c0c ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001c0e 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001c10 cf66 MOVFF 0xf66,0xfdb001c12 ffdb001c14 0e08 MOVLW 0x8001c16 cf67 MOVFF 0xf67,0xfdb001c18 ffdb001c1a 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001c1c cf68 MOVFF 0xf68,0xfdb001c1e ffdb001c20 0e0a MOVLW 0xa001c22 cf69 MOVFF 0xf69,0xfdb001c24 ffdb001c26 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001c28 cf6a MOVFF 0xf6a,0xfdb001c2a ffdb001c2c 0e0c MOVLW 0xc001c2e cf6b MOVFF 0xf6b,0xfdb001c30 ffdb001c32 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001c34 cf6c MOVFF 0xf6c,0xfdb001c36 ffdb001c38 0e0e MOVLW 0xe001c3a cf6d MOVFF 0xf6d,0xfdb001c3c ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001c3e 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c001c40 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c001c42 ffe9001c44 cfda MOVFF 0xfda,0xfea001c46 ffea001c48 cfee MOVFF 0xfee,0xfe6001c4a ffe6001c4c cfee MOVFF 0xfee,0xfe6001c4e ffe6001c50 cfee MOVFF 0xfee,0xfe6001c52 ffe6001c54 cfee MOVFF 0xfee,0xfe6001c56 ffe6001c58 cfee MOVFF 0xfee,0xfe6001c5a ffe6001c5c cfee MOVFF 0xfee,0xfe6001c5e ffe6001c60 cfee MOVFF 0xfee,0xfe6001c62 ffe6001c64 cfee MOVFF 0xfee,0xfe6001c66 ffe6001c68 cfee MOVFF 0xfee,0xfe6001c6a ffe6001c6c cfee MOVFF 0xfee,0xfe6001c6e ffe6001c70 cfee MOVFF 0xfee,0xfe6001c72 ffe6001c74 cfee MOVFF 0xfee,0xfe6001c76 ffe6001c78 cfee MOVFF 0xfee,0xfe6001c7a ffe6001c7c cfee MOVFF 0xfee,0xfe6001c7e ffe6001c80 cfee MOVFF 0xfee,0xfe6001c82 ffe6001c84 eca9 CALL 0x1352,0x0001c86 f009001c88 6e00 MOVWF 0x0,0x0001c8a 0e0f MOVLW 0xf001c8c 5ee1 SUBWF 0xe1,0x1,0x0001c8e 5000 MOVF 0x0,0x0,0x0001c90 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c001c92 5ce1 SUBWF 0xe1,0x0,0x0001c94 e202 BC 0x1c9a001c96 6ae1 CLRF 0xe1,0x0001c98 52e5 MOVF 0xe5,0x1,0x0001c9a 6ee1 MOVWF 0xe1,0x0001c9c 52e5 MOVF 0xe5,0x1,0x0001c9e cfe7 MOVFF 0xfe7,0xfd9001ca0 ffd9001ca2 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.c001ca4 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001ca6 ffe6001ca8 cfe1 MOVFF 0xfe1,0xfd9001caa ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001cac 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001cae b740 BTFSC 0x40,0x3,0x1001cb0 d004 BRA 0x1cba001cb2 0e00 MOVLW 0x0001cb4 1477 ANDWF 0x77,0x0,0x0001cb6 0903 IORLW 0x3001cb8 6e77 MOVWF 0x77,0x0001cba 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001cbc b730 BTFSC 0x30,0x3,0x1001cbe d004 BRA 0x1cc8001cc0 0e00 MOVLW 0x0001cc2 1477 ANDWF 0x77,0x0,0x0001cc4 0904 IORLW 0x4001cc6 6e77 MOVWF 0x77,0x0001cc8 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001cca b720 BTFSC 0x20,0x3,0x1001ccc d005 BRA 0x1cd8001cce 0e00 MOVLW 0x0001cd0 1477 ANDWF 0x77,0x0,0x0001cd2 0905 IORLW 0x5001cd4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001cd6 d002 BRA 0x1cdc else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001cd8 0e00 MOVLW 0x0001cda d0b0 BRA 0x1e3cF:\MCP\projects\CAN\canBase\Source\CAN.c001cdc 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001cde cfdb MOVFF 0xfdb,0x0001ce0 f000001ce2 3400 RLCF 0x0,0x0,0x0001ce4 e20e BC 0x1d02001ce6 0eef MOVLW 0xef001ce8 cfdb MOVFF 0xfdb,0x1001cea f001001cec 0e03 MOVLW 0x3001cee 6ee7 MOVWF 0xe7,0x0001cf0 1801 XORWF 0x1,0x0,0x0001cf2 aee8 BTFSS 0xe8,0x7,0x0001cf4 d002 BRA 0x1cfa001cf6 3401 RLCF 0x1,0x0,0x0001cf8 d003 BRA 0x1d00001cfa 50e7 MOVF 0xe7,0x0,0x0001cfc 80d8 BSF 0xd8,0x0,0x0001cfe 5401 SUBFWB 0x1,0x0,0x0001d00 e202 BC 0x1d06001d02 0eef MOVLW 0xef001d04 6adb CLRF 0xdb,0x0F:\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.c001d06 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c001d08 cfdb MOVFF 0xfdb,0x0001d0a f000001d0c 0ef2 MOVLW 0xf2001d0e cfdb MOVFF 0xfdb,0x1001d10 f001001d12 0ec0 MOVLW 0xc0001d14 1600 ANDWF 0x0,0x1,0x0001d16 0e03 MOVLW 0x3001d18 1601 ANDWF 0x1,0x1,0x0001d1a 0e06 MOVLW 0x6001d1c 90d8 BCF 0xd8,0x0,0x0001d1e 3201 RRCF 0x1,0x1,0x0001d20 3200 RRCF 0x0,0x1,0x0001d22 04e8 DECF 0xe8,0x0,0x0001d24 e1fb BNZ 0x1d1c001d26 0ef0 MOVLW 0xf0001d28 50db MOVF 0xdb,0x0,0x0001d2a 0b0f ANDLW 0xf001d2c 0d10 MULLW 0x10001d2e 50f3 MOVF 0xf3,0x0,0x0001d30 2400 ADDWF 0x0,0x0,0x0001d32 6e61 MOVWF 0x61,0x0001d34 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001d36 6ee7 MOVWF 0xe7,0x0001d38 0ef1 MOVLW 0xf1001d3a cfdb MOVFF 0xfdb,0x2001d3c f002001d3e 0ef2 MOVLW 0xf2001d40 cfdb MOVFF 0xfdb,0x3001d42 f003001d44 50e7 MOVF 0xe7,0x0,0x0001d46 1602 ANDWF 0x2,0x1,0x0001d48 6a03 CLRF 0x3,0x0001d4a 90d8 BCF 0xd8,0x0,0x0001d4c 3203 RRCF 0x3,0x1,0x0001d4e 3202 RRCF 0x2,0x1,0x0001d50 0e3f MOVLW 0x3f001d52 6ee7 MOVWF 0xe7,0x0001d54 0ef1 MOVLW 0xf1001d56 cfdb MOVFF 0xfdb,0x0001d58 f000001d5a 0ef2 MOVLW 0xf2001d5c cfdb MOVFF 0xfdb,0x1001d5e f001001d60 50e7 MOVF 0xe7,0x0,0x0001d62 1600 ANDWF 0x0,0x1,0x0001d64 6a01 CLRF 0x1,0x0001d66 90d8 BCF 0xd8,0x0,0x0001d68 3600 RLCF 0x0,0x1,0x0001d6a 3601 RLCF 0x1,0x1,0x0001d6c 90d8 BCF 0xd8,0x0,0x0001d6e 3600 RLCF 0x0,0x1,0x0001d70 3601 RLCF 0x1,0x1,0x0001d72 5000 MOVF 0x0,0x0,0x0001d74 2402 ADDWF 0x2,0x0,0x0001d76 6e62 MOVWF 0x62,0x0001d78 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.c001d7a cfdb MOVFF 0xfdb,0x2001d7c f002001d7e 0ef5 MOVLW 0xf5001d80 cfdb MOVFF 0xfdb,0x3001d82 f003001d84 0e00 MOVLW 0x0001d86 1602 ANDWF 0x2,0x1,0x0001d88 0e01 MOVLW 0x1001d8a 1603 ANDWF 0x3,0x1,0x0001d8c c003 MOVFF 0x3,0x2001d8e f002001d90 6a03 CLRF 0x3,0x0001d92 0e01 MOVLW 0x1001d94 6ee7 MOVWF 0xe7,0x0001d96 0ef1 MOVLW 0xf1001d98 cfdb MOVFF 0xfdb,0x0001d9a f000001d9c 0ef2 MOVLW 0xf2001d9e cfdb MOVFF 0xfdb,0x1001da0 f001001da2 50e7 MOVF 0xe7,0x0,0x0001da4 1600 ANDWF 0x0,0x1,0x0001da6 6a01 CLRF 0x1,0x0001da8 0e07 MOVLW 0x7001daa 90d8 BCF 0xd8,0x0,0x0001dac 3600 RLCF 0x0,0x1,0x0001dae 3601 RLCF 0x1,0x1,0x0001db0 04e8 DECF 0xe8,0x0,0x0001db2 e1fb BNZ 0x1daa001db4 0ef3 MOVLW 0xf3001db6 50db MOVF 0xdb,0x0,0x0001db8 0b3f ANDLW 0x3f001dba 24e8 ADDWF 0xe8,0x0,0x0001dbc 2400 ADDWF 0x0,0x0,0x0001dbe 2402 ADDWF 0x2,0x0,0x0001dc0 6e63 MOVWF 0x63,0x0001dc2 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001dc4 6ee7 MOVWF 0xe7,0x0001dc6 0ef4 MOVLW 0xf4001dc8 cfdb MOVFF 0xfdb,0x0001dca f000001dcc 0ef5 MOVLW 0xf5001dce cfdb MOVFF 0xfdb,0x1001dd0 f001001dd2 50e7 MOVF 0xe7,0x0,0x0001dd4 1600 ANDWF 0x0,0x1,0x0001dd6 6a01 CLRF 0x1,0x0001dd8 5000 MOVF 0x0,0x0,0x0001dda 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001ddc 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001dde 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001de0 50db MOVF 0xdb,0x0,0x0001de2 0808 SUBLW 0x8001de4 e203 BC 0x1dec001de6 0e08 MOVLW 0x8001de8 6e65 MOVWF 0x65,0x0001dea d003 BRA 0x1df2001dec 0ef6 MOVLW 0xf6001dee 50db MOVF 0xdb,0x0,0x0001df0 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.c001df2 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.c001df4 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001df6 50db MOVF 0xdb,0x0,0x0001df8 6e66 MOVWF 0x66,0x0001dfa 0ef8 MOVLW 0xf8001dfc 50db MOVF 0xdb,0x0,0x0001dfe 6e67 MOVWF 0x67,0x0001e00 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001e02 50db MOVF 0xdb,0x0,0x0001e04 6e68 MOVWF 0x68,0x0001e06 0efa MOVLW 0xfa001e08 50db MOVF 0xdb,0x0,0x0001e0a 6e69 MOVWF 0x69,0x0001e0c 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c001e0e 50db MOVF 0xdb,0x0,0x0001e10 6e6a MOVWF 0x6a,0x0001e12 0efc MOVLW 0xfc001e14 50db MOVF 0xdb,0x0,0x0001e16 6e6b MOVWF 0x6b,0x0001e18 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001e1a 50db MOVF 0xdb,0x0,0x0001e1c 6e6c MOVWF 0x6c,0x0001e1e 0efe MOVLW 0xfe001e20 50db MOVF 0xdb,0x0,0x0001e22 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001e24 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.c001e26 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001e28 cfdb MOVFF 0xfdb,0xfe6001e2a ffe6001e2c 0efc MOVLW 0xfc001e2e 1460 ANDWF 0x60,0x0,0x0001e30 52e5 MOVF 0xe5,0x1,0x0001e32 10e7 IORWF 0xe7,0x0,0x0001e34 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.c001e36 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.c001e38 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c001e3a d000 BRA 0x1e3cF:\MCP\projects\CAN\canBase\Source\CAN.c001e3c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c001e3e cfe7 MOVFF 0xfe7,0xfd9001e40 ffd9001e42 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canBase\Source\CAN.c/********************************************************************* 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-14 20:15:02 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 94 $ 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.c001e44 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001e46 ffe6001e48 cfe1 MOVFF 0xfe1,0xfd9001e4a ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001e4c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001e4e cfdb MOVFF 0xfdb,0x0001e50 f000001e52 0efe MOVLW 0xfe001e54 cfdb MOVFF 0xfdb,0x1001e56 f001001e58 c001 MOVFF 0x1,0x0001e5a f000001e5c 6a01 CLRF 0x1,0x0001e5e 5000 MOVF 0x0,0x0,0x0001e60 6eaa MOVWF 0xaa,0x0001e62 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001e64 6ee7 MOVWF 0xe7,0x0001e66 0efd MOVLW 0xfd001e68 cfdb MOVFF 0xfdb,0x0001e6a f000001e6c 0efe MOVLW 0xfe001e6e cfdb MOVFF 0xfdb,0x1001e70 f001001e72 50e7 MOVF 0xe7,0x0,0x0001e74 1600 ANDWF 0x0,0x1,0x0001e76 6a01 CLRF 0x1,0x0001e78 5000 MOVF 0x0,0x0,0x0001e7a 6ea9 MOVWF 0xa9,0x0001e7c 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001e7e 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001e80 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001e82 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001e84 d000 BRA 0x1e86001e86 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001e88 cfe7 MOVFF 0xfe7,0xfd9001e8a ffd9001e8c 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c001e8e cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001e90 ffe6001e92 cfe1 MOVFF 0xfe1,0xfd9001e94 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001e96 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001e98 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001e9a cfdb MOVFF 0xfdb,0x0001e9c f000001e9e 0efe MOVLW 0xfe001ea0 cfdb MOVFF 0xfdb,0x1001ea2 f001001ea4 c001 MOVFF 0x1,0x0001ea6 f000001ea8 6a01 CLRF 0x1,0x0001eaa 5000 MOVF 0x0,0x0,0x0001eac 6eaa MOVWF 0xaa,0x0001eae 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001eb0 6ee7 MOVWF 0xe7,0x0001eb2 0efd MOVLW 0xfd001eb4 cfdb MOVFF 0xfdb,0x0001eb6 f000001eb8 0efe MOVLW 0xfe001eba cfdb MOVFF 0xfdb,0x1001ebc f001001ebe 50e7 MOVF 0xe7,0x0,0x0001ec0 1600 ANDWF 0x0,0x1,0x0001ec2 6a01 CLRF 0x1,0x0001ec4 5000 MOVF 0x0,0x0,0x0001ec6 6ea9 MOVWF 0xa9,0x0001ec8 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001eca 50db MOVF 0xdb,0x0,0x0001ecc 6ea8 MOVWF 0xa8,0x0001ece 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001ed0 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001ed2 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001ed4 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001ed6 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001ed8 6ea7 MOVWF 0xa7,0x0001eda 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001edc 6ea7 MOVWF 0xa7,0x0001ede 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001ee0 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001ee2 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001ee4 d7fe BRA 0x1ee2001ee6 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001ee8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001eea cfe7 MOVFF 0xfe7,0xfd9001eec ffd9001eee 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.c0015b4 0ef9 MOVLW 0xf9 T3CON = 0b11111001; F:\MCP\projects\CAN\canIR\Source\IRec.c0015b6 6eb1 MOVWF 0xb1,0x0F:\MCP\projects\CAN\canIR\Source\IRec.c// configure timer 3 interrupt (for overflow) F:\MCP\projects\CAN\canIR\Source\IRec.c0015b8 92a1 BCF 0xa1,0x1,0x0 PIR2bits.TMR3IF = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c0015ba 82a0 BSF 0xa0,0x1,0x0 PIE2bits.TMR3IE = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c0015bc 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.c0015be 0e04 MOVLW 0x4 CCP1CON=0x04; F:\MCP\projects\CAN\canIR\Source\IRec.c0015c0 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.c0015c2 949e BCF 0x9e,0x2,0x0 PIR1bits.CCP1IF=0; F:\MCP\projects\CAN\canIR\Source\IRec.c0015c4 849d BSF 0x9d,0x2,0x0 PIE1bits.CCP1IE=1; F:\MCP\projects\CAN\canIR\Source\IRec.c0015c6 849f BSF 0x9f,0x2,0x0 IPR1bits.CCP1IP=1; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0015c8 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.c0015ca 509e MOVF 0x9e,0x0,0x0 if(PIR1bits.CCP1IF && PIE1bits.CCP1IE) F:\MCP\projects\CAN\canIR\Source\IRec.c0015cc 0b04 ANDLW 0x40015ce e101 BNZ 0x15d20015d0 d232 BRA 0x1a360015d2 509d MOVF 0x9d,0x0,0x00015d4 0b04 ANDLW 0x40015d6 e101 BNZ 0x15da0015d8 d22e BRA 0x1a36{ F:\MCP\projects\CAN\canIR\Source\IRec.c// Read timediff F:\MCP\projects\CAN\canIR\Source\IRec.c0015da 50b2 MOVF 0xb2,0x0,0x0 timediff = TMR3L; F:\MCP\projects\CAN\canIR\Source\IRec.c0015dc 0100 MOVLB 0x00015de 6f7e MOVWF 0x7e,0x10015e0 6b7f CLRF 0x7f,0x10015e2 50b3 MOVF 0xb3,0x0,0x0 timediff += (((WORD)TMR3H)<<8); F:\MCP\projects\CAN\canIR\Source\IRec.c0015e4 6e00 MOVWF 0x0,0x00015e6 c000 MOVFF 0x0,0x10015e8 f0010015ea 6a00 CLRF 0x0,0x00015ec 5000 MOVF 0x0,0x0,0x00015ee 277e ADDWF 0x7e,0x1,0x10015f0 5001 MOVF 0x1,0x0,0x00015f2 237f ADDWFC 0x7f,0x1,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c// Clear timer. F:\MCP\projects\CAN\canIR\Source\IRec.c0015f4 6ab3 CLRF 0xb3,0x0 TMR3H = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c0015f6 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.c0015f8 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.c0015fa 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.c0015fc 0580 DECF 0x80,0x0,0x1 if (started==TRUE && (type==IR_RC5 || type==IR_RC5X)) F:\MCP\projects\CAN\canIR\Source\IRec.c0015fe e001 BZ 0x1602001600 d0d0 BRA 0x17a2001602 057d DECF 0x7d,0x0,0x1001604 e004 BZ 0x160e001606 0e02 MOVLW 0x2001608 5d7d SUBWF 0x7d,0x0,0x100160a e001 BZ 0x160e00160c d0ca BRA 0x17a2{ F:\MCP\projects\CAN\canIR\Source\IRec.c// Parse message F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c00160e 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c001610 80d8 BSF 0xd8,0x0,0x0001612 557e SUBFWB 0x7e,0x0,0x1001614 0e03 MOVLW 0x3001616 557f SUBFWB 0x7f,0x0,0x1001618 e235 BC 0x168400161a 0e27 MOVLW 0x2700161c 5d7e SUBWF 0x7e,0x0,0x100161e 0e05 MOVLW 0x5001620 597f SUBWFB 0x7f,0x0,0x1001622 e230 BC 0x1684001624 5182 MOVF 0x82,0x0,0x1001626 e12e BNZ 0x1684{ F:\MCP\projects\CAN\canIR\Source\IRec.c001628 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c00162a e102 BNZ 0x163000162c c081 MOVFF 0x81,0x7900162e f079001630 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001632 5d7c SUBWF 0x7c,0x0,0x1001634 e310 BNC 0x1656001636 517c MOVF 0x7c,0x0,0x1001638 0805 SUBLW 0x500163a e30d BNC 0x165600163c 0e05 MOVLW 0x500163e 80d8 BSF 0xd8,0x0,0x0001640 557c SUBFWB 0x7c,0x0,0x1001642 6e00 MOVWF 0x0,0x0001644 5181 MOVF 0x81,0x0,0x1001646 5200 MOVF 0x0,0x1,0x0001648 e004 BZ 0x165200164a 46e8 RLNCF 0xe8,0x1,0x000164c 0bfe ANDLW 0xfe00164e 0600 DECF 0x0,0x1,0x0001650 e1fc BNZ 0x164a001652 0100 MOVLB 0x0001654 277a ADDWF 0x7a,0x1,0x1001656 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001658 5d7c SUBWF 0x7c,0x0,0x100165a e310 BNC 0x167c00165c 517c MOVF 0x7c,0x0,0x100165e 080b SUBLW 0xb001660 e30d BNC 0x167c001662 0e0b MOVLW 0xb001664 80d8 BSF 0xd8,0x0,0x0001666 557c SUBFWB 0x7c,0x0,0x1001668 6e00 MOVWF 0x0,0x000166a 5181 MOVF 0x81,0x0,0x100166c 5200 MOVF 0x0,0x1,0x000166e e004 BZ 0x1678001670 46e8 RLNCF 0xe8,0x1,0x0001672 0bfe ANDLW 0xfe001674 0600 DECF 0x0,0x1,0x0001676 e1fc BNZ 0x1670001678 0100 MOVLB 0x000167a 277b ADDWF 0x7b,0x1,0x100167c 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c00167e 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001680 6f82 MOVWF 0x82,0x1001682 d1f9 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001684 0e8f MOVLW 0x8f if ((t4-250)<timediff && timediff<(t4+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c001686 80d8 BSF 0xd8,0x0,0x0001688 557e SUBFWB 0x7e,0x0,0x100168a 0e07 MOVLW 0x700168c 557f SUBFWB 0x7f,0x0,0x100168e e23b BC 0x1706001690 0e83 MOVLW 0x83001692 5d7e SUBWF 0x7e,0x0,0x1001694 0e09 MOVLW 0x9001696 597f SUBWFB 0x7f,0x0,0x1001698 e236 BC 0x170600169a 5182 MOVF 0x82,0x0,0x100169c e134 BNZ 0x1706{ F:\MCP\projects\CAN\canIR\Source\IRec.c00169e 5181 MOVF 0x81,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c0016a0 e002 BZ 0x16a60016a2 0e00 MOVLW 0x00016a4 d001 BRA 0x16a80016a6 0e01 MOVLW 0x10016a8 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c0016aa 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c0016ac e102 BNZ 0x16b20016ae c081 MOVFF 0x81,0x790016b0 f0790016b2 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0016b4 5d7c SUBWF 0x7c,0x0,0x10016b6 e310 BNC 0x16d80016b8 517c MOVF 0x7c,0x0,0x10016ba 0805 SUBLW 0x50016bc e30d BNC 0x16d80016be 0e05 MOVLW 0x50016c0 80d8 BSF 0xd8,0x0,0x00016c2 557c SUBFWB 0x7c,0x0,0x10016c4 6e00 MOVWF 0x0,0x00016c6 5181 MOVF 0x81,0x0,0x10016c8 5200 MOVF 0x0,0x1,0x00016ca e004 BZ 0x16d40016cc 46e8 RLNCF 0xe8,0x1,0x00016ce 0bfe ANDLW 0xfe0016d0 0600 DECF 0x0,0x1,0x00016d2 e1fc BNZ 0x16cc0016d4 0100 MOVLB 0x00016d6 277a ADDWF 0x7a,0x1,0x10016d8 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0016da 5d7c SUBWF 0x7c,0x0,0x10016dc e310 BNC 0x16fe0016de 517c MOVF 0x7c,0x0,0x10016e0 080b SUBLW 0xb0016e2 e30d BNC 0x16fe0016e4 0e0b MOVLW 0xb0016e6 80d8 BSF 0xd8,0x0,0x00016e8 557c SUBFWB 0x7c,0x0,0x10016ea 6e00 MOVWF 0x0,0x00016ec 5181 MOVF 0x81,0x0,0x10016ee 5200 MOVF 0x0,0x1,0x00016f0 e004 BZ 0x16fa0016f2 46e8 RLNCF 0xe8,0x1,0x00016f4 0bfe ANDLW 0xfe0016f6 0600 DECF 0x0,0x1,0x00016f8 e1fc BNZ 0x16f20016fa 0100 MOVLB 0x00016fc 277b ADDWF 0x7b,0x1,0x10016fe 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001700 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001702 6f82 MOVWF 0x82,0x1001704 d1b8 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001706 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c001708 80d8 BSF 0xd8,0x0,0x000170a 557e SUBFWB 0x7e,0x0,0x100170c 0e03 MOVLW 0x300170e 557f SUBFWB 0x7f,0x0,0x1001710 e209 BC 0x1724001712 0e27 MOVLW 0x27001714 5d7e SUBWF 0x7e,0x0,0x1001716 0e05 MOVLW 0x5001718 597f SUBWFB 0x7f,0x0,0x100171a e204 BC 0x172400171c 0582 DECF 0x82,0x0,0x100171e e102 BNZ 0x1724{ F:\MCP\projects\CAN\canIR\Source\IRec.c001720 6b82 CLRF 0x82,0x1 second = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c001722 d1a9 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001724 0e8f MOVLW 0x8f if ((t4-250)<timediff && timediff<(t4+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c001726 80d8 BSF 0xd8,0x0,0x0001728 557e SUBFWB 0x7e,0x0,0x100172a 0e07 MOVLW 0x700172c 557f SUBFWB 0x7f,0x0,0x100172e e239 BC 0x17a2001730 0e83 MOVLW 0x83001732 5d7e SUBWF 0x7e,0x0,0x1001734 0e09 MOVLW 0x9001736 597f SUBWFB 0x7f,0x0,0x1001738 e234 BC 0x17a200173a 0582 DECF 0x82,0x0,0x100173c e132 BNZ 0x17a2{ F:\MCP\projects\CAN\canIR\Source\IRec.c00173e 5181 MOVF 0x81,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c001740 e002 BZ 0x1746001742 0e00 MOVLW 0x0001744 d001 BRA 0x1748001746 0e01 MOVLW 0x1001748 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c00174a 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c00174c e102 BNZ 0x175200174e c081 MOVFF 0x81,0x79001750 f079001752 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=5) addr+=(lastbit<<(5-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001754 5d7c SUBWF 0x7c,0x0,0x1001756 e310 BNC 0x1778001758 517c MOVF 0x7c,0x0,0x100175a 0805 SUBLW 0x500175c e30d BNC 0x177800175e 0e05 MOVLW 0x5001760 80d8 BSF 0xd8,0x0,0x0001762 557c SUBFWB 0x7c,0x0,0x1001764 6e00 MOVWF 0x0,0x0001766 5181 MOVF 0x81,0x0,0x1001768 5200 MOVF 0x0,0x1,0x000176a e004 BZ 0x177400176c 46e8 RLNCF 0xe8,0x1,0x000176e 0bfe ANDLW 0xfe001770 0600 DECF 0x0,0x1,0x0001772 e1fc BNZ 0x176c001774 0100 MOVLB 0x0001776 277a ADDWF 0x7a,0x1,0x1001778 0e06 MOVLW 0x6 if (bitIndex>=6 && bitIndex<=11) data+=(lastbit<<(11-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00177a 5d7c SUBWF 0x7c,0x0,0x100177c e310 BNC 0x179e00177e 517c MOVF 0x7c,0x0,0x1001780 080b SUBLW 0xb001782 e30d BNC 0x179e001784 0e0b MOVLW 0xb001786 80d8 BSF 0xd8,0x0,0x0001788 557c SUBFWB 0x7c,0x0,0x100178a 6e00 MOVWF 0x0,0x000178c 5181 MOVF 0x81,0x0,0x100178e 5200 MOVF 0x0,0x1,0x0001790 e004 BZ 0x179a001792 46e8 RLNCF 0xe8,0x1,0x0001794 0bfe ANDLW 0xfe001796 0600 DECF 0x0,0x1,0x0001798 e1fc BNZ 0x179200179a 0100 MOVLB 0x000179c 277b ADDWF 0x7b,0x1,0x100179e 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0017a0 d16a BRA 0x1a76 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.c0017a2 0580 DECF 0x80,0x0,0x1 if (started==TRUE && type==IR_RC6) F:\MCP\projects\CAN\canIR\Source\IRec.c0017a4 e001 BZ 0x17a80017a6 d0ce BRA 0x19440017a8 0e03 MOVLW 0x30017aa 5d7d SUBWF 0x7d,0x0,0x10017ac e001 BZ 0x17b00017ae d0ca BRA 0x1944{ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0017b0 0e1c MOVLW 0x1c if ((t1-250)<timediff && timediff<(t1+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c0017b2 80d8 BSF 0xd8,0x0,0x00017b4 557e SUBFWB 0x7e,0x0,0x10017b6 0e01 MOVLW 0x10017b8 557f SUBFWB 0x7f,0x0,0x10017ba e235 BC 0x18260017bc 0e10 MOVLW 0x100017be 5d7e SUBWF 0x7e,0x0,0x10017c0 0e03 MOVLW 0x30017c2 597f SUBWFB 0x7f,0x0,0x10017c4 e230 BC 0x18260017c6 5182 MOVF 0x82,0x0,0x10017c8 e12e BNZ 0x1826{ F:\MCP\projects\CAN\canIR\Source\IRec.c0017ca 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c0017cc e102 BNZ 0x17d20017ce c081 MOVFF 0x81,0x790017d0 f0790017d2 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0017d4 5d7c SUBWF 0x7c,0x0,0x10017d6 e310 BNC 0x17f80017d8 517c MOVF 0x7c,0x0,0x10017da 0808 SUBLW 0x80017dc e30d BNC 0x17f80017de 0e08 MOVLW 0x80017e0 80d8 BSF 0xd8,0x0,0x00017e2 557c SUBFWB 0x7c,0x0,0x10017e4 6e00 MOVWF 0x0,0x00017e6 5181 MOVF 0x81,0x0,0x10017e8 5200 MOVF 0x0,0x1,0x00017ea e004 BZ 0x17f40017ec 46e8 RLNCF 0xe8,0x1,0x00017ee 0bfe ANDLW 0xfe0017f0 0600 DECF 0x0,0x1,0x00017f2 e1fc BNZ 0x17ec0017f4 0100 MOVLB 0x00017f6 277a ADDWF 0x7a,0x1,0x10017f8 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0017fa 5d7c SUBWF 0x7c,0x0,0x10017fc e310 BNC 0x181e0017fe 517c MOVF 0x7c,0x0,0x1001800 0810 SUBLW 0x10001802 e30d BNC 0x181e001804 0e10 MOVLW 0x10001806 80d8 BSF 0xd8,0x0,0x0001808 557c SUBFWB 0x7c,0x0,0x100180a 6e00 MOVWF 0x0,0x000180c 5181 MOVF 0x81,0x0,0x100180e 5200 MOVF 0x0,0x1,0x0001810 e004 BZ 0x181a001812 46e8 RLNCF 0xe8,0x1,0x0001814 0bfe ANDLW 0xfe001816 0600 DECF 0x0,0x1,0x0001818 e1fc BNZ 0x181200181a 0100 MOVLB 0x000181c 277b ADDWF 0x7b,0x1,0x100181e 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001820 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001822 6f82 MOVWF 0x82,0x1001824 d128 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001826 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==FALSE) F:\MCP\projects\CAN\canIR\Source\IRec.c001828 80d8 BSF 0xd8,0x0,0x000182a 557e SUBFWB 0x7e,0x0,0x100182c 0e03 MOVLW 0x300182e 557f SUBFWB 0x7f,0x0,0x1001830 e23b BC 0x18a8001832 0e27 MOVLW 0x27001834 5d7e SUBWF 0x7e,0x0,0x1001836 0e05 MOVLW 0x5001838 597f SUBWFB 0x7f,0x0,0x100183a e236 BC 0x18a800183c 5182 MOVF 0x82,0x0,0x100183e e134 BNZ 0x18a8{ F:\MCP\projects\CAN\canIR\Source\IRec.c001840 5181 MOVF 0x81,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c001842 e002 BZ 0x1848001844 0e00 MOVLW 0x0001846 d001 BRA 0x184a001848 0e01 MOVLW 0x100184a 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c00184c 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c00184e e102 BNZ 0x1854001850 c081 MOVFF 0x81,0x79001852 f079001854 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c001856 5d7c SUBWF 0x7c,0x0,0x1001858 e310 BNC 0x187a00185a 517c MOVF 0x7c,0x0,0x100185c 0808 SUBLW 0x800185e e30d BNC 0x187a001860 0e08 MOVLW 0x8001862 80d8 BSF 0xd8,0x0,0x0001864 557c SUBFWB 0x7c,0x0,0x1001866 6e00 MOVWF 0x0,0x0001868 5181 MOVF 0x81,0x0,0x100186a 5200 MOVF 0x0,0x1,0x000186c e004 BZ 0x187600186e 46e8 RLNCF 0xe8,0x1,0x0001870 0bfe ANDLW 0xfe001872 0600 DECF 0x0,0x1,0x0001874 e1fc BNZ 0x186e001876 0100 MOVLB 0x0001878 277a ADDWF 0x7a,0x1,0x100187a 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00187c 5d7c SUBWF 0x7c,0x0,0x100187e e310 BNC 0x18a0001880 517c MOVF 0x7c,0x0,0x1001882 0810 SUBLW 0x10001884 e30d BNC 0x18a0001886 0e10 MOVLW 0x10001888 80d8 BSF 0xd8,0x0,0x000188a 557c SUBFWB 0x7c,0x0,0x100188c 6e00 MOVWF 0x0,0x000188e 5181 MOVF 0x81,0x0,0x1001890 5200 MOVF 0x0,0x1,0x0001892 e004 BZ 0x189c001894 46e8 RLNCF 0xe8,0x1,0x0001896 0bfe ANDLW 0xfe001898 0600 DECF 0x0,0x1,0x000189a e1fc BNZ 0x189400189c 0100 MOVLB 0x000189e 277b ADDWF 0x7b,0x1,0x10018a0 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0018a2 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c0018a4 6f82 MOVWF 0x82,0x10018a6 d0e7 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0018a8 0e1c MOVLW 0x1c if ((t1-250)<timediff && timediff<(t1+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c0018aa 80d8 BSF 0xd8,0x0,0x00018ac 557e SUBFWB 0x7e,0x0,0x10018ae 0e01 MOVLW 0x10018b0 557f SUBFWB 0x7f,0x0,0x10018b2 e209 BC 0x18c60018b4 0e10 MOVLW 0x100018b6 5d7e SUBWF 0x7e,0x0,0x10018b8 0e03 MOVLW 0x30018ba 597f SUBWFB 0x7f,0x0,0x10018bc e204 BC 0x18c60018be 0582 DECF 0x82,0x0,0x10018c0 e102 BNZ 0x18c6{ F:\MCP\projects\CAN\canIR\Source\IRec.c0018c2 6b82 CLRF 0x82,0x1 second = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c0018c4 d0d8 BRA 0x1a76 return; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c0018c6 0e33 MOVLW 0x33 if ((t2-250)<timediff && timediff<(t2+250) && second==TRUE) F:\MCP\projects\CAN\canIR\Source\IRec.c0018c8 80d8 BSF 0xd8,0x0,0x00018ca 557e SUBFWB 0x7e,0x0,0x10018cc 0e03 MOVLW 0x30018ce 557f SUBFWB 0x7f,0x0,0x10018d0 e239 BC 0x19440018d2 0e27 MOVLW 0x270018d4 5d7e SUBWF 0x7e,0x0,0x10018d6 0e05 MOVLW 0x50018d8 597f SUBWFB 0x7f,0x0,0x10018da e234 BC 0x19440018dc 0582 DECF 0x82,0x0,0x10018de e132 BNZ 0x1944{ F:\MCP\projects\CAN\canIR\Source\IRec.c0018e0 5181 MOVF 0x81,0x0,0x1 lastbit=(lastbit?0:1); F:\MCP\projects\CAN\canIR\Source\IRec.c0018e2 e002 BZ 0x18e80018e4 0e00 MOVLW 0x00018e6 d001 BRA 0x18ea0018e8 0e01 MOVLW 0x10018ea 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canIR\Source\IRec.c0018ec 517c MOVF 0x7c,0x0,0x1 if (bitIndex==0) toggle=lastbit; F:\MCP\projects\CAN\canIR\Source\IRec.c0018ee e102 BNZ 0x18f40018f0 c081 MOVFF 0x81,0x790018f2 f0790018f4 0e01 MOVLW 0x1 if (bitIndex>=1 && bitIndex<=8) addr+=(lastbit<<(8-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c0018f6 5d7c SUBWF 0x7c,0x0,0x10018f8 e310 BNC 0x191a0018fa 517c MOVF 0x7c,0x0,0x10018fc 0808 SUBLW 0x80018fe e30d BNC 0x191a001900 0e08 MOVLW 0x8001902 80d8 BSF 0xd8,0x0,0x0001904 557c SUBFWB 0x7c,0x0,0x1001906 6e00 MOVWF 0x0,0x0001908 5181 MOVF 0x81,0x0,0x100190a 5200 MOVF 0x0,0x1,0x000190c e004 BZ 0x191600190e 46e8 RLNCF 0xe8,0x1,0x0001910 0bfe ANDLW 0xfe001912 0600 DECF 0x0,0x1,0x0001914 e1fc BNZ 0x190e001916 0100 MOVLB 0x0001918 277a ADDWF 0x7a,0x1,0x100191a 0e09 MOVLW 0x9 if (bitIndex>=9 && bitIndex<=16) data+=(lastbit<<(16-bitIndex)); F:\MCP\projects\CAN\canIR\Source\IRec.c00191c 5d7c SUBWF 0x7c,0x0,0x100191e e310 BNC 0x1940001920 517c MOVF 0x7c,0x0,0x1001922 0810 SUBLW 0x10001924 e30d BNC 0x1940001926 0e10 MOVLW 0x10001928 80d8 BSF 0xd8,0x0,0x000192a 557c SUBFWB 0x7c,0x0,0x100192c 6e00 MOVWF 0x0,0x000192e 5181 MOVF 0x81,0x0,0x1001930 5200 MOVF 0x0,0x1,0x0001932 e004 BZ 0x193c001934 46e8 RLNCF 0xe8,0x1,0x0001936 0bfe ANDLW 0xfe001938 0600 DECF 0x0,0x1,0x000193a e1fc BNZ 0x193400193c 0100 MOVLB 0x000193e 277b ADDWF 0x7b,0x1,0x1001940 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001942 d099 BRA 0x1a76 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.c001944 2b7c INCF 0x7c,0x1,0x1 bitIndex++; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001946 5180 MOVF 0x80,0x0,0x1 if (started==FALSE && type==IR_NONE && bitIndex==2 && (t2-250)<timediff && timediff<(t2+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001948 e113 BNZ 0x197000194a 517d MOVF 0x7d,0x0,0x100194c e111 BNZ 0x197000194e 0e02 MOVLW 0x2001950 5d7c SUBWF 0x7c,0x0,0x1001952 e10e BNZ 0x1970001954 0e33 MOVLW 0x33001956 80d8 BSF 0xd8,0x0,0x0001958 557e SUBFWB 0x7e,0x0,0x100195a 0e03 MOVLW 0x300195c 557f SUBFWB 0x7f,0x0,0x100195e e208 BC 0x1970001960 0e27 MOVLW 0x27001962 5d7e SUBWF 0x7e,0x0,0x1001964 0e05 MOVLW 0x5001966 597f SUBWFB 0x7f,0x0,0x1001968 e203 BC 0x1970{ F:\MCP\projects\CAN\canIR\Source\IRec.c00196a 0e01 MOVLW 0x1 type=IR_RC5; F:\MCP\projects\CAN\canIR\Source\IRec.c00196c 6f7d MOVWF 0x7d,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c00196e d063 BRA 0x1a36 else if (started==FALSE && type==IR_NONE && bitIndex==2 && (t4-250)<timediff && timediff<(t4+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c001970 5180 MOVF 0x80,0x0,0x1001972 e117 BNZ 0x19a2001974 517d MOVF 0x7d,0x0,0x1001976 e115 BNZ 0x19a2001978 0e02 MOVLW 0x200197a 5d7c SUBWF 0x7c,0x0,0x100197c e112 BNZ 0x19a200197e 0e8f MOVLW 0x8f001980 80d8 BSF 0xd8,0x0,0x0001982 557e SUBFWB 0x7e,0x0,0x1001984 0e07 MOVLW 0x7001986 557f SUBFWB 0x7f,0x0,0x1001988 e20c BC 0x19a200198a 0e83 MOVLW 0x8300198c 5d7e SUBWF 0x7e,0x0,0x100198e 0e09 MOVLW 0x9001990 597f SUBWFB 0x7f,0x0,0x1001992 e207 BC 0x19a2{ F:\MCP\projects\CAN\canIR\Source\IRec.c001994 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001996 6f80 MOVWF 0x80,0x1001998 6b7c CLRF 0x7c,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c00199a 6f81 MOVWF 0x81,0x1 lastbit = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c00199c 0e02 MOVLW 0x2 type=IR_RC5X; F:\MCP\projects\CAN\canIR\Source\IRec.c00199e 6f7d MOVWF 0x7d,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c0019a0 d04a BRA 0x1a36 else if (started==FALSE && type==IR_NONE && bitIndex==2 && (t6-250)<timediff && timediff<(t6+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c0019a2 5180 MOVF 0x80,0x0,0x10019a4 e113 BNZ 0x19cc0019a6 517d MOVF 0x7d,0x0,0x10019a8 e111 BNZ 0x19cc0019aa 0e02 MOVLW 0x20019ac 5d7c SUBWF 0x7c,0x0,0x10019ae e10e BNZ 0x19cc0019b0 0e8a MOVLW 0x8a0019b2 80d8 BSF 0xd8,0x0,0x00019b4 557e SUBFWB 0x7e,0x0,0x10019b6 0e0b MOVLW 0xb0019b8 557f SUBFWB 0x7f,0x0,0x10019ba e208 BC 0x19cc0019bc 0e7e MOVLW 0x7e0019be 5d7e SUBWF 0x7e,0x0,0x10019c0 0e0d MOVLW 0xd0019c2 597f SUBWFB 0x7f,0x0,0x10019c4 e203 BC 0x19cc{ F:\MCP\projects\CAN\canIR\Source\IRec.c0019c6 0e03 MOVLW 0x3 type=IR_RC6; F:\MCP\projects\CAN\canIR\Source\IRec.c0019c8 6f7d MOVWF 0x7d,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c0019ca d035 BRA 0x1a36 else if (started==FALSE && type==IR_RC6 && bitIndex==9) F:\MCP\projects\CAN\canIR\Source\IRec.c0019cc 5180 MOVF 0x80,0x0,0x10019ce e10f BNZ 0x19ee0019d0 0e03 MOVLW 0x30019d2 5d7d SUBWF 0x7d,0x0,0x10019d4 e10c BNZ 0x19ee0019d6 0e09 MOVLW 0x90019d8 5d7c SUBWF 0x7c,0x0,0x10019da e109 BNZ 0x19ee{ F:\MCP\projects\CAN\canIR\Source\IRec.c0019dc 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c0019de 6f80 MOVWF 0x80,0x10019e0 6b7c CLRF 0x7c,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c0019e2 6b81 CLRF 0x81,0x1 lastbit = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c0019e4 0e03 MOVLW 0x3 type=IR_RC6; F:\MCP\projects\CAN\canIR\Source\IRec.c0019e6 6f7d MOVWF 0x7d,0x10019e8 0e01 MOVLW 0x1 second = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c0019ea 6f82 MOVWF 0x82,0x1} F:\MCP\projects\CAN\canIR\Source\IRec.c0019ec d024 BRA 0x1a36 else if (started==FALSE && type==IR_RC5 && bitIndex==3 && (t2-250)<timediff && timediff<(t2+250)) F:\MCP\projects\CAN\canIR\Source\IRec.c0019ee 5180 MOVF 0x80,0x0,0x10019f0 e116 BNZ 0x1a1e0019f2 057d DECF 0x7d,0x0,0x10019f4 e114 BNZ 0x1a1e0019f6 0e03 MOVLW 0x30019f8 5d7c SUBWF 0x7c,0x0,0x10019fa e111 BNZ 0x1a1e0019fc 0e33 MOVLW 0x330019fe 80d8 BSF 0xd8,0x0,0x0001a00 557e SUBFWB 0x7e,0x0,0x1001a02 0e03 MOVLW 0x3001a04 557f SUBFWB 0x7f,0x0,0x1001a06 e20b BC 0x1a1e001a08 0e27 MOVLW 0x27001a0a 5d7e SUBWF 0x7e,0x0,0x1001a0c 0e05 MOVLW 0x5001a0e 597f SUBWFB 0x7f,0x0,0x1001a10 e206 BC 0x1a1e{ F:\MCP\projects\CAN\canIR\Source\IRec.c001a12 0e01 MOVLW 0x1 started = TRUE; F:\MCP\projects\CAN\canIR\Source\IRec.c001a14 6f80 MOVWF 0x80,0x1001a16 6b7c CLRF 0x7c,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001a18 6f81 MOVWF 0x81,0x1 lastbit = 1; F:\MCP\projects\CAN\canIR\Source\IRec.c001a1a 6f7d MOVWF 0x7d,0x1 type=IR_RC5; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.c001a1c d00c BRA 0x1a36 else if(bitIndex>2 && type!=IR_RC6) F:\MCP\projects\CAN\canIR\Source\IRec.c001a1e 517c MOVF 0x7c,0x0,0x1001a20 0802 SUBLW 0x2001a22 e205 BC 0x1a2e001a24 0e03 MOVLW 0x3001a26 5d7d SUBWF 0x7d,0x0,0x1001a28 e002 BZ 0x1a2e{ F:\MCP\projects\CAN\canIR\Source\IRec.c001a2a 6b7d CLRF 0x7d,0x1 type=IR_NONE; F:\MCP\projects\CAN\canIR\Source\IRec.c} F:\MCP\projects\CAN\canIR\Source\IRec.c001a2c d004 BRA 0x1a36 else if(bitIndex>9) F:\MCP\projects\CAN\canIR\Source\IRec.c001a2e 517c MOVF 0x7c,0x0,0x1001a30 0809 SUBLW 0x9001a32 e201 BC 0x1a36{ F:\MCP\projects\CAN\canIR\Source\IRec.c001a34 6b7d CLRF 0x7d,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.c001a36 50a1 MOVF 0xa1,0x0,0x0 if(PIR2bits.TMR3IF && PIE2bits.TMR3IE) F:\MCP\projects\CAN\canIR\Source\IRec.c001a38 0b02 ANDLW 0x2001a3a e01d BZ 0x1a76001a3c 50a0 MOVF 0xa0,0x0,0x0001a3e 0b02 ANDLW 0x2001a40 e01a BZ 0x1a76{ F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a42 92a1 BCF 0xa1,0x1,0x0 PIR2bits.TMR3IF=0; F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a44 0100 MOVLB 0x0 if (type!=IR_NONE) F:\MCP\projects\CAN\canIR\Source\IRec.c001a46 517d MOVF 0x7d,0x0,0x1001a48 e00e BZ 0x1a66{ F:\MCP\projects\CAN\canIR\Source\IRec.c001a4a c07b MOVFF 0x7b,0xfe6 irecParse(type,toggle,addr,data); F:\MCP\projects\CAN\canIR\Source\IRec.c001a4c ffe6001a4e c07a MOVFF 0x7a,0xfe6001a50 ffe6001a52 c079 MOVFF 0x79,0xfe6001a54 ffe6001a56 c07d MOVFF 0x7d,0xfe6001a58 ffe6001a5a ec70 CALL 0x14e0,0x0001a5c f00a001a5e 52e5 MOVF 0xe5,0x1,0x0001a60 52e5 MOVF 0xe5,0x1,0x0001a62 52e5 MOVF 0xe5,0x1,0x0001a64 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canIR\Source\IRec.cF:\MCP\projects\CAN\canIR\Source\IRec.c001a66 0100 MOVLB 0x0 started = FALSE; F:\MCP\projects\CAN\canIR\Source\IRec.c001a68 6b80 CLRF 0x80,0x1001a6a 6b7c CLRF 0x7c,0x1 bitIndex = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001a6c 6b7a CLRF 0x7a,0x1 addr = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001a6e 6b79 CLRF 0x79,0x1 toggle = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001a70 6b7b CLRF 0x7b,0x1 data = 0; F:\MCP\projects\CAN\canIR\Source\IRec.c001a72 6b7d CLRF 0x7d,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.c001a74 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.c001a76 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