Rev 347 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.1, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sat Mar 03 18:40:13 2007Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* 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: 2007-02-26 21:38:37 +0100 (må, 26 feb 2007) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 342 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cstatic TICK heartbeat; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic CAN_PACKET outCp; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c003068 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00306a 6e6f MOVWF 0x6f,0x000306c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c00306e 146e ANDWF 0x6e,0x0,0x0003070 0880 SUBLW 0x80003072 e1fc BNZ 0x306cF:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// 500Khz@40Mhz (new by the book) F:\MCP\projects\CAN\canBase\Source\CAN.c003074 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c003076 6e70 MOVWF 0x70,0x0003078 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c00307a 6e71 MOVWF 0x71,0x000307c 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c00307e 6e72 MOVWF 0x72,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003080 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c003082 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c003084 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.c003086 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c003088 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.c00308a 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00308c 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00308e 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c003090 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c003092 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c003094 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.c003096 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.c003098 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00309a 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00309c 146e ANDWF 0x6e,0x0,0x000309e e1fd BNZ 0x309a#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Init ticker service F:\MCP\projects\CAN\canBase\Source\CAN.c0030a0 ec8a CALL 0x4514,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c0030a2 f022F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBase\Source\CAN.c0030a4 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0030a6 6ee6 MOVWF 0xe6,0x00030a8 6ae6 CLRF 0xe6,0x00030aa ec0d CALL 0x441a,0x00030ac f0220030ae 52e5 MOVF 0xe5,0x1,0x00030b0 52e5 MOVF 0xe5,0x1,0x00030b2 082a SUBLW 0x2a0030b4 e10a BNZ 0x30ca{ F:\MCP\projects\CAN\canBase\Source\CAN.c0030b6 0e01 MOVLW 0x1 MY_ID=+EERead(NODE_ID_EE + 1); F:\MCP\projects\CAN\canBase\Source\CAN.c0030b8 6ee6 MOVWF 0xe6,0x00030ba 6ae6 CLRF 0xe6,0x00030bc ec0d CALL 0x441a,0x00030be f0220030c0 52e5 MOVF 0xe5,0x1,0x00030c2 52e5 MOVF 0xe5,0x1,0x00030c4 0100 MOVLB 0x00030c6 6f9d MOVWF 0x9d,0x10030c8 6b9e CLRF 0x9e,0x1} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Send user program startup heatbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0030ca 0100 MOVLB 0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canBase\Source\CAN.c0030cc 0e01 MOVLW 0x10030ce 6f64 MOVWF 0x64,0x10030d0 6b65 CLRF 0x65,0x1 outCp.pgm.class=pcCTRL; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d2 6f66 MOVWF 0x66,0x1 outCp.pgm.id=pctAPPBOOT; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d4 6b67 CLRF 0x67,0x10030d6 0e02 MOVLW 0x2 outCp.length=2; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d8 6f6c MOVWF 0x6c,0x10030da 6b6e CLRF 0x6e,0x1 outCp.data[1]=(BYTE)((APP_VERSION & 0xFF00)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0030dc 6f6d MOVWF 0x6d,0x1 outCp.data[0]=(BYTE)(APP_VERSION & 0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0030de 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e0 6ee6 MOVWF 0xe6,0x00030e2 c064 MOVFF 0x64,0xfe60030e4 ffe60030e6 c065 MOVFF 0x65,0xfe60030e8 ffe60030ea c066 MOVFF 0x66,0xfe60030ec ffe60030ee c067 MOVFF 0x67,0xfe60030f0 ffe60030f2 c068 MOVFF 0x68,0xfe60030f4 ffe60030f6 c069 MOVFF 0x69,0xfe60030f8 ffe60030fa c06a MOVFF 0x6a,0xfe60030fc ffe60030fe c06b MOVFF 0x6b,0xfe6003100 ffe6003102 c06c MOVFF 0x6c,0xfe6003104 ffe6003106 c06d MOVFF 0x6d,0xfe6003108 ffe600310a c06e MOVFF 0x6e,0xfe600310c ffe600310e c06f MOVFF 0x6f,0xfe6003110 ffe6003112 c070 MOVFF 0x70,0xfe6003114 ffe6003116 c071 MOVFF 0x71,0xfe6003118 ffe600311a c072 MOVFF 0x72,0xfe600311c ffe600311e c073 MOVFF 0x73,0xfe6003120 ffe6003122 c074 MOVFF 0x74,0xfe6003124 ffe6003126 d9ca RCALL 0x34bc003128 6e00 MOVWF 0x0,0x000312a 0e12 MOVLW 0x1200312c 5ee1 SUBWF 0xe1,0x1,0x000312e 5000 MOVF 0x0,0x0,0x0003130 0900 IORLW 0x0003132 e0d5 BZ 0x30de003134 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.c003136 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003138 eca2 CALL 0x4544,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c00313a f022F:\MCP\projects\CAN\canBase\Source\CAN.c00313c 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c00313e 0b02 ANDLW 0x2003140 e106 BNZ 0x314e003142 50a4 MOVF 0xa4,0x0,0x0003144 0b02 ANDLW 0x2003146 e103 BNZ 0x314e003148 50a4 MOVF 0xa4,0x0,0x000314a 0b01 ANDLW 0x100314c e016 BZ 0x317a{ F:\MCP\projects\CAN\canBase\Source\CAN.c00314e 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c003150 146f ANDWF 0x6f,0x0,0x0003152 0910 IORLW 0x10003154 6e00 MOVWF 0x0,0x0003156 0e00 MOVLW 0x0003158 1477 ANDWF 0x77,0x0,0x000315a 1000 IORWF 0x0,0x0,0x000315c 6e77 MOVWF 0x77,0x000315e be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c003160 d867 RCALL 0x3230F:\MCP\projects\CAN\canBase\Source\CAN.c003162 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003164 d002 BRA 0x316a003166 92a4 BCF 0xa4,0x1,0x0003168 d062 BRA 0x322e00316a a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00316c d002 BRA 0x317200316e 92a4 BCF 0xa4,0x1,0x0003170 d05e BRA 0x322e003172 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003174 d002 BRA 0x317a003176 90a4 BCF 0xa4,0x0,0x0003178 d05a BRA 0x322e} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00317a ec99 CALL 0x4532,0x0 if ((tickGet()-heartbeat)>TICK_1S*5) F:\MCP\projects\CAN\canBase\Source\CAN.c00317c f02200317e 0100 MOVLB 0x0003180 5160 MOVF 0x60,0x0,0x1003182 5c29 SUBWF 0x29,0x0,0x0003184 6e00 MOVWF 0x0,0x0003186 0100 MOVLB 0x0003188 5161 MOVF 0x61,0x0,0x100318a 582a SUBWFB 0x2a,0x0,0x000318c 6e01 MOVWF 0x1,0x000318e 0100 MOVLB 0x0003190 5162 MOVF 0x62,0x0,0x1003192 582b SUBWFB 0x2b,0x0,0x0003194 6e02 MOVWF 0x2,0x0003196 0100 MOVLB 0x0003198 5163 MOVF 0x63,0x0,0x100319a 582c SUBWFB 0x2c,0x0,0x000319c 6e03 MOVWF 0x3,0x000319e 80d8 BSF 0xd8,0x0,0x00031a0 0ef4 MOVLW 0xf40031a2 5400 SUBFWB 0x0,0x0,0x00031a4 0e01 MOVLW 0x10031a6 5401 SUBFWB 0x1,0x0,0x00031a8 0e00 MOVLW 0x00031aa 5402 SUBFWB 0x2,0x0,0x00031ac 0e00 MOVLW 0x00031ae 5403 SUBFWB 0x3,0x0,0x00031b0 e23e BC 0x322e{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0031b2 0100 MOVLB 0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canBase\Source\CAN.c0031b4 0e01 MOVLW 0x10031b6 6f64 MOVWF 0x64,0x10031b8 0100 MOVLB 0x0 outCp.pgm.class=pcCTRL; F:\MCP\projects\CAN\canBase\Source\CAN.c0031ba 6b65 CLRF 0x65,0x10031bc 0e02 MOVLW 0x2 outCp.pgm.id=pctHEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0031be 0100 MOVLB 0x00031c0 6f66 MOVWF 0x66,0x10031c2 6b67 CLRF 0x67,0x10031c4 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0031c6 6b6c CLRF 0x6c,0x10031c8 0e02 MOVLW 0x2 canSendMessage(outCp,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\CAN.c0031ca 6ee6 MOVWF 0xe6,0x00031cc c064 MOVFF 0x64,0xfe60031ce ffe60031d0 c065 MOVFF 0x65,0xfe60031d2 ffe60031d4 c066 MOVFF 0x66,0xfe60031d6 ffe60031d8 c067 MOVFF 0x67,0xfe60031da ffe60031dc c068 MOVFF 0x68,0xfe60031de ffe60031e0 c069 MOVFF 0x69,0xfe60031e2 ffe60031e4 c06a MOVFF 0x6a,0xfe60031e6 ffe60031e8 c06b MOVFF 0x6b,0xfe60031ea ffe60031ec c06c MOVFF 0x6c,0xfe60031ee ffe60031f0 c06d MOVFF 0x6d,0xfe60031f2 ffe60031f4 c06e MOVFF 0x6e,0xfe60031f6 ffe60031f8 c06f MOVFF 0x6f,0xfe60031fa ffe60031fc c070 MOVFF 0x70,0xfe60031fe ffe6003200 c071 MOVFF 0x71,0xfe6003202 ffe6003204 c072 MOVFF 0x72,0xfe6003206 ffe6003208 c073 MOVFF 0x73,0xfe600320a ffe600320c c074 MOVFF 0x74,0xfe600320e ffe6003210 d955 RCALL 0x34bc003212 6e00 MOVWF 0x0,0x0003214 0e12 MOVLW 0x12003216 5ee1 SUBWF 0xe1,0x1,0x0003218 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c00321a ec99 CALL 0x4532,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c00321c f02200321e c029 MOVFF 0x29,0x60003220 f060003222 c02a MOVFF 0x2a,0x61003224 f061003226 c02b MOVFF 0x2b,0x62003228 f06200322a c02c MOVFF 0x2c,0x6300322c f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00322e 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.c003230 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c003232 ffe6003234 cfe1 MOVFF 0xfe1,0xfd9003236 ffd9003238 0e11 MOVLW 0x1100323a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_PACKET cp; 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.cF:\MCP\projects\CAN\canBase\Source\CAN.c00323c 0e06 MOVLW 0x6 cp.type = (BYTE)((RXB0SIDH&0xC0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c00323e 6e00 MOVWF 0x0,0x0003240 0ec0 MOVLW 0xc0003242 1461 ANDWF 0x61,0x0,0x0003244 c000 MOVFF 0x0,0xfe7003246 ffe7003248 52e7 MOVF 0xe7,0x1,0x000324a e004 BZ 0x325400324c 42e8 RRNCF 0xe8,0x1,0x000324e 0b7f ANDLW 0x7f003250 06e7 DECF 0xe7,0x1,0x0003252 e1fc BNZ 0x324c003254 6edf MOVWF 0xdf,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003256 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003258 e122 BNZ 0x329e{ F:\MCP\projects\CAN\canBase\Source\CAN.c00325a 0e38 MOVLW 0x38 cp.boot.type = ((RXB0SIDH&0x38)>>3); F:\MCP\projects\CAN\canBase\Source\CAN.c00325c 1461 ANDWF 0x61,0x0,0x000325e 40e8 RRNCF 0xe8,0x0,0x0003260 40e8 RRNCF 0xe8,0x0,0x0003262 40e8 RRNCF 0xe8,0x0,0x0003264 0b1f ANDLW 0x1f003266 6ee7 MOVWF 0xe7,0x0003268 0e04 MOVLW 0x400326a cfe7 MOVFF 0xfe7,0xfdb00326c ffdb00326e 0e03 MOVLW 0x3 cp.boot.offset= ((RXB0SIDH&0x7)<<5)+((RXB0SIDL&0xE0)>>3)+(RXB0SIDL&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003270 1462 ANDWF 0x62,0x0,0x0003272 6e01 MOVWF 0x1,0x0003274 0ee0 MOVLW 0xe0003276 1462 ANDWF 0x62,0x0,0x0003278 40e8 RRNCF 0xe8,0x0,0x000327a 40e8 RRNCF 0xe8,0x0,0x000327c 40e8 RRNCF 0xe8,0x0,0x000327e 0b1f ANDLW 0x1f003280 6e00 MOVWF 0x0,0x0003282 0e07 MOVLW 0x7003284 1461 ANDWF 0x61,0x0,0x0003286 0d20 MULLW 0x20003288 50f3 MOVF 0xf3,0x0,0x000328a 2400 ADDWF 0x0,0x0,0x000328c 2401 ADDWF 0x1,0x0,0x000328e 6ee7 MOVWF 0xe7,0x0003290 0e05 MOVLW 0x5003292 cfe7 MOVFF 0xfe7,0xfdb003294 ffdb003296 0e06 MOVLW 0x6 cp.boot.rid = RXB0EIDH; F:\MCP\projects\CAN\canBase\Source\CAN.c003298 cf63 MOVFF 0xf63,0xfdb00329a ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c00329c d03c BRA 0x3316 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c00329e 0e3c MOVLW 0x3c cp.pgm.class= ((RXB0SIDH&0x3C)>>2); F:\MCP\projects\CAN\canBase\Source\CAN.c0032a0 1461 ANDWF 0x61,0x0,0x00032a2 40e8 RRNCF 0xe8,0x0,0x00032a4 40e8 RRNCF 0xe8,0x0,0x00032a6 0b3f ANDLW 0x3f0032a8 6ee7 MOVWF 0xe7,0x00032aa 0e01 MOVLW 0x10032ac cfe7 MOVFF 0xfe7,0xfdb0032ae ffdb0032b0 0e03 MOVLW 0x3 cp.pgm.id = (((WORD)RXB0SIDH&0x3)<<13)+(((WORD)RXB0SIDL&0xE0)<<5)+(((WORD)RXB0SIDL&0x3)<<8)+(WORD)RXB0EIDH; F:\MCP\projects\CAN\canBase\Source\CAN.c0032b2 1461 ANDWF 0x61,0x0,0x00032b4 6e06 MOVWF 0x6,0x00032b6 6a07 CLRF 0x7,0x00032b8 3806 SWAPF 0x6,0x0,0x00032ba 6a06 CLRF 0x6,0x00032bc 34e8 RLCF 0xe8,0x0,0x00032be 0be0 ANDLW 0xe00032c0 6e07 MOVWF 0x7,0x00032c2 0ee0 MOVLW 0xe00032c4 1462 ANDWF 0x62,0x0,0x00032c6 6e08 MOVWF 0x8,0x00032c8 6a09 CLRF 0x9,0x00032ca 0e05 MOVLW 0x50032cc 90d8 BCF 0xd8,0x0,0x00032ce 3608 RLCF 0x8,0x1,0x00032d0 3609 RLCF 0x9,0x1,0x00032d2 04e8 DECF 0xe8,0x0,0x00032d4 e1fb BNZ 0x32cc0032d6 5006 MOVF 0x6,0x0,0x00032d8 2408 ADDWF 0x8,0x0,0x00032da 6e04 MOVWF 0x4,0x00032dc 5007 MOVF 0x7,0x0,0x00032de 2009 ADDWFC 0x9,0x0,0x00032e0 6e05 MOVWF 0x5,0x00032e2 0e03 MOVLW 0x30032e4 1462 ANDWF 0x62,0x0,0x00032e6 6e0a MOVWF 0xa,0x00032e8 6a0b CLRF 0xb,0x00032ea c00a MOVFF 0xa,0xb0032ec f00b0032ee 6a0a CLRF 0xa,0x00032f0 5004 MOVF 0x4,0x0,0x00032f2 240a ADDWF 0xa,0x0,0x00032f4 6e02 MOVWF 0x2,0x00032f6 5005 MOVF 0x5,0x0,0x00032f8 200b ADDWFC 0xb,0x0,0x00032fa 6e03 MOVWF 0x3,0x00032fc 5063 MOVF 0x63,0x0,0x00032fe 0100 MOVLB 0x0003300 2402 ADDWF 0x2,0x0,0x0003302 6e00 MOVWF 0x0,0x0003304 0e00 MOVLW 0x0003306 2003 ADDWFC 0x3,0x0,0x0003308 6e01 MOVWF 0x1,0x000330a 0e02 MOVLW 0x200330c c000 MOVFF 0x0,0xfdb00330e ffdb003310 0e03 MOVLW 0x3003312 c001 MOVFF 0x1,0xfdb003314 ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c003316 0e07 MOVLW 0x7 cp.sid = RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c003318 cf64 MOVFF 0xf64,0xfdb00331a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00331c 5065 MOVF 0x65,0x0,0x0 cp.length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c00331e 0b01 ANDLW 0x1003320 6e02 MOVWF 0x2,0x0003322 5065 MOVF 0x65,0x0,0x0003324 0b02 ANDLW 0x2003326 e001 BZ 0x332a003328 0e01 MOVLW 0x100332a 24e8 ADDWF 0xe8,0x0,0x000332c 6e01 MOVWF 0x1,0x000332e 5065 MOVF 0x65,0x0,0x0003330 0b04 ANDLW 0x4003332 e001 BZ 0x3336003334 0e01 MOVLW 0x1003336 0d04 MULLW 0x4003338 cff3 MOVFF 0xff3,0x000333a f00000333c 5065 MOVF 0x65,0x0,0x000333e 0b08 ANDLW 0x8003340 e001 BZ 0x3344003342 0e01 MOVLW 0x1003344 0d08 MULLW 0x8003346 50f3 MOVF 0xf3,0x0,0x0003348 2400 ADDWF 0x0,0x0,0x000334a 2401 ADDWF 0x1,0x0,0x000334c 2402 ADDWF 0x2,0x0,0x000334e 6ee7 MOVWF 0xe7,0x0003350 0e08 MOVLW 0x8003352 cfe7 MOVFF 0xfe7,0xfdb003354 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c003356 0e09 MOVLW 0x9 cp.data[0]=RXB0D0; cp.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c003358 cf66 MOVFF 0xf66,0xfdb00335a ffdb00335c 0e0a MOVLW 0xa00335e cf67 MOVFF 0xf67,0xfdb003360 ffdb003362 0e0b MOVLW 0xb cp.data[2]=RXB0D2; cp.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c003364 cf68 MOVFF 0xf68,0xfdb003366 ffdb003368 0e0c MOVLW 0xc00336a cf69 MOVFF 0xf69,0xfdb00336c ffdb00336e 0e0d MOVLW 0xd cp.data[4]=RXB0D4; cp.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c003370 cf6a MOVFF 0xf6a,0xfdb003372 ffdb003374 0e0e MOVLW 0xe003376 cf6b MOVFF 0xf6b,0xfdb003378 ffdb00337a 0e0f MOVLW 0xf cp.data[6]=RXB0D6; cp.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c00337c cf6c MOVFF 0xf6c,0xfdb00337e ffdb003380 0e10 MOVLW 0x10003382 cf6d MOVFF 0xf6d,0xfdb003384 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c003386 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Check if bootloader request specific. F:\MCP\projects\CAN\canBase\Source\CAN.c// reset and id change F:\MCP\projects\CAN\canBase\Source\CAN.c003388 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c00338a e160 BNZ 0x344c{ F:\MCP\projects\CAN\canBase\Source\CAN.c00338c 0e06 MOVLW 0x6 if (cp.boot.rid==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00338e 50db MOVF 0xdb,0x0,0x0003390 6e00 MOVWF 0x0,0x0003392 6a01 CLRF 0x1,0x0003394 0100 MOVLB 0x0003396 519d MOVF 0x9d,0x0,0x1003398 1800 XORWF 0x0,0x0,0x000339a e102 BNZ 0x33a000339c 519e MOVF 0x9e,0x0,0x100339e 1801 XORWF 0x1,0x0,0x00033a0 e155 BNZ 0x344c{ F:\MCP\projects\CAN\canBase\Source\CAN.c0033a2 0e04 MOVLW 0x4 if (cp.boot.type==btADDR) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0033a4 50db MOVF 0xdb,0x0,0x00033a6 e101 BNZ 0x33aa0033a8 00ff RESET0033aa 0e04 MOVLW 0x4 if (cp.boot.type==btCHANGEID) F:\MCP\projects\CAN\canBase\Source\CAN.c0033ac 50db MOVF 0xdb,0x0,0x00033ae 0807 SUBLW 0x70033b0 e14d BNZ 0x344c{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0033b2 0e09 MOVLW 0x9 MY_ID=cp.data[0]; F:\MCP\projects\CAN\canBase\Source\CAN.c0033b4 50db MOVF 0xdb,0x0,0x00033b6 0100 MOVLB 0x00033b8 6f9d MOVWF 0x9d,0x10033ba 6b9e CLRF 0x9e,0x10033bc 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+1,cp.data[0]); F:\MCP\projects\CAN\canBase\Source\CAN.c0033be cfdb MOVFF 0xfdb,0xfe60033c0 ffe60033c2 0e01 MOVLW 0x10033c4 6ee6 MOVWF 0xe6,0x00033c6 6ae6 CLRF 0xe6,0x00033c8 ec29 CALL 0x4452,0x00033ca f0220033cc 52e5 MOVF 0xe5,0x1,0x00033ce 52e5 MOVF 0xe5,0x1,0x00033d0 52e5 MOVF 0xe5,0x1,0x00033d2 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c0033d4 6ee6 MOVWF 0xe6,0x00033d6 0e00 MOVLW 0x00033d8 6ee6 MOVWF 0xe6,0x00033da 6ae6 CLRF 0xe6,0x00033dc ec29 CALL 0x4452,0x00033de f0220033e0 52e5 MOVF 0xe5,0x1,0x00033e2 52e5 MOVF 0xe5,0x1,0x00033e4 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c0033e6 0100 MOVLB 0x0 outCp.type=ptBOOT; F:\MCP\projects\CAN\canBase\Source\CAN.c0033e8 6b64 CLRF 0x64,0x10033ea 0100 MOVLB 0x0 outCp.boot.type=btACK; F:\MCP\projects\CAN\canBase\Source\CAN.c0033ec 0e04 MOVLW 0x40033ee 6f68 MOVWF 0x68,0x10033f0 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0033f2 6b6c CLRF 0x6c,0x10033f4 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0033f6 6ee6 MOVWF 0xe6,0x00033f8 c064 MOVFF 0x64,0xfe60033fa ffe60033fc c065 MOVFF 0x65,0xfe60033fe ffe6003400 c066 MOVFF 0x66,0xfe6003402 ffe6003404 c067 MOVFF 0x67,0xfe6003406 ffe6003408 c068 MOVFF 0x68,0xfe600340a ffe600340c c069 MOVFF 0x69,0xfe600340e ffe6003410 c06a MOVFF 0x6a,0xfe6003412 ffe6003414 c06b MOVFF 0x6b,0xfe6003416 ffe6003418 c06c MOVFF 0x6c,0xfe600341a ffe600341c c06d MOVFF 0x6d,0xfe600341e ffe6003420 c06e MOVFF 0x6e,0xfe6003422 ffe6003424 c06f MOVFF 0x6f,0xfe6003426 ffe6003428 c070 MOVFF 0x70,0xfe600342a ffe600342c c071 MOVFF 0x71,0xfe600342e ffe6003430 c072 MOVFF 0x72,0xfe6003432 ffe6003434 c073 MOVFF 0x73,0xfe6003436 ffe6003438 c074 MOVFF 0x74,0xfe600343a ffe600343c d83f RCALL 0x34bc00343e 6e00 MOVWF 0x0,0x0003440 0e12 MOVLW 0x12003442 5ee1 SUBWF 0xe1,0x1,0x0003444 5000 MOVF 0x0,0x0,0x0003446 0900 IORLW 0x0003448 e101 BNZ 0x344c00344a d7d4 BRA 0x33f4} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c00344c 04df DECF 0xdf,0x0,0x0 if (cp.type==ptPGM) canParse(cp); F:\MCP\projects\CAN\canBase\Source\CAN.c00344e e12c BNZ 0x34a8003450 cfd9 MOVFF 0xfd9,0xfe9003452 ffe9003454 cfda MOVFF 0xfda,0xfea003456 ffea003458 cfee MOVFF 0xfee,0xfe600345a ffe600345c cfee MOVFF 0xfee,0xfe600345e ffe6003460 cfee MOVFF 0xfee,0xfe6003462 ffe6003464 cfee MOVFF 0xfee,0xfe6003466 ffe6003468 cfee MOVFF 0xfee,0xfe600346a ffe600346c cfee MOVFF 0xfee,0xfe600346e ffe6003470 cfee MOVFF 0xfee,0xfe6003472 ffe6003474 cfee MOVFF 0xfee,0xfe6003476 ffe6003478 cfee MOVFF 0xfee,0xfe600347a ffe600347c cfee MOVFF 0xfee,0xfe600347e ffe6003480 cfee MOVFF 0xfee,0xfe6003482 ffe6003484 cfee MOVFF 0xfee,0xfe6003486 ffe6003488 cfee MOVFF 0xfee,0xfe600348a ffe600348c cfee MOVFF 0xfee,0xfe600348e ffe6003490 cfee MOVFF 0xfee,0xfe6003492 ffe6003494 cfee MOVFF 0xfee,0xfe6003496 ffe6003498 cfee MOVFF 0xfee,0xfe600349a ffe600349c ec2c CALL 0x3e58,0x000349e f01f0034a0 6e00 MOVWF 0x0,0x00034a2 0e11 MOVLW 0x110034a4 5ee1 SUBWF 0xe1,0x1,0x00034a6 5000 MOVF 0x0,0x0,0x00034a8 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canBase\Source\CAN.c0034aa 5ce1 SUBWF 0xe1,0x0,0x00034ac e202 BC 0x34b20034ae 6ae1 CLRF 0xe1,0x00034b0 52e5 MOVF 0xe5,0x1,0x00034b2 6ee1 MOVWF 0xe1,0x00034b4 52e5 MOVF 0xe5,0x1,0x00034b6 cfe7 MOVFF 0xfe7,0xfd90034b8 ffd90034ba 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.c0034bc cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PACKET cp, CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0034be ffe60034c0 cfe1 MOVFF 0xfe1,0xfd90034c2 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0034c4 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034c6 b740 BTFSC 0x40,0x3,0x10034c8 d005 BRA 0x34d40034ca 0e00 MOVLW 0x00034cc 1477 ANDWF 0x77,0x0,0x00034ce 0903 IORLW 0x30034d0 6e77 MOVWF 0x77,0x00034d2 d012 BRA 0x34f8 else if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034d4 010f MOVLB 0xf0034d6 b730 BTFSC 0x30,0x3,0x10034d8 d005 BRA 0x34e40034da 0e00 MOVLW 0x00034dc 1477 ANDWF 0x77,0x0,0x00034de 0904 IORLW 0x40034e0 6e77 MOVWF 0x77,0x00034e2 d00a BRA 0x34f8 else if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034e4 010f MOVLB 0xf0034e6 b720 BTFSC 0x20,0x3,0x10034e8 d005 BRA 0x34f40034ea 0e00 MOVLW 0x00034ec 1477 ANDWF 0x77,0x0,0x00034ee 0905 IORLW 0x50034f0 6e77 MOVWF 0x77,0x00034f2 d002 BRA 0x34f8 else { return FALSE;} // None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c0034f4 0e00 MOVLW 0x00034f6 d0bd BRA 0x3672F:\MCP\projects\CAN\canBase\Source\CAN.c0034f8 0eed MOVLW 0xed if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0034fa cfdb MOVFF 0xfdb,0x00034fc f0000034fe 3400 RLCF 0x0,0x0,0x0003500 e20e BC 0x351e003502 0eed MOVLW 0xed003504 cfdb MOVFF 0xfdb,0x1003506 f001003508 0e03 MOVLW 0x300350a 6ee7 MOVWF 0xe7,0x000350c 1801 XORWF 0x1,0x0,0x000350e aee8 BTFSS 0xe8,0x7,0x0003510 d002 BRA 0x3516003512 3401 RLCF 0x1,0x0,0x0003514 d003 BRA 0x351c003516 50e7 MOVF 0xe7,0x0,0x0003518 80d8 BSF 0xd8,0x0,0x000351a 5401 SUBFWB 0x1,0x0,0x000351c e202 BC 0x352200351e 0eed MOVLW 0xed003520 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.cF:\MCP\projects\CAN\canBase\Source\CAN.c003522 0eee MOVLW 0xee if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003524 50db MOVF 0xdb,0x0,0x0003526 e124 BNZ 0x3570{ F:\MCP\projects\CAN\canBase\Source\CAN.c003528 0ef3 MOVLW 0xf3 RXB0SIDH = ((cp.type&0x3)<<6)+((cp.boot.type&0x7)<<3)+((cp.boot.offset&0xE0)>>5); F:\MCP\projects\CAN\canBase\Source\CAN.c00352a 50db MOVF 0xdb,0x0,0x000352c 0be0 ANDLW 0xe000352e 0be0 ANDLW 0xe0003530 38e8 SWAPF 0xe8,0x0,0x0003532 40e8 RRNCF 0xe8,0x0,0x0003534 6e01 MOVWF 0x1,0x0003536 0ef2 MOVLW 0xf2003538 50db MOVF 0xdb,0x0,0x000353a 0b07 ANDLW 0x700353c 0d08 MULLW 0x800353e cff3 MOVFF 0xff3,0x0003540 f000003542 0eee MOVLW 0xee003544 50db MOVF 0xdb,0x0,0x0003546 0b03 ANDLW 0x3003548 0d40 MULLW 0x4000354a 50f3 MOVF 0xf3,0x0,0x000354c 2400 ADDWF 0x0,0x0,0x000354e 2401 ADDWF 0x1,0x0,0x0003550 6e61 MOVWF 0x61,0x0003552 0ef3 MOVLW 0xf3 RXB0SIDL = ((cp.boot.offset&0x1C)<<3)+(cp.boot.offset&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003554 50db MOVF 0xdb,0x0,0x0003556 0b03 ANDLW 0x3003558 6e00 MOVWF 0x0,0x000355a 0ef3 MOVLW 0xf300355c 50db MOVF 0xdb,0x0,0x000355e 0b1c ANDLW 0x1c003560 0d08 MULLW 0x8003562 50f3 MOVF 0xf3,0x0,0x0003564 2400 ADDWF 0x0,0x0,0x0003566 6e62 MOVWF 0x62,0x0003568 0ef4 MOVLW 0xf4 RXB0EIDH = cp.boot.rid; F:\MCP\projects\CAN\canBase\Source\CAN.c00356a 50db MOVF 0xdb,0x0,0x000356c 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c00356e d04f BRA 0x360e else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c003570 0eef MOVLW 0xef RXB0SIDH = ((cp.type&0x3)<<6)+((cp.pgm.class&0xF)<<2)+((cp.pgm.id&0x6000)>>13); F:\MCP\projects\CAN\canBase\Source\CAN.c003572 50db MOVF 0xdb,0x0,0x0003574 0b0f ANDLW 0xf003576 0d04 MULLW 0x4003578 cff3 MOVFF 0xff3,0x200357a f00200357c 0eee MOVLW 0xee00357e 50db MOVF 0xdb,0x0,0x0003580 0b03 ANDLW 0x3003582 0d40 MULLW 0x40003584 50f3 MOVF 0xf3,0x0,0x0003586 2402 ADDWF 0x2,0x0,0x0003588 6e00 MOVWF 0x0,0x000358a 6a01 CLRF 0x1,0x000358c be00 BTFSC 0x0,0x7,0x000358e 6801 SETF 0x1,0x0003590 0ef0 MOVLW 0xf0003592 cfdb MOVFF 0xfdb,0x3003594 f003003596 0ef1 MOVLW 0xf1003598 cfdb MOVFF 0xfdb,0x400359a f00400359c 0e00 MOVLW 0x000359e 1603 ANDWF 0x3,0x1,0x00035a0 0e60 MOVLW 0x600035a2 1604 ANDWF 0x4,0x1,0x00035a4 3804 SWAPF 0x4,0x0,0x00035a6 6a04 CLRF 0x4,0x00035a8 30e8 RRCF 0xe8,0x0,0x00035aa 0b07 ANDLW 0x70035ac 6e03 MOVWF 0x3,0x00035ae 5000 MOVF 0x0,0x0,0x00035b0 2403 ADDWF 0x3,0x0,0x00035b2 6e61 MOVWF 0x61,0x00035b4 0ef0 MOVLW 0xf0 RXB0SIDL = ((cp.pgm.id&0x1C00)>>5)+((cp.pgm.id&0x300)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0035b6 cfdb MOVFF 0xfdb,0x00035b8 f0000035ba 0ef1 MOVLW 0xf10035bc cfdb MOVFF 0xfdb,0x10035be f0010035c0 0e00 MOVLW 0x00035c2 1600 ANDWF 0x0,0x1,0x00035c4 0e1c MOVLW 0x1c0035c6 1601 ANDWF 0x1,0x1,0x00035c8 0e05 MOVLW 0x50035ca 90d8 BCF 0xd8,0x0,0x00035cc 3201 RRCF 0x1,0x1,0x00035ce 3200 RRCF 0x0,0x1,0x00035d0 04e8 DECF 0xe8,0x0,0x00035d2 e1fb BNZ 0x35ca0035d4 0ef0 MOVLW 0xf00035d6 cfdb MOVFF 0xfdb,0x20035d8 f0020035da 0ef1 MOVLW 0xf10035dc cfdb MOVFF 0xfdb,0x30035de f0030035e0 0e00 MOVLW 0x00035e2 1602 ANDWF 0x2,0x1,0x00035e4 0e03 MOVLW 0x30035e6 1603 ANDWF 0x3,0x1,0x00035e8 c003 MOVFF 0x3,0x20035ea f0020035ec 6a03 CLRF 0x3,0x00035ee 5000 MOVF 0x0,0x0,0x00035f0 2402 ADDWF 0x2,0x0,0x00035f2 6e62 MOVWF 0x62,0x00035f4 0eff MOVLW 0xff RXB0EIDH = (cp.pgm.id&0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0035f6 6ee7 MOVWF 0xe7,0x00035f8 0ef0 MOVLW 0xf00035fa cfdb MOVFF 0xfdb,0x00035fc f0000035fe 0ef1 MOVLW 0xf1003600 cfdb MOVFF 0xfdb,0x1003602 f001003604 50e7 MOVF 0xe7,0x0,0x0003606 1600 ANDWF 0x0,0x1,0x0003608 6a01 CLRF 0x1,0x000360a 5000 MOVF 0x0,0x0,0x000360c 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c00360e c09d MOVFF 0x9d,0xf64 RXB0EIDL = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c003610 ff64F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c003612 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c003614 0ef6 MOVLW 0xf6 if (cp.length>8) RXB0DLC=8; else RXB0DLC=cp.length; F:\MCP\projects\CAN\canBase\Source\CAN.c003616 50db MOVF 0xdb,0x0,0x0003618 0808 SUBLW 0x800361a e203 BC 0x362200361c 0e08 MOVLW 0x800361e 6e65 MOVWF 0x65,0x0003620 d003 BRA 0x3628003622 0ef6 MOVLW 0xf6003624 50db MOVF 0xdb,0x0,0x0003626 6e65 MOVWF 0x65,0x0F:\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.c003628 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.c00362a 0ef7 MOVLW 0xf7 RXB0D0=cp.data[0]; RXB0D1=cp.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c00362c 50db MOVF 0xdb,0x0,0x000362e 6e66 MOVWF 0x66,0x0003630 0ef8 MOVLW 0xf8003632 50db MOVF 0xdb,0x0,0x0003634 6e67 MOVWF 0x67,0x0003636 0ef9 MOVLW 0xf9 RXB0D2=cp.data[2]; RXB0D3=cp.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c003638 50db MOVF 0xdb,0x0,0x000363a 6e68 MOVWF 0x68,0x000363c 0efa MOVLW 0xfa00363e 50db MOVF 0xdb,0x0,0x0003640 6e69 MOVWF 0x69,0x0003642 0efb MOVLW 0xfb RXB0D4=cp.data[4]; RXB0D5=cp.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c003644 50db MOVF 0xdb,0x0,0x0003646 6e6a MOVWF 0x6a,0x0003648 0efc MOVLW 0xfc00364a 50db MOVF 0xdb,0x0,0x000364c 6e6b MOVWF 0x6b,0x000364e 0efd MOVLW 0xfd RXB0D6=cp.data[6]; RXB0D7=cp.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c003650 50db MOVF 0xdb,0x0,0x0003652 6e6c MOVWF 0x6c,0x0003654 0efe MOVLW 0xfe003656 50db MOVF 0xdb,0x0,0x0003658 6e6d MOVWF 0x6d,0x0// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c00365a 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.c00365c 0eed MOVLW 0xed RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c00365e cfdb MOVFF 0xfdb,0xfe6003660 ffe6003662 0efc MOVLW 0xfc003664 1460 ANDWF 0x60,0x0,0x0003666 52e5 MOVF 0xe5,0x1,0x0003668 10e7 IORWF 0xe7,0x0,0x000366a 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.c00366c 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.c00366e 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c003670 d000 BRA 0x3672F:\MCP\projects\CAN\canBase\Source\CAN.c003672 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c003674 cfe7 MOVFF 0xfe7,0xfd9003676 ffd9003678 0012 RETURN 0x0/********************************************************************* 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.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cstatic TICK 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.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.cF:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c004514 0e84 MOVLW 0x84 T0CON = 0b10000000 | TICK_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c004516 6ed5 MOVWF 0xd5,0x0004518 0ef3 MOVLW 0xf3 TMR0H = (BYTE)((TICK_COUNTER & 0xFF00)>>8); F:\MCP\projects\CAN\canBase\Source\Tick.c00451a 6ed7 MOVWF 0xd7,0x000451c 0ecb MOVLW 0xcb TMR0L = (TICK_COUNTER & 0xFF); F:\MCP\projects\CAN\canBase\Source\Tick.c00451e 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c004520 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c004522 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c004524 84f1 BSF 0xf1,0x2,0x0 INTCON2bits.TMR0IP = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c004526 0100 MOVLB 0x0 TickCount = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c004528 6b99 CLRF 0x99,0x100452a 6b9a CLRF 0x9a,0x100452c 6b9b CLRF 0x9b,0x100452e 6b9c CLRF 0x9c,0x1004530 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.c004532 c099 MOVFF 0x99,0x29 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c004534 f029004536 c09a MOVFF 0x9a,0x2a004538 f02a00453a c09b MOVFF 0x9b,0x2b00453c f02b00453e c09c MOVFF 0x9c,0x2c004540 f02c004542 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.c004544 50f2 MOVF 0xf2,0x0,0x0 if(INTCONbits.TMR0IF==1 && INTCONbits.TMR0IE==1) F:\MCP\projects\CAN\canBase\Source\Tick.c004546 0b04 ANDLW 0x4004548 e00e BZ 0x456600454a 50f2 MOVF 0xf2,0x0,0x000454c 0b20 ANDLW 0x2000454e e00b BZ 0x4566{ F:\MCP\projects\CAN\canBase\Source\Tick.c004550 0ef3 MOVLW 0xf3 TMR0H = (BYTE)((TICK_COUNTER & 0xFF00)>>8); F:\MCP\projects\CAN\canBase\Source\Tick.c004552 6ed7 MOVWF 0xd7,0x0004554 0ecb MOVLW 0xcb TMR0L = (TICK_COUNTER & 0xFF); F:\MCP\projects\CAN\canBase\Source\Tick.c004556 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c004558 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c00455a 2b99 INCF 0x99,0x1,0x100455c 0e00 MOVLW 0x000455e 239a ADDWFC 0x9a,0x1,0x1004560 239b ADDWFC 0x9b,0x1,0x1004562 239c ADDWFC 0x9c,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c004564 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c004566 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Main application F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/Main.c $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Last changed: $LastChangedDate: 2007-03-01 14:38:06 +0100 (to, 01 mar 2007) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 347 $ F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include "..\canBoot\Include\boot.h" F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c#include <adc.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c#include <blinds.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003abc cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c003abe ffe6003ac0 cfe1 MOVFF 0xfe1,0xfd9003ac2 ffd9003ac4 0e28 MOVLW 0x28003ac6 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.c003ac8 d9c0 RCALL 0x3e4a mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003aca ec34 CALL 0x3068,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003acc f018F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003ace 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c003ad0 6ee6 MOVWF 0xe6,0x0003ad2 0e01 MOVLW 0x1003ad4 6ee6 MOVWF 0xe6,0x0003ad6 ec49 CALL 0x3e92,0x0003ad8 f01f003ada 52e5 MOVF 0xe5,0x1,0x0003adc 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003ade ecbb CALL 0x4176,0x0 blindsInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae0 f020003ae2 6ae6 CLRF 0xe6,0x0 blindsTurn(0); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae4 eccb CALL 0x4196,0x0003ae6 f020003ae8 52e5 MOVF 0xe5,0x1,0x0#else F:\MCP\projects\CAN\canTemp\Source\Main.cBLINDS0P_IO=0; F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003d9c d6a6 BRA 0x3aea while(1) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003aea ec99 CALL 0x4532,0x0 TICK currentTick = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003aec f022003aee c029 MOVFF 0x29,0xfde003af0 ffde003af2 c02a MOVFF 0x2a,0xfde003af4 ffde003af6 c02b MOVFF 0x2b,0xfde003af8 ffde003afa c02c MOVFF 0x2c,0xfdd003afc ffdd003afe 52dd MOVF 0xdd,0x1,0x0003b00 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK tick_led = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK tick_temperature = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK tick_blinds = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic BOOL getNewTemperature = TRUE; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic BYTE lastTemperature = TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003b02 cfd9 MOVFF 0xfd9,0xfe9 if ((currentTick-tick_led)>(1*TICK_1S)) F:\MCP\projects\CAN\canTemp\Source\Main.c003b04 ffe9003b06 cfda MOVFF 0xfda,0xfea003b08 ffea003b0a 0100 MOVLB 0x0003b0c 5175 MOVF 0x75,0x0,0x1003b0e 5cee SUBWF 0xee,0x0,0x0003b10 6e00 MOVWF 0x0,0x0003b12 5176 MOVF 0x76,0x0,0x1003b14 58ee SUBWFB 0xee,0x0,0x0003b16 6e01 MOVWF 0x1,0x0003b18 5177 MOVF 0x77,0x0,0x1003b1a 58ee SUBWFB 0xee,0x0,0x0003b1c 6e02 MOVWF 0x2,0x0003b1e 5178 MOVF 0x78,0x0,0x1003b20 58ee SUBWFB 0xee,0x0,0x0003b22 6e03 MOVWF 0x3,0x0003b24 80d8 BSF 0xd8,0x0,0x0003b26 0e64 MOVLW 0x64003b28 5400 SUBFWB 0x0,0x0,0x0003b2a 0e00 MOVLW 0x0003b2c 5401 SUBFWB 0x1,0x0,0x0003b2e 0e00 MOVLW 0x0003b30 5402 SUBFWB 0x2,0x0,0x0003b32 0e00 MOVLW 0x0003b34 5403 SUBFWB 0x3,0x0,0x0003b36 e20c BC 0x3b50{ F:\MCP\projects\CAN\canTemp\Source\Main.c003b38 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c003b3a cfdf MOVFF 0xfdf,0x75 tick_led = currentTick; F:\MCP\projects\CAN\canTemp\Source\Main.c003b3c f075003b3e 0e01 MOVLW 0x1003b40 cfdb MOVFF 0xfdb,0x76003b42 f076003b44 0e02 MOVLW 0x2003b46 cfdb MOVFF 0xfdb,0x77003b48 f077003b4a 0e03 MOVLW 0x3003b4c cfdb MOVFF 0xfdb,0x78003b4e f078} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003b50 cfd9 MOVFF 0xfd9,0xfe9 if ((currentTick-tick_blinds)>(3*TICK_1S)) F:\MCP\projects\CAN\canTemp\Source\Main.c003b52 ffe9003b54 cfda MOVFF 0xfda,0xfea003b56 ffea003b58 517d MOVF 0x7d,0x0,0x1003b5a 5cee SUBWF 0xee,0x0,0x0003b5c 6e00 MOVWF 0x0,0x0003b5e 517e MOVF 0x7e,0x0,0x1003b60 58ee SUBWFB 0xee,0x0,0x0003b62 6e01 MOVWF 0x1,0x0003b64 517f MOVF 0x7f,0x0,0x1003b66 58ee SUBWFB 0xee,0x0,0x0003b68 6e02 MOVWF 0x2,0x0003b6a 5180 MOVF 0x80,0x0,0x1003b6c 58ee SUBWFB 0xee,0x0,0x0003b6e 6e03 MOVWF 0x3,0x0003b70 80d8 BSF 0xd8,0x0,0x0003b72 0e2c MOVLW 0x2c003b74 5400 SUBFWB 0x0,0x0,0x0003b76 0e01 MOVLW 0x1003b78 5401 SUBFWB 0x1,0x0,0x0003b7a 0e00 MOVLW 0x0003b7c 5402 SUBFWB 0x2,0x0,0x0003b7e 0e00 MOVLW 0x0003b80 5403 SUBFWB 0x3,0x0,0x0003b82 e258 BC 0x3c34{ F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_PACKET outCp; F:\MCP\projects\CAN\canTemp\Source\Main.c003b84 0e01 MOVLW 0x1 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003b86 6ef3 MOVWF 0xf3,0x0003b88 0e04 MOVLW 0x4003b8a cff3 MOVFF 0xff3,0xfdb003b8c ffdb003b8e 0e01 MOVLW 0x1 outCp.pgm.class=pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b90 6ef3 MOVWF 0xf3,0x0003b92 0e05 MOVLW 0x5003b94 cff3 MOVFF 0xff3,0xfdb003b96 ffdb003b98 0e07 MOVLW 0x7 outCp.pgm.id=pstBLIND_TR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b9a 6ef3 MOVWF 0xf3,0x0003b9c 0e06 MOVLW 0x6003b9e cff3 MOVFF 0xff3,0xfdb003ba0 ffdb003ba2 0e07 MOVLW 0x7003ba4 6adb CLRF 0xdb,0x0003ba6 0e01 MOVLW 0x1 outCp.length=1; F:\MCP\projects\CAN\canTemp\Source\Main.c003ba8 6ef3 MOVWF 0xf3,0x0003baa 0e0c MOVLW 0xc003bac cff3 MOVFF 0xff3,0xfdb003bae ffdb003bb0 ecc8 CALL 0x4190,0x0 outCp.data[0]=blindsGetPrecent(); F:\MCP\projects\CAN\canTemp\Source\Main.c003bb2 f020003bb4 6ee7 MOVWF 0xe7,0x0003bb6 0e0d MOVLW 0xd003bb8 cfe7 MOVFF 0xfe7,0xfdb003bba ffdb003bbc 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003bbe 6ee6 MOVWF 0xe6,0x0003bc0 50d9 MOVF 0xd9,0x0,0x0003bc2 0f04 ADDLW 0x4003bc4 6ee9 MOVWF 0xe9,0x0003bc6 cfda MOVFF 0xfda,0xfea003bc8 ffea003bca cfee MOVFF 0xfee,0xfe6003bcc ffe6003bce cfee MOVFF 0xfee,0xfe6003bd0 ffe6003bd2 cfee MOVFF 0xfee,0xfe6003bd4 ffe6003bd6 cfee MOVFF 0xfee,0xfe6003bd8 ffe6003bda cfee MOVFF 0xfee,0xfe6003bdc ffe6003bde cfee MOVFF 0xfee,0xfe6003be0 ffe6003be2 cfee MOVFF 0xfee,0xfe6003be4 ffe6003be6 cfee MOVFF 0xfee,0xfe6003be8 ffe6003bea cfee MOVFF 0xfee,0xfe6003bec ffe6003bee cfee MOVFF 0xfee,0xfe6003bf0 ffe6003bf2 cfee MOVFF 0xfee,0xfe6003bf4 ffe6003bf6 cfee MOVFF 0xfee,0xfe6003bf8 ffe6003bfa cfee MOVFF 0xfee,0xfe6003bfc ffe6003bfe cfee MOVFF 0xfee,0xfe6003c00 ffe6003c02 cfee MOVFF 0xfee,0xfe6003c04 ffe6003c06 cfee MOVFF 0xfee,0xfe6003c08 ffe6003c0a cfee MOVFF 0xfee,0xfe6003c0c ffe6003c0e ec5e CALL 0x34bc,0x0003c10 f01a003c12 6e00 MOVWF 0x0,0x0003c14 0e12 MOVLW 0x12003c16 5ee1 SUBWF 0xe1,0x1,0x0003c18 5000 MOVF 0x0,0x0,0x0003c1a 0900 IORLW 0x0003c1c e0cf BZ 0x3bbcF:\MCP\projects\CAN\canTemp\Source\Main.c003c1e cfdf MOVFF 0xfdf,0x7d tick_blinds = currentTick; F:\MCP\projects\CAN\canTemp\Source\Main.c003c20 f07d003c22 0e01 MOVLW 0x1003c24 cfdb MOVFF 0xfdb,0x7e003c26 f07e003c28 0e02 MOVLW 0x2003c2a cfdb MOVFF 0xfdb,0x7f003c2c f07f003c2e 0e03 MOVLW 0x3003c30 cfdb MOVFF 0xfdb,0x80003c32 f080} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003c34 cfd9 MOVFF 0xfd9,0xfe9 if ((currentTick-tick_temperature)>(2*TICK_1S) && getNewTemperature==TRUE) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c003c36 ffe9003c38 cfda MOVFF 0xfda,0xfea003c3a ffea003c3c 0100 MOVLB 0x0003c3e 5179 MOVF 0x79,0x0,0x1003c40 5cee SUBWF 0xee,0x0,0x0003c42 6e00 MOVWF 0x0,0x0003c44 517a MOVF 0x7a,0x0,0x1003c46 58ee SUBWFB 0xee,0x0,0x0003c48 6e01 MOVWF 0x1,0x0003c4a 517b MOVF 0x7b,0x0,0x1003c4c 58ee SUBWFB 0xee,0x0,0x0003c4e 6e02 MOVWF 0x2,0x0003c50 517c MOVF 0x7c,0x0,0x1003c52 58ee SUBWFB 0xee,0x0,0x0003c54 6e03 MOVWF 0x3,0x0003c56 80d8 BSF 0xd8,0x0,0x0003c58 0ec8 MOVLW 0xc8003c5a 5400 SUBFWB 0x0,0x0,0x0003c5c 0e00 MOVLW 0x0003c5e 5401 SUBFWB 0x1,0x0,0x0003c60 0e00 MOVLW 0x0003c62 5402 SUBFWB 0x2,0x0,0x0003c64 0e00 MOVLW 0x0003c66 5403 SUBFWB 0x3,0x0,0x0003c68 e219 BC 0x3c9c003c6a 0581 DECF 0x81,0x0,0x1003c6c e117 BNZ 0x3c9c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003c6e 0582 DECF 0x82,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c70 e102 BNZ 0x3c76003c72 0e02 MOVLW 0x2003c74 d001 BRA 0x3c78003c76 0e01 MOVLW 0x1003c78 6f82 MOVWF 0x82,0x1003c7a 6ee6 MOVWF 0xe6,0x0 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c003c7c ecac CALL 0x3f58,0x0003c7e f01f003c80 52e5 MOVF 0xe5,0x1,0x0003c82 0100 MOVLB 0x0 getNewTemperature=FALSE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c84 6b81 CLRF 0x81,0x1003c86 cfdf MOVFF 0xfdf,0x79 tick_temperature = currentTick; F:\MCP\projects\CAN\canTemp\Source\Main.c003c88 f079003c8a 0e01 MOVLW 0x1003c8c cfdb MOVFF 0xfdb,0x7a003c8e f07a003c90 0e02 MOVLW 0x2003c92 cfdb MOVFF 0xfdb,0x7b003c94 f07b003c96 0e03 MOVLW 0x3003c98 cfdb MOVFF 0xfdb,0x7c003c9a f07c} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003c9c ecb8 CALL 0x4170,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c003c9e f020003ca0 0900 IORLW 0x0003ca2 e101 BNZ 0x3ca6003ca4 d722 BRA 0x3aea{ F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_PACKET outCp; F:\MCP\projects\CAN\canTemp\Source\Main.cBYTE decimal; F:\MCP\projects\CAN\canTemp\Source\Main.csigned char tenth; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003ca6 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c003ca8 0f26 ADDLW 0x26003caa 6ee6 MOVWF 0xe6,0x0003cac 0e00 MOVLW 0x0003cae 20da ADDWFC 0xda,0x0,0x0003cb0 6ee6 MOVWF 0xe6,0x0003cb2 50d9 MOVF 0xd9,0x0,0x0003cb4 0f27 ADDLW 0x27003cb6 6ee6 MOVWF 0xe6,0x0003cb8 0e00 MOVLW 0x0003cba 20da ADDWFC 0xda,0x0,0x0003cbc 6ee6 MOVWF 0xe6,0x0003cbe ecd5 CALL 0x3faa,0x0003cc0 f01f003cc2 52e5 MOVF 0xe5,0x1,0x0003cc4 52e5 MOVF 0xe5,0x1,0x0003cc6 52e5 MOVF 0xe5,0x1,0x0003cc8 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canTemp\Source\Main.c003cca 0e01 MOVLW 0x1 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003ccc 6ef3 MOVWF 0xf3,0x0003cce 0e15 MOVLW 0x15003cd0 cff3 MOVFF 0xff3,0xfdb003cd2 ffdb003cd4 0e01 MOVLW 0x1 outCp.pgm.class =pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003cd6 6ef3 MOVWF 0xf3,0x0003cd8 0e16 MOVLW 0x16003cda cff3 MOVFF 0xff3,0xfdb003cdc ffdb003cde 0100 MOVLB 0x0 outCp.pgm.id =(lastTemperature==TEMPERATURE_INSIDE?pstTEMP_INSIDE:pstTEMP_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c003ce0 0582 DECF 0x82,0x0,0x1003ce2 e102 BNZ 0x3ce8003ce4 0e01 MOVLW 0x1003ce6 d001 BRA 0x3cea003ce8 0e02 MOVLW 0x2003cea 6e00 MOVWF 0x0,0x0003cec 6a01 CLRF 0x1,0x0003cee be00 BTFSC 0x0,0x7,0x0003cf0 6801 SETF 0x1,0x0003cf2 0e17 MOVLW 0x17003cf4 c000 MOVFF 0x0,0xfdb003cf6 ffdb003cf8 0e18 MOVLW 0x18003cfa c001 MOVFF 0x1,0xfdb003cfc ffdb003cfe 0e02 MOVLW 0x2 outCp.length =2; F:\MCP\projects\CAN\canTemp\Source\Main.c003d00 6ef3 MOVWF 0xf3,0x0003d02 0e1d MOVLW 0x1d003d04 cff3 MOVFF 0xff3,0xfdb003d06 ffdb003d08 0e27 MOVLW 0x27 outCp.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c003d0a 50db MOVF 0xdb,0x0,0x0003d0c 6ee7 MOVWF 0xe7,0x0003d0e 0e1f MOVLW 0x1f003d10 cfe7 MOVFF 0xfe7,0xfdb003d12 ffdb003d14 0e26 MOVLW 0x26 outCp.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c003d16 50db MOVF 0xdb,0x0,0x0003d18 6ee7 MOVWF 0xe7,0x0003d1a 0e1e MOVLW 0x1e003d1c cfe7 MOVFF 0xfe7,0xfdb003d1e ffdb003d20 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003d22 6ee6 MOVWF 0xe6,0x0003d24 50d9 MOVF 0xd9,0x0,0x0003d26 0f15 ADDLW 0x15003d28 6ee9 MOVWF 0xe9,0x0003d2a cfda MOVFF 0xfda,0xfea003d2c ffea003d2e cfee MOVFF 0xfee,0xfe6003d30 ffe6003d32 cfee MOVFF 0xfee,0xfe6003d34 ffe6003d36 cfee MOVFF 0xfee,0xfe6003d38 ffe6003d3a cfee MOVFF 0xfee,0xfe6003d3c ffe6003d3e cfee MOVFF 0xfee,0xfe6003d40 ffe6003d42 cfee MOVFF 0xfee,0xfe6003d44 ffe6003d46 cfee MOVFF 0xfee,0xfe6003d48 ffe6003d4a cfee MOVFF 0xfee,0xfe6003d4c ffe6003d4e cfee MOVFF 0xfee,0xfe6003d50 ffe6003d52 cfee MOVFF 0xfee,0xfe6003d54 ffe6003d56 cfee MOVFF 0xfee,0xfe6003d58 ffe6003d5a cfee MOVFF 0xfee,0xfe6003d5c ffe6003d5e cfee MOVFF 0xfee,0xfe6003d60 ffe6003d62 cfee MOVFF 0xfee,0xfe6003d64 ffe6003d66 cfee MOVFF 0xfee,0xfe6003d68 ffe6003d6a cfee MOVFF 0xfee,0xfe6003d6c ffe6003d6e cfee MOVFF 0xfee,0xfe6003d70 ffe6003d72 ec5e CALL 0x34bc,0x0003d74 f01a003d76 6e00 MOVWF 0x0,0x0003d78 0e12 MOVLW 0x12003d7a 5ee1 SUBWF 0xe1,0x1,0x0003d7c 5000 MOVF 0x0,0x0,0x0003d7e 0900 IORLW 0x0003d80 e0cf BZ 0x3d20F:\MCP\projects\CAN\canTemp\Source\Main.c003d82 0100 MOVLB 0x0 getNewTemperature=TRUE; F:\MCP\projects\CAN\canTemp\Source\Main.c003d84 0e01 MOVLW 0x1003d86 6f81 MOVWF 0x81,0x1003d88 cfdf MOVFF 0xfdf,0x79 tick_temperature = currentTick; F:\MCP\projects\CAN\canTemp\Source\Main.c003d8a f079003d8c cfdb MOVFF 0xfdb,0x7a003d8e f07a003d90 0e02 MOVLW 0x2003d92 cfdb MOVFF 0xfdb,0x7b003d94 f07b003d96 0e03 MOVLW 0x3003d98 cfdb MOVFF 0xfdb,0x7c003d9a f07c} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c} // end while F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c} // end main F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canTemp\Source\Main.c003d9e cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003da0 ffe4003da2 cfe2 MOVFF 0xfe2,0xfda003da4 ffda003da6 cfe9 MOVFF 0xfe9,0xfe4003da8 ffe4003daa cfea MOVFF 0xfea,0xfe4003dac ffe4003dae cff6 MOVFF 0xff6,0xfe4003db0 ffe4003db2 cff7 MOVFF 0xff7,0xfe4003db4 ffe4003db6 cff5 MOVFF 0xff5,0xfe4003db8 ffe4003dba cff3 MOVFF 0xff3,0xfe4003dbc ffe4003dbe cff4 MOVFF 0xff4,0xfe4003dc0 ffe4003dc2 cffa MOVFF 0xffa,0xfe4003dc4 ffe4003dc6 ee00 LFSR 0x0,0x23003dc8 f023003dca 0e14 MOVLW 0x14003dcc 04e8 DECF 0xe8,0x0,0x0003dce e303 BNC 0x3dd6003dd0 cfee MOVFF 0xfee,0xfe4003dd2 ffe4003dd4 d7fb BRA 0x3dcc003dd6 ee00 LFSR 0x0,0x0003dd8 f000003dda 0e23 MOVLW 0x23003ddc 04e8 DECF 0xe8,0x0,0x0003dde e303 BNC 0x3de6003de0 cfee MOVFF 0xfee,0xfe4003de2 ffe4003de4 d7fb BRA 0x3ddc003de6 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c003de8 ec9b CALL 0x3136,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003dea f018F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003dec ec6b CALL 0x42d6,0x0 blindsISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003dee f021#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003df0 ec63 CALL 0x3ec6,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003df2 f01f#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003df4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003df6 ee00 LFSR 0x0,0x22003df8 f022003dfa 0e23 MOVLW 0x23003dfc 04e8 DECF 0xe8,0x0,0x0003dfe e303 BNC 0x3e06003e00 cfe5 MOVFF 0xfe5,0xfed003e02 ffed003e04 d7fb BRA 0x3dfc003e06 ee00 LFSR 0x0,0x36003e08 f036003e0a 0e14 MOVLW 0x14003e0c 04e8 DECF 0xe8,0x0,0x0003e0e e303 BNC 0x3e16003e10 cfe5 MOVFF 0xfe5,0xfed003e12 ffed003e14 d7fb BRA 0x3e0c003e16 cfe5 MOVFF 0xfe5,0xffa003e18 fffa003e1a cfe5 MOVFF 0xfe5,0xff4003e1c fff4003e1e cfe5 MOVFF 0xfe5,0xff3003e20 fff3003e22 cfe5 MOVFF 0xfe5,0xff5003e24 fff5003e26 cfe5 MOVFF 0xfe5,0xff7003e28 fff7003e2a cfe5 MOVFF 0xfe5,0xff6003e2c fff6003e2e cfe5 MOVFF 0xfe5,0xfea003e30 ffea003e32 cfe5 MOVFF 0xfe5,0xfe9003e34 ffe9003e36 cfe5 MOVFF 0xfe5,0xfda003e38 ffda003e3a 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canTemp\Source\Main.c003e3c cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003e3e ffe4003e40 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003e42 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003e44 cfe5 MOVFF 0xfe5,0xfda003e46 ffda003e48 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003e4a 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003e4c 9894 BCF 0x94,0x4,0x0 BLINDS0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003e4e 9a94 BCF 0x94,0x5,0x0 BLINDS0P_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canTemp\Source\Main.c003e50 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canTemp\Source\Main.c003e52 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c003e54 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c003e56 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003e58 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_PACKET cp) F:\MCP\projects\CAN\canTemp\Source\Main.c003e5a ffe6003e5c cfe1 MOVFF 0xfe1,0xfd9003e5e ffd9{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003e60 0eef MOVLW 0xef if (cp.pgm.class==pcACTUATOR && cp.pgm.id==patBLIND_TR) F:\MCP\projects\CAN\canTemp\Source\Main.c003e62 50db MOVF 0xdb,0x0,0x0003e64 0802 SUBLW 0x2003e66 e111 BNZ 0x3e8a003e68 50d9 MOVF 0xd9,0x0,0x0003e6a 0ff0 ADDLW 0xf0003e6c 6ee9 MOVWF 0xe9,0x0003e6e 0eff MOVLW 0xff003e70 20da ADDWFC 0xda,0x0,0x0003e72 6eea MOVWF 0xea,0x0003e74 0e07 MOVLW 0x7003e76 18ee XORWF 0xee,0x0,0x0003e78 e108 BNZ 0x3e8a003e7a 50ed MOVF 0xed,0x0,0x0003e7c e106 BNZ 0x3e8a{ F:\MCP\projects\CAN\canTemp\Source\Main.c003e7e 0ef7 MOVLW 0xf7 blindsTurn(cp.data[0]); F:\MCP\projects\CAN\canTemp\Source\Main.c003e80 cfdb MOVFF 0xfdb,0xfe6003e82 ffe6003e84 eccb CALL 0x4196,0x0003e86 f020003e88 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003e8a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003e8c cfe7 MOVFF 0xfe7,0xfd9003e8e ffd9003e90 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canTemp\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canTemp\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = RM_RESET_VECTOR F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003000 efee GOTO 0x45dc _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c003002 f022003004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = RM_HIGH_INTERRUPT_VECTOR F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003008 efcf GOTO 0x3d9e _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00300a f01e00300c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = RM_LOW_INTERRUPT_VECTOR F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c003018 ef1e GOTO 0x3e3c _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00301a f01f00301c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.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-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EERead F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to read from. F:\MCP\projects\CAN\Include\EEAccess.c* Output: Byte read. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c00441a cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c00441c ffe600441e cfe1 MOVFF 0xfe1,0xfd9004420 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c004422 0efe MOVLW 0xfe EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c004424 cfdb MOVFF 0xfdb,0x1004426 f001004428 c001 MOVFF 0x1,0x000442a f00000442c 5001 MOVF 0x1,0x0,0x000442e 6eaa MOVWF 0xaa,0x0004430 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c004432 6ee7 MOVWF 0xe7,0x0004434 0efd MOVLW 0xfd004436 cfdb MOVFF 0xfdb,0x0004438 f00000443a 50e7 MOVF 0xe7,0x0,0x000443c 1600 ANDWF 0x0,0x1,0x000443e 5000 MOVF 0x0,0x0,0x0004440 6ea9 MOVWF 0xa9,0x0004442 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c004444 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c004446 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c004448 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c00444a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00444c cfe7 MOVFF 0xfe7,0xfd900444e ffd9004450 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EEWrite F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to write to and BYTE data to write. F:\MCP\projects\CAN\Include\EEAccess.c* Output: none. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c004452 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c004454 ffe6004456 cfe1 MOVFF 0xfe1,0xfd9004458 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c00445a 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c00445c 0efe MOVLW 0xfe EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c00445e cfdb MOVFF 0xfdb,0x1004460 f001004462 c001 MOVFF 0x1,0x0004464 f000004466 5001 MOVF 0x1,0x0,0x0004468 6eaa MOVWF 0xaa,0x000446a 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c00446c 6ee7 MOVWF 0xe7,0x000446e 0efd MOVLW 0xfd004470 cfdb MOVFF 0xfdb,0x0004472 f000004474 50e7 MOVF 0xe7,0x0,0x0004476 1600 ANDWF 0x0,0x1,0x0004478 5000 MOVF 0x0,0x0,0x000447a 6ea9 MOVWF 0xa9,0x000447c 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c00447e 50db MOVF 0xdb,0x0,0x0004480 6ea8 MOVWF 0xa8,0x0004482 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c004484 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c004486 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c004488 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c00448a 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c00448c 6ea7 MOVWF 0xa7,0x000448e 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c004490 6ea7 MOVWF 0xa7,0x0004492 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c004494 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c004496 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c004498 d7fe BRA 0x449600449a 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c00449c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00449e cfe7 MOVFF 0xfe7,0xfd90044a0 ffd90044a2 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Functions for reading ADC F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c********************************************************************* F:\MCP\projects\CAN\Include\adc.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/adc.c $ F:\MCP\projects\CAN\Include\adc.c* Last changed: $LastChangedDate: 2007-02-25 20:51:08 +0100 (sö, 25 feb 2007) $ F:\MCP\projects\CAN\Include\adc.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\adc.c* Revision: $Revision: 339 $ F:\MCP\projects\CAN\Include\adc.c********************************************************************/ F:\MCP\projects\CAN\Include\adc.c#include <adc.h> F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#ifdef USE_ADC F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cunsigned long TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.cWORD TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cBOOL TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcInit F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: True or false to use external voltage reference or not. portCfg is portconfiguration. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c003e92 cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c003e94 ffe6003e96 cfe1 MOVFF 0xfe1,0xfd9003e98 ffd9{ F:\MCP\projects\CAN\Include\adc.c// Setup ADC to use low interrupt prior and external ref or not. F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c003e9a 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c003e9c 50db MOVF 0xdb,0x0,0x0003e9e 0b0f ANDLW 0xf003ea0 6e00 MOVWF 0x0,0x0003ea2 0efe MOVLW 0xfe003ea4 50db MOVF 0xdb,0x0,0x0003ea6 0b01 ANDLW 0x1003ea8 0d10 MULLW 0x10003eaa 50f3 MOVF 0xf3,0x0,0x0003eac 1000 IORWF 0x0,0x0,0x0003eae 6ec1 MOVWF 0xc1,0x0003eb0 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c003eb2 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c003eb4 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c003eb6 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c003eb8 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c003eba 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c003ebc 8c9f BSF 0x9f,0x6,0x0 IPR1bits.ADIP = 1; // high priority F:\MCP\projects\CAN\Include\adc.c003ebe 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c003ec0 cfe7 MOVFF 0xfe7,0xfd9003ec2 ffd9003ec4 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcISR F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: ADC interrupt rotune. Need to be called from LOW ISR. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cvoid adcISR(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c003ec6 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE==1 && PIR1bits.ADIF==1) F:\MCP\projects\CAN\Include\adc.c003ec8 0b40 ANDLW 0x40003eca e045 BZ 0x3f56003ecc 509e MOVF 0x9e,0x0,0x0003ece 0b40 ANDLW 0x40003ed0 e042 BZ 0x3f56{ F:\MCP\projects\CAN\Include\adc.c003ed2 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c003ed4 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((WORD)ADRESH<<8) | ADRESL; F:\MCP\projects\CAN\Include\adc.c003ed6 6e03 MOVWF 0x3,0x0003ed8 6a02 CLRF 0x2,0x0003eda 50c3 MOVF 0xc3,0x0,0x0003edc 1002 IORWF 0x2,0x0,0x0003ede 6e00 MOVWF 0x0,0x0003ee0 c003 MOVFF 0x3,0x1003ee2 f001003ee4 50e8 MOVF 0xe8,0x0,0x0003ee6 0100 MOVLB 0x0003ee8 278d ADDWF 0x8d,0x1,0x1003eea 5003 MOVF 0x3,0x0,0x0003eec 238e ADDWFC 0x8e,0x1,0x1003eee 0e00 MOVLW 0x0003ef0 238f ADDWFC 0x8f,0x1,0x1003ef2 2390 ADDWFC 0x90,0x1,0x1003ef4 2b91 INCF 0x91,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c003ef6 2392 ADDWFC 0x92,0x1,0x1F:\MCP\projects\CAN\Include\adc.c003ef8 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c003efa 5d91 SUBWF 0x91,0x0,0x1003efc 0e00 MOVLW 0x0003efe 5992 SUBWFB 0x92,0x0,0x1003f00 e324 BNC 0x3f4a{ F:\MCP\projects\CAN\Include\adc.c003f02 c091 MOVFF 0x91,0x0 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c003f04 f000003f06 c092 MOVFF 0x92,0x1003f08 f001003f0a 6a02 CLRF 0x2,0x0003f0c 6a03 CLRF 0x3,0x0003f0e c08d MOVFF 0x8d,0x29003f10 f029003f12 c08e MOVFF 0x8e,0x2a003f14 f02a003f16 c08f MOVFF 0x8f,0x2b003f18 f02b003f1a c090 MOVFF 0x90,0x2c003f1c f02c003f1e c091 MOVFF 0x91,0x2e003f20 f02e003f22 c092 MOVFF 0x92,0x2f003f24 f02f003f26 c002 MOVFF 0x2,0x30003f28 f030003f2a c003 MOVFF 0x3,0x31003f2c f031003f2e ecb4 CALL 0x4568,0x0003f30 f022003f32 c029 MOVFF 0x29,0x8d003f34 f08d003f36 c02a MOVFF 0x2a,0x8e003f38 f08e003f3a c02b MOVFF 0x2b,0x8f003f3c f08f003f3e c02c MOVFF 0x2c,0x90003f40 f090003f42 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c003f44 0e01 MOVLW 0x1003f46 6f9f MOVWF 0x9f,0x1} F:\MCP\projects\CAN\Include\adc.c003f48 0012 RETURN 0x0 else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c003f4a 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c003f4c 6ee6 MOVWF 0xe6,0x0003f4e ecfc CALL 0x45f8,0x0003f50 f022003f52 52e5 MOVF 0xe5,0x1,0x0003f54 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.c003f56 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcConvert F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: Channel to start convert. Between 0 and 15 F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c003f58 cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c003f5a ffe6003f5c cfe1 MOVFF 0xfe1,0xfd9003f5e ffd9{ F:\MCP\projects\CAN\Include\adc.c003f60 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c003f62 50db MOVF 0xdb,0x0,0x0003f64 080f SUBLW 0xf003f66 e202 BC 0x3f6c003f68 0e00 MOVLW 0x0003f6a d014 BRA 0x3f94F:\MCP\projects\CAN\Include\adc.c003f6c 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c003f6e 6b8d CLRF 0x8d,0x1003f70 6b8e CLRF 0x8e,0x1003f72 6b8f CLRF 0x8f,0x1003f74 6b90 CLRF 0x90,0x1003f76 6b91 CLRF 0x91,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c003f78 6b92 CLRF 0x92,0x1F:\MCP\projects\CAN\Include\adc.c003f7a 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c003f7c 14c2 ANDWF 0xc2,0x0,0x0003f7e 6e00 MOVWF 0x0,0x0003f80 0efe MOVLW 0xfe003f82 50db MOVF 0xdb,0x0,0x0003f84 0d04 MULLW 0x4003f86 50f3 MOVF 0xf3,0x0,0x0003f88 1000 IORWF 0x0,0x0,0x0003f8a 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c003f8c 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c003f8e 6b9f CLRF 0x9f,0x1F:\MCP\projects\CAN\Include\adc.c003f90 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c003f92 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c003f94 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c003f96 cfe7 MOVFF 0xfe7,0xfd9003f98 ffd9003f9a 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: Raw read data. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cint adcRead(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c003f9c 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c003f9e 6b9f CLRF 0x9f,0x1003fa0 c08d MOVFF 0x8d,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c003fa2 fff3003fa4 c08e MOVFF 0x8e,0xff4003fa6 fff4003fa8 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: temperatureRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: XX.Y C, where tenth is XX and decimal is Y F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c003faa cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c003fac ffe6003fae cfe1 MOVFF 0xfe1,0xfd9003fb0 ffd9003fb2 0e08 MOVLW 0x8003fb4 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c003fb6 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c003fb8 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c003fba c08d MOVFF 0x8d,0x4 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c003fbc f004003fbe c08e MOVFF 0x8e,0x5003fc0 f005003fc2 c08f MOVFF 0x8f,0x6003fc4 f006003fc6 c090 MOVFF 0x90,0x7003fc8 f007003fca 0e27 MOVLW 0x27003fcc 6e2e MOVWF 0x2e,0x0003fce 6a2f CLRF 0x2f,0x0003fd0 6a30 CLRF 0x30,0x0003fd2 6a31 CLRF 0x31,0x0003fd4 c08d MOVFF 0x8d,0x29003fd6 f029003fd8 c08e MOVFF 0x8e,0x2a003fda f02a003fdc c08f MOVFF 0x8f,0x2b003fde f02b003fe0 c090 MOVFF 0x90,0x2c003fe2 f02c003fe4 ec52 CALL 0x44a4,0x0003fe6 f022003fe8 c025 MOVFF 0x25,0x4003fea f004003fec c026 MOVFF 0x26,0x5003fee f005003ff0 c027 MOVFF 0x27,0x6003ff2 f006003ff4 c028 MOVFF 0x28,0x7003ff6 f007003ff8 0e04 MOVLW 0x4003ffa 90d8 BCF 0xd8,0x0,0x0003ffc 3207 RRCF 0x7,0x1,0x0003ffe 3206 RRCF 0x6,0x1,0x0004000 3205 RRCF 0x5,0x1,0x0004002 3204 RRCF 0x4,0x1,0x0004004 06e8 DECF 0xe8,0x1,0x0004006 e1f9 BNZ 0x3ffa004008 c004 MOVFF 0x4,0x000400a f00000400c c005 MOVFF 0x5,0x100400e f001004010 c006 MOVFF 0x6,0x2004012 f002004014 c007 MOVFF 0x7,0x3004016 f003004018 0ef3 MOVLW 0xf300401a 5e00 SUBWF 0x0,0x1,0x000401c 0e01 MOVLW 0x100401e 5a01 SUBWFB 0x1,0x1,0x0004020 0e00 MOVLW 0x0004022 5a02 SUBWFB 0x2,0x1,0x0004024 5a03 SUBWFB 0x3,0x1,0x0004026 0e06 MOVLW 0x6004028 c000 MOVFF 0x0,0xfdb00402a ffdb00402c 0e07 MOVLW 0x700402e c001 MOVFF 0x1,0xfdb004030 ffdbF:\MCP\projects\CAN\Include\adc.c004032 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c004034 6e00 MOVWF 0x0,0x0004036 6a01 CLRF 0x1,0x0004038 0e06 MOVLW 0x600403a cfdb MOVFF 0xfdb,0x2b00403c f02b00403e 0e07 MOVLW 0x7004040 cfdb MOVFF 0xfdb,0x2c004042 f02c004044 c000 MOVFF 0x0,0x30004046 f030004048 c001 MOVFF 0x1,0x3100404a f03100404c ec56 CALL 0x38ac,0x000404e f01c004050 0e02 MOVLW 0x2004052 c02b MOVFF 0x2b,0xfdb004054 ffdb004056 0e03 MOVLW 0x3004058 c02c MOVFF 0x2c,0xfdb00405a ffdb00405c 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c00405e cfdb MOVFF 0xfdb,0x2004060 f002004062 0e07 MOVLW 0x7004064 cfdb MOVFF 0xfdb,0x3004066 f003004068 0e0a MOVLW 0xa00406a 6e2b MOVWF 0x2b,0x000406c 6a2c CLRF 0x2c,0x000406e 0e02 MOVLW 0x2004070 cfdb MOVFF 0xfdb,0x30004072 f030004074 0e03 MOVLW 0x3004076 cfdb MOVFF 0xfdb,0x31004078 f03100407a ec7c CALL 0x38f8,0x000407c f01c00407e 5029 MOVF 0x29,0x0,0x0004080 5c02 SUBWF 0x2,0x0,0x0004082 6e00 MOVWF 0x0,0x0004084 502a MOVF 0x2a,0x0,0x0004086 5803 SUBWFB 0x3,0x0,0x0004088 6e01 MOVWF 0x1,0x000408a 0e04 MOVLW 0x400408c c000 MOVFF 0x0,0xfdb00408e ffdb004090 0e05 MOVLW 0x5004092 c001 MOVFF 0x1,0xfdb004094 ffdbF:\MCP\projects\CAN\Include\adc.c004096 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c004098 cfdb MOVFF 0xfdb,0x000409a f00000409c 0e05 MOVLW 0x500409e cfdb MOVFF 0xfdb,0x10040a0 f0010040a2 0100 MOVLB 0x00040a4 0e80 MOVLW 0x800040a6 1401 ANDWF 0x1,0x0,0x00040a8 e110 BNZ 0x40ca0040aa 0e04 MOVLW 0x40040ac cfdb MOVFF 0xfdb,0x20040ae f0020040b0 0e05 MOVLW 0x50040b2 cfdb MOVFF 0xfdb,0x30040b4 f0030040b6 3403 RLCF 0x3,0x0,0x00040b8 e204 BC 0x40c20040ba 5002 MOVF 0x2,0x0,0x00040bc 0802 SUBLW 0x20040be 0e00 MOVLW 0x00040c0 5403 SUBFWB 0x3,0x0,0x00040c2 e303 BNC 0x40ca0040c4 0e04 MOVLW 0x40040c6 6adb CLRF 0xdb,0x00040c8 d020 BRA 0x410a else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c0040ca 0e04 MOVLW 0x40040cc cfdb MOVFF 0xfdb,0x00040ce f0000040d0 0e05 MOVLW 0x50040d2 cfdb MOVFF 0xfdb,0x10040d4 f0010040d6 90d8 BCF 0xd8,0x0,0x00040d8 5001 MOVF 0x1,0x0,0x00040da e604 BN 0x40e40040dc 0e03 MOVLW 0x30040de 5c00 SUBWF 0x0,0x0,0x00040e0 0e00 MOVLW 0x00040e2 5801 SUBWFB 0x1,0x0,0x00040e4 e315 BNC 0x41100040e6 0e04 MOVLW 0x40040e8 cfdb MOVFF 0xfdb,0x20040ea f0020040ec 0e05 MOVLW 0x50040ee cfdb MOVFF 0xfdb,0x30040f0 f0030040f2 3403 RLCF 0x3,0x0,0x00040f4 e204 BC 0x40fe0040f6 5002 MOVF 0x2,0x0,0x00040f8 0807 SUBLW 0x70040fa 0e00 MOVLW 0x00040fc 5403 SUBFWB 0x3,0x0,0x00040fe e308 BNC 0x4110004100 0e05 MOVLW 0x5004102 6ef3 MOVWF 0xf3,0x0004104 0e04 MOVLW 0x4004106 cff3 MOVFF 0xff3,0xfdb004108 ffdb00410a 0e05 MOVLW 0x500410c 6adb CLRF 0xdb,0x000410e d009 BRA 0x4122 else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c004110 0e04 MOVLW 0x4004112 6adb CLRF 0xdb,0x0004114 0e05 MOVLW 0x5004116 6adb CLRF 0xdb,0x0004118 0e02 MOVLW 0x200411a 2adb INCF 0xdb,0x1,0x000411c 0e03 MOVLW 0x300411e e301 BNC 0x4122004120 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c004122 0efd MOVLW 0xfd *tenth = (signed char)v11; F:\MCP\projects\CAN\Include\adc.c004124 cfdb MOVFF 0xfdb,0xfe9004126 ffe9004128 0efe MOVLW 0xfe00412a cfdb MOVFF 0xfdb,0xfea00412c ffea00412e 0e02 MOVLW 0x2004130 cfdb MOVFF 0xfdb,0xfef004132 ffef004134 0efb MOVLW 0xfb *decimal = (BYTE)v01; F:\MCP\projects\CAN\Include\adc.c004136 cfdb MOVFF 0xfdb,0xfe9004138 ffe900413a 0efc MOVLW 0xfc00413c cfdb MOVFF 0xfdb,0xfea00413e ffea004140 0e04 MOVLW 0x4004142 cfdb MOVFF 0xfdb,0xfef004144 ffefF:\MCP\projects\CAN\Include\adc.c004146 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c004148 6b9f CLRF 0x9f,0x100414a 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c00414c 5ce1 SUBWF 0xe1,0x0,0x000414e e202 BC 0x4154004150 6ae1 CLRF 0xe1,0x0004152 52e5 MOVF 0xe5,0x1,0x0004154 6ee1 MOVWF 0xe1,0x0004156 52e5 MOVF 0xe5,0x1,0x0004158 cfe7 MOVFF 0xfe7,0xfd900415a ffd900415c 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cunsigned long adcGetRaw() F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c00415e c08d MOVFF 0x8d,0x29 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c004160 f029004162 c08e MOVFF 0x8e,0x2a004164 f02a004166 c08f MOVFF 0x8f,0x2b004168 f02b00416a c090 MOVFF 0x90,0x2c00416c f02c00416e 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcDone F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: If adc convertion is done or not. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cBOOL adcDone(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c004170 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c004172 519f MOVF 0x9f,0x0,0x1004174 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#endif F:\MCP\projects\CAN\Include\adc.c/********************************************************************* F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Functions for controlling blinds F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c********************************************************************* F:\MCP\projects\CAN\canTemp\Source\blinds.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/blinds.c $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Last changed: $LastChangedDate: 2007-03-01 14:38:06 +0100 (to, 01 mar 2007) $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Revision: $Revision: 347 $ F:\MCP\projects\CAN\canTemp\Source\blinds.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\blinds.c#include <blinds.h> F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cstatic WORD timerVal = 50536; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic WORD turnOffIO = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic BYTE currentPrecent = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic BYTE dutyOffCounter = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsInit F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cvoid blindsInit() F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c// setup timer one on 0.5ms. F:\MCP\projects\CAN\canTemp\Source\blinds.c// 16 bit write, system clock, prescale 2 bit, oscillator off, F:\MCP\projects\CAN\canTemp\Source\blinds.c004176 0ec1 MOVLW 0xc1 T1CON = 0b11000001; F:\MCP\projects\CAN\canTemp\Source\blinds.c004178 6ecd MOVWF 0xcd,0x000417a 0100 MOVLB 0x0 TMR1H=(BYTE)((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c00417c 0eff MOVLW 0xff00417e 1594 ANDWF 0x94,0x0,0x1004180 50e8 MOVF 0xe8,0x0,0x0004182 6ecf MOVWF 0xcf,0x0004184 5193 MOVF 0x93,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c004186 6ece MOVWF 0xce,0x0004188 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c00418a 809d BSF 0x9d,0x0,0x0 PIE1bits.TMR1IE = 1; F:\MCP\projects\CAN\canTemp\Source\blinds.c00418c 809f BSF 0x9f,0x0,0x0 IPR1bits.TMR1IP = 1; // high prior F:\MCP\projects\CAN\canTemp\Source\blinds.c00418e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsGetAngle F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: angle. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cBYTE blindsGetPrecent() F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004190 0100 MOVLB 0x0 return currentPrecent; F:\MCP\projects\CAN\canTemp\Source\blinds.c004192 5197 MOVF 0x97,0x0,0x1004194 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsTurn F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: Angle to turn to. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.c004196 cfd9 MOVFF 0xfd9,0xfe6 void blindsTurn(BYTE precent) F:\MCP\projects\CAN\canTemp\Source\blinds.c004198 ffe600419a cfe1 MOVFF 0xfe1,0xfd900419c ffd9{ F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c// 65536-TIME/0,0000001 F:\MCP\projects\CAN\canTemp\Source\blinds.c// -90 0.5 ms = 60536 (5000) F:\MCP\projects\CAN\canTemp\Source\blinds.c// 0 1.5 ms = 50536 (15000) F:\MCP\projects\CAN\canTemp\Source\blinds.c// 90 2.5 ms = 40536 (25000) F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c00419e 8a82 BSF 0x82,0x5,0x0 BLINDS0P_IO=1; F:\MCP\projects\CAN\canTemp\Source\blinds.c0041a0 0100 MOVLB 0x0 turnOffIO = IO_TIMEOUT; F:\MCP\projects\CAN\canTemp\Source\blinds.c0041a2 0ebc MOVLW 0xbc0041a4 6f95 MOVWF 0x95,0x10041a6 0e02 MOVLW 0x20041a8 6f96 MOVWF 0x96,0x1F:\MCP\projects\CAN\canTemp\Source\blinds.c0041aa 0efe MOVLW 0xfe currentPrecent = precent; F:\MCP\projects\CAN\canTemp\Source\blinds.c0041ac cfdb MOVFF 0xfdb,0x970041ae f0970041b0 50db MOVF 0xdb,0x0,0x0 if (precent>100) { currentPrecent = 100; } F:\MCP\projects\CAN\canTemp\Source\blinds.c0041b2 0864 SUBLW 0x640041b4 e202 BC 0x41ba0041b6 0e64 MOVLW 0x640041b8 6f97 MOVWF 0x97,0x10041ba 0e00 MOVLW 0x0 if (precent<0) { currentPrecent = 0; } F:\MCP\projects\CAN\canTemp\Source\blinds.c0041bc 6ef3 MOVWF 0xf3,0x00041be 0efe MOVLW 0xfe0041c0 cfdb MOVFF 0xfdb,0xff40041c2 fff40041c4 50f3 MOVF 0xf3,0x0,0x00041c6 5cf4 SUBWF 0xf4,0x0,0x00041c8 e201 BC 0x41cc0041ca 6b97 CLRF 0x97,0x10041cc 6b98 CLRF 0x98,0x1 dutyOffCounter = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c0041ce 0e78 MOVLW 0x78 timerVal=60536-(unsigned int)((90+(-1.05*(unsigned int)currentPrecent+60))*111.111); F:\MCP\projects\CAN\canTemp\Source\blinds.c0041d0 6e03 MOVWF 0x3,0x00041d2 0eec MOVLW 0xec0041d4 6e04 MOVWF 0x4,0x00041d6 6a05 CLRF 0x5,0x00041d8 6a0d CLRF 0xd,0x00041da 6a0e CLRF 0xe,0x00041dc 0eb4 MOVLW 0xb40041de 6e0f MOVWF 0xf,0x00041e0 0e42 MOVLW 0x420041e2 6e10 MOVWF 0x10,0x00041e4 0e66 MOVLW 0x660041e6 6e19 MOVWF 0x19,0x00041e8 6e1a MOVWF 0x1a,0x00041ea 0e86 MOVLW 0x860041ec 6e1b MOVWF 0x1b,0x00041ee 0ebf MOVLW 0xbf0041f0 6e1c MOVWF 0x1c,0x00041f2 5197 MOVF 0x97,0x0,0x10041f4 6e21 MOVWF 0x21,0x00041f6 6a22 CLRF 0x22,0x00041f8 c097 MOVFF 0x97,0x2b0041fa f02b0041fc c022 MOVFF 0x22,0x2c0041fe f02c004200 ec3d CALL 0x367a,0x0004202 f01b004204 c02a MOVFF 0x2a,0x1d004206 f01d004208 c02b MOVFF 0x2b,0x1e00420a f01e00420c c02c MOVFF 0x2c,0x1f00420e f01f004210 c02d MOVFF 0x2d,0x20004212 f020004214 c02a MOVFF 0x2a,0x2f004216 f02f004218 c02b MOVFF 0x2b,0x3000421a f03000421c c02c MOVFF 0x2c,0x3100421e f031004220 c02d MOVFF 0x2d,0x32004222 f032004224 c019 MOVFF 0x19,0x2a004226 f02a004228 c01a MOVFF 0x1a,0x2b00422a f02b00422c c01b MOVFF 0x1b,0x2c00422e f02c004230 c01c MOVFF 0x1c,0x2d004232 f02d004234 ece9 CALL 0x37d2,0x0004236 f01b004238 c02a MOVFF 0x2a,0x1500423a f01500423c c02b MOVFF 0x2b,0x1600423e f016004240 c02c MOVFF 0x2c,0x17004242 f017004244 c02d MOVFF 0x2d,0x18004246 f018004248 6a2f CLRF 0x2f,0x000424a 6a30 CLRF 0x30,0x000424c 0e70 MOVLW 0x7000424e 6e31 MOVWF 0x31,0x0004250 0e42 MOVLW 0x42004252 6e32 MOVWF 0x32,0x0004254 ec53 CALL 0x36a6,0x0004256 f01b004258 c02a MOVFF 0x2a,0x1100425a f01100425c c02b MOVFF 0x2b,0x1200425e f012004260 c02c MOVFF 0x2c,0x13004262 f013004264 c02d MOVFF 0x2d,0x14004266 f014004268 c02a MOVFF 0x2a,0x2f00426a f02f00426c c02b MOVFF 0x2b,0x3000426e f030004270 c02c MOVFF 0x2c,0x31004272 f031004274 c02d MOVFF 0x2d,0x32004276 f032004278 c00d MOVFF 0xd,0x2a00427a f02a00427c c00e MOVFF 0xe,0x2b00427e f02b004280 c00f MOVFF 0xf,0x2c004282 f02c004284 c010 MOVFF 0x10,0x2d004286 f02d004288 ec53 CALL 0x36a6,0x000428a f01b00428c c02a MOVFF 0x2a,0x900428e f009004290 c02b MOVFF 0x2b,0xa004292 f00a004294 c02c MOVFF 0x2c,0xb004296 f00b004298 c02d MOVFF 0x2d,0xc00429a f00c00429c 0ed5 MOVLW 0xd500429e 6e2f MOVWF 0x2f,0x00042a0 0e38 MOVLW 0x380042a2 6e30 MOVWF 0x30,0x00042a4 0ede MOVLW 0xde0042a6 6e31 MOVWF 0x31,0x00042a8 0e42 MOVLW 0x420042aa 6e32 MOVWF 0x32,0x00042ac ece9 CALL 0x37d2,0x00042ae f01b0042b0 eca9 CALL 0x3952,0x00042b2 f01c0042b4 6a08 CLRF 0x8,0x00042b6 502b MOVF 0x2b,0x0,0x00042b8 5c03 SUBWF 0x3,0x0,0x00042ba 6e00 MOVWF 0x0,0x00042bc 502c MOVF 0x2c,0x0,0x00042be 5804 SUBWFB 0x4,0x0,0x00042c0 6e01 MOVWF 0x1,0x00042c2 5008 MOVF 0x8,0x0,0x00042c4 5805 SUBWFB 0x5,0x0,0x00042c6 c000 MOVFF 0x0,0x930042c8 f0930042ca c001 MOVFF 0x1,0x940042cc f094F:\MCP\projects\CAN\canTemp\Source\blinds.c0042ce 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.c0042d0 cfe7 MOVFF 0xfe7,0xfd90042d2 ffd90042d4 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsISR F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.c0042d6 cfd9 MOVFF 0xfd9,0xfe6 void blindsISR(void) F:\MCP\projects\CAN\canTemp\Source\blinds.c0042d8 ffe60042da cfe1 MOVFF 0xfe1,0xfd90042dc ffd90042de 0e02 MOVLW 0x20042e0 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0042e2 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.TMR1IF == 1 && PIE1bits.TMR1IE == 1) F:\MCP\projects\CAN\canTemp\Source\blinds.c0042e4 0b01 ANDLW 0x10042e6 e040 BZ 0x43680042e8 509d MOVF 0x9d,0x0,0x00042ea 0b01 ANDLW 0x10042ec e03d BZ 0x4368{ F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c0042ee c093 MOVFF 0x93,0xfde WORD timerValBuffer = timerVal; F:\MCP\projects\CAN\canTemp\Source\blinds.c0042f0 ffde0042f2 c094 MOVFF 0x94,0xfdd0042f4 ffddF:\MCP\projects\CAN\canTemp\Source\blinds.c0042f6 0100 MOVLB 0x0 dutyOffCounter++; F:\MCP\projects\CAN\canTemp\Source\blinds.c0042f8 2b98 INCF 0x98,0x1,0x1F:\MCP\projects\CAN\canTemp\Source\blinds.c0042fa 5082 MOVF 0x82,0x0,0x0 if (BLINDS0_IO==0 && dutyOffCounter>4) F:\MCP\projects\CAN\canTemp\Source\blinds.c0042fc 0b10 ANDLW 0x100042fe e106 BNZ 0x430c004300 5198 MOVF 0x98,0x0,0x1004302 0804 SUBLW 0x4004304 e203 BC 0x430c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004306 8882 BSF 0x82,0x4,0x0 BLINDS0_IO=1; F:\MCP\projects\CAN\canTemp\Source\blinds.c004308 6b98 CLRF 0x98,0x1 dutyOffCounter=0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c00430a d00d BRA 0x4326 else if (BLINDS0_IO==0 && dutyOffCounter<=4) F:\MCP\projects\CAN\canTemp\Source\blinds.c00430c 5082 MOVF 0x82,0x0,0x000430e 0b10 ANDLW 0x10004310 e108 BNZ 0x4322004312 5198 MOVF 0x98,0x0,0x1004314 0804 SUBLW 0x4004316 e305 BNC 0x4322{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004318 0eb0 MOVLW 0xb0 timerValBuffer = DUTY_OFF_DELAY; F:\MCP\projects\CAN\canTemp\Source\blinds.c00431a 6ede MOVWF 0xde,0x000431c 0e3c MOVLW 0x3c00431e 6edd MOVWF 0xdd,0x0} F:\MCP\projects\CAN\canTemp\Source\blinds.c004320 d002 BRA 0x4326 else if (BLINDS0_IO==1) F:\MCP\projects\CAN\canTemp\Source\blinds.c004322 b882 BTFSC 0x82,0x4,0x0{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004324 9882 BCF 0x82,0x4,0x0 BLINDS0_IO=0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c004326 cfde MOVFF 0xfde,0x0 TMR1H=(BYTE)((timerValBuffer&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c004328 f00000432a cfdd MOVFF 0xfdd,0x100432c f00100432e 0e00 MOVLW 0x0004330 1600 ANDWF 0x0,0x1,0x0004332 0eff MOVLW 0xff004334 1601 ANDWF 0x1,0x1,0x0004336 c001 MOVFF 0x1,0x0004338 f00000433a 6a01 CLRF 0x1,0x000433c 5000 MOVF 0x0,0x0,0x000433e 6ecf MOVWF 0xcf,0x0004340 cfde MOVFF 0xfde,0x0 TMR1L=(timerValBuffer&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c004342 f000004344 cfdd MOVFF 0xfdd,0x1004346 f001004348 5000 MOVF 0x0,0x0,0x000434a 6ece MOVWF 0xce,0x0F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c00434c c095 MOVFF 0x95,0x0 if (turnOffIO--<1) F:\MCP\projects\CAN\canTemp\Source\blinds.c00434e f000004350 c096 MOVFF 0x96,0x1004352 f001004354 0795 DECF 0x95,0x1,0x1004356 0e00 MOVLW 0x0004358 5b96 SUBWFB 0x96,0x1,0x100435a 0e01 MOVLW 0x100435c 5c00 SUBWF 0x0,0x0,0x000435e 0e00 MOVLW 0x0004360 5801 SUBWFB 0x1,0x0,0x0004362 e201 BC 0x4366{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004364 9a82 BCF 0x82,0x5,0x0 BLINDS0P_IO=0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c004366 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c004368 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canTemp\Source\blinds.c00436a 5ce1 SUBWF 0xe1,0x0,0x000436c e202 BC 0x437200436e 6ae1 CLRF 0xe1,0x0004370 52e5 MOVF 0xe5,0x1,0x0004372 6ee1 MOVWF 0xe1,0x0004374 52e5 MOVF 0xe5,0x1,0x0004376 cfe7 MOVFF 0xfe7,0xfd9004378 ffd900437a 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\blinds.c#endif F:\MCP\projects\CAN\canTemp\Source\blinds.c