Rev 339 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.1, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Feb 26 21:10:50 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-25 20:51:08 +0100 (sö, 25 feb 2007) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 339 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cTICK heartbeat; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic 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 e001 BZ 0x3076003074 d7fb BRA 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.c003076 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c003078 6e70 MOVWF 0x70,0x000307a 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c00307c 6e71 MOVWF 0x71,0x000307e 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c003080 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.c003082 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c003084 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c003086 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.c003088 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00308a 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.c00308c 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00308e 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c003090 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c003092 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c003094 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c003096 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.c003098 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.c00309a 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00309c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00309e 146e ANDWF 0x6e,0x0,0x00030a0 e001 BZ 0x30a40030a2 d7fc BRA 0x309c#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.c0030a4 ecf1 CALL 0x45e2,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c0030a6 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.c0030a8 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0030aa 6ee6 MOVWF 0xe6,0x00030ac 6ae6 CLRF 0xe6,0x00030ae ecf0 CALL 0x43e0,0x00030b0 f0210030b2 52e5 MOVF 0xe5,0x1,0x00030b4 52e5 MOVF 0xe5,0x1,0x00030b6 082a SUBLW 0x2a0030b8 e10a BNZ 0x30ce{ F:\MCP\projects\CAN\canBase\Source\CAN.c0030ba 0e01 MOVLW 0x1 MY_ID=+EERead(NODE_ID_EE + 1); F:\MCP\projects\CAN\canBase\Source\CAN.c0030bc 6ee6 MOVWF 0xe6,0x00030be 6ae6 CLRF 0xe6,0x00030c0 ecf0 CALL 0x43e0,0x00030c2 f0210030c4 52e5 MOVF 0xe5,0x1,0x00030c6 52e5 MOVF 0xe5,0x1,0x00030c8 0100 MOVLB 0x00030ca 6fa0 MOVWF 0xa0,0x10030cc 6ba1 CLRF 0xa1,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.c0030ce 0100 MOVLB 0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d0 0e01 MOVLW 0x10030d2 6f64 MOVWF 0x64,0x10030d4 6b65 CLRF 0x65,0x1 outCp.pgm.class=pcCTRL; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d6 6f66 MOVWF 0x66,0x1 outCp.pgm.id=pctAPPBOOT; F:\MCP\projects\CAN\canBase\Source\CAN.c0030d8 6b67 CLRF 0x67,0x10030da 0e02 MOVLW 0x2 outCp.length=2; F:\MCP\projects\CAN\canBase\Source\CAN.c0030dc 6f6c MOVWF 0x6c,0x10030de 6b6e CLRF 0x6e,0x1 outCp.data[1]=(BYTE)((APP_VERSION & 0xFF00)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e0 0e01 MOVLW 0x1 outCp.data[0]=(BYTE)(APP_VERSION & 0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e2 6f6d MOVWF 0x6d,0x10030e4 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e6 6ee6 MOVWF 0xe6,0x00030e8 c064 MOVFF 0x64,0xfe60030ea ffe60030ec c065 MOVFF 0x65,0xfe60030ee ffe60030f0 c066 MOVFF 0x66,0xfe60030f2 ffe60030f4 c067 MOVFF 0x67,0xfe60030f6 ffe60030f8 c068 MOVFF 0x68,0xfe60030fa ffe60030fc c069 MOVFF 0x69,0xfe60030fe ffe6003100 c06a MOVFF 0x6a,0xfe6003102 ffe6003104 c06b MOVFF 0x6b,0xfe6003106 ffe6003108 c06c MOVFF 0x6c,0xfe600310a ffe600310c c06d MOVFF 0x6d,0xfe600310e ffe6003110 c06e MOVFF 0x6e,0xfe6003112 ffe6003114 c06f MOVFF 0x6f,0xfe6003116 ffe6003118 c070 MOVFF 0x70,0xfe600311a ffe600311c c071 MOVFF 0x71,0xfe600311e ffe6003120 c072 MOVFF 0x72,0xfe6003122 ffe6003124 c073 MOVFF 0x73,0xfe6003126 ffe6003128 c074 MOVFF 0x74,0xfe600312a ffe600312c d9cb RCALL 0x34c400312e 6e00 MOVWF 0x0,0x0003130 0e12 MOVLW 0x12003132 5ee1 SUBWF 0xe1,0x1,0x0003134 5000 MOVF 0x0,0x0,0x0003136 0900 IORLW 0x0003138 e101 BNZ 0x313c00313a d7d4 BRA 0x30e400313c 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.c00313e 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003140 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c003142 0b02 ANDLW 0x2003144 e106 BNZ 0x3152003146 50a4 MOVF 0xa4,0x0,0x0003148 0b02 ANDLW 0x200314a e103 BNZ 0x315200314c 50a4 MOVF 0xa4,0x0,0x000314e 0b01 ANDLW 0x1003150 e016 BZ 0x317e{ F:\MCP\projects\CAN\canBase\Source\CAN.c003152 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c003154 146f ANDWF 0x6f,0x0,0x0003156 0910 IORLW 0x10003158 6e00 MOVWF 0x0,0x000315a 0e00 MOVLW 0x000315c 1477 ANDWF 0x77,0x0,0x000315e 1000 IORWF 0x0,0x0,0x0003160 6e77 MOVWF 0x77,0x0003162 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c003164 d869 RCALL 0x3238F:\MCP\projects\CAN\canBase\Source\CAN.c003166 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003168 d002 BRA 0x316e00316a 92a4 BCF 0xa4,0x1,0x000316c d064 BRA 0x323600316e a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003170 d002 BRA 0x3176003172 92a4 BCF 0xa4,0x1,0x0003174 d060 BRA 0x3236003176 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003178 d002 BRA 0x317e00317a 90a4 BCF 0xa4,0x0,0x000317c d05c BRA 0x3236} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00317e ec05 CALL 0x460a,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c003180 f023F:\MCP\projects\CAN\canBase\Source\CAN.c003182 ecfb CALL 0x45f6,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c003184 f022003186 0100 MOVLB 0x0003188 5160 MOVF 0x60,0x0,0x100318a 5c29 SUBWF 0x29,0x0,0x000318c 6e00 MOVWF 0x0,0x000318e 0100 MOVLB 0x0003190 5161 MOVF 0x61,0x0,0x1003192 582a SUBWFB 0x2a,0x0,0x0003194 6e01 MOVWF 0x1,0x0003196 0100 MOVLB 0x0003198 5162 MOVF 0x62,0x0,0x100319a 582b SUBWFB 0x2b,0x0,0x000319c 6e02 MOVWF 0x2,0x000319e 0100 MOVLB 0x00031a0 5163 MOVF 0x63,0x0,0x10031a2 582c SUBWFB 0x2c,0x0,0x00031a4 6e03 MOVWF 0x3,0x00031a6 80d8 BSF 0xd8,0x0,0x00031a8 0ef4 MOVLW 0xf40031aa 5400 SUBFWB 0x0,0x0,0x00031ac 0e01 MOVLW 0x10031ae 5401 SUBFWB 0x1,0x0,0x00031b0 0e00 MOVLW 0x00031b2 5402 SUBFWB 0x2,0x0,0x00031b4 0e00 MOVLW 0x00031b6 5403 SUBFWB 0x3,0x0,0x00031b8 e23e BC 0x3236{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0031ba 0100 MOVLB 0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canBase\Source\CAN.c0031bc 0e01 MOVLW 0x10031be 6f64 MOVWF 0x64,0x10031c0 0100 MOVLB 0x0 outCp.pgm.class=pcCTRL; F:\MCP\projects\CAN\canBase\Source\CAN.c0031c2 6b65 CLRF 0x65,0x10031c4 0e02 MOVLW 0x2 outCp.pgm.id=pctHEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0031c6 0100 MOVLB 0x00031c8 6f66 MOVWF 0x66,0x10031ca 6b67 CLRF 0x67,0x10031cc 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0031ce 6b6c CLRF 0x6c,0x10031d0 0e02 MOVLW 0x2 canSendMessage(outCp,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\CAN.c0031d2 6ee6 MOVWF 0xe6,0x00031d4 c064 MOVFF 0x64,0xfe60031d6 ffe60031d8 c065 MOVFF 0x65,0xfe60031da ffe60031dc c066 MOVFF 0x66,0xfe60031de ffe60031e0 c067 MOVFF 0x67,0xfe60031e2 ffe60031e4 c068 MOVFF 0x68,0xfe60031e6 ffe60031e8 c069 MOVFF 0x69,0xfe60031ea ffe60031ec c06a MOVFF 0x6a,0xfe60031ee ffe60031f0 c06b MOVFF 0x6b,0xfe60031f2 ffe60031f4 c06c MOVFF 0x6c,0xfe60031f6 ffe60031f8 c06d MOVFF 0x6d,0xfe60031fa ffe60031fc c06e MOVFF 0x6e,0xfe60031fe ffe6003200 c06f MOVFF 0x6f,0xfe6003202 ffe6003204 c070 MOVFF 0x70,0xfe6003206 ffe6003208 c071 MOVFF 0x71,0xfe600320a ffe600320c c072 MOVFF 0x72,0xfe600320e ffe6003210 c073 MOVFF 0x73,0xfe6003212 ffe6003214 c074 MOVFF 0x74,0xfe6003216 ffe6003218 d955 RCALL 0x34c400321a 6e00 MOVWF 0x0,0x000321c 0e12 MOVLW 0x1200321e 5ee1 SUBWF 0xe1,0x1,0x0003220 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c003222 ecfb CALL 0x45f6,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c003224 f022003226 c029 MOVFF 0x29,0x60003228 f06000322a c02a MOVFF 0x2a,0x6100322c f06100322e c02b MOVFF 0x2b,0x62003230 f062003232 c02c MOVFF 0x2c,0x63003234 f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003236 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.c003238 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00323a ffe600323c cfe1 MOVFF 0xfe1,0xfd900323e ffd9003240 0e11 MOVLW 0x11003242 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.c003244 0e06 MOVLW 0x6 cp.type = (BYTE)((RXB0SIDH&0xC0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c003246 6e00 MOVWF 0x0,0x0003248 0ec0 MOVLW 0xc000324a 1461 ANDWF 0x61,0x0,0x000324c c000 MOVFF 0x0,0xfe700324e ffe7003250 52e7 MOVF 0xe7,0x1,0x0003252 e004 BZ 0x325c003254 42e8 RRNCF 0xe8,0x1,0x0003256 0b7f ANDLW 0x7f003258 06e7 DECF 0xe7,0x1,0x000325a e1fc BNZ 0x325400325c 6edf MOVWF 0xdf,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00325e 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003260 e122 BNZ 0x32a6{ F:\MCP\projects\CAN\canBase\Source\CAN.c003262 0e38 MOVLW 0x38 cp.boot.type = ((RXB0SIDH&0x38)>>3); F:\MCP\projects\CAN\canBase\Source\CAN.c003264 1461 ANDWF 0x61,0x0,0x0003266 40e8 RRNCF 0xe8,0x0,0x0003268 40e8 RRNCF 0xe8,0x0,0x000326a 40e8 RRNCF 0xe8,0x0,0x000326c 0b1f ANDLW 0x1f00326e 6ee7 MOVWF 0xe7,0x0003270 0e04 MOVLW 0x4003272 cfe7 MOVFF 0xfe7,0xfdb003274 ffdb003276 0e03 MOVLW 0x3 cp.boot.offset= ((RXB0SIDH&0x7)<<5)+((RXB0SIDL&0xE0)>>3)+(RXB0SIDL&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003278 1462 ANDWF 0x62,0x0,0x000327a 6e01 MOVWF 0x1,0x000327c 0ee0 MOVLW 0xe000327e 1462 ANDWF 0x62,0x0,0x0003280 40e8 RRNCF 0xe8,0x0,0x0003282 40e8 RRNCF 0xe8,0x0,0x0003284 40e8 RRNCF 0xe8,0x0,0x0003286 0b1f ANDLW 0x1f003288 6e00 MOVWF 0x0,0x000328a 0e07 MOVLW 0x700328c 1461 ANDWF 0x61,0x0,0x000328e 0d20 MULLW 0x20003290 50f3 MOVF 0xf3,0x0,0x0003292 2400 ADDWF 0x0,0x0,0x0003294 2401 ADDWF 0x1,0x0,0x0003296 6ee7 MOVWF 0xe7,0x0003298 0e05 MOVLW 0x500329a cfe7 MOVFF 0xfe7,0xfdb00329c ffdb00329e 0e06 MOVLW 0x6 cp.boot.rid = RXB0EIDH; F:\MCP\projects\CAN\canBase\Source\CAN.c0032a0 cf63 MOVFF 0xf63,0xfdb0032a2 ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c0032a4 d03c BRA 0x331e else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c0032a6 0e3c MOVLW 0x3c cp.pgm.class= ((RXB0SIDH&0x3C)>>2); F:\MCP\projects\CAN\canBase\Source\CAN.c0032a8 1461 ANDWF 0x61,0x0,0x00032aa 40e8 RRNCF 0xe8,0x0,0x00032ac 40e8 RRNCF 0xe8,0x0,0x00032ae 0b3f ANDLW 0x3f0032b0 6ee7 MOVWF 0xe7,0x00032b2 0e01 MOVLW 0x10032b4 cfe7 MOVFF 0xfe7,0xfdb0032b6 ffdb0032b8 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.c0032ba 1461 ANDWF 0x61,0x0,0x00032bc 6e06 MOVWF 0x6,0x00032be 6a07 CLRF 0x7,0x00032c0 3806 SWAPF 0x6,0x0,0x00032c2 6a06 CLRF 0x6,0x00032c4 34e8 RLCF 0xe8,0x0,0x00032c6 0be0 ANDLW 0xe00032c8 6e07 MOVWF 0x7,0x00032ca 0ee0 MOVLW 0xe00032cc 1462 ANDWF 0x62,0x0,0x00032ce 6e08 MOVWF 0x8,0x00032d0 6a09 CLRF 0x9,0x00032d2 0e05 MOVLW 0x50032d4 90d8 BCF 0xd8,0x0,0x00032d6 3608 RLCF 0x8,0x1,0x00032d8 3609 RLCF 0x9,0x1,0x00032da 04e8 DECF 0xe8,0x0,0x00032dc e1fb BNZ 0x32d40032de 5006 MOVF 0x6,0x0,0x00032e0 2408 ADDWF 0x8,0x0,0x00032e2 6e04 MOVWF 0x4,0x00032e4 5007 MOVF 0x7,0x0,0x00032e6 2009 ADDWFC 0x9,0x0,0x00032e8 6e05 MOVWF 0x5,0x00032ea 0e03 MOVLW 0x30032ec 1462 ANDWF 0x62,0x0,0x00032ee 6e0a MOVWF 0xa,0x00032f0 6a0b CLRF 0xb,0x00032f2 c00a MOVFF 0xa,0xb0032f4 f00b0032f6 6a0a CLRF 0xa,0x00032f8 5004 MOVF 0x4,0x0,0x00032fa 240a ADDWF 0xa,0x0,0x00032fc 6e02 MOVWF 0x2,0x00032fe 5005 MOVF 0x5,0x0,0x0003300 200b ADDWFC 0xb,0x0,0x0003302 6e03 MOVWF 0x3,0x0003304 5063 MOVF 0x63,0x0,0x0003306 0100 MOVLB 0x0003308 2402 ADDWF 0x2,0x0,0x000330a 6e00 MOVWF 0x0,0x000330c 0e00 MOVLW 0x000330e 2003 ADDWFC 0x3,0x0,0x0003310 6e01 MOVWF 0x1,0x0003312 0e02 MOVLW 0x2003314 c000 MOVFF 0x0,0xfdb003316 ffdb003318 0e03 MOVLW 0x300331a c001 MOVFF 0x1,0xfdb00331c ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c00331e 0e07 MOVLW 0x7 cp.sid = RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c003320 cf64 MOVFF 0xf64,0xfdb003322 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c003324 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.c003326 0b01 ANDLW 0x1003328 6e02 MOVWF 0x2,0x000332a 5065 MOVF 0x65,0x0,0x000332c 0b02 ANDLW 0x200332e e001 BZ 0x3332003330 0e01 MOVLW 0x1003332 24e8 ADDWF 0xe8,0x0,0x0003334 6e01 MOVWF 0x1,0x0003336 5065 MOVF 0x65,0x0,0x0003338 0b04 ANDLW 0x400333a e001 BZ 0x333e00333c 0e01 MOVLW 0x100333e 0d04 MULLW 0x4003340 cff3 MOVFF 0xff3,0x0003342 f000003344 5065 MOVF 0x65,0x0,0x0003346 0b08 ANDLW 0x8003348 e001 BZ 0x334c00334a 0e01 MOVLW 0x100334c 0d08 MULLW 0x800334e 50f3 MOVF 0xf3,0x0,0x0003350 2400 ADDWF 0x0,0x0,0x0003352 2401 ADDWF 0x1,0x0,0x0003354 2402 ADDWF 0x2,0x0,0x0003356 6ee7 MOVWF 0xe7,0x0003358 0e08 MOVLW 0x800335a cfe7 MOVFF 0xfe7,0xfdb00335c ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00335e 0e09 MOVLW 0x9 cp.data[0]=RXB0D0; cp.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c003360 cf66 MOVFF 0xf66,0xfdb003362 ffdb003364 0e0a MOVLW 0xa003366 cf67 MOVFF 0xf67,0xfdb003368 ffdb00336a 0e0b MOVLW 0xb cp.data[2]=RXB0D2; cp.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00336c cf68 MOVFF 0xf68,0xfdb00336e ffdb003370 0e0c MOVLW 0xc003372 cf69 MOVFF 0xf69,0xfdb003374 ffdb003376 0e0d MOVLW 0xd cp.data[4]=RXB0D4; cp.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c003378 cf6a MOVFF 0xf6a,0xfdb00337a ffdb00337c 0e0e MOVLW 0xe00337e cf6b MOVFF 0xf6b,0xfdb003380 ffdb003382 0e0f MOVLW 0xf cp.data[6]=RXB0D6; cp.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c003384 cf6c MOVFF 0xf6c,0xfdb003386 ffdb003388 0e10 MOVLW 0x1000338a cf6d MOVFF 0xf6d,0xfdb00338c ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00338e 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.c003390 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003392 e160 BNZ 0x3454{ F:\MCP\projects\CAN\canBase\Source\CAN.c003394 0e06 MOVLW 0x6 if (cp.boot.rid==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c003396 50db MOVF 0xdb,0x0,0x0003398 6e00 MOVWF 0x0,0x000339a 6a01 CLRF 0x1,0x000339c 0100 MOVLB 0x000339e 51a0 MOVF 0xa0,0x0,0x10033a0 1800 XORWF 0x0,0x0,0x00033a2 e102 BNZ 0x33a80033a4 51a1 MOVF 0xa1,0x0,0x10033a6 1801 XORWF 0x1,0x0,0x00033a8 e155 BNZ 0x3454{ F:\MCP\projects\CAN\canBase\Source\CAN.c0033aa 0e04 MOVLW 0x4 if (cp.boot.type==btADDR) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0033ac 50db MOVF 0xdb,0x0,0x00033ae e101 BNZ 0x33b20033b0 00ff RESET0033b2 0e04 MOVLW 0x4 if (cp.boot.type==btCHANGEID) F:\MCP\projects\CAN\canBase\Source\CAN.c0033b4 50db MOVF 0xdb,0x0,0x00033b6 0807 SUBLW 0x70033b8 e14d BNZ 0x3454{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0033ba 0e09 MOVLW 0x9 MY_ID=cp.data[0]; F:\MCP\projects\CAN\canBase\Source\CAN.c0033bc 50db MOVF 0xdb,0x0,0x00033be 0100 MOVLB 0x00033c0 6fa0 MOVWF 0xa0,0x10033c2 6ba1 CLRF 0xa1,0x10033c4 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+1,cp.data[0]); F:\MCP\projects\CAN\canBase\Source\CAN.c0033c6 cfdb MOVFF 0xfdb,0xfe60033c8 ffe60033ca 0e01 MOVLW 0x10033cc 6ee6 MOVWF 0xe6,0x00033ce 6ae6 CLRF 0xe6,0x00033d0 ec15 CALL 0x442a,0x00033d2 f0220033d4 52e5 MOVF 0xe5,0x1,0x00033d6 52e5 MOVF 0xe5,0x1,0x00033d8 52e5 MOVF 0xe5,0x1,0x00033da 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c0033dc 6ee6 MOVWF 0xe6,0x00033de 0e00 MOVLW 0x00033e0 6ee6 MOVWF 0xe6,0x00033e2 6ae6 CLRF 0xe6,0x00033e4 ec15 CALL 0x442a,0x00033e6 f0220033e8 52e5 MOVF 0xe5,0x1,0x00033ea 52e5 MOVF 0xe5,0x1,0x00033ec 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c0033ee 0100 MOVLB 0x0 outCp.type=ptBOOT; F:\MCP\projects\CAN\canBase\Source\CAN.c0033f0 6b64 CLRF 0x64,0x10033f2 0100 MOVLB 0x0 outCp.boot.type=btACK; F:\MCP\projects\CAN\canBase\Source\CAN.c0033f4 0e04 MOVLW 0x40033f6 6f68 MOVWF 0x68,0x10033f8 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0033fa 6b6c CLRF 0x6c,0x10033fc 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0033fe 6ee6 MOVWF 0xe6,0x0003400 c064 MOVFF 0x64,0xfe6003402 ffe6003404 c065 MOVFF 0x65,0xfe6003406 ffe6003408 c066 MOVFF 0x66,0xfe600340a ffe600340c c067 MOVFF 0x67,0xfe600340e ffe6003410 c068 MOVFF 0x68,0xfe6003412 ffe6003414 c069 MOVFF 0x69,0xfe6003416 ffe6003418 c06a MOVFF 0x6a,0xfe600341a ffe600341c c06b MOVFF 0x6b,0xfe600341e ffe6003420 c06c MOVFF 0x6c,0xfe6003422 ffe6003424 c06d MOVFF 0x6d,0xfe6003426 ffe6003428 c06e MOVFF 0x6e,0xfe600342a ffe600342c c06f MOVFF 0x6f,0xfe600342e ffe6003430 c070 MOVFF 0x70,0xfe6003432 ffe6003434 c071 MOVFF 0x71,0xfe6003436 ffe6003438 c072 MOVFF 0x72,0xfe600343a ffe600343c c073 MOVFF 0x73,0xfe600343e ffe6003440 c074 MOVFF 0x74,0xfe6003442 ffe6003444 d83f RCALL 0x34c4003446 6e00 MOVWF 0x0,0x0003448 0e12 MOVLW 0x1200344a 5ee1 SUBWF 0xe1,0x1,0x000344c 5000 MOVF 0x0,0x0,0x000344e 0900 IORLW 0x0003450 e101 BNZ 0x3454003452 d7d4 BRA 0x33fc} 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.c003454 04df DECF 0xdf,0x0,0x0 if (cp.type==ptPGM) canParse(cp); F:\MCP\projects\CAN\canBase\Source\CAN.c003456 e12c BNZ 0x34b0003458 cfd9 MOVFF 0xfd9,0xfe900345a ffe900345c cfda MOVFF 0xfda,0xfea00345e ffea003460 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 cfee MOVFF 0xfee,0xfe600349e ffe60034a0 cfee MOVFF 0xfee,0xfe60034a2 ffe60034a4 ec5e CALL 0x3ebc,0x00034a6 f01f0034a8 6e00 MOVWF 0x0,0x00034aa 0e11 MOVLW 0x110034ac 5ee1 SUBWF 0xe1,0x1,0x00034ae 5000 MOVF 0x0,0x0,0x00034b0 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canBase\Source\CAN.c0034b2 5ce1 SUBWF 0xe1,0x0,0x00034b4 e202 BC 0x34ba0034b6 6ae1 CLRF 0xe1,0x00034b8 52e5 MOVF 0xe5,0x1,0x00034ba 6ee1 MOVWF 0xe1,0x00034bc 52e5 MOVF 0xe5,0x1,0x00034be cfe7 MOVFF 0xfe7,0xfd90034c0 ffd90034c2 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.c0034c4 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PACKET cp, CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0034c6 ffe60034c8 cfe1 MOVFF 0xfe1,0xfd90034ca ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0034cc 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034ce b740 BTFSC 0x40,0x3,0x10034d0 d004 BRA 0x34da0034d2 0e00 MOVLW 0x00034d4 1477 ANDWF 0x77,0x0,0x00034d6 0903 IORLW 0x30034d8 6e77 MOVWF 0x77,0x00034da 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034dc b730 BTFSC 0x30,0x3,0x10034de d004 BRA 0x34e80034e0 0e00 MOVLW 0x00034e2 1477 ANDWF 0x77,0x0,0x00034e4 0904 IORLW 0x40034e6 6e77 MOVWF 0x77,0x00034e8 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034ea b720 BTFSC 0x20,0x3,0x10034ec d005 BRA 0x34f80034ee 0e00 MOVLW 0x00034f0 1477 ANDWF 0x77,0x0,0x00034f2 0905 IORLW 0x50034f4 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c0034f6 d002 BRA 0x34fc else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c0034f8 0e00 MOVLW 0x00034fa d0bd BRA 0x3676F:\MCP\projects\CAN\canBase\Source\CAN.c0034fc 0eed MOVLW 0xed if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0034fe cfdb MOVFF 0xfdb,0x0003500 f000003502 3400 RLCF 0x0,0x0,0x0003504 e20e BC 0x3522003506 0eed MOVLW 0xed003508 cfdb MOVFF 0xfdb,0x100350a f00100350c 0e03 MOVLW 0x300350e 6ee7 MOVWF 0xe7,0x0003510 1801 XORWF 0x1,0x0,0x0003512 aee8 BTFSS 0xe8,0x7,0x0003514 d002 BRA 0x351a003516 3401 RLCF 0x1,0x0,0x0003518 d003 BRA 0x352000351a 50e7 MOVF 0xe7,0x0,0x000351c 80d8 BSF 0xd8,0x0,0x000351e 5401 SUBFWB 0x1,0x0,0x0003520 e202 BC 0x3526003522 0eed MOVLW 0xed003524 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.c003526 0eee MOVLW 0xee if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003528 50db MOVF 0xdb,0x0,0x000352a e124 BNZ 0x3574{ F:\MCP\projects\CAN\canBase\Source\CAN.c00352c 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.c00352e 50db MOVF 0xdb,0x0,0x0003530 0be0 ANDLW 0xe0003532 0be0 ANDLW 0xe0003534 38e8 SWAPF 0xe8,0x0,0x0003536 40e8 RRNCF 0xe8,0x0,0x0003538 6e01 MOVWF 0x1,0x000353a 0ef2 MOVLW 0xf200353c 50db MOVF 0xdb,0x0,0x000353e 0b07 ANDLW 0x7003540 0d08 MULLW 0x8003542 cff3 MOVFF 0xff3,0x0003544 f000003546 0eee MOVLW 0xee003548 50db MOVF 0xdb,0x0,0x000354a 0b03 ANDLW 0x300354c 0d40 MULLW 0x4000354e 50f3 MOVF 0xf3,0x0,0x0003550 2400 ADDWF 0x0,0x0,0x0003552 2401 ADDWF 0x1,0x0,0x0003554 6e61 MOVWF 0x61,0x0003556 0ef3 MOVLW 0xf3 RXB0SIDL = ((cp.boot.offset&0x1C)<<3)+(cp.boot.offset&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003558 50db MOVF 0xdb,0x0,0x000355a 0b03 ANDLW 0x300355c 6e00 MOVWF 0x0,0x000355e 0ef3 MOVLW 0xf3003560 50db MOVF 0xdb,0x0,0x0003562 0b1c ANDLW 0x1c003564 0d08 MULLW 0x8003566 50f3 MOVF 0xf3,0x0,0x0003568 2400 ADDWF 0x0,0x0,0x000356a 6e62 MOVWF 0x62,0x000356c 0ef4 MOVLW 0xf4 RXB0EIDH = cp.boot.rid; F:\MCP\projects\CAN\canBase\Source\CAN.c00356e 50db MOVF 0xdb,0x0,0x0003570 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c003572 d04f BRA 0x3612 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c003574 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.c003576 50db MOVF 0xdb,0x0,0x0003578 0b0f ANDLW 0xf00357a 0d04 MULLW 0x400357c cff3 MOVFF 0xff3,0x200357e f002003580 0eee MOVLW 0xee003582 50db MOVF 0xdb,0x0,0x0003584 0b03 ANDLW 0x3003586 0d40 MULLW 0x40003588 50f3 MOVF 0xf3,0x0,0x000358a 2402 ADDWF 0x2,0x0,0x000358c 6e00 MOVWF 0x0,0x000358e 6a01 CLRF 0x1,0x0003590 be00 BTFSC 0x0,0x7,0x0003592 6801 SETF 0x1,0x0003594 0ef0 MOVLW 0xf0003596 cfdb MOVFF 0xfdb,0x3003598 f00300359a 0ef1 MOVLW 0xf100359c cfdb MOVFF 0xfdb,0x400359e f0040035a0 0e00 MOVLW 0x00035a2 1603 ANDWF 0x3,0x1,0x00035a4 0e60 MOVLW 0x600035a6 1604 ANDWF 0x4,0x1,0x00035a8 3804 SWAPF 0x4,0x0,0x00035aa 6a04 CLRF 0x4,0x00035ac 30e8 RRCF 0xe8,0x0,0x00035ae 0b07 ANDLW 0x70035b0 6e03 MOVWF 0x3,0x00035b2 5000 MOVF 0x0,0x0,0x00035b4 2403 ADDWF 0x3,0x0,0x00035b6 6e61 MOVWF 0x61,0x00035b8 0ef0 MOVLW 0xf0 RXB0SIDL = ((cp.pgm.id&0x1C00)>>5)+((cp.pgm.id&0x300)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0035ba cfdb MOVFF 0xfdb,0x00035bc f0000035be 0ef1 MOVLW 0xf10035c0 cfdb MOVFF 0xfdb,0x10035c2 f0010035c4 0e00 MOVLW 0x00035c6 1600 ANDWF 0x0,0x1,0x00035c8 0e1c MOVLW 0x1c0035ca 1601 ANDWF 0x1,0x1,0x00035cc 0e05 MOVLW 0x50035ce 90d8 BCF 0xd8,0x0,0x00035d0 3201 RRCF 0x1,0x1,0x00035d2 3200 RRCF 0x0,0x1,0x00035d4 04e8 DECF 0xe8,0x0,0x00035d6 e1fb BNZ 0x35ce0035d8 0ef0 MOVLW 0xf00035da cfdb MOVFF 0xfdb,0x20035dc f0020035de 0ef1 MOVLW 0xf10035e0 cfdb MOVFF 0xfdb,0x30035e2 f0030035e4 0e00 MOVLW 0x00035e6 1602 ANDWF 0x2,0x1,0x00035e8 0e03 MOVLW 0x30035ea 1603 ANDWF 0x3,0x1,0x00035ec c003 MOVFF 0x3,0x20035ee f0020035f0 6a03 CLRF 0x3,0x00035f2 5000 MOVF 0x0,0x0,0x00035f4 2402 ADDWF 0x2,0x0,0x00035f6 6e62 MOVWF 0x62,0x00035f8 0eff MOVLW 0xff RXB0EIDH = (cp.pgm.id&0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0035fa 6ee7 MOVWF 0xe7,0x00035fc 0ef0 MOVLW 0xf00035fe cfdb MOVFF 0xfdb,0x0003600 f000003602 0ef1 MOVLW 0xf1003604 cfdb MOVFF 0xfdb,0x1003606 f001003608 50e7 MOVF 0xe7,0x0,0x000360a 1600 ANDWF 0x0,0x1,0x000360c 6a01 CLRF 0x1,0x000360e 5000 MOVF 0x0,0x0,0x0003610 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c003612 c0a0 MOVFF 0xa0,0xf64 RXB0EIDL = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c003614 ff64F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c003616 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c003618 0ef6 MOVLW 0xf6 if (cp.length>8) RXB0DLC=8; else RXB0DLC=cp.length; F:\MCP\projects\CAN\canBase\Source\CAN.c00361a 50db MOVF 0xdb,0x0,0x000361c 0808 SUBLW 0x800361e e203 BC 0x3626003620 0e08 MOVLW 0x8003622 6e65 MOVWF 0x65,0x0003624 d003 BRA 0x362c003626 0ef6 MOVLW 0xf6003628 50db MOVF 0xdb,0x0,0x000362a 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.c00362c 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.c00362e 0ef7 MOVLW 0xf7 RXB0D0=cp.data[0]; RXB0D1=cp.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c003630 50db MOVF 0xdb,0x0,0x0003632 6e66 MOVWF 0x66,0x0003634 0ef8 MOVLW 0xf8003636 50db MOVF 0xdb,0x0,0x0003638 6e67 MOVWF 0x67,0x000363a 0ef9 MOVLW 0xf9 RXB0D2=cp.data[2]; RXB0D3=cp.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c00363c 50db MOVF 0xdb,0x0,0x000363e 6e68 MOVWF 0x68,0x0003640 0efa MOVLW 0xfa003642 50db MOVF 0xdb,0x0,0x0003644 6e69 MOVWF 0x69,0x0003646 0efb MOVLW 0xfb RXB0D4=cp.data[4]; RXB0D5=cp.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c003648 50db MOVF 0xdb,0x0,0x000364a 6e6a MOVWF 0x6a,0x000364c 0efc MOVLW 0xfc00364e 50db MOVF 0xdb,0x0,0x0003650 6e6b MOVWF 0x6b,0x0003652 0efd MOVLW 0xfd RXB0D6=cp.data[6]; RXB0D7=cp.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c003654 50db MOVF 0xdb,0x0,0x0003656 6e6c MOVWF 0x6c,0x0003658 0efe MOVLW 0xfe00365a 50db MOVF 0xdb,0x0,0x000365c 6e6d MOVWF 0x6d,0x0// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c00365e 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.c003660 0eed MOVLW 0xed RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c003662 cfdb MOVFF 0xfdb,0xfe6003664 ffe6003666 0efc MOVLW 0xfc003668 1460 ANDWF 0x60,0x0,0x000366a 52e5 MOVF 0xe5,0x1,0x000366c 10e7 IORWF 0xe7,0x0,0x000366e 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.c003670 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.c003672 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c003674 d000 BRA 0x3676F:\MCP\projects\CAN\canBase\Source\CAN.c003676 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c003678 cfe7 MOVFF 0xfe7,0xfd900367a ffd900367c 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.c#include <Compiler.h> F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBase\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBase\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBase\Source\Tick.c#else F:\MCP\projects\CAN\canBase\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0045e2 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c0045e4 6ed6 MOVWF 0xd6,0x00045e6 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c0045e8 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canBase\Source\Tick.c0045ea 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c0045ec 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0045ee 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c0045f0 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0045f2 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0045f4 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.c0045f6 c09c MOVFF 0x9c,0x29 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c0045f8 f0290045fa c09d MOVFF 0x9d,0x2a0045fc f02a0045fe c09e MOVFF 0x9e,0x2b004600 f02b004602 c09f MOVFF 0x9f,0x2c004604 f02c004606 d000 BRA 0x4608004608 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.c00460a a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c00460c d00b BRA 0x4624{ F:\MCP\projects\CAN\canBase\Source\Tick.c00460e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c004610 6ed7 MOVWF 0xd7,0x0004612 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c004614 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c004616 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c004618 2b9c INCF 0x9c,0x1,0x100461a 0e00 MOVLW 0x000461c 239d ADDWFC 0x9d,0x1,0x100461e 239e ADDWFC 0x9e,0x1,0x1004620 239f ADDWFC 0x9f,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c004622 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c004624 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-02-25 20:51:08 +0100 (sö, 25 feb 2007) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 339 $ F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\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.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.c003ac0 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c003ac2 ffe6003ac4 cfe1 MOVFF 0xfe1,0xfd9003ac6 ffd9003ac8 0e17 MOVLW 0x17003aca 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_PACKET outCp; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.c003acc d9f0 RCALL 0x3eae mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003ace ec34 CALL 0x3068,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ad0 f018F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003ad2 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c003ad4 6ee6 MOVWF 0xe6,0x0003ad6 0e01 MOVLW 0x1003ad8 6ee6 MOVWF 0xe6,0x0003ada ec7b CALL 0x3ef6,0x0003adc f01f003ade 52e5 MOVF 0xe5,0x1,0x0003ae0 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.c003ae2 ecfe CALL 0x41fc,0x0 blindsInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae4 f020003ae6 6ae6 CLRF 0xe6,0x0 blindsTurn(0); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae8 ec16 CALL 0x422c,0x0003aea f021003aec 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.c003d68 d6c2 BRA 0x3aee while(1) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK temperature = 0; F:\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.cstatic TICK blinds = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003aee ecfb CALL 0x45f6,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c003af0 f022003af2 0100 MOVLB 0x0003af4 5179 MOVF 0x79,0x0,0x1003af6 5c29 SUBWF 0x29,0x0,0x0003af8 6e00 MOVWF 0x0,0x0003afa 517a MOVF 0x7a,0x0,0x1003afc 582a SUBWFB 0x2a,0x0,0x0003afe 6e01 MOVWF 0x1,0x0003b00 517b MOVF 0x7b,0x0,0x1003b02 582b SUBWFB 0x2b,0x0,0x0003b04 6e02 MOVWF 0x2,0x0003b06 517c MOVF 0x7c,0x0,0x1003b08 582c SUBWFB 0x2c,0x0,0x0003b0a 6e03 MOVWF 0x3,0x0003b0c 80d8 BSF 0xd8,0x0,0x0003b0e 0e64 MOVLW 0x64003b10 5400 SUBFWB 0x0,0x0,0x0003b12 0e00 MOVLW 0x0003b14 5401 SUBFWB 0x1,0x0,0x0003b16 0e00 MOVLW 0x0003b18 5402 SUBFWB 0x2,0x0,0x0003b1a 0e00 MOVLW 0x0003b1c 5403 SUBFWB 0x3,0x0,0x0003b1e e20b BC 0x3b36{ F:\MCP\projects\CAN\canTemp\Source\Main.c003b20 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c003b22 ecfb CALL 0x45f6,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003b24 f022003b26 c029 MOVFF 0x29,0x79003b28 f079003b2a c02a MOVFF 0x2a,0x7a003b2c f07a003b2e c02b MOVFF 0x2b,0x7b003b30 f07b003b32 c02c MOVFF 0x2c,0x7c003b34 f07c} 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.c003b36 ecfb CALL 0x45f6,0x0 if ((tickGet()-blinds)>3*TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c003b38 f022003b3a 0100 MOVLB 0x0003b3c 5183 MOVF 0x83,0x0,0x1003b3e 5c29 SUBWF 0x29,0x0,0x0003b40 6e00 MOVWF 0x0,0x0003b42 5184 MOVF 0x84,0x0,0x1003b44 582a SUBWFB 0x2a,0x0,0x0003b46 6e01 MOVWF 0x1,0x0003b48 5185 MOVF 0x85,0x0,0x1003b4a 582b SUBWFB 0x2b,0x0,0x0003b4c 6e02 MOVWF 0x2,0x0003b4e 5186 MOVF 0x86,0x0,0x1003b50 582c SUBWFB 0x2c,0x0,0x0003b52 6e03 MOVWF 0x3,0x0003b54 80d8 BSF 0xd8,0x0,0x0003b56 0e2c MOVLW 0x2c003b58 5400 SUBFWB 0x0,0x0,0x0003b5a 0e01 MOVLW 0x1003b5c 5401 SUBFWB 0x1,0x0,0x0003b5e 0e00 MOVLW 0x0003b60 5402 SUBFWB 0x2,0x0,0x0003b62 0e00 MOVLW 0x0003b64 5403 SUBFWB 0x3,0x0,0x0003b66 e251 BC 0x3c0a{ F:\MCP\projects\CAN\canTemp\Source\Main.c003b68 0e01 MOVLW 0x1 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003b6a 6edf MOVWF 0xdf,0x0003b6c 52de MOVF 0xde,0x1,0x0 outCp.pgm.class=pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b6e 6edd MOVWF 0xdd,0x0003b70 0e07 MOVLW 0x7 outCp.pgm.id=pstBLIND_TR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b72 6ef3 MOVWF 0xf3,0x0003b74 0e02 MOVLW 0x2003b76 cff3 MOVFF 0xff3,0xfdb003b78 ffdb003b7a 0e03 MOVLW 0x3003b7c 6adb CLRF 0xdb,0x0003b7e 0e01 MOVLW 0x1 outCp.length=1; F:\MCP\projects\CAN\canTemp\Source\Main.c003b80 6ef3 MOVWF 0xf3,0x0003b82 0e08 MOVLW 0x8003b84 cff3 MOVFF 0xff3,0xfdb003b86 ffdb003b88 ec12 CALL 0x4224,0x0 outCp.data[0]=blindsGetPrecent(); F:\MCP\projects\CAN\canTemp\Source\Main.c003b8a f021003b8c 6ee7 MOVWF 0xe7,0x0003b8e 0e09 MOVLW 0x9003b90 cfe7 MOVFF 0xfe7,0xfdb003b92 ffdb003b94 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003b96 6ee6 MOVWF 0xe6,0x0003b98 cfd9 MOVFF 0xfd9,0xfe9003b9a ffe9003b9c cfda MOVFF 0xfda,0xfea003b9e ffea003ba0 cfee MOVFF 0xfee,0xfe6003ba2 ffe6003ba4 cfee MOVFF 0xfee,0xfe6003ba6 ffe6003ba8 cfee MOVFF 0xfee,0xfe6003baa ffe6003bac cfee MOVFF 0xfee,0xfe6003bae ffe6003bb0 cfee MOVFF 0xfee,0xfe6003bb2 ffe6003bb4 cfee MOVFF 0xfee,0xfe6003bb6 ffe6003bb8 cfee MOVFF 0xfee,0xfe6003bba ffe6003bbc cfee MOVFF 0xfee,0xfe6003bbe ffe6003bc0 cfee MOVFF 0xfee,0xfe6003bc2 ffe6003bc4 cfee MOVFF 0xfee,0xfe6003bc6 ffe6003bc8 cfee MOVFF 0xfee,0xfe6003bca ffe6003bcc cfee MOVFF 0xfee,0xfe6003bce ffe6003bd0 cfee MOVFF 0xfee,0xfe6003bd2 ffe6003bd4 cfee MOVFF 0xfee,0xfe6003bd6 ffe6003bd8 cfee MOVFF 0xfee,0xfe6003bda ffe6003bdc cfee MOVFF 0xfee,0xfe6003bde ffe6003be0 cfee MOVFF 0xfee,0xfe6003be2 ffe6003be4 ec62 CALL 0x34c4,0x0003be6 f01a003be8 6e00 MOVWF 0x0,0x0003bea 0e12 MOVLW 0x12003bec 5ee1 SUBWF 0xe1,0x1,0x0003bee 5000 MOVF 0x0,0x0,0x0003bf0 0900 IORLW 0x0003bf2 e101 BNZ 0x3bf6003bf4 d7cf BRA 0x3b94003bf6 ecfb CALL 0x45f6,0x0 blinds = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003bf8 f022003bfa c029 MOVFF 0x29,0x83003bfc f083003bfe c02a MOVFF 0x2a,0x84003c00 f084003c02 c02b MOVFF 0x2b,0x85003c04 f085003c06 c02c MOVFF 0x2c,0x86003c08 f086} 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.c003c0a ecfb CALL 0x45f6,0x0 if ((tickGet()-temperature)>TICK_SECOND*2 && getNewTemperature==TRUE) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c003c0c f022003c0e 0100 MOVLB 0x0003c10 517d MOVF 0x7d,0x0,0x1003c12 5c29 SUBWF 0x29,0x0,0x0003c14 6e00 MOVWF 0x0,0x0003c16 517e MOVF 0x7e,0x0,0x1003c18 582a SUBWFB 0x2a,0x0,0x0003c1a 6e01 MOVWF 0x1,0x0003c1c 517f MOVF 0x7f,0x0,0x1003c1e 582b SUBWFB 0x2b,0x0,0x0003c20 6e02 MOVWF 0x2,0x0003c22 5180 MOVF 0x80,0x0,0x1003c24 582c SUBWFB 0x2c,0x0,0x0003c26 6e03 MOVWF 0x3,0x0003c28 80d8 BSF 0xd8,0x0,0x0003c2a 0ec8 MOVLW 0xc8003c2c 5400 SUBFWB 0x0,0x0,0x0003c2e 0e00 MOVLW 0x0003c30 5401 SUBFWB 0x1,0x0,0x0003c32 0e00 MOVLW 0x0003c34 5402 SUBFWB 0x2,0x0,0x0003c36 0e00 MOVLW 0x0003c38 5403 SUBFWB 0x3,0x0,0x0003c3a e21a BC 0x3c70003c3c 0581 DECF 0x81,0x0,0x1003c3e e118 BNZ 0x3c70{ F:\MCP\projects\CAN\canTemp\Source\Main.c003c40 0582 DECF 0x82,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c42 e103 BNZ 0x3c4a003c44 0e02 MOVLW 0x2003c46 6f82 MOVWF 0x82,0x1003c48 d002 BRA 0x3c4e003c4a 0e01 MOVLW 0x1003c4c 6f82 MOVWF 0x82,0x1003c4e c082 MOVFF 0x82,0xfe6 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c003c50 ffe6003c52 ece9 CALL 0x3fd2,0x0003c54 f01f003c56 52e5 MOVF 0xe5,0x1,0x0003c58 ecfb CALL 0x45f6,0x0 temperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003c5a f022003c5c c029 MOVFF 0x29,0x7d003c5e f07d003c60 c02a MOVFF 0x2a,0x7e003c62 f07e003c64 c02b MOVFF 0x2b,0x7f003c66 f07f003c68 c02c MOVFF 0x2c,0x80003c6a f080003c6c 0100 MOVLB 0x0 getNewTemperature=FALSE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c6e 6b81 CLRF 0x81,0x1} 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.c003c70 ecfa CALL 0x41f4,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c003c72 f020003c74 0900 IORLW 0x0003c76 e101 BNZ 0x3c7a003c78 d077 BRA 0x3d68{ 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.cunsigned long q; F:\MCP\projects\CAN\canTemp\Source\Main.c003c7a 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c003c7c 0f11 ADDLW 0x11003c7e 6ee6 MOVWF 0xe6,0x0003c80 0e00 MOVLW 0x0003c82 20da ADDWFC 0xda,0x0,0x0003c84 6ee6 MOVWF 0xe6,0x0003c86 50d9 MOVF 0xd9,0x0,0x0003c88 0f12 ADDLW 0x12003c8a 6ee6 MOVWF 0xe6,0x0003c8c 0e00 MOVLW 0x0003c8e 20da ADDWFC 0xda,0x0,0x0003c90 6ee6 MOVWF 0xe6,0x0003c92 ec14 CALL 0x4028,0x0003c94 f020003c96 52e5 MOVF 0xe5,0x1,0x0003c98 52e5 MOVF 0xe5,0x1,0x0003c9a 52e5 MOVF 0xe5,0x1,0x0003c9c 52e5 MOVF 0xe5,0x1,0x0003c9e ecf0 CALL 0x41e0,0x0 q = adcGetRaw(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ca0 f020003ca2 0e13 MOVLW 0x13003ca4 c029 MOVFF 0x29,0xfdb003ca6 ffdb003ca8 0e14 MOVLW 0x14003caa c02a MOVFF 0x2a,0xfdb003cac ffdb003cae 0e15 MOVLW 0x15003cb0 c02b MOVFF 0x2b,0xfdb003cb2 ffdb003cb4 0e16 MOVLW 0x16003cb6 c02c MOVFF 0x2c,0xfdb003cb8 ffdb003cba 0100 MOVLB 0x0 getNewTemperature=TRUE; F:\MCP\projects\CAN\canTemp\Source\Main.c003cbc 0e01 MOVLW 0x1003cbe 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canTemp\Source\Main.c003cc0 6edf MOVWF 0xdf,0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003cc2 52de MOVF 0xde,0x1,0x0 outCp.pgm.class =pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003cc4 6edd MOVWF 0xdd,0x0003cc6 0582 DECF 0x82,0x0,0x1 outCp.pgm.id =(lastTemperature==TEMPERATURE_INSIDE?pstTEMP_INSIDE:pstTEMP_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c003cc8 e102 BNZ 0x3cce003cca 0e01 MOVLW 0x1003ccc d001 BRA 0x3cd0003cce 0e02 MOVLW 0x2003cd0 6e00 MOVWF 0x0,0x0003cd2 6a01 CLRF 0x1,0x0003cd4 be00 BTFSC 0x0,0x7,0x0003cd6 6801 SETF 0x1,0x0003cd8 0e02 MOVLW 0x2003cda c000 MOVFF 0x0,0xfdb003cdc ffdb003cde 0e03 MOVLW 0x3003ce0 c001 MOVFF 0x1,0xfdb003ce2 ffdb003ce4 0e02 MOVLW 0x2 outCp.length =2; F:\MCP\projects\CAN\canTemp\Source\Main.c003ce6 6ef3 MOVWF 0xf3,0x0003ce8 0e08 MOVLW 0x8003cea cff3 MOVFF 0xff3,0xfdb003cec ffdb003cee 0e12 MOVLW 0x12 outCp.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c003cf0 50db MOVF 0xdb,0x0,0x0003cf2 6ee7 MOVWF 0xe7,0x0003cf4 0e0a MOVLW 0xa003cf6 cfe7 MOVFF 0xfe7,0xfdb003cf8 ffdb003cfa 0e11 MOVLW 0x11 outCp.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c003cfc 50db MOVF 0xdb,0x0,0x0003cfe 6ee7 MOVWF 0xe7,0x0003d00 0e09 MOVLW 0x9003d02 cfe7 MOVFF 0xfe7,0xfdb003d04 ffdb003d06 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003d08 6ee6 MOVWF 0xe6,0x0003d0a cfd9 MOVFF 0xfd9,0xfe9003d0c ffe9003d0e cfda MOVFF 0xfda,0xfea003d10 ffea003d12 cfee MOVFF 0xfee,0xfe6003d14 ffe6003d16 cfee MOVFF 0xfee,0xfe6003d18 ffe6003d1a cfee MOVFF 0xfee,0xfe6003d1c ffe6003d1e cfee MOVFF 0xfee,0xfe6003d20 ffe6003d22 cfee MOVFF 0xfee,0xfe6003d24 ffe6003d26 cfee MOVFF 0xfee,0xfe6003d28 ffe6003d2a cfee MOVFF 0xfee,0xfe6003d2c ffe6003d2e 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 ec62 CALL 0x34c4,0x0003d58 f01a003d5a 6e00 MOVWF 0x0,0x0003d5c 0e12 MOVLW 0x12003d5e 5ee1 SUBWF 0xe1,0x1,0x0003d60 5000 MOVF 0x0,0x0,0x0003d62 0900 IORLW 0x0003d64 e101 BNZ 0x3d68003d66 d7cf BRA 0x3d06} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c003d6a 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canTemp\Source\Main.c003d6c 5ce1 SUBWF 0xe1,0x0,0x0003d6e e202 BC 0x3d74003d70 6ae1 CLRF 0xe1,0x0003d72 52e5 MOVF 0xe5,0x1,0x0003d74 6ee1 MOVWF 0xe1,0x0003d76 52e5 MOVF 0xe5,0x1,0x0003d78 cfe7 MOVFF 0xfe7,0xfd9003d7a ffd9003d7c 0012 RETURN 0x0F:\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.c003d7e cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003d80 ffe4003d82 cfe2 MOVFF 0xfe2,0xfda003d84 ffda003d86 cfe9 MOVFF 0xfe9,0xfe4003d88 ffe4003d8a cfea MOVFF 0xfea,0xfe4003d8c ffe4003d8e cff6 MOVFF 0xff6,0xfe4003d90 ffe4003d92 cff7 MOVFF 0xff7,0xfe4003d94 ffe4003d96 cff5 MOVFF 0xff5,0xfe4003d98 ffe4003d9a cff3 MOVFF 0xff3,0xfe4003d9c ffe4003d9e cff4 MOVFF 0xff4,0xfe4003da0 ffe4003da2 cffa MOVFF 0xffa,0xfe4003da4 ffe4003da6 ee00 LFSR 0x0,0x23003da8 f023003daa 0e14 MOVLW 0x14003dac 04e8 DECF 0xe8,0x0,0x0003dae e303 BNC 0x3db6003db0 cfee MOVFF 0xfee,0xfe4003db2 ffe4003db4 d7fb BRA 0x3dac003db6 ee00 LFSR 0x0,0x0003db8 f000003dba 0e23 MOVLW 0x23003dbc 04e8 DECF 0xe8,0x0,0x0003dbe e303 BNC 0x3dc6003dc0 cfee MOVFF 0xfee,0xfe4003dc2 ffe4003dc4 d7fb BRA 0x3dbc003dc6 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c003dc8 ec9f CALL 0x313e,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003dca f018003dcc 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003dce ee00 LFSR 0x0,0x22003dd0 f022003dd2 0e23 MOVLW 0x23003dd4 04e8 DECF 0xe8,0x0,0x0003dd6 e303 BNC 0x3dde003dd8 cfe5 MOVFF 0xfe5,0xfed003dda ffed003ddc d7fb BRA 0x3dd4003dde ee00 LFSR 0x0,0x36003de0 f036003de2 0e14 MOVLW 0x14003de4 04e8 DECF 0xe8,0x0,0x0003de6 e303 BNC 0x3dee003de8 cfe5 MOVFF 0xfe5,0xfed003dea ffed003dec d7fb BRA 0x3de4003dee cfe5 MOVFF 0xfe5,0xffa003df0 fffa003df2 cfe5 MOVFF 0xfe5,0xff4003df4 fff4003df6 cfe5 MOVFF 0xfe5,0xff3003df8 fff3003dfa cfe5 MOVFF 0xfe5,0xff5003dfc fff5003dfe cfe5 MOVFF 0xfe5,0xff7003e00 fff7003e02 cfe5 MOVFF 0xfe5,0xff6003e04 fff6003e06 cfe5 MOVFF 0xfe5,0xfea003e08 ffea003e0a cfe5 MOVFF 0xfe5,0xfe9003e0c ffe9003e0e cfe5 MOVFF 0xfe5,0xfda003e10 ffda003e12 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.c003e14 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003e16 ffe4003e18 cfe2 MOVFF 0xfe2,0xfda003e1a ffda003e1c cfe9 MOVFF 0xfe9,0xfe4003e1e ffe4003e20 cfea MOVFF 0xfea,0xfe4003e22 ffe4003e24 cff6 MOVFF 0xff6,0xfe4003e26 ffe4003e28 cff7 MOVFF 0xff7,0xfe4003e2a ffe4003e2c cff5 MOVFF 0xff5,0xfe4003e2e ffe4003e30 cff3 MOVFF 0xff3,0xfe4003e32 ffe4003e34 cff4 MOVFF 0xff4,0xfe4003e36 ffe4003e38 cffa MOVFF 0xffa,0xfe4003e3a ffe4003e3c ee00 LFSR 0x0,0x23003e3e f023003e40 0e14 MOVLW 0x14003e42 04e8 DECF 0xe8,0x0,0x0003e44 e303 BNC 0x3e4c003e46 cfee MOVFF 0xfee,0xfe4003e48 ffe4003e4a d7fb BRA 0x3e42003e4c ee00 LFSR 0x0,0x0003e4e f000003e50 0e23 MOVLW 0x23003e52 04e8 DECF 0xe8,0x0,0x0003e54 e303 BNC 0x3e5c003e56 cfee MOVFF 0xfee,0xfe4003e58 ffe4003e5a d7fb BRA 0x3e52003e5c 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003e5e ec95 CALL 0x3f2a,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003e60 f01f#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.c003e62 eccc CALL 0x4398,0x0 blindsISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003e64 f021#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003e66 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003e68 ee00 LFSR 0x0,0x22003e6a f022003e6c 0e23 MOVLW 0x23003e6e 04e8 DECF 0xe8,0x0,0x0003e70 e303 BNC 0x3e78003e72 cfe5 MOVFF 0xfe5,0xfed003e74 ffed003e76 d7fb BRA 0x3e6e003e78 ee00 LFSR 0x0,0x36003e7a f036003e7c 0e14 MOVLW 0x14003e7e 04e8 DECF 0xe8,0x0,0x0003e80 e303 BNC 0x3e88003e82 cfe5 MOVFF 0xfe5,0xfed003e84 ffed003e86 d7fb BRA 0x3e7e003e88 cfe5 MOVFF 0xfe5,0xffa003e8a fffa003e8c cfe5 MOVFF 0xfe5,0xff4003e8e fff4003e90 cfe5 MOVFF 0xfe5,0xff3003e92 fff3003e94 cfe5 MOVFF 0xfe5,0xff5003e96 fff5003e98 cfe5 MOVFF 0xfe5,0xff7003e9a fff7003e9c cfe5 MOVFF 0xfe5,0xff6003e9e fff6003ea0 cfe5 MOVFF 0xfe5,0xfea003ea2 ffea003ea4 cfe5 MOVFF 0xfe5,0xfe9003ea6 ffe9003ea8 cfe5 MOVFF 0xfe5,0xfda003eaa ffda003eac 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.c003eae 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb0 9894 BCF 0x94,0x4,0x0 BLINDS0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb2 9a94 BCF 0x94,0x5,0x0 BLINDS0P_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canTemp\Source\Main.c003eb4 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb6 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; 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.c003eb8 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.c003eba 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.c003ebc cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_PACKET cp) F:\MCP\projects\CAN\canTemp\Source\Main.c003ebe ffe6003ec0 cfe1 MOVFF 0xfe1,0xfd9003ec2 ffd9{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003ec4 0eef MOVLW 0xef if (cp.pgm.class==pcACTUATOR && cp.pgm.id==patBLIND_TR) F:\MCP\projects\CAN\canTemp\Source\Main.c003ec6 50db MOVF 0xdb,0x0,0x0003ec8 0802 SUBLW 0x2003eca e111 BNZ 0x3eee003ecc 50d9 MOVF 0xd9,0x0,0x0003ece 0ff0 ADDLW 0xf0003ed0 6ee9 MOVWF 0xe9,0x0003ed2 0eff MOVLW 0xff003ed4 20da ADDWFC 0xda,0x0,0x0003ed6 6eea MOVWF 0xea,0x0003ed8 0e07 MOVLW 0x7003eda 18ee XORWF 0xee,0x0,0x0003edc e101 BNZ 0x3ee0003ede 50ed MOVF 0xed,0x0,0x0003ee0 e106 BNZ 0x3eee{ F:\MCP\projects\CAN\canTemp\Source\Main.c003ee2 0ef7 MOVLW 0xf7 blindsTurn(cp.data[0]); F:\MCP\projects\CAN\canTemp\Source\Main.c003ee4 cfdb MOVFF 0xfdb,0xfe6003ee6 ffe6003ee8 ec16 CALL 0x422c,0x0003eea f021003eec 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003eee 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003ef0 cfe7 MOVFF 0xfe7,0xfd9003ef2 ffd9003ef4 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.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 ef29 GOTO 0x4652 _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c003002 f023003004 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 efbf GOTO 0x3d7e _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 ef0a GOTO 0x3e14 _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.c0043e0 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c0043e2 ffe60043e4 cfe1 MOVFF 0xfe1,0xfd90043e6 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c0043e8 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c0043ea cfdb MOVFF 0xfdb,0x00043ec f0000043ee 0efe MOVLW 0xfe0043f0 cfdb MOVFF 0xfdb,0x10043f2 f0010043f4 c001 MOVFF 0x1,0x00043f6 f0000043f8 6a01 CLRF 0x1,0x00043fa 5000 MOVF 0x0,0x0,0x00043fc 6eaa MOVWF 0xaa,0x00043fe 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c004400 6ee7 MOVWF 0xe7,0x0004402 0efd MOVLW 0xfd004404 cfdb MOVFF 0xfdb,0x0004406 f000004408 0efe MOVLW 0xfe00440a cfdb MOVFF 0xfdb,0x100440c f00100440e 50e7 MOVF 0xe7,0x0,0x0004410 1600 ANDWF 0x0,0x1,0x0004412 6a01 CLRF 0x1,0x0004414 5000 MOVF 0x0,0x0,0x0004416 6ea9 MOVWF 0xa9,0x0004418 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c00441a 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c00441c 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c00441e 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c004420 d000 BRA 0x4422004422 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c004424 cfe7 MOVFF 0xfe7,0xfd9004426 ffd9004428 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.c00442a cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c00442c ffe600442e cfe1 MOVFF 0xfe1,0xfd9004430 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c004432 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c004434 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c004436 cfdb MOVFF 0xfdb,0x0004438 f00000443a 0efe MOVLW 0xfe00443c cfdb MOVFF 0xfdb,0x100443e f001004440 c001 MOVFF 0x1,0x0004442 f000004444 6a01 CLRF 0x1,0x0004446 5000 MOVF 0x0,0x0,0x0004448 6eaa MOVWF 0xaa,0x000444a 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c00444c 6ee7 MOVWF 0xe7,0x000444e 0efd MOVLW 0xfd004450 cfdb MOVFF 0xfdb,0x0004452 f000004454 0efe MOVLW 0xfe004456 cfdb MOVFF 0xfdb,0x1004458 f00100445a 50e7 MOVF 0xe7,0x0,0x000445c 1600 ANDWF 0x0,0x1,0x000445e 6a01 CLRF 0x1,0x0004460 5000 MOVF 0x0,0x0,0x0004462 6ea9 MOVWF 0xa9,0x0004464 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c004466 50db MOVF 0xdb,0x0,0x0004468 6ea8 MOVWF 0xa8,0x000446a 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c00446c 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c00446e 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c004470 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c004472 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c004474 6ea7 MOVWF 0xa7,0x0004476 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c004478 6ea7 MOVWF 0xa7,0x000447a 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c00447c 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c00447e a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c004480 d7fe BRA 0x447e004482 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c004484 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c004486 cfe7 MOVFF 0xfe7,0xfd9004488 ffd900448a 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.cstatic unsigned long TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.cstatic unsigned int 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.c003ef6 cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c003ef8 ffe6003efa cfe1 MOVFF 0xfe1,0xfd9003efc 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.c003efe 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c003f00 50db MOVF 0xdb,0x0,0x0003f02 0b0f ANDLW 0xf003f04 6e00 MOVWF 0x0,0x0003f06 0efe MOVLW 0xfe003f08 50db MOVF 0xdb,0x0,0x0003f0a 0b01 ANDLW 0x1003f0c 0d10 MULLW 0x10003f0e 50f3 MOVF 0xf3,0x0,0x0003f10 1000 IORWF 0x0,0x0,0x0003f12 6ec1 MOVWF 0xc1,0x0003f14 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c003f16 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c003f18 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c003f1a 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c003f1c 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c003f1e 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c003f20 9c9f BCF 0x9f,0x6,0x0 IPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c003f22 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c003f24 cfe7 MOVFF 0xfe7,0xfd9003f26 ffd9003f28 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.c003f2a 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c003f2c 0b40 ANDLW 0x40003f2e e050 BZ 0x3fd0003f30 509e MOVF 0x9e,0x0,0x0003f32 0b40 ANDLW 0x40003f34 e04d BZ 0x3fd0{ F:\MCP\projects\CAN\Include\adc.c003f36 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c003f38 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.c003f3a 6e04 MOVWF 0x4,0x0003f3c c004 MOVFF 0x4,0x5003f3e f005003f40 6a04 CLRF 0x4,0x0003f42 50c3 MOVF 0xc3,0x0,0x0003f44 0100 MOVLB 0x0003f46 1004 IORWF 0x4,0x0,0x0003f48 6e00 MOVWF 0x0,0x0003f4a c005 MOVFF 0x5,0x1003f4c f001003f4e 6a02 CLRF 0x2,0x0003f50 6a03 CLRF 0x3,0x0003f52 ae01 BTFSS 0x1,0x7,0x0003f54 d002 BRA 0x3f5a003f56 6802 SETF 0x2,0x0003f58 6803 SETF 0x3,0x0003f5a 5000 MOVF 0x0,0x0,0x0003f5c 0100 MOVLB 0x0003f5e 2791 ADDWF 0x91,0x1,0x1003f60 5001 MOVF 0x1,0x0,0x0003f62 2392 ADDWFC 0x92,0x1,0x1003f64 5002 MOVF 0x2,0x0,0x0003f66 2393 ADDWFC 0x93,0x1,0x1003f68 5003 MOVF 0x3,0x0,0x0003f6a 2394 ADDWFC 0x94,0x1,0x1003f6c 2b95 INCF 0x95,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c003f6e 0e00 MOVLW 0x0003f70 2396 ADDWFC 0x96,0x1,0x1F:\MCP\projects\CAN\Include\adc.c003f72 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c003f74 5d95 SUBWF 0x95,0x0,0x1003f76 0e00 MOVLW 0x0003f78 5996 SUBWFB 0x96,0x0,0x1003f7a e324 BNC 0x3fc4{ F:\MCP\projects\CAN\Include\adc.c003f7c c095 MOVFF 0x95,0x0 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c003f7e f000003f80 c096 MOVFF 0x96,0x1003f82 f001003f84 6a02 CLRF 0x2,0x0003f86 6a03 CLRF 0x3,0x0003f88 c091 MOVFF 0x91,0x29003f8a f029003f8c c092 MOVFF 0x92,0x2a003f8e f02a003f90 c093 MOVFF 0x93,0x2b003f92 f02b003f94 c094 MOVFF 0x94,0x2c003f96 f02c003f98 c000 MOVFF 0x0,0x2e003f9a f02e003f9c c001 MOVFF 0x1,0x2f003f9e f02f003fa0 c002 MOVFF 0x2,0x30003fa2 f030003fa4 c003 MOVFF 0x3,0x31003fa6 f031003fa8 eccd CALL 0x459a,0x0003faa f022003fac c029 MOVFF 0x29,0x91003fae f091003fb0 c02a MOVFF 0x2a,0x92003fb2 f092003fb4 c02b MOVFF 0x2b,0x93003fb6 f093003fb8 c02c MOVFF 0x2c,0x94003fba f094003fbc 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c003fbe 0e01 MOVLW 0x1003fc0 6fa2 MOVWF 0xa2,0x1} F:\MCP\projects\CAN\Include\adc.c003fc2 d006 BRA 0x3fd0 else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c003fc4 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c003fc6 6ee6 MOVWF 0xe6,0x0003fc8 ec37 CALL 0x466e,0x0003fca f023003fcc 52e5 MOVF 0xe5,0x1,0x0003fce 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.c003fd0 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.c003fd2 cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c003fd4 ffe6003fd6 cfe1 MOVFF 0xfe1,0xfd9003fd8 ffd9{ F:\MCP\projects\CAN\Include\adc.c003fda 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c003fdc 50db MOVF 0xdb,0x0,0x0003fde 080f SUBLW 0xf003fe0 e202 BC 0x3fe6003fe2 0e00 MOVLW 0x0003fe4 d015 BRA 0x4010F:\MCP\projects\CAN\Include\adc.c003fe6 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c003fe8 6b91 CLRF 0x91,0x1003fea 6b92 CLRF 0x92,0x1003fec 6b93 CLRF 0x93,0x1003fee 6b94 CLRF 0x94,0x1003ff0 6b95 CLRF 0x95,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c003ff2 6b96 CLRF 0x96,0x1F:\MCP\projects\CAN\Include\adc.c003ff4 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c003ff6 14c2 ANDWF 0xc2,0x0,0x0003ff8 6e00 MOVWF 0x0,0x0003ffa 0efe MOVLW 0xfe003ffc 50db MOVF 0xdb,0x0,0x0003ffe 0d04 MULLW 0x4004000 50f3 MOVF 0xf3,0x0,0x0004002 1000 IORWF 0x0,0x0,0x0004004 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c004006 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c004008 6ba2 CLRF 0xa2,0x1F:\MCP\projects\CAN\Include\adc.c00400a 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c00400c 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c00400e d000 BRA 0x4010004010 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c004012 cfe7 MOVFF 0xfe7,0xfd9004014 ffd9004016 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.c004018 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c00401a 6ba2 CLRF 0xa2,0x100401c c091 MOVFF 0x91,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c00401e fff3004020 c092 MOVFF 0x92,0xff4004022 fff4004024 d000 BRA 0x4026004026 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.c004028 cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c00402a ffe600402c cfe1 MOVFF 0xfe1,0xfd900402e ffd9004030 0e08 MOVLW 0x8004032 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c004034 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c004036 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c004038 c091 MOVFF 0x91,0x4 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c00403a f00400403c c092 MOVFF 0x92,0x500403e f005004040 c093 MOVFF 0x93,0x6004042 f006004044 c094 MOVFF 0x94,0x7004046 f007004048 0e27 MOVLW 0x2700404a 6e2e MOVWF 0x2e,0x000404c 6a2f CLRF 0x2f,0x000404e 6a30 CLRF 0x30,0x0004050 6a31 CLRF 0x31,0x0004052 c004 MOVFF 0x4,0x29004054 f029004056 c005 MOVFF 0x5,0x2a004058 f02a00405a c006 MOVFF 0x6,0x2b00405c f02b00405e c007 MOVFF 0x7,0x2c004060 f02c004062 ec95 CALL 0x452a,0x0004064 f022004066 c025 MOVFF 0x25,0x4004068 f00400406a c026 MOVFF 0x26,0x500406c f00500406e c027 MOVFF 0x27,0x6004070 f006004072 c028 MOVFF 0x28,0x7004074 f007004076 0e04 MOVLW 0x4004078 90d8 BCF 0xd8,0x0,0x000407a 3207 RRCF 0x7,0x1,0x000407c 3206 RRCF 0x6,0x1,0x000407e 3205 RRCF 0x5,0x1,0x0004080 3204 RRCF 0x4,0x1,0x0004082 06e8 DECF 0xe8,0x1,0x0004084 e1f9 BNZ 0x4078004086 c004 MOVFF 0x4,0x0004088 f00000408a c005 MOVFF 0x5,0x100408c f00100408e c006 MOVFF 0x6,0x2004090 f002004092 c007 MOVFF 0x7,0x3004094 f003004096 0ef3 MOVLW 0xf3004098 5e00 SUBWF 0x0,0x1,0x000409a 0e01 MOVLW 0x100409c 5a01 SUBWFB 0x1,0x1,0x000409e 0e00 MOVLW 0x00040a0 5a02 SUBWFB 0x2,0x1,0x00040a2 5a03 SUBWFB 0x3,0x1,0x00040a4 0e06 MOVLW 0x60040a6 c000 MOVFF 0x0,0xfdb0040a8 ffdb0040aa 0e07 MOVLW 0x70040ac c001 MOVFF 0x1,0xfdb0040ae ffdbF:\MCP\projects\CAN\Include\adc.c0040b0 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c0040b2 6e00 MOVWF 0x0,0x00040b4 6a01 CLRF 0x1,0x00040b6 0e06 MOVLW 0x60040b8 cfdb MOVFF 0xfdb,0x2b0040ba f02b0040bc 0e07 MOVLW 0x70040be cfdb MOVFF 0xfdb,0x2c0040c0 f02c0040c2 c000 MOVFF 0x0,0x300040c4 f0300040c6 c001 MOVFF 0x1,0x310040c8 f0310040ca ec58 CALL 0x38b0,0x00040cc f01c0040ce 0e02 MOVLW 0x20040d0 c02b MOVFF 0x2b,0xfdb0040d2 ffdb0040d4 0e03 MOVLW 0x30040d6 c02c MOVFF 0x2c,0xfdb0040d8 ffdb0040da 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c0040dc cfdb MOVFF 0xfdb,0x20040de f0020040e0 0e07 MOVLW 0x70040e2 cfdb MOVFF 0xfdb,0x30040e4 f0030040e6 0e0a MOVLW 0xa0040e8 6e2b MOVWF 0x2b,0x00040ea 6a2c CLRF 0x2c,0x00040ec 0e02 MOVLW 0x20040ee cfdb MOVFF 0xfdb,0x300040f0 f0300040f2 0e03 MOVLW 0x30040f4 cfdb MOVFF 0xfdb,0x310040f6 f0310040f8 ec7e CALL 0x38fc,0x00040fa f01c0040fc 5029 MOVF 0x29,0x0,0x00040fe 5c02 SUBWF 0x2,0x0,0x0004100 6e00 MOVWF 0x0,0x0004102 502a MOVF 0x2a,0x0,0x0004104 5803 SUBWFB 0x3,0x0,0x0004106 6e01 MOVWF 0x1,0x0004108 0e04 MOVLW 0x400410a c000 MOVFF 0x0,0xfdb00410c ffdb00410e 0e05 MOVLW 0x5004110 c001 MOVFF 0x1,0xfdb004112 ffdbF:\MCP\projects\CAN\Include\adc.c004114 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c004116 cfdb MOVFF 0xfdb,0x0004118 f00000411a 0e05 MOVLW 0x500411c cfdb MOVFF 0xfdb,0x100411e f001004120 0100 MOVLB 0x0004122 0e80 MOVLW 0x80004124 1401 ANDWF 0x1,0x0,0x0004126 e112 BNZ 0x414c004128 0e04 MOVLW 0x400412a cfdb MOVFF 0xfdb,0x200412c f00200412e 0e05 MOVLW 0x5004130 cfdb MOVFF 0xfdb,0x3004132 f003004134 3403 RLCF 0x3,0x0,0x0004136 e204 BC 0x4140004138 5002 MOVF 0x2,0x0,0x000413a 0802 SUBLW 0x200413c 0e00 MOVLW 0x000413e 5403 SUBFWB 0x3,0x0,0x0004140 e305 BNC 0x414c004142 0e04 MOVLW 0x4004144 6adb CLRF 0xdb,0x0004146 0e05 MOVLW 0x5004148 6adb CLRF 0xdb,0x000414a d02c BRA 0x41a4 else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c00414c 0e04 MOVLW 0x400414e cfdb MOVFF 0xfdb,0x0004150 f000004152 0e05 MOVLW 0x5004154 cfdb MOVFF 0xfdb,0x1004156 f001004158 90d8 BCF 0xd8,0x0,0x000415a 5001 MOVF 0x1,0x0,0x000415c e604 BN 0x416600415e 0e03 MOVLW 0x3004160 5c00 SUBWF 0x0,0x0,0x0004162 0e00 MOVLW 0x0004164 5801 SUBWFB 0x1,0x0,0x0004166 e315 BNC 0x4192004168 0e04 MOVLW 0x400416a cfdb MOVFF 0xfdb,0x200416c f00200416e 0e05 MOVLW 0x5004170 cfdb MOVFF 0xfdb,0x3004172 f003004174 3403 RLCF 0x3,0x0,0x0004176 e204 BC 0x4180004178 5002 MOVF 0x2,0x0,0x000417a 0807 SUBLW 0x700417c 0e00 MOVLW 0x000417e 5403 SUBFWB 0x3,0x0,0x0004180 e308 BNC 0x4192004182 0e05 MOVLW 0x5004184 6ef3 MOVWF 0xf3,0x0004186 0e04 MOVLW 0x4004188 cff3 MOVFF 0xff3,0xfdb00418a ffdb00418c 0e05 MOVLW 0x500418e 6adb CLRF 0xdb,0x0004190 d009 BRA 0x41a4 else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c004192 0e04 MOVLW 0x4004194 6adb CLRF 0xdb,0x0004196 0e05 MOVLW 0x5004198 6adb CLRF 0xdb,0x000419a 0e02 MOVLW 0x200419c 2adb INCF 0xdb,0x1,0x000419e 0e03 MOVLW 0x30041a0 e301 BNC 0x41a40041a2 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c0041a4 0efd MOVLW 0xfd *tenth = (signed char)v11; F:\MCP\projects\CAN\Include\adc.c0041a6 cfdb MOVFF 0xfdb,0xfe90041a8 ffe90041aa 0efe MOVLW 0xfe0041ac cfdb MOVFF 0xfdb,0xfea0041ae ffea0041b0 0e02 MOVLW 0x20041b2 cfdb MOVFF 0xfdb,0xfef0041b4 ffef0041b6 0efb MOVLW 0xfb *decimal = (BYTE)v01; F:\MCP\projects\CAN\Include\adc.c0041b8 cfdb MOVFF 0xfdb,0xfe90041ba ffe90041bc 0efc MOVLW 0xfc0041be cfdb MOVFF 0xfdb,0xfea0041c0 ffea0041c2 0e04 MOVLW 0x40041c4 cfdb MOVFF 0xfdb,0xfef0041c6 ffefF:\MCP\projects\CAN\Include\adc.c0041c8 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c0041ca 6ba2 CLRF 0xa2,0x10041cc 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c0041ce 5ce1 SUBWF 0xe1,0x0,0x00041d0 e202 BC 0x41d60041d2 6ae1 CLRF 0xe1,0x00041d4 52e5 MOVF 0xe5,0x1,0x00041d6 6ee1 MOVWF 0xe1,0x00041d8 52e5 MOVF 0xe5,0x1,0x00041da cfe7 MOVFF 0xfe7,0xfd90041dc ffd90041de 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cunsigned long adcGetRaw() F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c0041e0 c091 MOVFF 0x91,0x29 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c0041e2 f0290041e4 c092 MOVFF 0x92,0x2a0041e6 f02a0041e8 c093 MOVFF 0x93,0x2b0041ea f02b0041ec c094 MOVFF 0x94,0x2c0041ee f02c0041f0 d000 BRA 0x41f20041f2 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.c0041f4 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c0041f6 51a2 MOVF 0xa2,0x0,0x10041f8 d000 BRA 0x41fa0041fa 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-02-25 20:51:08 +0100 (sö, 25 feb 2007) $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Revision: $Revision: 339 $ 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 unsigned int timerVal = 50536; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic unsigned int turnOffIO = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic signed char currentPrecent = 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.c0041fc 0ec1 MOVLW 0xc1 T1CON = 0b11000001; F:\MCP\projects\CAN\canTemp\Source\blinds.c0041fe 6ecd MOVWF 0xcd,0x0004200 0e00 MOVLW 0x0 TMR1H=((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c004202 0100 MOVLB 0x0004204 1597 ANDWF 0x97,0x0,0x1004206 6e00 MOVWF 0x0,0x0004208 0eff MOVLW 0xff00420a 1598 ANDWF 0x98,0x0,0x100420c 6e01 MOVWF 0x1,0x000420e c001 MOVFF 0x1,0x0004210 f000004212 6a01 CLRF 0x1,0x0004214 5000 MOVF 0x0,0x0,0x0004216 6ecf MOVWF 0xcf,0x0004218 5197 MOVF 0x97,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c00421a 6ece MOVWF 0xce,0x000421c 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c00421e 809d BSF 0x9d,0x0,0x0 PIE1bits.TMR1IE = 1; F:\MCP\projects\CAN\canTemp\Source\blinds.c004220 909f BCF 0x9f,0x0,0x0 IPR1bits.TMR1IP = 0; // Low prior F:\MCP\projects\CAN\canTemp\Source\blinds.c004222 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.c004224 0100 MOVLB 0x0 return currentPrecent; F:\MCP\projects\CAN\canTemp\Source\blinds.c004226 519b MOVF 0x9b,0x0,0x1004228 d000 BRA 0x422a00422a 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.c00422c cfd9 MOVFF 0xfd9,0xfe6 void blindsTurn(BYTE precent) F:\MCP\projects\CAN\canTemp\Source\blinds.c00422e ffe6004230 cfe1 MOVFF 0xfe1,0xfd9004232 ffd9{ F:\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.c004234 8a82 BSF 0x82,0x5,0x0 BLINDS0P_IO=1; F:\MCP\projects\CAN\canTemp\Source\blinds.c004236 0100 MOVLB 0x0 turnOffIO = IO_TIMEOUT; F:\MCP\projects\CAN\canTemp\Source\blinds.c004238 0ebc MOVLW 0xbc00423a 6f99 MOVWF 0x99,0x100423c 0e02 MOVLW 0x200423e 6f9a MOVWF 0x9a,0x1/* F:\MCP\projects\CAN\canTemp\Source\blinds.cif (angle<ANGLE_MIN) {timerVal=ANGLE_MIN_TIMER; currentAngle=ANGLE_MIN; } F:\MCP\projects\CAN\canTemp\Source\blinds.celse if (angle>ANGLE_MAX) {timerVal=ANGLE_MAX_TIMER; currentAngle=ANGLE_MAX; } F:\MCP\projects\CAN\canTemp\Source\blinds.celse F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.ctimerVal=60536-(unsigned int)((90+(signed int)angle)*111.111); F:\MCP\projects\CAN\canTemp\Source\blinds.ccurrentAngle=angle; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.cangle=precent* F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c-50=k*100+m F:\MCP\projects\CAN\canTemp\Source\blinds.c60=k*0+m F:\MCP\projects\CAN\canTemp\Source\blinds.cangle=-1.1x+60 F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c004240 0efe MOVLW 0xfe currentPrecent=precent; F:\MCP\projects\CAN\canTemp\Source\blinds.c004242 cfdb MOVFF 0xfdb,0x9b004244 f09b004246 50db MOVF 0xdb,0x0,0x0 if (precent>100) { currentPrecent=100; } F:\MCP\projects\CAN\canTemp\Source\blinds.c004248 0864 SUBLW 0x6400424a e202 BC 0x425000424c 0e64 MOVLW 0x6400424e 6f9b MOVWF 0x9b,0x1004250 0e00 MOVLW 0x0 if (precent<0) { currentPrecent=0; } F:\MCP\projects\CAN\canTemp\Source\blinds.c004252 6ef3 MOVWF 0xf3,0x0004254 0efe MOVLW 0xfe004256 cfdb MOVFF 0xfdb,0xff4004258 fff400425a 50f3 MOVF 0xf3,0x0,0x000425c 5cf4 SUBWF 0xf4,0x0,0x000425e e201 BC 0x4262004260 6b9b CLRF 0x9b,0x1F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c004262 0e78 MOVLW 0x78 timerVal=60536-(unsigned int)((90+(-1.05*(signed int)currentPrecent+60))*111.111); F:\MCP\projects\CAN\canTemp\Source\blinds.c004264 6e03 MOVWF 0x3,0x0004266 0eec MOVLW 0xec004268 6e04 MOVWF 0x4,0x000426a 6a05 CLRF 0x5,0x000426c 6a0d CLRF 0xd,0x000426e 6a0e CLRF 0xe,0x0004270 0eb4 MOVLW 0xb4004272 6e0f MOVWF 0xf,0x0004274 0e42 MOVLW 0x42004276 6e10 MOVWF 0x10,0x0004278 0e66 MOVLW 0x6600427a 6e19 MOVWF 0x19,0x000427c 6e1a MOVWF 0x1a,0x000427e 0e86 MOVLW 0x86004280 6e1b MOVWF 0x1b,0x0004282 0ebf MOVLW 0xbf004284 6e1c MOVWF 0x1c,0x0004286 c09b MOVFF 0x9b,0x21004288 f02100428a 6a22 CLRF 0x22,0x000428c be21 BTFSC 0x21,0x7,0x000428e 6822 SETF 0x22,0x0004290 c021 MOVFF 0x21,0x2b004292 f02b004294 c022 MOVFF 0x22,0x2c004296 f02c004298 ec41 CALL 0x3682,0x000429a f01b00429c c02a MOVFF 0x2a,0x1d00429e f01d0042a0 c02b MOVFF 0x2b,0x1e0042a2 f01e0042a4 c02c MOVFF 0x2c,0x1f0042a6 f01f0042a8 c02d MOVFF 0x2d,0x200042aa f0200042ac c01d MOVFF 0x1d,0x2f0042ae f02f0042b0 c01e MOVFF 0x1e,0x300042b2 f0300042b4 c01f MOVFF 0x1f,0x310042b6 f0310042b8 c020 MOVFF 0x20,0x320042ba f0320042bc c019 MOVFF 0x19,0x2a0042be f02a0042c0 c01a MOVFF 0x1a,0x2b0042c2 f02b0042c4 c01b MOVFF 0x1b,0x2c0042c6 f02c0042c8 c01c MOVFF 0x1c,0x2d0042ca f02d0042cc eceb CALL 0x37d6,0x00042ce f01b0042d0 c02a MOVFF 0x2a,0x150042d2 f0150042d4 c02b MOVFF 0x2b,0x160042d6 f0160042d8 c02c MOVFF 0x2c,0x170042da f0170042dc c02d MOVFF 0x2d,0x180042de f0180042e0 6a2f CLRF 0x2f,0x00042e2 6a30 CLRF 0x30,0x00042e4 0e70 MOVLW 0x700042e6 6e31 MOVWF 0x31,0x00042e8 0e42 MOVLW 0x420042ea 6e32 MOVWF 0x32,0x00042ec c015 MOVFF 0x15,0x2a0042ee f02a0042f0 c016 MOVFF 0x16,0x2b0042f2 f02b0042f4 c017 MOVFF 0x17,0x2c0042f6 f02c0042f8 c018 MOVFF 0x18,0x2d0042fa f02d0042fc ec55 CALL 0x36aa,0x00042fe f01b004300 c02a MOVFF 0x2a,0x11004302 f011004304 c02b MOVFF 0x2b,0x12004306 f012004308 c02c MOVFF 0x2c,0x1300430a f01300430c c02d MOVFF 0x2d,0x1400430e f014004310 c011 MOVFF 0x11,0x2f004312 f02f004314 c012 MOVFF 0x12,0x30004316 f030004318 c013 MOVFF 0x13,0x3100431a f03100431c c014 MOVFF 0x14,0x3200431e f032004320 c00d MOVFF 0xd,0x2a004322 f02a004324 c00e MOVFF 0xe,0x2b004326 f02b004328 c00f MOVFF 0xf,0x2c00432a f02c00432c c010 MOVFF 0x10,0x2d00432e f02d004330 ec55 CALL 0x36aa,0x0004332 f01b004334 c02a MOVFF 0x2a,0x9004336 f009004338 c02b MOVFF 0x2b,0xa00433a f00a00433c c02c MOVFF 0x2c,0xb00433e f00b004340 c02d MOVFF 0x2d,0xc004342 f00c004344 0ed5 MOVLW 0xd5004346 6e2f MOVWF 0x2f,0x0004348 0e38 MOVLW 0x3800434a 6e30 MOVWF 0x30,0x000434c 0ede MOVLW 0xde00434e 6e31 MOVWF 0x31,0x0004350 0e42 MOVLW 0x42004352 6e32 MOVWF 0x32,0x0004354 c009 MOVFF 0x9,0x2a004356 f02a004358 c00a MOVFF 0xa,0x2b00435a f02b00435c c00b MOVFF 0xb,0x2c00435e f02c004360 c00c MOVFF 0xc,0x2d004362 f02d004364 eceb CALL 0x37d6,0x0004366 f01b004368 ecab CALL 0x3956,0x000436a f01c00436c c02b MOVFF 0x2b,0x600436e f006004370 c02c MOVFF 0x2c,0x7004372 f007004374 6a08 CLRF 0x8,0x0004376 5006 MOVF 0x6,0x0,0x0004378 5c03 SUBWF 0x3,0x0,0x000437a 6e00 MOVWF 0x0,0x000437c 5007 MOVF 0x7,0x0,0x000437e 5804 SUBWFB 0x4,0x0,0x0004380 6e01 MOVWF 0x1,0x0004382 5008 MOVF 0x8,0x0,0x0004384 5805 SUBWFB 0x5,0x0,0x0004386 6e02 MOVWF 0x2,0x0004388 c000 MOVFF 0x0,0x9700438a f09700438c c001 MOVFF 0x1,0x9800438e f098004390 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.c004392 cfe7 MOVFF 0xfe7,0xfd9004394 ffd9004396 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.cvoid blindsISR(void) F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004398 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.TMR1IF == 1 && PIE1bits.TMR1IE == 1) F:\MCP\projects\CAN\canTemp\Source\blinds.c00439a 0b01 ANDLW 0x100439c e020 BZ 0x43de00439e 509d MOVF 0x9d,0x0,0x00043a0 0b01 ANDLW 0x10043a2 e01d BZ 0x43de{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043a4 0e00 MOVLW 0x0 TMR1H=((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c0043a6 0100 MOVLB 0x00043a8 1597 ANDWF 0x97,0x0,0x10043aa 6e00 MOVWF 0x0,0x00043ac 0eff MOVLW 0xff0043ae 1598 ANDWF 0x98,0x0,0x10043b0 6e01 MOVWF 0x1,0x00043b2 c001 MOVFF 0x1,0x00043b4 f0000043b6 6a01 CLRF 0x1,0x00043b8 5000 MOVF 0x0,0x0,0x00043ba 6ecf MOVWF 0xcf,0x00043bc 5197 MOVF 0x97,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c0043be 6ece MOVWF 0xce,0x0F:\MCP\projects\CAN\canTemp\Source\blinds.c0043c0 7882 BTG 0x82,0x4,0x0 BLINDS0_IO=~BLINDS0_IO; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c0043c2 c099 MOVFF 0x99,0x0 if (turnOffIO--<1) F:\MCP\projects\CAN\canTemp\Source\blinds.c0043c4 f0000043c6 c09a MOVFF 0x9a,0x10043c8 f0010043ca 0799 DECF 0x99,0x1,0x10043cc 0e00 MOVLW 0x00043ce 5b9a SUBWFB 0x9a,0x1,0x10043d0 0e01 MOVLW 0x10043d2 5c00 SUBWF 0x0,0x0,0x00043d4 0e00 MOVLW 0x00043d6 5801 SUBWFB 0x1,0x0,0x00043d8 e201 BC 0x43dc{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043da 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.c0043dc 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c0043de 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c#endif F:\MCP\projects\CAN\canTemp\Source\blinds.c