Rev 117 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sat Nov 18 14:20:08 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Main application F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Main.c $ F:\MCP\projects\CAN\canNode\Source\Main.c* Last changed: $LastChangedDate: 2006-11-15 18:49:55 +0100 (on, 15 nov 2006) $ F:\MCP\projects\CAN\canNode\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canNode\Source\Main.c* Revision: $Revision: 109 $ F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canNode\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c001044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c001046 ffe6001048 cfe1 MOVFF 0xfe1,0xfd900104a ffd900104c 0e0f MOVLW 0xf00104e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Inits F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c001050 d971 RCALL 0x1334 mainInit(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c001052 ec66 CALL 0x14cc,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c001054 f00a#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c001056 ecf1 CALL 0x19e2,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c001058 f00cF:\MCP\projects\CAN\canNode\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canNode\Source\Main.c00105a 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canNode\Source\Main.c00105c 6ee6 MOVWF 0xe6,0x000105e 6ae6 CLRF 0xe6,0x0001060 ec4c CALL 0x1898,0x0001062 f00c001064 52e5 MOVF 0xe5,0x1,0x0001066 52e5 MOVF 0xe5,0x1,0x0001068 082a SUBLW 0x2a00106a e12b BNZ 0x10c2{ F:\MCP\projects\CAN\canNode\Source\Main.c00106c 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canNode\Source\Main.c00106e 6ee6 MOVWF 0xe6,0x0001070 6ae6 CLRF 0xe6,0x0001072 ec4c CALL 0x1898,0x0001074 f00c001076 52e5 MOVF 0xe5,0x1,0x0001078 52e5 MOVF 0xe5,0x1,0x000107a 6e00 MOVWF 0x0,0x000107c c000 MOVFF 0x0,0x100107e f001001080 6a00 CLRF 0x0,0x0001082 c000 MOVFF 0x0,0xfe6001084 ffe6001086 c001 MOVFF 0x1,0xfe6001088 ffe600108a 0e02 MOVLW 0x200108c 6ee6 MOVWF 0xe6,0x000108e 6ae6 CLRF 0xe6,0x0001090 ec4c CALL 0x1898,0x0001092 f00c001094 52e5 MOVF 0xe5,0x1,0x0001096 52e5 MOVF 0xe5,0x1,0x0001098 52e5 MOVF 0xe5,0x1,0x000109a cfe7 MOVFF 0xfe7,0x100109c f00100109e 52e5 MOVF 0xe5,0x1,0x00010a0 cfe7 MOVFF 0xfe7,0x00010a2 f0000010a4 0100 MOVLB 0x00010a6 2400 ADDWF 0x0,0x0,0x00010a8 6f60 MOVWF 0x60,0x10010aa 0e00 MOVLW 0x00010ac 2001 ADDWFC 0x1,0x0,0x00010ae 6f61 MOVWF 0x61,0x10010b0 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canNode\Source\Main.c0010b2 6ee6 MOVWF 0xe6,0x00010b4 6ae6 CLRF 0xe6,0x00010b6 ec4c CALL 0x1898,0x00010b8 f00c0010ba 52e5 MOVF 0xe5,0x1,0x00010bc 52e5 MOVF 0xe5,0x1,0x00010be 0100 MOVLB 0x00010c0 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Send user program startup heatbeat F:\MCP\projects\CAN\canNode\Source\Main.c0010c2 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canNode\Source\Main.c0010c4 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canNode\Source\Main.c0010c6 6ef3 MOVWF 0xf3,0x00010c8 0e01 MOVLW 0x10010ca cff3 MOVFF 0xff3,0xfdb0010cc ffdb0010ce 0e02 MOVLW 0x20010d0 6adb CLRF 0xdb,0x00010d2 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canNode\Source\Main.c0010d4 c062 MOVFF 0x62,0xfdb0010d6 ffdb0010d8 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canNode\Source\Main.c0010da c060 MOVFF 0x60,0xfdb0010dc ffdb0010de 0e05 MOVLW 0x50010e0 c061 MOVFF 0x61,0xfdb0010e2 ffdb0010e4 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canNode\Source\Main.c0010e6 6ef3 MOVWF 0xf3,0x00010e8 0e06 MOVLW 0x60010ea cff3 MOVFF 0xff3,0xfdb0010ec ffdb0010ee 0e01 MOVLW 0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canNode\Source\Main.c0010f0 6ef3 MOVWF 0xf3,0x00010f2 0e07 MOVLW 0x70010f4 cff3 MOVFF 0xff3,0xfdb0010f6 ffdb0010f8 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canNode\Source\Main.c0010fa 6ee6 MOVWF 0xe6,0x00010fc cfd9 MOVFF 0xfd9,0xfe90010fe ffe9001100 cfda MOVFF 0xfda,0xfea001102 ffea001104 cfee MOVFF 0xfee,0xfe6001106 ffe6001108 cfee MOVFF 0xfee,0xfe600110a ffe600110c cfee MOVFF 0xfee,0xfe600110e ffe6001110 cfee MOVFF 0xfee,0xfe6001112 ffe6001114 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 ec7c CALL 0x16f8,0x0001142 f00b001144 6e00 MOVWF 0x0,0x0001146 0e10 MOVLW 0x10001148 5ee1 SUBWF 0xe1,0x1,0x000114a 5000 MOVF 0x0,0x0,0x000114c 0900 IORLW 0x000114e e101 BNZ 0x1152001150 d7d3 BRA 0x10f8F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c001270 d770 BRA 0x1152 while(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c001152 ecfb CALL 0x19f6,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canNode\Source\Main.c001154 f00c001156 0100 MOVLB 0x0001158 516b MOVF 0x6b,0x0,0x100115a 5c12 SUBWF 0x12,0x0,0x000115c 6e00 MOVWF 0x0,0x000115e 516c MOVF 0x6c,0x0,0x1001160 5813 SUBWFB 0x13,0x0,0x0001162 6e01 MOVWF 0x1,0x0001164 516d MOVF 0x6d,0x0,0x1001166 5814 SUBWFB 0x14,0x0,0x0001168 6e02 MOVWF 0x2,0x000116a 516e MOVF 0x6e,0x0,0x100116c 5815 SUBWFB 0x15,0x0,0x000116e 6e03 MOVWF 0x3,0x0001170 80d8 BSF 0xd8,0x0,0x0001172 0ef4 MOVLW 0xf4001174 5400 SUBFWB 0x0,0x0,0x0001176 0e01 MOVLW 0x1001178 5401 SUBFWB 0x1,0x0,0x000117a 0e00 MOVLW 0x000117c 5402 SUBFWB 0x2,0x0,0x000117e 0e00 MOVLW 0x0001180 5403 SUBFWB 0x3,0x0,0x0001182 e252 BC 0x1228{ F:\MCP\projects\CAN\canNode\Source\Main.c// Send alive heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c001184 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canNode\Source\Main.c001186 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canNode\Source\Main.c001188 6ef3 MOVWF 0xf3,0x000118a 0e01 MOVLW 0x100118c cff3 MOVFF 0xff3,0xfdb00118e ffdb001190 0e02 MOVLW 0x2001192 6adb CLRF 0xdb,0x0001194 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canNode\Source\Main.c001196 c062 MOVFF 0x62,0xfdb001198 ffdb00119a 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canNode\Source\Main.c00119c c060 MOVFF 0x60,0xfdb00119e ffdb0011a0 0e05 MOVLW 0x50011a2 c061 MOVFF 0x61,0xfdb0011a4 ffdb0011a6 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canNode\Source\Main.c0011a8 6ef3 MOVWF 0xf3,0x00011aa 0e06 MOVLW 0x60011ac cff3 MOVFF 0xff3,0xfdb0011ae ffdb0011b0 0e02 MOVLW 0x2 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canNode\Source\Main.c0011b2 6ef3 MOVWF 0xf3,0x00011b4 0e07 MOVLW 0x70011b6 cff3 MOVFF 0xff3,0xfdb0011b8 ffdb0011ba 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canNode\Source\Main.c0011bc 6ee6 MOVWF 0xe6,0x00011be cfd9 MOVFF 0xfd9,0xfe90011c0 ffe90011c2 cfda MOVFF 0xfda,0xfea0011c4 ffea0011c6 cfee MOVFF 0xfee,0xfe60011c8 ffe60011ca cfee MOVFF 0xfee,0xfe60011cc ffe60011ce cfee MOVFF 0xfee,0xfe60011d0 ffe60011d2 cfee MOVFF 0xfee,0xfe60011d4 ffe60011d6 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 ec7c CALL 0x16f8,0x0001204 f00b001206 6e00 MOVWF 0x0,0x0001208 0e10 MOVLW 0x1000120a 5ee1 SUBWF 0xe1,0x1,0x000120c 5000 MOVF 0x0,0x0,0x000120e 0900 IORLW 0x0001210 e101 BNZ 0x1214001212 d7d3 BRA 0x11baF:\MCP\projects\CAN\canNode\Source\Main.c001214 ecfb CALL 0x19f6,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c001216 f00c001218 c012 MOVFF 0x12,0x6b00121a f06b00121c c013 MOVFF 0x13,0x6c00121e f06c001220 c014 MOVFF 0x14,0x6d001222 f06d001224 c015 MOVFF 0x15,0x6e001226 f06e} F:\MCP\projects\CAN\canNode\Source\Main.c001228 ecfb CALL 0x19f6,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canNode\Source\Main.c00122a f00c00122c 0100 MOVLB 0x000122e 5167 MOVF 0x67,0x0,0x1001230 5c12 SUBWF 0x12,0x0,0x0001232 6e00 MOVWF 0x0,0x0001234 5168 MOVF 0x68,0x0,0x1001236 5813 SUBWFB 0x13,0x0,0x0001238 6e01 MOVWF 0x1,0x000123a 5169 MOVF 0x69,0x0,0x100123c 5814 SUBWFB 0x14,0x0,0x000123e 6e02 MOVWF 0x2,0x0001240 516a MOVF 0x6a,0x0,0x1001242 5815 SUBWFB 0x15,0x0,0x0001244 6e03 MOVWF 0x3,0x0001246 80d8 BSF 0xd8,0x0,0x0001248 0e64 MOVLW 0x6400124a 5400 SUBFWB 0x0,0x0,0x000124c 0e00 MOVLW 0x000124e 5401 SUBFWB 0x1,0x0,0x0001250 0e00 MOVLW 0x0001252 5402 SUBFWB 0x2,0x0,0x0001254 0e00 MOVLW 0x0001256 5403 SUBFWB 0x3,0x0,0x0001258 e20b BC 0x1270{ F:\MCP\projects\CAN\canNode\Source\Main.c00125a 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.c00125c ecfb CALL 0x19f6,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c00125e f00c001260 c012 MOVFF 0x12,0x67001262 f067001264 c013 MOVFF 0x13,0x68001266 f068001268 c014 MOVFF 0x14,0x6900126a f06900126c c015 MOVFF 0x15,0x6a00126e f06a} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c001272 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canNode\Source\Main.c001274 5ce1 SUBWF 0xe1,0x0,0x0001276 e202 BC 0x127c001278 6ae1 CLRF 0xe1,0x000127a 52e5 MOVF 0xe5,0x1,0x000127c 6ee1 MOVWF 0xe1,0x000127e 52e5 MOVF 0xe5,0x1,0x0001280 cfe7 MOVFF 0xfe7,0xfd9001282 ffd9001284 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canNode\Source\Main.c001286 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canNode\Source\Main.c001288 ffe400128a cfe2 MOVFF 0xfe2,0xfda00128c ffda00128e cfe9 MOVFF 0xfe9,0xfe4001290 ffe4001292 cfea MOVFF 0xfea,0xfe4001294 ffe4001296 cff6 MOVFF 0xff6,0xfe4001298 ffe400129a cff7 MOVFF 0xff7,0xfe400129c ffe400129e cff5 MOVFF 0xff5,0xfe40012a0 ffe40012a2 cff3 MOVFF 0xff3,0xfe40012a4 ffe40012a6 cff4 MOVFF 0xff4,0xfe40012a8 ffe40012aa cffa MOVFF 0xffa,0xfe40012ac ffe40012ae ee00 LFSR 0x0,0xe0012b0 f00e0012b2 0e0b MOVLW 0xb0012b4 04e8 DECF 0xe8,0x0,0x00012b6 e303 BNC 0x12be0012b8 cfee MOVFF 0xfee,0xfe40012ba ffe40012bc d7fb BRA 0x12b40012be ee00 LFSR 0x0,0x00012c0 f0000012c2 0e0e MOVLW 0xe0012c4 04e8 DECF 0xe8,0x0,0x00012c6 e303 BNC 0x12ce0012c8 cfee MOVFF 0xfee,0xfe40012ca ffe40012cc d7fb BRA 0x12c40012ce 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.c0012d0 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c0012d2 ec91 CALL 0x1522,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c0012d4 f00a#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0012d6 ec05 CALL 0x1a0a,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c0012d8 f00dF:\MCP\projects\CAN\canNode\Source\Main.c0012da 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0012dc ee00 LFSR 0x0,0xd0012de f00d0012e0 0e0e MOVLW 0xe0012e2 04e8 DECF 0xe8,0x0,0x00012e4 e303 BNC 0x12ec0012e6 cfe5 MOVFF 0xfe5,0xfed0012e8 ffed0012ea d7fb BRA 0x12e20012ec ee00 LFSR 0x0,0x180012ee f0180012f0 0e0b MOVLW 0xb0012f2 04e8 DECF 0xe8,0x0,0x00012f4 e303 BNC 0x12fc0012f6 cfe5 MOVFF 0xfe5,0xfed0012f8 ffed0012fa d7fb BRA 0x12f20012fc cfe5 MOVFF 0xfe5,0xffa0012fe fffa001300 cfe5 MOVFF 0xfe5,0xff4001302 fff4001304 cfe5 MOVFF 0xfe5,0xff3001306 fff3001308 cfe5 MOVFF 0xfe5,0xff500130a fff500130c cfe5 MOVFF 0xfe5,0xff700130e fff7001310 cfe5 MOVFF 0xfe5,0xff6001312 fff6001314 cfe5 MOVFF 0xfe5,0xfea001316 ffea001318 cfe5 MOVFF 0xfe5,0xfe900131a ffe900131c cfe5 MOVFF 0xfe5,0xfda00131e ffda001320 0011 RETFIE 0x1F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canNode\Source\Main.c001322 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canNode\Source\Main.c001324 ffe4001326 cfe2 MOVFF 0xfe2,0xfda001328 ffda00132a 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00132c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c00132e cfe5 MOVFF 0xfe5,0xfda001330 ffda001332 0011 RETFIE 0x1F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: none F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c001334 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canNode\Source\Main.c001336 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c001338 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canNode\Source\Main.c00133a 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00133c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c00133e cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c001340 ffe6001342 cfe1 MOVFF 0xfe1,0xfd9001344 ffd9001346 0e0f MOVLW 0xf001348 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00134a 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00134c 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canNode\Source\Main.c00134e 50db MOVF 0xdb,0x0,0x0001350 e001 BZ 0x1354001352 d0b2 BRA 0x14b8{ F:\MCP\projects\CAN\canNode\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canNode\Source\Main.c001354 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\canNode\Source\Main.c001356 50db MOVF 0xdb,0x0,0x0001358 0100 MOVLB 0x000135a 5d62 SUBWF 0x62,0x0,0x100135c e001 BZ 0x136000135e d0ab BRA 0x14b6001360 0efc MOVLW 0xfc001362 cfdb MOVFF 0xfdb,0x2001364 f002001366 c002 MOVFF 0x2,0x3001368 f00300136a 6a02 CLRF 0x2,0x000136c 0efb MOVLW 0xfb00136e 50db MOVF 0xdb,0x0,0x0001370 0100 MOVLB 0x0001372 2402 ADDWF 0x2,0x0,0x0001374 6e00 MOVWF 0x0,0x0001376 0e00 MOVLW 0x0001378 2003 ADDWFC 0x3,0x0,0x000137a 6e01 MOVWF 0x1,0x000137c 0100 MOVLB 0x000137e 5160 MOVF 0x60,0x0,0x1001380 1800 XORWF 0x0,0x0,0x0001382 e102 BNZ 0x1388001384 5161 MOVF 0x61,0x0,0x1001386 1801 XORWF 0x1,0x0,0x0001388 e001 BZ 0x138c00138a d095 BRA 0x14b6{ F:\MCP\projects\CAN\canNode\Source\Main.c00138c 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canNode\Source\Main.c00138e cfdb MOVFF 0xfdb,0x14001390 f014001392 0ef2 MOVLW 0xf2001394 cfdb MOVFF 0xfdb,0x15001396 f015001398 0e06 MOVLW 0x600139a 1814 XORWF 0x14,0x0,0x000139c e101 BNZ 0x13a000139e 5015 MOVF 0x15,0x0,0x00013a0 e008 BZ 0x13b20013a2 0e01 MOVLW 0x10013a4 1814 XORWF 0x14,0x0,0x00013a6 e101 BNZ 0x13aa0013a8 5015 MOVF 0x15,0x0,0x00013aa e001 BZ 0x13ae0013ac d084 BRA 0x14b6{ F:\MCP\projects\CAN\canNode\Source\Main.c0013ae 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canNode\Source\Main.c0013b0 d082 BRA 0x14b6case FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canNode\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canNode\Source\Main.c0013b2 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\canNode\Source\Main.c0013b4 cfdb MOVFF 0xfdb,0x00013b6 f0000013b8 c000 MOVFF 0x0,0x10013ba f0010013bc 6a00 CLRF 0x0,0x00013be 0ef7 MOVLW 0xf70013c0 50db MOVF 0xdb,0x0,0x00013c2 0100 MOVLB 0x00013c4 2400 ADDWF 0x0,0x0,0x00013c6 6f60 MOVWF 0x60,0x10013c8 0e00 MOVLW 0x00013ca 2001 ADDWFC 0x1,0x0,0x00013cc 6f61 MOVWF 0x61,0x10013ce 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canNode\Source\Main.c0013d0 cfdb MOVFF 0xfdb,0x620013d2 f0620013d4 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canNode\Source\Main.c0013d6 cfdb MOVFF 0xfdb,0xfe60013d8 ffe60013da 0e01 MOVLW 0x10013dc 6ee6 MOVWF 0xe6,0x00013de 6ae6 CLRF 0xe6,0x00013e0 ec71 CALL 0x18e2,0x00013e2 f00c0013e4 52e5 MOVF 0xe5,0x1,0x00013e6 52e5 MOVF 0xe5,0x1,0x00013e8 52e5 MOVF 0xe5,0x1,0x00013ea 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canNode\Source\Main.c0013ec cfdb MOVFF 0xfdb,0xfe60013ee ffe60013f0 0e02 MOVLW 0x20013f2 6ee6 MOVWF 0xe6,0x00013f4 6ae6 CLRF 0xe6,0x00013f6 ec71 CALL 0x18e2,0x00013f8 f00c0013fa 52e5 MOVF 0xe5,0x1,0x00013fc 52e5 MOVF 0xe5,0x1,0x00013fe 52e5 MOVF 0xe5,0x1,0x0001400 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canNode\Source\Main.c001402 cfdb MOVFF 0xfdb,0xfe6001404 ffe6001406 0e03 MOVLW 0x3001408 6ee6 MOVWF 0xe6,0x000140a 6ae6 CLRF 0xe6,0x000140c ec71 CALL 0x18e2,0x000140e f00c001410 52e5 MOVF 0xe5,0x1,0x0001412 52e5 MOVF 0xe5,0x1,0x0001414 52e5 MOVF 0xe5,0x1,0x0001416 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canNode\Source\Main.c001418 6ee6 MOVWF 0xe6,0x000141a 0e00 MOVLW 0x000141c 6ee6 MOVWF 0xe6,0x000141e 6ae6 CLRF 0xe6,0x0001420 ec71 CALL 0x18e2,0x0001422 f00c001424 52e5 MOVF 0xe5,0x1,0x0001426 52e5 MOVF 0xe5,0x1,0x0001428 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canNode\Source\Main.c00142a 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canNode\Source\Main.c00142c 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canNode\Source\Main.c00142e 6ef3 MOVWF 0xf3,0x0001430 0e01 MOVLW 0x1001432 cff3 MOVFF 0xff3,0xfdb001434 ffdb001436 0e02 MOVLW 0x2001438 6adb CLRF 0xdb,0x000143a 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canNode\Source\Main.c00143c c062 MOVFF 0x62,0xfdb00143e ffdb001440 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canNode\Source\Main.c001442 c060 MOVFF 0x60,0xfdb001444 ffdb001446 0e05 MOVLW 0x5001448 c061 MOVFF 0x61,0xfdb00144a ffdb00144c 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canNode\Source\Main.c00144e 6ef3 MOVWF 0xf3,0x0001450 0e06 MOVLW 0x6001452 cff3 MOVFF 0xff3,0xfdb001454 ffdb001456 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canNode\Source\Main.c001458 6adb CLRF 0xdb,0x000145a 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canNode\Source\Main.c00145c 6ee6 MOVWF 0xe6,0x000145e cfd9 MOVFF 0xfd9,0xfe9001460 ffe9001462 cfda MOVFF 0xfda,0xfea001464 ffea001466 cfee MOVFF 0xfee,0xfe6001468 ffe600146a cfee MOVFF 0xfee,0xfe600146c ffe600146e cfee MOVFF 0xfee,0xfe6001470 ffe6001472 cfee MOVFF 0xfee,0xfe6001474 ffe6001476 cfee MOVFF 0xfee,0xfe6001478 ffe600147a 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 ec7c CALL 0x16f8,0x00014a4 f00b0014a6 6e00 MOVWF 0x0,0x00014a8 0e10 MOVLW 0x100014aa 5ee1 SUBWF 0xe1,0x1,0x00014ac 5000 MOVF 0x0,0x0,0x00014ae 0900 IORLW 0x00014b0 e101 BNZ 0x14b40014b2 d7d3 BRA 0x145a0014b4 d000 BRA 0x14b6 break; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0014b6 d000 BRA 0x14b8 break; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c0014b8 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canNode\Source\Main.c0014ba 5ce1 SUBWF 0xe1,0x0,0x00014bc e202 BC 0x14c20014be 6ae1 CLRF 0xe1,0x00014c0 52e5 MOVF 0xe5,0x1,0x00014c2 6ee1 MOVWF 0xe1,0x00014c4 52e5 MOVF 0xe5,0x1,0x00014c6 cfe7 MOVFF 0xfe7,0xfd90014c8 ffd90014ca 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canNode\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canNode\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canNode\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c001000 ef13 GOTO 0x1a26 _asm goto _startup _endasm F:\MCP\projects\CAN\canNode\Source\Main.c001002 f00d001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canNode\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c001008 ef43 GOTO 0x1286 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00100a f00900100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canNode\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c001018 ef91 GOTO 0x1322 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00101a f00900101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code F:\MCP\projects\CAN\canNode\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.c0019e2 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c0019e4 6ed6 MOVWF 0xd6,0x00019e6 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c0019e8 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.c0019ea 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c0019ec 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0019ee 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c0019f0 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0019f2 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0019f4 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.c0019f6 c079 MOVFF 0x79,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c0019f8 f0120019fa c07a MOVFF 0x7a,0x130019fc f0130019fe c07b MOVFF 0x7b,0x14001a00 f014001a02 c07c MOVFF 0x7c,0x15001a04 f015001a06 d000 BRA 0x1a08001a08 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.c001a0a a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001a0c d00b BRA 0x1a24{ F:\MCP\projects\CAN\canBase\Source\Tick.c001a0e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001a10 6ed7 MOVWF 0xd7,0x0001a12 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001a14 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001a16 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001a18 2b79 INCF 0x79,0x1,0x1001a1a 0e00 MOVLW 0x0001a1c 237a ADDWFC 0x7a,0x1,0x1001a1e 237b ADDWFC 0x7b,0x1,0x1001a20 237c ADDWFC 0x7c,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001a22 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001a24 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.c0014cc 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c0014ce 6e6f MOVWF 0x6f,0x00014d0 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c0014d2 146e ANDWF 0x6e,0x0,0x00014d4 0880 SUBLW 0x800014d6 e001 BZ 0x14da0014d8 d7fb BRA 0x14d0F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0014da 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.c0014dc 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014de 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.c0014e0 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c0014e2 1070 IORWF 0x70,0x0,0x00014e4 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c0014e6 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.c0014e8 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014ea 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014ec 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.c0014ee 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014f0 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014f2 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.c0014f4 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.c0014f6 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.c0014f8 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014fa 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014fc 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0014fe 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001500 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001502 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.c001504 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c001506 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.c001508 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00150a 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00150c 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00150e 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001510 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001512 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.c001514 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.c001516 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001518 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00151a 146e ANDWF 0x6e,0x0,0x000151c e001 BZ 0x152000151e d7fc BRA 0x1518#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001520 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.c001522 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001524 0b02 ANDLW 0x2001526 e106 BNZ 0x1534001528 50a4 MOVF 0xa4,0x0,0x000152a 0b02 ANDLW 0x200152c e103 BNZ 0x153400152e 50a4 MOVF 0xa4,0x0,0x0001530 0b01 ANDLW 0x1001532 e016 BZ 0x1560{ F:\MCP\projects\CAN\canBase\Source\CAN.c001534 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001536 146f ANDWF 0x6f,0x0,0x0001538 0910 IORLW 0x1000153a 6e00 MOVWF 0x0,0x000153c 0e00 MOVLW 0x000153e 1477 ANDWF 0x77,0x0,0x0001540 1000 IORWF 0x0,0x0,0x0001542 6e77 MOVWF 0x77,0x0001544 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c001546 d80d RCALL 0x1562F:\MCP\projects\CAN\canBase\Source\CAN.c001548 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00154a d002 BRA 0x155000154c 92a4 BCF 0xa4,0x1,0x000154e d008 BRA 0x1560001550 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001552 d002 BRA 0x1558001554 92a4 BCF 0xa4,0x1,0x0001556 d004 BRA 0x1560001558 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00155a d002 BRA 0x156000155c 90a4 BCF 0xa4,0x0,0x000155e d000 BRA 0x1560} F:\MCP\projects\CAN\canBase\Source\CAN.c001560 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.c001562 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001564 ffe6001566 cfe1 MOVFF 0xfe1,0xfd9001568 ffd900156a 0e0f MOVLW 0xf00156c 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.c00156e 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c001570 1461 ANDWF 0x61,0x0,0x0001572 38e8 SWAPF 0xe8,0x0,0x0001574 0b0f ANDLW 0xf001576 6edf MOVWF 0xdf,0x0001578 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.c00157a 1461 ANDWF 0x61,0x0,0x000157c 6e06 MOVWF 0x6,0x000157e 6a07 CLRF 0x7,0x0001580 0e06 MOVLW 0x6001582 90d8 BCF 0xd8,0x0,0x0001584 3606 RLCF 0x6,0x1,0x0001586 3607 RLCF 0x7,0x1,0x0001588 04e8 DECF 0xe8,0x0,0x000158a e1fb BNZ 0x158200158c 0ee0 MOVLW 0xe000158e 1462 ANDWF 0x62,0x0,0x0001590 6e08 MOVWF 0x8,0x0001592 6a09 CLRF 0x9,0x0001594 90d8 BCF 0xd8,0x0,0x0001596 3209 RRCF 0x9,0x1,0x0001598 3208 RRCF 0x8,0x1,0x000159a 90d8 BCF 0xd8,0x0,0x000159c 3209 RRCF 0x9,0x1,0x000159e 3208 RRCF 0x8,0x1,0x00015a0 5006 MOVF 0x6,0x0,0x00015a2 2408 ADDWF 0x8,0x0,0x00015a4 6e04 MOVWF 0x4,0x00015a6 5007 MOVF 0x7,0x0,0x00015a8 2009 ADDWFC 0x9,0x0,0x00015aa 6e05 MOVWF 0x5,0x00015ac 0e03 MOVLW 0x30015ae 1462 ANDWF 0x62,0x0,0x00015b0 6e0a MOVWF 0xa,0x00015b2 6a0b CLRF 0xb,0x00015b4 90d8 BCF 0xd8,0x0,0x00015b6 360a RLCF 0xa,0x1,0x00015b8 360b RLCF 0xb,0x1,0x00015ba 5004 MOVF 0x4,0x0,0x00015bc 240a ADDWF 0xa,0x0,0x00015be 6e02 MOVWF 0x2,0x00015c0 5005 MOVF 0x5,0x0,0x00015c2 200b ADDWFC 0xb,0x0,0x00015c4 6e03 MOVWF 0x3,0x00015c6 0e80 MOVLW 0x800015c8 1463 ANDWF 0x63,0x0,0x00015ca 6e0c MOVWF 0xc,0x00015cc 6a0d CLRF 0xd,0x00015ce 0e07 MOVLW 0x70015d0 90d8 BCF 0xd8,0x0,0x00015d2 320d RRCF 0xd,0x1,0x00015d4 320c RRCF 0xc,0x1,0x00015d6 04e8 DECF 0xe8,0x0,0x00015d8 e1fb BNZ 0x15d00015da 5002 MOVF 0x2,0x0,0x00015dc 240c ADDWF 0xc,0x0,0x00015de 6e00 MOVWF 0x0,0x00015e0 5003 MOVF 0x3,0x0,0x00015e2 200d ADDWFC 0xd,0x0,0x00015e4 6e01 MOVWF 0x1,0x00015e6 0e01 MOVLW 0x10015e8 c000 MOVFF 0x0,0xfdb0015ea ffdb0015ec 0e02 MOVLW 0x20015ee c001 MOVFF 0x1,0xfdb0015f0 ffdb0015f2 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015f4 1463 ANDWF 0x63,0x0,0x00015f6 40e8 RRNCF 0xe8,0x0,0x00015f8 0b7f ANDLW 0x7f0015fa 6ee7 MOVWF 0xe7,0x00015fc 0e03 MOVLW 0x30015fe cfe7 MOVFF 0xfe7,0xfdb001600 ffdb001602 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c001604 1463 ANDWF 0x63,0x0,0x0001606 6e02 MOVWF 0x2,0x0001608 c002 MOVFF 0x2,0x300160a f00300160c 6a02 CLRF 0x2,0x000160e 5064 MOVF 0x64,0x0,0x0001610 0100 MOVLB 0x0001612 2402 ADDWF 0x2,0x0,0x0001614 6e00 MOVWF 0x0,0x0001616 0e00 MOVLW 0x0001618 2003 ADDWFC 0x3,0x0,0x000161a 6e01 MOVWF 0x1,0x000161c 0e04 MOVLW 0x400161e c000 MOVFF 0x0,0xfdb001620 ffdb001622 0e05 MOVLW 0x5001624 c001 MOVFF 0x1,0xfdb001626 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001628 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.c00162a 0b01 ANDLW 0x100162c 6e02 MOVWF 0x2,0x000162e 5065 MOVF 0x65,0x0,0x0001630 0b02 ANDLW 0x2001632 e001 BZ 0x1636001634 0e01 MOVLW 0x1001636 24e8 ADDWF 0xe8,0x0,0x0001638 6e01 MOVWF 0x1,0x000163a 5065 MOVF 0x65,0x0,0x000163c 0b04 ANDLW 0x400163e e001 BZ 0x1642001640 0e01 MOVLW 0x1001642 0d04 MULLW 0x4001644 cff3 MOVFF 0xff3,0x0001646 f000001648 5065 MOVF 0x65,0x0,0x000164a 0b08 ANDLW 0x800164c e001 BZ 0x165000164e 0e01 MOVLW 0x1001650 0d08 MULLW 0x8001652 50f3 MOVF 0xf3,0x0,0x0001654 2400 ADDWF 0x0,0x0,0x0001656 2401 ADDWF 0x1,0x0,0x0001658 2402 ADDWF 0x2,0x0,0x000165a 6ee7 MOVWF 0xe7,0x000165c 0e06 MOVLW 0x600165e cfe7 MOVFF 0xfe7,0xfdb001660 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001662 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001664 cf66 MOVFF 0xf66,0xfdb001666 ffdb001668 0e08 MOVLW 0x800166a cf67 MOVFF 0xf67,0xfdb00166c ffdb00166e 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001670 cf68 MOVFF 0xf68,0xfdb001672 ffdb001674 0e0a MOVLW 0xa001676 cf69 MOVFF 0xf69,0xfdb001678 ffdb00167a 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c00167c cf6a MOVFF 0xf6a,0xfdb00167e ffdb001680 0e0c MOVLW 0xc001682 cf6b MOVFF 0xf6b,0xfdb001684 ffdb001686 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001688 cf6c MOVFF 0xf6c,0xfdb00168a ffdb00168c 0e0e MOVLW 0xe00168e cf6d MOVFF 0xf6d,0xfdb001690 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001692 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.c001694 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c001696 ffe9001698 cfda MOVFF 0xfda,0xfea00169a ffea00169c cfee MOVFF 0xfee,0xfe600169e ffe60016a0 cfee MOVFF 0xfee,0xfe60016a2 ffe60016a4 cfee MOVFF 0xfee,0xfe60016a6 ffe60016a8 cfee MOVFF 0xfee,0xfe60016aa ffe60016ac cfee MOVFF 0xfee,0xfe60016ae ffe60016b0 cfee MOVFF 0xfee,0xfe60016b2 ffe60016b4 cfee MOVFF 0xfee,0xfe60016b6 ffe60016b8 cfee MOVFF 0xfee,0xfe60016ba ffe60016bc cfee MOVFF 0xfee,0xfe60016be ffe60016c0 cfee MOVFF 0xfee,0xfe60016c2 ffe60016c4 cfee MOVFF 0xfee,0xfe60016c6 ffe60016c8 cfee MOVFF 0xfee,0xfe60016ca ffe60016cc cfee MOVFF 0xfee,0xfe60016ce ffe60016d0 cfee MOVFF 0xfee,0xfe60016d2 ffe60016d4 cfee MOVFF 0xfee,0xfe60016d6 ffe60016d8 ec9f CALL 0x133e,0x00016da f0090016dc 6e00 MOVWF 0x0,0x00016de 0e0f MOVLW 0xf0016e0 5ee1 SUBWF 0xe1,0x1,0x00016e2 5000 MOVF 0x0,0x0,0x00016e4 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c0016e6 5ce1 SUBWF 0xe1,0x0,0x00016e8 e202 BC 0x16ee0016ea 6ae1 CLRF 0xe1,0x00016ec 52e5 MOVF 0xe5,0x1,0x00016ee 6ee1 MOVWF 0xe1,0x00016f0 52e5 MOVF 0xe5,0x1,0x00016f2 cfe7 MOVFF 0xfe7,0xfd90016f4 ffd90016f6 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.c0016f8 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0016fa ffe60016fc cfe1 MOVFF 0xfe1,0xfd90016fe ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001700 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001702 b740 BTFSC 0x40,0x3,0x1001704 d004 BRA 0x170e001706 0e00 MOVLW 0x0001708 1477 ANDWF 0x77,0x0,0x000170a 0903 IORLW 0x300170c 6e77 MOVWF 0x77,0x000170e 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001710 b730 BTFSC 0x30,0x3,0x1001712 d004 BRA 0x171c001714 0e00 MOVLW 0x0001716 1477 ANDWF 0x77,0x0,0x0001718 0904 IORLW 0x400171a 6e77 MOVWF 0x77,0x000171c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c00171e b720 BTFSC 0x20,0x3,0x1001720 d005 BRA 0x172c001722 0e00 MOVLW 0x0001724 1477 ANDWF 0x77,0x0,0x0001726 0905 IORLW 0x5001728 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c00172a d002 BRA 0x1730 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c00172c 0e00 MOVLW 0x000172e d0b0 BRA 0x1890F:\MCP\projects\CAN\canBase\Source\CAN.c001730 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001732 cfdb MOVFF 0xfdb,0x0001734 f000001736 3400 RLCF 0x0,0x0,0x0001738 e20e BC 0x175600173a 0eef MOVLW 0xef00173c cfdb MOVFF 0xfdb,0x100173e f001001740 0e03 MOVLW 0x3001742 6ee7 MOVWF 0xe7,0x0001744 1801 XORWF 0x1,0x0,0x0001746 aee8 BTFSS 0xe8,0x7,0x0001748 d002 BRA 0x174e00174a 3401 RLCF 0x1,0x0,0x000174c d003 BRA 0x175400174e 50e7 MOVF 0xe7,0x0,0x0001750 80d8 BSF 0xd8,0x0,0x0001752 5401 SUBFWB 0x1,0x0,0x0001754 e202 BC 0x175a001756 0eef MOVLW 0xef001758 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.c00175a 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c00175c cfdb MOVFF 0xfdb,0x000175e f000001760 0ef2 MOVLW 0xf2001762 cfdb MOVFF 0xfdb,0x1001764 f001001766 0ec0 MOVLW 0xc0001768 1600 ANDWF 0x0,0x1,0x000176a 0e03 MOVLW 0x300176c 1601 ANDWF 0x1,0x1,0x000176e 0e06 MOVLW 0x6001770 90d8 BCF 0xd8,0x0,0x0001772 3201 RRCF 0x1,0x1,0x0001774 3200 RRCF 0x0,0x1,0x0001776 04e8 DECF 0xe8,0x0,0x0001778 e1fb BNZ 0x177000177a 0ef0 MOVLW 0xf000177c 50db MOVF 0xdb,0x0,0x000177e 0b0f ANDLW 0xf001780 0d10 MULLW 0x10001782 50f3 MOVF 0xf3,0x0,0x0001784 2400 ADDWF 0x0,0x0,0x0001786 6e61 MOVWF 0x61,0x0001788 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c00178a 6ee7 MOVWF 0xe7,0x000178c 0ef1 MOVLW 0xf100178e cfdb MOVFF 0xfdb,0x2001790 f002001792 0ef2 MOVLW 0xf2001794 cfdb MOVFF 0xfdb,0x3001796 f003001798 50e7 MOVF 0xe7,0x0,0x000179a 1602 ANDWF 0x2,0x1,0x000179c 6a03 CLRF 0x3,0x000179e 90d8 BCF 0xd8,0x0,0x00017a0 3203 RRCF 0x3,0x1,0x00017a2 3202 RRCF 0x2,0x1,0x00017a4 0e3f MOVLW 0x3f0017a6 6ee7 MOVWF 0xe7,0x00017a8 0ef1 MOVLW 0xf10017aa cfdb MOVFF 0xfdb,0x00017ac f0000017ae 0ef2 MOVLW 0xf20017b0 cfdb MOVFF 0xfdb,0x10017b2 f0010017b4 50e7 MOVF 0xe7,0x0,0x00017b6 1600 ANDWF 0x0,0x1,0x00017b8 6a01 CLRF 0x1,0x00017ba 90d8 BCF 0xd8,0x0,0x00017bc 3600 RLCF 0x0,0x1,0x00017be 3601 RLCF 0x1,0x1,0x00017c0 90d8 BCF 0xd8,0x0,0x00017c2 3600 RLCF 0x0,0x1,0x00017c4 3601 RLCF 0x1,0x1,0x00017c6 5000 MOVF 0x0,0x0,0x00017c8 2402 ADDWF 0x2,0x0,0x00017ca 6e62 MOVWF 0x62,0x00017cc 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.c0017ce cfdb MOVFF 0xfdb,0x20017d0 f0020017d2 0ef5 MOVLW 0xf50017d4 cfdb MOVFF 0xfdb,0x30017d6 f0030017d8 0e00 MOVLW 0x00017da 1602 ANDWF 0x2,0x1,0x00017dc 0e01 MOVLW 0x10017de 1603 ANDWF 0x3,0x1,0x00017e0 c003 MOVFF 0x3,0x20017e2 f0020017e4 6a03 CLRF 0x3,0x00017e6 0e01 MOVLW 0x10017e8 6ee7 MOVWF 0xe7,0x00017ea 0ef1 MOVLW 0xf10017ec cfdb MOVFF 0xfdb,0x00017ee f0000017f0 0ef2 MOVLW 0xf20017f2 cfdb MOVFF 0xfdb,0x10017f4 f0010017f6 50e7 MOVF 0xe7,0x0,0x00017f8 1600 ANDWF 0x0,0x1,0x00017fa 6a01 CLRF 0x1,0x00017fc 0e07 MOVLW 0x70017fe 90d8 BCF 0xd8,0x0,0x0001800 3600 RLCF 0x0,0x1,0x0001802 3601 RLCF 0x1,0x1,0x0001804 04e8 DECF 0xe8,0x0,0x0001806 e1fb BNZ 0x17fe001808 0ef3 MOVLW 0xf300180a 50db MOVF 0xdb,0x0,0x000180c 0b3f ANDLW 0x3f00180e 24e8 ADDWF 0xe8,0x0,0x0001810 2400 ADDWF 0x0,0x0,0x0001812 2402 ADDWF 0x2,0x0,0x0001814 6e63 MOVWF 0x63,0x0001816 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001818 6ee7 MOVWF 0xe7,0x000181a 0ef4 MOVLW 0xf400181c cfdb MOVFF 0xfdb,0x000181e f000001820 0ef5 MOVLW 0xf5001822 cfdb MOVFF 0xfdb,0x1001824 f001001826 50e7 MOVF 0xe7,0x0,0x0001828 1600 ANDWF 0x0,0x1,0x000182a 6a01 CLRF 0x1,0x000182c 5000 MOVF 0x0,0x0,0x000182e 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001830 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001832 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001834 50db MOVF 0xdb,0x0,0x0001836 0808 SUBLW 0x8001838 e203 BC 0x184000183a 0e08 MOVLW 0x800183c 6e65 MOVWF 0x65,0x000183e d003 BRA 0x1846001840 0ef6 MOVLW 0xf6001842 50db MOVF 0xdb,0x0,0x0001844 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.c001846 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.c001848 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c00184a 50db MOVF 0xdb,0x0,0x000184c 6e66 MOVWF 0x66,0x000184e 0ef8 MOVLW 0xf8001850 50db MOVF 0xdb,0x0,0x0001852 6e67 MOVWF 0x67,0x0001854 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001856 50db MOVF 0xdb,0x0,0x0001858 6e68 MOVWF 0x68,0x000185a 0efa MOVLW 0xfa00185c 50db MOVF 0xdb,0x0,0x000185e 6e69 MOVWF 0x69,0x0001860 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c001862 50db MOVF 0xdb,0x0,0x0001864 6e6a MOVWF 0x6a,0x0001866 0efc MOVLW 0xfc001868 50db MOVF 0xdb,0x0,0x000186a 6e6b MOVWF 0x6b,0x000186c 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c00186e 50db MOVF 0xdb,0x0,0x0001870 6e6c MOVWF 0x6c,0x0001872 0efe MOVLW 0xfe001874 50db MOVF 0xdb,0x0,0x0001876 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001878 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.c00187a 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c00187c cfdb MOVFF 0xfdb,0xfe600187e ffe6001880 0efc MOVLW 0xfc001882 1460 ANDWF 0x60,0x0,0x0001884 52e5 MOVF 0xe5,0x1,0x0001886 10e7 IORWF 0xe7,0x0,0x0001888 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.c00188a 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.c00188c 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c00188e d000 BRA 0x1890F:\MCP\projects\CAN\canBase\Source\CAN.c001890 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c001892 cfe7 MOVFF 0xfe7,0xfd9001894 ffd9001896 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.c001898 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c00189a ffe600189c cfe1 MOVFF 0xfe1,0xfd900189e ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c0018a0 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c0018a2 cfdb MOVFF 0xfdb,0x00018a4 f0000018a6 0efe MOVLW 0xfe0018a8 cfdb MOVFF 0xfdb,0x10018aa f0010018ac c001 MOVFF 0x1,0x00018ae f0000018b0 6a01 CLRF 0x1,0x00018b2 5000 MOVF 0x0,0x0,0x00018b4 6eaa MOVWF 0xaa,0x00018b6 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c0018b8 6ee7 MOVWF 0xe7,0x00018ba 0efd MOVLW 0xfd0018bc cfdb MOVFF 0xfdb,0x00018be f0000018c0 0efe MOVLW 0xfe0018c2 cfdb MOVFF 0xfdb,0x10018c4 f0010018c6 50e7 MOVF 0xe7,0x0,0x00018c8 1600 ANDWF 0x0,0x1,0x00018ca 6a01 CLRF 0x1,0x00018cc 5000 MOVF 0x0,0x0,0x00018ce 6ea9 MOVWF 0xa9,0x00018d0 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c0018d2 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c0018d4 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c0018d6 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c0018d8 d000 BRA 0x18da0018da 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c0018dc cfe7 MOVFF 0xfe7,0xfd90018de ffd90018e0 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c0018e2 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c0018e4 ffe60018e6 cfe1 MOVFF 0xfe1,0xfd90018e8 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c0018ea 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c0018ec 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c0018ee cfdb MOVFF 0xfdb,0x00018f0 f0000018f2 0efe MOVLW 0xfe0018f4 cfdb MOVFF 0xfdb,0x10018f6 f0010018f8 c001 MOVFF 0x1,0x00018fa f0000018fc 6a01 CLRF 0x1,0x00018fe 5000 MOVF 0x0,0x0,0x0001900 6eaa MOVWF 0xaa,0x0001902 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001904 6ee7 MOVWF 0xe7,0x0001906 0efd MOVLW 0xfd001908 cfdb MOVFF 0xfdb,0x000190a f00000190c 0efe MOVLW 0xfe00190e cfdb MOVFF 0xfdb,0x1001910 f001001912 50e7 MOVF 0xe7,0x0,0x0001914 1600 ANDWF 0x0,0x1,0x0001916 6a01 CLRF 0x1,0x0001918 5000 MOVF 0x0,0x0,0x000191a 6ea9 MOVWF 0xa9,0x000191c 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c00191e 50db MOVF 0xdb,0x0,0x0001920 6ea8 MOVWF 0xa8,0x0001922 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001924 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001926 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001928 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c00192a 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c00192c 6ea7 MOVWF 0xa7,0x000192e 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001930 6ea7 MOVWF 0xa7,0x0001932 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001934 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001936 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001938 d7fe BRA 0x193600193a 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c00193c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00193e cfe7 MOVFF 0xfe7,0xfd9001940 ffd9001942 0012 RETURN 0x0