Rev 342 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.1, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Thu Mar 01 14:31:57 2007Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* CAN module F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/CAN.c $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate: 2007-02-26 21:38:37 +0100 (må, 26 feb 2007) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 342 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.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 ec20 CALL 0x4640,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c0030a6 f023F:\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 ec1f CALL 0x443e,0x00030b0 f0220030b2 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 ec1f CALL 0x443e,0x00030c2 f0220030c4 52e5 MOVF 0xe5,0x1,0x00030c6 52e5 MOVF 0xe5,0x1,0x00030c8 0100 MOVLB 0x00030ca 6fa1 MOVWF 0xa1,0x10030cc 6ba2 CLRF 0xa2,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 6f6d MOVWF 0x6d,0x1 outCp.data[0]=(BYTE)(APP_VERSION & 0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e2 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0030e4 6ee6 MOVWF 0xe6,0x00030e6 c064 MOVFF 0x64,0xfe60030e8 ffe60030ea c065 MOVFF 0x65,0xfe60030ec ffe60030ee c066 MOVFF 0x66,0xfe60030f0 ffe60030f2 c067 MOVFF 0x67,0xfe60030f4 ffe60030f6 c068 MOVFF 0x68,0xfe60030f8 ffe60030fa c069 MOVFF 0x69,0xfe60030fc ffe60030fe c06a MOVFF 0x6a,0xfe6003100 ffe6003102 c06b MOVFF 0x6b,0xfe6003104 ffe6003106 c06c MOVFF 0x6c,0xfe6003108 ffe600310a c06d MOVFF 0x6d,0xfe600310c ffe600310e c06e MOVFF 0x6e,0xfe6003110 ffe6003112 c06f MOVFF 0x6f,0xfe6003114 ffe6003116 c070 MOVFF 0x70,0xfe6003118 ffe600311a c071 MOVFF 0x71,0xfe600311c ffe600311e c072 MOVFF 0x72,0xfe6003120 ffe6003122 c073 MOVFF 0x73,0xfe6003124 ffe6003126 c074 MOVFF 0x74,0xfe6003128 ffe600312a d9cb RCALL 0x34c200312c 6e00 MOVWF 0x0,0x000312e 0e12 MOVLW 0x12003130 5ee1 SUBWF 0xe1,0x1,0x0003132 5000 MOVF 0x0,0x0,0x0003134 0900 IORLW 0x0003136 e101 BNZ 0x313a003138 d7d4 BRA 0x30e200313a 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.c00313c 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00313e 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c003140 0b02 ANDLW 0x2003142 e106 BNZ 0x3150003144 50a4 MOVF 0xa4,0x0,0x0003146 0b02 ANDLW 0x2003148 e103 BNZ 0x315000314a 50a4 MOVF 0xa4,0x0,0x000314c 0b01 ANDLW 0x100314e e016 BZ 0x317c{ F:\MCP\projects\CAN\canBase\Source\CAN.c003150 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c003152 146f ANDWF 0x6f,0x0,0x0003154 0910 IORLW 0x10003156 6e00 MOVWF 0x0,0x0003158 0e00 MOVLW 0x000315a 1477 ANDWF 0x77,0x0,0x000315c 1000 IORWF 0x0,0x0,0x000315e 6e77 MOVWF 0x77,0x0003160 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c003162 d869 RCALL 0x3236F:\MCP\projects\CAN\canBase\Source\CAN.c003164 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003166 d002 BRA 0x316c003168 92a4 BCF 0xa4,0x1,0x000316a d064 BRA 0x323400316c a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00316e d002 BRA 0x3174003170 92a4 BCF 0xa4,0x1,0x0003172 d060 BRA 0x3234003174 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c003176 d002 BRA 0x317c003178 90a4 BCF 0xa4,0x0,0x000317a d05c BRA 0x3234} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00317c ec34 CALL 0x4668,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c00317e f023F:\MCP\projects\CAN\canBase\Source\CAN.c003180 ec2a CALL 0x4654,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c003182 f023003184 0100 MOVLB 0x0003186 5160 MOVF 0x60,0x0,0x1003188 5c29 SUBWF 0x29,0x0,0x000318a 6e00 MOVWF 0x0,0x000318c 0100 MOVLB 0x000318e 5161 MOVF 0x61,0x0,0x1003190 582a SUBWFB 0x2a,0x0,0x0003192 6e01 MOVWF 0x1,0x0003194 0100 MOVLB 0x0003196 5162 MOVF 0x62,0x0,0x1003198 582b SUBWFB 0x2b,0x0,0x000319a 6e02 MOVWF 0x2,0x000319c 0100 MOVLB 0x000319e 5163 MOVF 0x63,0x0,0x10031a0 582c SUBWFB 0x2c,0x0,0x00031a2 6e03 MOVWF 0x3,0x00031a4 80d8 BSF 0xd8,0x0,0x00031a6 0ef4 MOVLW 0xf40031a8 5400 SUBFWB 0x0,0x0,0x00031aa 0e01 MOVLW 0x10031ac 5401 SUBFWB 0x1,0x0,0x00031ae 0e00 MOVLW 0x00031b0 5402 SUBFWB 0x2,0x0,0x00031b2 0e00 MOVLW 0x00031b4 5403 SUBFWB 0x3,0x0,0x00031b6 e23e BC 0x3234{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0031b8 0100 MOVLB 0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canBase\Source\CAN.c0031ba 0e01 MOVLW 0x10031bc 6f64 MOVWF 0x64,0x10031be 0100 MOVLB 0x0 outCp.pgm.class=pcCTRL; F:\MCP\projects\CAN\canBase\Source\CAN.c0031c0 6b65 CLRF 0x65,0x10031c2 0e02 MOVLW 0x2 outCp.pgm.id=pctHEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0031c4 0100 MOVLB 0x00031c6 6f66 MOVWF 0x66,0x10031c8 6b67 CLRF 0x67,0x10031ca 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0031cc 6b6c CLRF 0x6c,0x10031ce 0e02 MOVLW 0x2 canSendMessage(outCp,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\CAN.c0031d0 6ee6 MOVWF 0xe6,0x00031d2 c064 MOVFF 0x64,0xfe60031d4 ffe60031d6 c065 MOVFF 0x65,0xfe60031d8 ffe60031da c066 MOVFF 0x66,0xfe60031dc ffe60031de c067 MOVFF 0x67,0xfe60031e0 ffe60031e2 c068 MOVFF 0x68,0xfe60031e4 ffe60031e6 c069 MOVFF 0x69,0xfe60031e8 ffe60031ea c06a MOVFF 0x6a,0xfe60031ec ffe60031ee c06b MOVFF 0x6b,0xfe60031f0 ffe60031f2 c06c MOVFF 0x6c,0xfe60031f4 ffe60031f6 c06d MOVFF 0x6d,0xfe60031f8 ffe60031fa c06e MOVFF 0x6e,0xfe60031fc ffe60031fe c06f MOVFF 0x6f,0xfe6003200 ffe6003202 c070 MOVFF 0x70,0xfe6003204 ffe6003206 c071 MOVFF 0x71,0xfe6003208 ffe600320a c072 MOVFF 0x72,0xfe600320c ffe600320e c073 MOVFF 0x73,0xfe6003210 ffe6003212 c074 MOVFF 0x74,0xfe6003214 ffe6003216 d955 RCALL 0x34c2003218 6e00 MOVWF 0x0,0x000321a 0e12 MOVLW 0x1200321c 5ee1 SUBWF 0xe1,0x1,0x000321e 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c003220 ec2a CALL 0x4654,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c003222 f023003224 c029 MOVFF 0x29,0x60003226 f060003228 c02a MOVFF 0x2a,0x6100322a f06100322c c02b MOVFF 0x2b,0x6200322e f062003230 c02c MOVFF 0x2c,0x63003232 f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c003234 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.c003236 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c003238 ffe600323a cfe1 MOVFF 0xfe1,0xfd900323c ffd900323e 0e11 MOVLW 0x11003240 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.c003242 0e06 MOVLW 0x6 cp.type = (BYTE)((RXB0SIDH&0xC0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c003244 6e00 MOVWF 0x0,0x0003246 0ec0 MOVLW 0xc0003248 1461 ANDWF 0x61,0x0,0x000324a c000 MOVFF 0x0,0xfe700324c ffe700324e 52e7 MOVF 0xe7,0x1,0x0003250 e004 BZ 0x325a003252 42e8 RRNCF 0xe8,0x1,0x0003254 0b7f ANDLW 0x7f003256 06e7 DECF 0xe7,0x1,0x0003258 e1fc BNZ 0x325200325a 6edf MOVWF 0xdf,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00325c 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c00325e e122 BNZ 0x32a4{ F:\MCP\projects\CAN\canBase\Source\CAN.c003260 0e38 MOVLW 0x38 cp.boot.type = ((RXB0SIDH&0x38)>>3); F:\MCP\projects\CAN\canBase\Source\CAN.c003262 1461 ANDWF 0x61,0x0,0x0003264 40e8 RRNCF 0xe8,0x0,0x0003266 40e8 RRNCF 0xe8,0x0,0x0003268 40e8 RRNCF 0xe8,0x0,0x000326a 0b1f ANDLW 0x1f00326c 6ee7 MOVWF 0xe7,0x000326e 0e04 MOVLW 0x4003270 cfe7 MOVFF 0xfe7,0xfdb003272 ffdb003274 0e03 MOVLW 0x3 cp.boot.offset= ((RXB0SIDH&0x7)<<5)+((RXB0SIDL&0xE0)>>3)+(RXB0SIDL&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003276 1462 ANDWF 0x62,0x0,0x0003278 6e01 MOVWF 0x1,0x000327a 0ee0 MOVLW 0xe000327c 1462 ANDWF 0x62,0x0,0x000327e 40e8 RRNCF 0xe8,0x0,0x0003280 40e8 RRNCF 0xe8,0x0,0x0003282 40e8 RRNCF 0xe8,0x0,0x0003284 0b1f ANDLW 0x1f003286 6e00 MOVWF 0x0,0x0003288 0e07 MOVLW 0x700328a 1461 ANDWF 0x61,0x0,0x000328c 0d20 MULLW 0x2000328e 50f3 MOVF 0xf3,0x0,0x0003290 2400 ADDWF 0x0,0x0,0x0003292 2401 ADDWF 0x1,0x0,0x0003294 6ee7 MOVWF 0xe7,0x0003296 0e05 MOVLW 0x5003298 cfe7 MOVFF 0xfe7,0xfdb00329a ffdb00329c 0e06 MOVLW 0x6 cp.boot.rid = RXB0EIDH; F:\MCP\projects\CAN\canBase\Source\CAN.c00329e cf63 MOVFF 0xf63,0xfdb0032a0 ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c0032a2 d03c BRA 0x331c else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c0032a4 0e3c MOVLW 0x3c cp.pgm.class= ((RXB0SIDH&0x3C)>>2); F:\MCP\projects\CAN\canBase\Source\CAN.c0032a6 1461 ANDWF 0x61,0x0,0x00032a8 40e8 RRNCF 0xe8,0x0,0x00032aa 40e8 RRNCF 0xe8,0x0,0x00032ac 0b3f ANDLW 0x3f0032ae 6ee7 MOVWF 0xe7,0x00032b0 0e01 MOVLW 0x10032b2 cfe7 MOVFF 0xfe7,0xfdb0032b4 ffdb0032b6 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.c0032b8 1461 ANDWF 0x61,0x0,0x00032ba 6e06 MOVWF 0x6,0x00032bc 6a07 CLRF 0x7,0x00032be 3806 SWAPF 0x6,0x0,0x00032c0 6a06 CLRF 0x6,0x00032c2 34e8 RLCF 0xe8,0x0,0x00032c4 0be0 ANDLW 0xe00032c6 6e07 MOVWF 0x7,0x00032c8 0ee0 MOVLW 0xe00032ca 1462 ANDWF 0x62,0x0,0x00032cc 6e08 MOVWF 0x8,0x00032ce 6a09 CLRF 0x9,0x00032d0 0e05 MOVLW 0x50032d2 90d8 BCF 0xd8,0x0,0x00032d4 3608 RLCF 0x8,0x1,0x00032d6 3609 RLCF 0x9,0x1,0x00032d8 04e8 DECF 0xe8,0x0,0x00032da e1fb BNZ 0x32d20032dc 5006 MOVF 0x6,0x0,0x00032de 2408 ADDWF 0x8,0x0,0x00032e0 6e04 MOVWF 0x4,0x00032e2 5007 MOVF 0x7,0x0,0x00032e4 2009 ADDWFC 0x9,0x0,0x00032e6 6e05 MOVWF 0x5,0x00032e8 0e03 MOVLW 0x30032ea 1462 ANDWF 0x62,0x0,0x00032ec 6e0a MOVWF 0xa,0x00032ee 6a0b CLRF 0xb,0x00032f0 c00a MOVFF 0xa,0xb0032f2 f00b0032f4 6a0a CLRF 0xa,0x00032f6 5004 MOVF 0x4,0x0,0x00032f8 240a ADDWF 0xa,0x0,0x00032fa 6e02 MOVWF 0x2,0x00032fc 5005 MOVF 0x5,0x0,0x00032fe 200b ADDWFC 0xb,0x0,0x0003300 6e03 MOVWF 0x3,0x0003302 5063 MOVF 0x63,0x0,0x0003304 0100 MOVLB 0x0003306 2402 ADDWF 0x2,0x0,0x0003308 6e00 MOVWF 0x0,0x000330a 0e00 MOVLW 0x000330c 2003 ADDWFC 0x3,0x0,0x000330e 6e01 MOVWF 0x1,0x0003310 0e02 MOVLW 0x2003312 c000 MOVFF 0x0,0xfdb003314 ffdb003316 0e03 MOVLW 0x3003318 c001 MOVFF 0x1,0xfdb00331a ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.c00331c 0e07 MOVLW 0x7 cp.sid = RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00331e cf64 MOVFF 0xf64,0xfdb003320 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c003322 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.c003324 0b01 ANDLW 0x1003326 6e02 MOVWF 0x2,0x0003328 5065 MOVF 0x65,0x0,0x000332a 0b02 ANDLW 0x200332c e001 BZ 0x333000332e 0e01 MOVLW 0x1003330 24e8 ADDWF 0xe8,0x0,0x0003332 6e01 MOVWF 0x1,0x0003334 5065 MOVF 0x65,0x0,0x0003336 0b04 ANDLW 0x4003338 e001 BZ 0x333c00333a 0e01 MOVLW 0x100333c 0d04 MULLW 0x400333e cff3 MOVFF 0xff3,0x0003340 f000003342 5065 MOVF 0x65,0x0,0x0003344 0b08 ANDLW 0x8003346 e001 BZ 0x334a003348 0e01 MOVLW 0x100334a 0d08 MULLW 0x800334c 50f3 MOVF 0xf3,0x0,0x000334e 2400 ADDWF 0x0,0x0,0x0003350 2401 ADDWF 0x1,0x0,0x0003352 2402 ADDWF 0x2,0x0,0x0003354 6ee7 MOVWF 0xe7,0x0003356 0e08 MOVLW 0x8003358 cfe7 MOVFF 0xfe7,0xfdb00335a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00335c 0e09 MOVLW 0x9 cp.data[0]=RXB0D0; cp.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00335e cf66 MOVFF 0xf66,0xfdb003360 ffdb003362 0e0a MOVLW 0xa003364 cf67 MOVFF 0xf67,0xfdb003366 ffdb003368 0e0b MOVLW 0xb cp.data[2]=RXB0D2; cp.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00336a cf68 MOVFF 0xf68,0xfdb00336c ffdb00336e 0e0c MOVLW 0xc003370 cf69 MOVFF 0xf69,0xfdb003372 ffdb003374 0e0d MOVLW 0xd cp.data[4]=RXB0D4; cp.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c003376 cf6a MOVFF 0xf6a,0xfdb003378 ffdb00337a 0e0e MOVLW 0xe00337c cf6b MOVFF 0xf6b,0xfdb00337e ffdb003380 0e0f MOVLW 0xf cp.data[6]=RXB0D6; cp.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c003382 cf6c MOVFF 0xf6c,0xfdb003384 ffdb003386 0e10 MOVLW 0x10003388 cf6d MOVFF 0xf6d,0xfdb00338a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00338c 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.c00338e 50df MOVF 0xdf,0x0,0x0 if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003390 e160 BNZ 0x3452{ F:\MCP\projects\CAN\canBase\Source\CAN.c003392 0e06 MOVLW 0x6 if (cp.boot.rid==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c003394 50db MOVF 0xdb,0x0,0x0003396 6e00 MOVWF 0x0,0x0003398 6a01 CLRF 0x1,0x000339a 0100 MOVLB 0x000339c 51a1 MOVF 0xa1,0x0,0x100339e 1800 XORWF 0x0,0x0,0x00033a0 e102 BNZ 0x33a60033a2 51a2 MOVF 0xa2,0x0,0x10033a4 1801 XORWF 0x1,0x0,0x00033a6 e155 BNZ 0x3452{ F:\MCP\projects\CAN\canBase\Source\CAN.c0033a8 0e04 MOVLW 0x4 if (cp.boot.type==btADDR) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0033aa 50db MOVF 0xdb,0x0,0x00033ac e101 BNZ 0x33b00033ae 00ff RESET0033b0 0e04 MOVLW 0x4 if (cp.boot.type==btCHANGEID) F:\MCP\projects\CAN\canBase\Source\CAN.c0033b2 50db MOVF 0xdb,0x0,0x00033b4 0807 SUBLW 0x70033b6 e14d BNZ 0x3452{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0033b8 0e09 MOVLW 0x9 MY_ID=cp.data[0]; F:\MCP\projects\CAN\canBase\Source\CAN.c0033ba 50db MOVF 0xdb,0x0,0x00033bc 0100 MOVLB 0x00033be 6fa1 MOVWF 0xa1,0x10033c0 6ba2 CLRF 0xa2,0x10033c2 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+1,cp.data[0]); F:\MCP\projects\CAN\canBase\Source\CAN.c0033c4 cfdb MOVFF 0xfdb,0xfe60033c6 ffe60033c8 0e01 MOVLW 0x10033ca 6ee6 MOVWF 0xe6,0x00033cc 6ae6 CLRF 0xe6,0x00033ce ec44 CALL 0x4488,0x00033d0 f0220033d2 52e5 MOVF 0xe5,0x1,0x00033d4 52e5 MOVF 0xe5,0x1,0x00033d6 52e5 MOVF 0xe5,0x1,0x00033d8 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c0033da 6ee6 MOVWF 0xe6,0x00033dc 0e00 MOVLW 0x00033de 6ee6 MOVWF 0xe6,0x00033e0 6ae6 CLRF 0xe6,0x00033e2 ec44 CALL 0x4488,0x00033e4 f0220033e6 52e5 MOVF 0xe5,0x1,0x00033e8 52e5 MOVF 0xe5,0x1,0x00033ea 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c0033ec 0100 MOVLB 0x0 outCp.type=ptBOOT; F:\MCP\projects\CAN\canBase\Source\CAN.c0033ee 6b64 CLRF 0x64,0x10033f0 0100 MOVLB 0x0 outCp.boot.type=btACK; F:\MCP\projects\CAN\canBase\Source\CAN.c0033f2 0e04 MOVLW 0x40033f4 6f68 MOVWF 0x68,0x10033f6 0100 MOVLB 0x0 outCp.length=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0033f8 6b6c CLRF 0x6c,0x10033fa 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0033fc 6ee6 MOVWF 0xe6,0x00033fe c064 MOVFF 0x64,0xfe6003400 ffe6003402 c065 MOVFF 0x65,0xfe6003404 ffe6003406 c066 MOVFF 0x66,0xfe6003408 ffe600340a c067 MOVFF 0x67,0xfe600340c ffe600340e c068 MOVFF 0x68,0xfe6003410 ffe6003412 c069 MOVFF 0x69,0xfe6003414 ffe6003416 c06a MOVFF 0x6a,0xfe6003418 ffe600341a c06b MOVFF 0x6b,0xfe600341c ffe600341e c06c MOVFF 0x6c,0xfe6003420 ffe6003422 c06d MOVFF 0x6d,0xfe6003424 ffe6003426 c06e MOVFF 0x6e,0xfe6003428 ffe600342a c06f MOVFF 0x6f,0xfe600342c ffe600342e c070 MOVFF 0x70,0xfe6003430 ffe6003432 c071 MOVFF 0x71,0xfe6003434 ffe6003436 c072 MOVFF 0x72,0xfe6003438 ffe600343a c073 MOVFF 0x73,0xfe600343c ffe600343e c074 MOVFF 0x74,0xfe6003440 ffe6003442 d83f RCALL 0x34c2003444 6e00 MOVWF 0x0,0x0003446 0e12 MOVLW 0x12003448 5ee1 SUBWF 0xe1,0x1,0x000344a 5000 MOVF 0x0,0x0,0x000344c 0900 IORLW 0x000344e e101 BNZ 0x3452003450 d7d4 BRA 0x33fa} 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.c003452 04df DECF 0xdf,0x0,0x0 if (cp.type==ptPGM) canParse(cp); F:\MCP\projects\CAN\canBase\Source\CAN.c003454 e12c BNZ 0x34ae003456 cfd9 MOVFF 0xfd9,0xfe9003458 ffe900345a cfda MOVFF 0xfda,0xfea00345c ffea00345e cfee MOVFF 0xfee,0xfe6003460 ffe6003462 cfee MOVFF 0xfee,0xfe6003464 ffe6003466 cfee MOVFF 0xfee,0xfe6003468 ffe600346a cfee MOVFF 0xfee,0xfe600346c ffe600346e cfee MOVFF 0xfee,0xfe6003470 ffe6003472 cfee MOVFF 0xfee,0xfe6003474 ffe6003476 cfee MOVFF 0xfee,0xfe6003478 ffe600347a cfee MOVFF 0xfee,0xfe600347c ffe600347e cfee MOVFF 0xfee,0xfe6003480 ffe6003482 cfee MOVFF 0xfee,0xfe6003484 ffe6003486 cfee MOVFF 0xfee,0xfe6003488 ffe600348a cfee MOVFF 0xfee,0xfe600348c ffe600348e cfee MOVFF 0xfee,0xfe6003490 ffe6003492 cfee MOVFF 0xfee,0xfe6003494 ffe6003496 cfee MOVFF 0xfee,0xfe6003498 ffe600349a cfee MOVFF 0xfee,0xfe600349c ffe600349e cfee MOVFF 0xfee,0xfe60034a0 ffe60034a2 ec5d CALL 0x3eba,0x00034a4 f01f0034a6 6e00 MOVWF 0x0,0x00034a8 0e11 MOVLW 0x110034aa 5ee1 SUBWF 0xe1,0x1,0x00034ac 5000 MOVF 0x0,0x0,0x00034ae 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canBase\Source\CAN.c0034b0 5ce1 SUBWF 0xe1,0x0,0x00034b2 e202 BC 0x34b80034b4 6ae1 CLRF 0xe1,0x00034b6 52e5 MOVF 0xe5,0x1,0x00034b8 6ee1 MOVWF 0xe1,0x00034ba 52e5 MOVF 0xe5,0x1,0x00034bc cfe7 MOVFF 0xfe7,0xfd90034be ffd90034c0 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.c0034c2 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_PACKET cp, CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0034c4 ffe60034c6 cfe1 MOVFF 0xfe1,0xfd90034c8 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0034ca 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034cc b740 BTFSC 0x40,0x3,0x10034ce d004 BRA 0x34d80034d0 0e00 MOVLW 0x00034d2 1477 ANDWF 0x77,0x0,0x00034d4 0903 IORLW 0x30034d6 6e77 MOVWF 0x77,0x00034d8 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034da b730 BTFSC 0x30,0x3,0x10034dc d004 BRA 0x34e60034de 0e00 MOVLW 0x00034e0 1477 ANDWF 0x77,0x0,0x00034e2 0904 IORLW 0x40034e4 6e77 MOVWF 0x77,0x00034e6 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0034e8 b720 BTFSC 0x20,0x3,0x10034ea d005 BRA 0x34f60034ec 0e00 MOVLW 0x00034ee 1477 ANDWF 0x77,0x0,0x00034f0 0905 IORLW 0x50034f2 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c0034f4 d002 BRA 0x34fa else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c0034f6 0e00 MOVLW 0x00034f8 d0bd BRA 0x3674F:\MCP\projects\CAN\canBase\Source\CAN.c0034fa 0eed MOVLW 0xed if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0034fc cfdb MOVFF 0xfdb,0x00034fe f000003500 3400 RLCF 0x0,0x0,0x0003502 e20e BC 0x3520003504 0eed MOVLW 0xed003506 cfdb MOVFF 0xfdb,0x1003508 f00100350a 0e03 MOVLW 0x300350c 6ee7 MOVWF 0xe7,0x000350e 1801 XORWF 0x1,0x0,0x0003510 aee8 BTFSS 0xe8,0x7,0x0003512 d002 BRA 0x3518003514 3401 RLCF 0x1,0x0,0x0003516 d003 BRA 0x351e003518 50e7 MOVF 0xe7,0x0,0x000351a 80d8 BSF 0xd8,0x0,0x000351c 5401 SUBFWB 0x1,0x0,0x000351e e202 BC 0x3524003520 0eed MOVLW 0xed003522 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.c003524 0eee MOVLW 0xee if (cp.type==ptBOOT) F:\MCP\projects\CAN\canBase\Source\CAN.c003526 50db MOVF 0xdb,0x0,0x0003528 e124 BNZ 0x3572{ F:\MCP\projects\CAN\canBase\Source\CAN.c00352a 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.c00352c 50db MOVF 0xdb,0x0,0x000352e 0be0 ANDLW 0xe0003530 0be0 ANDLW 0xe0003532 38e8 SWAPF 0xe8,0x0,0x0003534 40e8 RRNCF 0xe8,0x0,0x0003536 6e01 MOVWF 0x1,0x0003538 0ef2 MOVLW 0xf200353a 50db MOVF 0xdb,0x0,0x000353c 0b07 ANDLW 0x700353e 0d08 MULLW 0x8003540 cff3 MOVFF 0xff3,0x0003542 f000003544 0eee MOVLW 0xee003546 50db MOVF 0xdb,0x0,0x0003548 0b03 ANDLW 0x300354a 0d40 MULLW 0x4000354c 50f3 MOVF 0xf3,0x0,0x000354e 2400 ADDWF 0x0,0x0,0x0003550 2401 ADDWF 0x1,0x0,0x0003552 6e61 MOVWF 0x61,0x0003554 0ef3 MOVLW 0xf3 RXB0SIDL = ((cp.boot.offset&0x1C)<<3)+(cp.boot.offset&0x3); F:\MCP\projects\CAN\canBase\Source\CAN.c003556 50db MOVF 0xdb,0x0,0x0003558 0b03 ANDLW 0x300355a 6e00 MOVWF 0x0,0x000355c 0ef3 MOVLW 0xf300355e 50db MOVF 0xdb,0x0,0x0003560 0b1c ANDLW 0x1c003562 0d08 MULLW 0x8003564 50f3 MOVF 0xf3,0x0,0x0003566 2400 ADDWF 0x0,0x0,0x0003568 6e62 MOVWF 0x62,0x000356a 0ef4 MOVLW 0xf4 RXB0EIDH = cp.boot.rid; F:\MCP\projects\CAN\canBase\Source\CAN.c00356c 50db MOVF 0xdb,0x0,0x000356e 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c003570 d04f BRA 0x3610 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c003572 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.c003574 50db MOVF 0xdb,0x0,0x0003576 0b0f ANDLW 0xf003578 0d04 MULLW 0x400357a cff3 MOVFF 0xff3,0x200357c f00200357e 0eee MOVLW 0xee003580 50db MOVF 0xdb,0x0,0x0003582 0b03 ANDLW 0x3003584 0d40 MULLW 0x40003586 50f3 MOVF 0xf3,0x0,0x0003588 2402 ADDWF 0x2,0x0,0x000358a 6e00 MOVWF 0x0,0x000358c 6a01 CLRF 0x1,0x000358e be00 BTFSC 0x0,0x7,0x0003590 6801 SETF 0x1,0x0003592 0ef0 MOVLW 0xf0003594 cfdb MOVFF 0xfdb,0x3003596 f003003598 0ef1 MOVLW 0xf100359a cfdb MOVFF 0xfdb,0x400359c f00400359e 0e00 MOVLW 0x00035a0 1603 ANDWF 0x3,0x1,0x00035a2 0e60 MOVLW 0x600035a4 1604 ANDWF 0x4,0x1,0x00035a6 3804 SWAPF 0x4,0x0,0x00035a8 6a04 CLRF 0x4,0x00035aa 30e8 RRCF 0xe8,0x0,0x00035ac 0b07 ANDLW 0x70035ae 6e03 MOVWF 0x3,0x00035b0 5000 MOVF 0x0,0x0,0x00035b2 2403 ADDWF 0x3,0x0,0x00035b4 6e61 MOVWF 0x61,0x00035b6 0ef0 MOVLW 0xf0 RXB0SIDL = ((cp.pgm.id&0x1C00)>>5)+((cp.pgm.id&0x300)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0035b8 cfdb MOVFF 0xfdb,0x00035ba f0000035bc 0ef1 MOVLW 0xf10035be cfdb MOVFF 0xfdb,0x10035c0 f0010035c2 0e00 MOVLW 0x00035c4 1600 ANDWF 0x0,0x1,0x00035c6 0e1c MOVLW 0x1c0035c8 1601 ANDWF 0x1,0x1,0x00035ca 0e05 MOVLW 0x50035cc 90d8 BCF 0xd8,0x0,0x00035ce 3201 RRCF 0x1,0x1,0x00035d0 3200 RRCF 0x0,0x1,0x00035d2 04e8 DECF 0xe8,0x0,0x00035d4 e1fb BNZ 0x35cc0035d6 0ef0 MOVLW 0xf00035d8 cfdb MOVFF 0xfdb,0x20035da f0020035dc 0ef1 MOVLW 0xf10035de cfdb MOVFF 0xfdb,0x30035e0 f0030035e2 0e00 MOVLW 0x00035e4 1602 ANDWF 0x2,0x1,0x00035e6 0e03 MOVLW 0x30035e8 1603 ANDWF 0x3,0x1,0x00035ea c003 MOVFF 0x3,0x20035ec f0020035ee 6a03 CLRF 0x3,0x00035f0 5000 MOVF 0x0,0x0,0x00035f2 2402 ADDWF 0x2,0x0,0x00035f4 6e62 MOVWF 0x62,0x00035f6 0eff MOVLW 0xff RXB0EIDH = (cp.pgm.id&0xFF); F:\MCP\projects\CAN\canBase\Source\CAN.c0035f8 6ee7 MOVWF 0xe7,0x00035fa 0ef0 MOVLW 0xf00035fc cfdb MOVFF 0xfdb,0x00035fe f000003600 0ef1 MOVLW 0xf1003602 cfdb MOVFF 0xfdb,0x1003604 f001003606 50e7 MOVF 0xe7,0x0,0x0003608 1600 ANDWF 0x0,0x1,0x000360a 6a01 CLRF 0x1,0x000360c 5000 MOVF 0x0,0x0,0x000360e 6e63 MOVWF 0x63,0x0} F:\MCP\projects\CAN\canBase\Source\CAN.c003610 c0a1 MOVFF 0xa1,0xf64 RXB0EIDL = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c003612 ff64F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c003614 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c003616 0ef6 MOVLW 0xf6 if (cp.length>8) RXB0DLC=8; else RXB0DLC=cp.length; F:\MCP\projects\CAN\canBase\Source\CAN.c003618 50db MOVF 0xdb,0x0,0x000361a 0808 SUBLW 0x800361c e203 BC 0x362400361e 0e08 MOVLW 0x8003620 6e65 MOVWF 0x65,0x0003622 d003 BRA 0x362a003624 0ef6 MOVLW 0xf6003626 50db MOVF 0xdb,0x0,0x0003628 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.c00362a 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.c00362c 0ef7 MOVLW 0xf7 RXB0D0=cp.data[0]; RXB0D1=cp.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c00362e 50db MOVF 0xdb,0x0,0x0003630 6e66 MOVWF 0x66,0x0003632 0ef8 MOVLW 0xf8003634 50db MOVF 0xdb,0x0,0x0003636 6e67 MOVWF 0x67,0x0003638 0ef9 MOVLW 0xf9 RXB0D2=cp.data[2]; RXB0D3=cp.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c00363a 50db MOVF 0xdb,0x0,0x000363c 6e68 MOVWF 0x68,0x000363e 0efa MOVLW 0xfa003640 50db MOVF 0xdb,0x0,0x0003642 6e69 MOVWF 0x69,0x0003644 0efb MOVLW 0xfb RXB0D4=cp.data[4]; RXB0D5=cp.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c003646 50db MOVF 0xdb,0x0,0x0003648 6e6a MOVWF 0x6a,0x000364a 0efc MOVLW 0xfc00364c 50db MOVF 0xdb,0x0,0x000364e 6e6b MOVWF 0x6b,0x0003650 0efd MOVLW 0xfd RXB0D6=cp.data[6]; RXB0D7=cp.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c003652 50db MOVF 0xdb,0x0,0x0003654 6e6c MOVWF 0x6c,0x0003656 0efe MOVLW 0xfe003658 50db MOVF 0xdb,0x0,0x000365a 6e6d MOVWF 0x6d,0x0// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c00365c 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.c00365e 0eed MOVLW 0xed RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c003660 cfdb MOVFF 0xfdb,0xfe6003662 ffe6003664 0efc MOVLW 0xfc003666 1460 ANDWF 0x60,0x0,0x0003668 52e5 MOVF 0xe5,0x1,0x000366a 10e7 IORWF 0xe7,0x0,0x000366c 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.c00366e 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.c003670 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c003672 d000 BRA 0x3674F:\MCP\projects\CAN\canBase\Source\CAN.c003674 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c003676 cfe7 MOVFF 0xfe7,0xfd9003678 ffd900367a 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.c004640 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c004642 6ed6 MOVWF 0xd6,0x0004644 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c004646 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.c004648 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c00464a 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c00464c 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c00464e 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c004650 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c004652 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.c004654 c09d MOVFF 0x9d,0x29 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c004656 f029004658 c09e MOVFF 0x9e,0x2a00465a f02a00465c c09f MOVFF 0x9f,0x2b00465e f02b004660 c0a0 MOVFF 0xa0,0x2c004662 f02c004664 d000 BRA 0x4666004666 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.c004668 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c00466a d00b BRA 0x4682{ F:\MCP\projects\CAN\canBase\Source\Tick.c00466c 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c00466e 6ed7 MOVWF 0xd7,0x0004670 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c004672 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c004674 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c004676 2b9d INCF 0x9d,0x1,0x1004678 0e00 MOVLW 0x000467a 239e ADDWFC 0x9e,0x1,0x100467c 239f ADDWFC 0x9f,0x1,0x100467e 23a0 ADDWFC 0xa0,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c004680 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c004682 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-26 21:38:37 +0100 (må, 26 feb 2007) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 342 $ 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.c003abe cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c003ac0 ffe6003ac2 cfe1 MOVFF 0xfe1,0xfd9003ac4 ffd9003ac6 0e17 MOVLW 0x17003ac8 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.c003aca d9f0 RCALL 0x3eac mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c003acc ec34 CALL 0x3068,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ace f018F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003ad0 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c003ad2 6ee6 MOVWF 0xe6,0x0003ad4 0e01 MOVLW 0x1003ad6 6ee6 MOVWF 0xe6,0x0003ad8 ec7a CALL 0x3ef4,0x0003ada f01f003adc 52e5 MOVF 0xe5,0x1,0x0003ade 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.c003ae0 ecfd CALL 0x41fa,0x0 blindsInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae2 f020003ae4 6ae6 CLRF 0xe6,0x0 blindsTurn(0); F:\MCP\projects\CAN\canTemp\Source\Main.c003ae6 ec15 CALL 0x422a,0x0003ae8 f021003aea 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.c003d66 d6c2 BRA 0x3aec 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.c003aec ec2a CALL 0x4654,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c003aee f023003af0 0100 MOVLB 0x0003af2 5179 MOVF 0x79,0x0,0x1003af4 5c29 SUBWF 0x29,0x0,0x0003af6 6e00 MOVWF 0x0,0x0003af8 517a MOVF 0x7a,0x0,0x1003afa 582a SUBWFB 0x2a,0x0,0x0003afc 6e01 MOVWF 0x1,0x0003afe 517b MOVF 0x7b,0x0,0x1003b00 582b SUBWFB 0x2b,0x0,0x0003b02 6e02 MOVWF 0x2,0x0003b04 517c MOVF 0x7c,0x0,0x1003b06 582c SUBWFB 0x2c,0x0,0x0003b08 6e03 MOVWF 0x3,0x0003b0a 80d8 BSF 0xd8,0x0,0x0003b0c 0e64 MOVLW 0x64003b0e 5400 SUBFWB 0x0,0x0,0x0003b10 0e00 MOVLW 0x0003b12 5401 SUBFWB 0x1,0x0,0x0003b14 0e00 MOVLW 0x0003b16 5402 SUBFWB 0x2,0x0,0x0003b18 0e00 MOVLW 0x0003b1a 5403 SUBFWB 0x3,0x0,0x0003b1c e20b BC 0x3b34{ F:\MCP\projects\CAN\canTemp\Source\Main.c003b1e 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c003b20 ec2a CALL 0x4654,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003b22 f023003b24 c029 MOVFF 0x29,0x79003b26 f079003b28 c02a MOVFF 0x2a,0x7a003b2a f07a003b2c c02b MOVFF 0x2b,0x7b003b2e f07b003b30 c02c MOVFF 0x2c,0x7c003b32 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.c003b34 ec2a CALL 0x4654,0x0 if ((tickGet()-blinds)>3*TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c003b36 f023003b38 0100 MOVLB 0x0003b3a 5183 MOVF 0x83,0x0,0x1003b3c 5c29 SUBWF 0x29,0x0,0x0003b3e 6e00 MOVWF 0x0,0x0003b40 5184 MOVF 0x84,0x0,0x1003b42 582a SUBWFB 0x2a,0x0,0x0003b44 6e01 MOVWF 0x1,0x0003b46 5185 MOVF 0x85,0x0,0x1003b48 582b SUBWFB 0x2b,0x0,0x0003b4a 6e02 MOVWF 0x2,0x0003b4c 5186 MOVF 0x86,0x0,0x1003b4e 582c SUBWFB 0x2c,0x0,0x0003b50 6e03 MOVWF 0x3,0x0003b52 80d8 BSF 0xd8,0x0,0x0003b54 0e2c MOVLW 0x2c003b56 5400 SUBFWB 0x0,0x0,0x0003b58 0e01 MOVLW 0x1003b5a 5401 SUBFWB 0x1,0x0,0x0003b5c 0e00 MOVLW 0x0003b5e 5402 SUBFWB 0x2,0x0,0x0003b60 0e00 MOVLW 0x0003b62 5403 SUBFWB 0x3,0x0,0x0003b64 e251 BC 0x3c08{ F:\MCP\projects\CAN\canTemp\Source\Main.c003b66 0e01 MOVLW 0x1 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003b68 6edf MOVWF 0xdf,0x0003b6a 52de MOVF 0xde,0x1,0x0 outCp.pgm.class=pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b6c 6edd MOVWF 0xdd,0x0003b6e 0e07 MOVLW 0x7 outCp.pgm.id=pstBLIND_TR; F:\MCP\projects\CAN\canTemp\Source\Main.c003b70 6ef3 MOVWF 0xf3,0x0003b72 0e02 MOVLW 0x2003b74 cff3 MOVFF 0xff3,0xfdb003b76 ffdb003b78 0e03 MOVLW 0x3003b7a 6adb CLRF 0xdb,0x0003b7c 0e01 MOVLW 0x1 outCp.length=1; F:\MCP\projects\CAN\canTemp\Source\Main.c003b7e 6ef3 MOVWF 0xf3,0x0003b80 0e08 MOVLW 0x8003b82 cff3 MOVFF 0xff3,0xfdb003b84 ffdb003b86 ec11 CALL 0x4222,0x0 outCp.data[0]=blindsGetPrecent(); F:\MCP\projects\CAN\canTemp\Source\Main.c003b88 f021003b8a 6ee7 MOVWF 0xe7,0x0003b8c 0e09 MOVLW 0x9003b8e cfe7 MOVFF 0xfe7,0xfdb003b90 ffdb003b92 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003b94 6ee6 MOVWF 0xe6,0x0003b96 cfd9 MOVFF 0xfd9,0xfe9003b98 ffe9003b9a cfda MOVFF 0xfda,0xfea003b9c ffea003b9e cfee MOVFF 0xfee,0xfe6003ba0 ffe6003ba2 cfee MOVFF 0xfee,0xfe6003ba4 ffe6003ba6 cfee MOVFF 0xfee,0xfe6003ba8 ffe6003baa cfee MOVFF 0xfee,0xfe6003bac ffe6003bae cfee MOVFF 0xfee,0xfe6003bb0 ffe6003bb2 cfee MOVFF 0xfee,0xfe6003bb4 ffe6003bb6 cfee MOVFF 0xfee,0xfe6003bb8 ffe6003bba cfee MOVFF 0xfee,0xfe6003bbc ffe6003bbe cfee MOVFF 0xfee,0xfe6003bc0 ffe6003bc2 cfee MOVFF 0xfee,0xfe6003bc4 ffe6003bc6 cfee MOVFF 0xfee,0xfe6003bc8 ffe6003bca cfee MOVFF 0xfee,0xfe6003bcc ffe6003bce cfee MOVFF 0xfee,0xfe6003bd0 ffe6003bd2 cfee MOVFF 0xfee,0xfe6003bd4 ffe6003bd6 cfee MOVFF 0xfee,0xfe6003bd8 ffe6003bda cfee MOVFF 0xfee,0xfe6003bdc ffe6003bde cfee MOVFF 0xfee,0xfe6003be0 ffe6003be2 ec61 CALL 0x34c2,0x0003be4 f01a003be6 6e00 MOVWF 0x0,0x0003be8 0e12 MOVLW 0x12003bea 5ee1 SUBWF 0xe1,0x1,0x0003bec 5000 MOVF 0x0,0x0,0x0003bee 0900 IORLW 0x0003bf0 e101 BNZ 0x3bf4003bf2 d7cf BRA 0x3b92003bf4 ec2a CALL 0x4654,0x0 blinds = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003bf6 f023003bf8 c029 MOVFF 0x29,0x83003bfa f083003bfc c02a MOVFF 0x2a,0x84003bfe f084003c00 c02b MOVFF 0x2b,0x85003c02 f085003c04 c02c MOVFF 0x2c,0x86003c06 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.c003c08 ec2a CALL 0x4654,0x0 if ((tickGet()-temperature)>TICK_SECOND*2 && getNewTemperature==TRUE) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c003c0a f023003c0c 0100 MOVLB 0x0003c0e 517d MOVF 0x7d,0x0,0x1003c10 5c29 SUBWF 0x29,0x0,0x0003c12 6e00 MOVWF 0x0,0x0003c14 517e MOVF 0x7e,0x0,0x1003c16 582a SUBWFB 0x2a,0x0,0x0003c18 6e01 MOVWF 0x1,0x0003c1a 517f MOVF 0x7f,0x0,0x1003c1c 582b SUBWFB 0x2b,0x0,0x0003c1e 6e02 MOVWF 0x2,0x0003c20 5180 MOVF 0x80,0x0,0x1003c22 582c SUBWFB 0x2c,0x0,0x0003c24 6e03 MOVWF 0x3,0x0003c26 80d8 BSF 0xd8,0x0,0x0003c28 0ec8 MOVLW 0xc8003c2a 5400 SUBFWB 0x0,0x0,0x0003c2c 0e00 MOVLW 0x0003c2e 5401 SUBFWB 0x1,0x0,0x0003c30 0e00 MOVLW 0x0003c32 5402 SUBFWB 0x2,0x0,0x0003c34 0e00 MOVLW 0x0003c36 5403 SUBFWB 0x3,0x0,0x0003c38 e21a BC 0x3c6e003c3a 0581 DECF 0x81,0x0,0x1003c3c e118 BNZ 0x3c6e{ F:\MCP\projects\CAN\canTemp\Source\Main.c003c3e 0582 DECF 0x82,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c40 e103 BNZ 0x3c48003c42 0e02 MOVLW 0x2003c44 6f82 MOVWF 0x82,0x1003c46 d002 BRA 0x3c4c003c48 0e01 MOVLW 0x1003c4a 6f82 MOVWF 0x82,0x1003c4c c082 MOVFF 0x82,0xfe6 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c003c4e ffe6003c50 ece8 CALL 0x3fd0,0x0003c52 f01f003c54 52e5 MOVF 0xe5,0x1,0x0003c56 ec2a CALL 0x4654,0x0 temperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c003c58 f023003c5a c029 MOVFF 0x29,0x7d003c5c f07d003c5e c02a MOVFF 0x2a,0x7e003c60 f07e003c62 c02b MOVFF 0x2b,0x7f003c64 f07f003c66 c02c MOVFF 0x2c,0x80003c68 f080003c6a 0100 MOVLB 0x0 getNewTemperature=FALSE; F:\MCP\projects\CAN\canTemp\Source\Main.c003c6c 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.c003c6e ecf9 CALL 0x41f2,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c003c70 f020003c72 0900 IORLW 0x0003c74 e101 BNZ 0x3c78003c76 d077 BRA 0x3d66{ 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.c003c78 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c003c7a 0f11 ADDLW 0x11003c7c 6ee6 MOVWF 0xe6,0x0003c7e 0e00 MOVLW 0x0003c80 20da ADDWFC 0xda,0x0,0x0003c82 6ee6 MOVWF 0xe6,0x0003c84 50d9 MOVF 0xd9,0x0,0x0003c86 0f12 ADDLW 0x12003c88 6ee6 MOVWF 0xe6,0x0003c8a 0e00 MOVLW 0x0003c8c 20da ADDWFC 0xda,0x0,0x0003c8e 6ee6 MOVWF 0xe6,0x0003c90 ec13 CALL 0x4026,0x0003c92 f020003c94 52e5 MOVF 0xe5,0x1,0x0003c96 52e5 MOVF 0xe5,0x1,0x0003c98 52e5 MOVF 0xe5,0x1,0x0003c9a 52e5 MOVF 0xe5,0x1,0x0003c9c ecef CALL 0x41de,0x0 q = adcGetRaw(); F:\MCP\projects\CAN\canTemp\Source\Main.c003c9e f020003ca0 0e13 MOVLW 0x13003ca2 c029 MOVFF 0x29,0xfdb003ca4 ffdb003ca6 0e14 MOVLW 0x14003ca8 c02a MOVFF 0x2a,0xfdb003caa ffdb003cac 0e15 MOVLW 0x15003cae c02b MOVFF 0x2b,0xfdb003cb0 ffdb003cb2 0e16 MOVLW 0x16003cb4 c02c MOVFF 0x2c,0xfdb003cb6 ffdb003cb8 0100 MOVLB 0x0 getNewTemperature=TRUE; F:\MCP\projects\CAN\canTemp\Source\Main.c003cba 0e01 MOVLW 0x1003cbc 6f81 MOVWF 0x81,0x1F:\MCP\projects\CAN\canTemp\Source\Main.c003cbe 6edf MOVWF 0xdf,0x0 outCp.type=ptPGM; F:\MCP\projects\CAN\canTemp\Source\Main.c003cc0 52de MOVF 0xde,0x1,0x0 outCp.pgm.class =pcSENSOR; F:\MCP\projects\CAN\canTemp\Source\Main.c003cc2 6edd MOVWF 0xdd,0x0003cc4 0582 DECF 0x82,0x0,0x1 outCp.pgm.id =(lastTemperature==TEMPERATURE_INSIDE?pstTEMP_INSIDE:pstTEMP_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c003cc6 e102 BNZ 0x3ccc003cc8 0e01 MOVLW 0x1003cca d001 BRA 0x3cce003ccc 0e02 MOVLW 0x2003cce 6e00 MOVWF 0x0,0x0003cd0 6a01 CLRF 0x1,0x0003cd2 be00 BTFSC 0x0,0x7,0x0003cd4 6801 SETF 0x1,0x0003cd6 0e02 MOVLW 0x2003cd8 c000 MOVFF 0x0,0xfdb003cda ffdb003cdc 0e03 MOVLW 0x3003cde c001 MOVFF 0x1,0xfdb003ce0 ffdb003ce2 0e02 MOVLW 0x2 outCp.length =2; F:\MCP\projects\CAN\canTemp\Source\Main.c003ce4 6ef3 MOVWF 0xf3,0x0003ce6 0e08 MOVLW 0x8003ce8 cff3 MOVFF 0xff3,0xfdb003cea ffdb003cec 0e12 MOVLW 0x12 outCp.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c003cee 50db MOVF 0xdb,0x0,0x0003cf0 6ee7 MOVWF 0xe7,0x0003cf2 0e0a MOVLW 0xa003cf4 cfe7 MOVFF 0xfe7,0xfdb003cf6 ffdb003cf8 0e11 MOVLW 0x11 outCp.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c003cfa 50db MOVF 0xdb,0x0,0x0003cfc 6ee7 MOVWF 0xe7,0x0003cfe 0e09 MOVLW 0x9003d00 cfe7 MOVFF 0xfe7,0xfdb003d02 ffdb003d04 0e02 MOVLW 0x2 while(!canSendMessage(outCp,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c003d06 6ee6 MOVWF 0xe6,0x0003d08 cfd9 MOVFF 0xfd9,0xfe9003d0a ffe9003d0c cfda MOVFF 0xfda,0xfea003d0e ffea003d10 cfee MOVFF 0xfee,0xfe6003d12 ffe6003d14 cfee MOVFF 0xfee,0xfe6003d16 ffe6003d18 cfee MOVFF 0xfee,0xfe6003d1a ffe6003d1c cfee MOVFF 0xfee,0xfe6003d1e ffe6003d20 cfee MOVFF 0xfee,0xfe6003d22 ffe6003d24 cfee MOVFF 0xfee,0xfe6003d26 ffe6003d28 cfee MOVFF 0xfee,0xfe6003d2a ffe6003d2c cfee MOVFF 0xfee,0xfe6003d2e ffe6003d30 cfee MOVFF 0xfee,0xfe6003d32 ffe6003d34 cfee MOVFF 0xfee,0xfe6003d36 ffe6003d38 cfee MOVFF 0xfee,0xfe6003d3a ffe6003d3c cfee MOVFF 0xfee,0xfe6003d3e ffe6003d40 cfee MOVFF 0xfee,0xfe6003d42 ffe6003d44 cfee MOVFF 0xfee,0xfe6003d46 ffe6003d48 cfee MOVFF 0xfee,0xfe6003d4a ffe6003d4c cfee MOVFF 0xfee,0xfe6003d4e ffe6003d50 cfee MOVFF 0xfee,0xfe6003d52 ffe6003d54 ec61 CALL 0x34c2,0x0003d56 f01a003d58 6e00 MOVWF 0x0,0x0003d5a 0e12 MOVLW 0x12003d5c 5ee1 SUBWF 0xe1,0x1,0x0003d5e 5000 MOVF 0x0,0x0,0x0003d60 0900 IORLW 0x0003d62 e101 BNZ 0x3d66003d64 d7cf BRA 0x3d04} 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.c003d68 0e17 MOVLW 0x17 } F:\MCP\projects\CAN\canTemp\Source\Main.c003d6a 5ce1 SUBWF 0xe1,0x0,0x0003d6c e202 BC 0x3d72003d6e 6ae1 CLRF 0xe1,0x0003d70 52e5 MOVF 0xe5,0x1,0x0003d72 6ee1 MOVWF 0xe1,0x0003d74 52e5 MOVF 0xe5,0x1,0x0003d76 cfe7 MOVFF 0xfe7,0xfd9003d78 ffd9003d7a 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.c003d7c cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003d7e ffe4003d80 cfe2 MOVFF 0xfe2,0xfda003d82 ffda003d84 cfe9 MOVFF 0xfe9,0xfe4003d86 ffe4003d88 cfea MOVFF 0xfea,0xfe4003d8a ffe4003d8c cff6 MOVFF 0xff6,0xfe4003d8e ffe4003d90 cff7 MOVFF 0xff7,0xfe4003d92 ffe4003d94 cff5 MOVFF 0xff5,0xfe4003d96 ffe4003d98 cff3 MOVFF 0xff3,0xfe4003d9a ffe4003d9c cff4 MOVFF 0xff4,0xfe4003d9e ffe4003da0 cffa MOVFF 0xffa,0xfe4003da2 ffe4003da4 ee00 LFSR 0x0,0x23003da6 f023003da8 0e14 MOVLW 0x14003daa 04e8 DECF 0xe8,0x0,0x0003dac e303 BNC 0x3db4003dae cfee MOVFF 0xfee,0xfe4003db0 ffe4003db2 d7fb BRA 0x3daa003db4 ee00 LFSR 0x0,0x0003db6 f000003db8 0e23 MOVLW 0x23003dba 04e8 DECF 0xe8,0x0,0x0003dbc e303 BNC 0x3dc4003dbe cfee MOVFF 0xfee,0xfe4003dc0 ffe4003dc2 d7fb BRA 0x3dba003dc4 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c003dc6 ec9e CALL 0x313c,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003dc8 f018003dca 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003dcc ee00 LFSR 0x0,0x22003dce f022003dd0 0e23 MOVLW 0x23003dd2 04e8 DECF 0xe8,0x0,0x0003dd4 e303 BNC 0x3ddc003dd6 cfe5 MOVFF 0xfe5,0xfed003dd8 ffed003dda d7fb BRA 0x3dd2003ddc ee00 LFSR 0x0,0x36003dde f036003de0 0e14 MOVLW 0x14003de2 04e8 DECF 0xe8,0x0,0x0003de4 e303 BNC 0x3dec003de6 cfe5 MOVFF 0xfe5,0xfed003de8 ffed003dea d7fb BRA 0x3de2003dec cfe5 MOVFF 0xfe5,0xffa003dee fffa003df0 cfe5 MOVFF 0xfe5,0xff4003df2 fff4003df4 cfe5 MOVFF 0xfe5,0xff3003df6 fff3003df8 cfe5 MOVFF 0xfe5,0xff5003dfa fff5003dfc cfe5 MOVFF 0xfe5,0xff7003dfe fff7003e00 cfe5 MOVFF 0xfe5,0xff6003e02 fff6003e04 cfe5 MOVFF 0xfe5,0xfea003e06 ffea003e08 cfe5 MOVFF 0xfe5,0xfe9003e0a ffe9003e0c cfe5 MOVFF 0xfe5,0xfda003e0e ffda003e10 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.c003e12 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c003e14 ffe4003e16 cfe2 MOVFF 0xfe2,0xfda003e18 ffda003e1a cfe9 MOVFF 0xfe9,0xfe4003e1c ffe4003e1e cfea MOVFF 0xfea,0xfe4003e20 ffe4003e22 cff6 MOVFF 0xff6,0xfe4003e24 ffe4003e26 cff7 MOVFF 0xff7,0xfe4003e28 ffe4003e2a cff5 MOVFF 0xff5,0xfe4003e2c ffe4003e2e cff3 MOVFF 0xff3,0xfe4003e30 ffe4003e32 cff4 MOVFF 0xff4,0xfe4003e34 ffe4003e36 cffa MOVFF 0xffa,0xfe4003e38 ffe4003e3a ee00 LFSR 0x0,0x23003e3c f023003e3e 0e14 MOVLW 0x14003e40 04e8 DECF 0xe8,0x0,0x0003e42 e303 BNC 0x3e4a003e44 cfee MOVFF 0xfee,0xfe4003e46 ffe4003e48 d7fb BRA 0x3e40003e4a ee00 LFSR 0x0,0x0003e4c f000003e4e 0e23 MOVLW 0x23003e50 04e8 DECF 0xe8,0x0,0x0003e52 e303 BNC 0x3e5a003e54 cfee MOVFF 0xfee,0xfe4003e56 ffe4003e58 d7fb BRA 0x3e50003e5a 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c003e5c ec94 CALL 0x3f28,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003e5e 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.c003e60 eccc CALL 0x4398,0x0 blindsISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c003e62 f021#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003e64 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003e66 ee00 LFSR 0x0,0x22003e68 f022003e6a 0e23 MOVLW 0x23003e6c 04e8 DECF 0xe8,0x0,0x0003e6e e303 BNC 0x3e76003e70 cfe5 MOVFF 0xfe5,0xfed003e72 ffed003e74 d7fb BRA 0x3e6c003e76 ee00 LFSR 0x0,0x36003e78 f036003e7a 0e14 MOVLW 0x14003e7c 04e8 DECF 0xe8,0x0,0x0003e7e e303 BNC 0x3e86003e80 cfe5 MOVFF 0xfe5,0xfed003e82 ffed003e84 d7fb BRA 0x3e7c003e86 cfe5 MOVFF 0xfe5,0xffa003e88 fffa003e8a cfe5 MOVFF 0xfe5,0xff4003e8c fff4003e8e cfe5 MOVFF 0xfe5,0xff3003e90 fff3003e92 cfe5 MOVFF 0xfe5,0xff5003e94 fff5003e96 cfe5 MOVFF 0xfe5,0xff7003e98 fff7003e9a cfe5 MOVFF 0xfe5,0xff6003e9c fff6003e9e cfe5 MOVFF 0xfe5,0xfea003ea0 ffea003ea2 cfe5 MOVFF 0xfe5,0xfe9003ea4 ffe9003ea6 cfe5 MOVFF 0xfe5,0xfda003ea8 ffda003eaa 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.c003eac 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003eae 9894 BCF 0x94,0x4,0x0 BLINDS0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb0 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.c003eb2 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb4 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canTemp\Source\Main.c003eb6 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.c003eb8 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.c003eba cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_PACKET cp) F:\MCP\projects\CAN\canTemp\Source\Main.c003ebc ffe6003ebe cfe1 MOVFF 0xfe1,0xfd9003ec0 ffd9{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c003ec2 0eef MOVLW 0xef if (cp.pgm.class==pcACTUATOR && cp.pgm.id==patBLIND_TR) F:\MCP\projects\CAN\canTemp\Source\Main.c003ec4 50db MOVF 0xdb,0x0,0x0003ec6 0802 SUBLW 0x2003ec8 e111 BNZ 0x3eec003eca 50d9 MOVF 0xd9,0x0,0x0003ecc 0ff0 ADDLW 0xf0003ece 6ee9 MOVWF 0xe9,0x0003ed0 0eff MOVLW 0xff003ed2 20da ADDWFC 0xda,0x0,0x0003ed4 6eea MOVWF 0xea,0x0003ed6 0e07 MOVLW 0x7003ed8 18ee XORWF 0xee,0x0,0x0003eda e101 BNZ 0x3ede003edc 50ed MOVF 0xed,0x0,0x0003ede e106 BNZ 0x3eec{ F:\MCP\projects\CAN\canTemp\Source\Main.c003ee0 0ef7 MOVLW 0xf7 blindsTurn(cp.data[0]); F:\MCP\projects\CAN\canTemp\Source\Main.c003ee2 cfdb MOVFF 0xfdb,0xfe6003ee4 ffe6003ee6 ec15 CALL 0x422a,0x0003ee8 f021003eea 52e5 MOVF 0xe5,0x1,0x0} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.c003eec 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c003eee cfe7 MOVFF 0xfe7,0xfd9003ef0 ffd9003ef2 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 ef58 GOTO 0x46b0 _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 efbe GOTO 0x3d7c _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 ef09 GOTO 0x3e12 _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.c00443e cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c004440 ffe6004442 cfe1 MOVFF 0xfe1,0xfd9004444 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c004446 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c004448 cfdb MOVFF 0xfdb,0x000444a f00000444c 0efe MOVLW 0xfe00444e cfdb MOVFF 0xfdb,0x1004450 f001004452 c001 MOVFF 0x1,0x0004454 f000004456 6a01 CLRF 0x1,0x0004458 5000 MOVF 0x0,0x0,0x000445a 6eaa MOVWF 0xaa,0x000445c 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c00445e 6ee7 MOVWF 0xe7,0x0004460 0efd MOVLW 0xfd004462 cfdb MOVFF 0xfdb,0x0004464 f000004466 0efe MOVLW 0xfe004468 cfdb MOVFF 0xfdb,0x100446a f00100446c 50e7 MOVF 0xe7,0x0,0x000446e 1600 ANDWF 0x0,0x1,0x0004470 6a01 CLRF 0x1,0x0004472 5000 MOVF 0x0,0x0,0x0004474 6ea9 MOVWF 0xa9,0x0004476 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c004478 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c00447a 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c00447c 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c00447e d000 BRA 0x4480004480 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c004482 cfe7 MOVFF 0xfe7,0xfd9004484 ffd9004486 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.c004488 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c00448a ffe600448c cfe1 MOVFF 0xfe1,0xfd900448e ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c004490 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c004492 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c004494 cfdb MOVFF 0xfdb,0x0004496 f000004498 0efe MOVLW 0xfe00449a cfdb MOVFF 0xfdb,0x100449c f00100449e c001 MOVFF 0x1,0x00044a0 f0000044a2 6a01 CLRF 0x1,0x00044a4 5000 MOVF 0x0,0x0,0x00044a6 6eaa MOVWF 0xaa,0x00044a8 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c0044aa 6ee7 MOVWF 0xe7,0x00044ac 0efd MOVLW 0xfd0044ae cfdb MOVFF 0xfdb,0x00044b0 f0000044b2 0efe MOVLW 0xfe0044b4 cfdb MOVFF 0xfdb,0x10044b6 f0010044b8 50e7 MOVF 0xe7,0x0,0x00044ba 1600 ANDWF 0x0,0x1,0x00044bc 6a01 CLRF 0x1,0x00044be 5000 MOVF 0x0,0x0,0x00044c0 6ea9 MOVWF 0xa9,0x00044c2 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c0044c4 50db MOVF 0xdb,0x0,0x00044c6 6ea8 MOVWF 0xa8,0x00044c8 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c0044ca 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c0044cc 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c0044ce 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c0044d0 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c0044d2 6ea7 MOVWF 0xa7,0x00044d4 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c0044d6 6ea7 MOVWF 0xa7,0x00044d8 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c0044da 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c0044dc a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c0044de d7fe BRA 0x44dc0044e0 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c0044e2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c0044e4 cfe7 MOVFF 0xfe7,0xfd90044e6 ffd90044e8 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.c003ef4 cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c003ef6 ffe6003ef8 cfe1 MOVFF 0xfe1,0xfd9003efa 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.c003efc 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c003efe 50db MOVF 0xdb,0x0,0x0003f00 0b0f ANDLW 0xf003f02 6e00 MOVWF 0x0,0x0003f04 0efe MOVLW 0xfe003f06 50db MOVF 0xdb,0x0,0x0003f08 0b01 ANDLW 0x1003f0a 0d10 MULLW 0x10003f0c 50f3 MOVF 0xf3,0x0,0x0003f0e 1000 IORWF 0x0,0x0,0x0003f10 6ec1 MOVWF 0xc1,0x0003f12 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c003f14 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c003f16 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c003f18 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c003f1a 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c003f1c 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c003f1e 9c9f BCF 0x9f,0x6,0x0 IPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c003f20 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c003f22 cfe7 MOVFF 0xfe7,0xfd9003f24 ffd9003f26 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.c003f28 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c003f2a 0b40 ANDLW 0x40003f2c e050 BZ 0x3fce003f2e 509e MOVF 0x9e,0x0,0x0003f30 0b40 ANDLW 0x40003f32 e04d BZ 0x3fce{ F:\MCP\projects\CAN\Include\adc.c003f34 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c003f36 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.c003f38 6e04 MOVWF 0x4,0x0003f3a c004 MOVFF 0x4,0x5003f3c f005003f3e 6a04 CLRF 0x4,0x0003f40 50c3 MOVF 0xc3,0x0,0x0003f42 0100 MOVLB 0x0003f44 1004 IORWF 0x4,0x0,0x0003f46 6e00 MOVWF 0x0,0x0003f48 c005 MOVFF 0x5,0x1003f4a f001003f4c 6a02 CLRF 0x2,0x0003f4e 6a03 CLRF 0x3,0x0003f50 ae01 BTFSS 0x1,0x7,0x0003f52 d002 BRA 0x3f58003f54 6802 SETF 0x2,0x0003f56 6803 SETF 0x3,0x0003f58 5000 MOVF 0x0,0x0,0x0003f5a 0100 MOVLB 0x0003f5c 2791 ADDWF 0x91,0x1,0x1003f5e 5001 MOVF 0x1,0x0,0x0003f60 2392 ADDWFC 0x92,0x1,0x1003f62 5002 MOVF 0x2,0x0,0x0003f64 2393 ADDWFC 0x93,0x1,0x1003f66 5003 MOVF 0x3,0x0,0x0003f68 2394 ADDWFC 0x94,0x1,0x1003f6a 2b95 INCF 0x95,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c003f6c 0e00 MOVLW 0x0003f6e 2396 ADDWFC 0x96,0x1,0x1F:\MCP\projects\CAN\Include\adc.c003f70 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c003f72 5d95 SUBWF 0x95,0x0,0x1003f74 0e00 MOVLW 0x0003f76 5996 SUBWFB 0x96,0x0,0x1003f78 e324 BNC 0x3fc2{ F:\MCP\projects\CAN\Include\adc.c003f7a c095 MOVFF 0x95,0x0 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c003f7c f000003f7e c096 MOVFF 0x96,0x1003f80 f001003f82 6a02 CLRF 0x2,0x0003f84 6a03 CLRF 0x3,0x0003f86 c091 MOVFF 0x91,0x29003f88 f029003f8a c092 MOVFF 0x92,0x2a003f8c f02a003f8e c093 MOVFF 0x93,0x2b003f90 f02b003f92 c094 MOVFF 0x94,0x2c003f94 f02c003f96 c000 MOVFF 0x0,0x2e003f98 f02e003f9a c001 MOVFF 0x1,0x2f003f9c f02f003f9e c002 MOVFF 0x2,0x30003fa0 f030003fa2 c003 MOVFF 0x3,0x31003fa4 f031003fa6 ecfc CALL 0x45f8,0x0003fa8 f022003faa c029 MOVFF 0x29,0x91003fac f091003fae c02a MOVFF 0x2a,0x92003fb0 f092003fb2 c02b MOVFF 0x2b,0x93003fb4 f093003fb6 c02c MOVFF 0x2c,0x94003fb8 f094003fba 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c003fbc 0e01 MOVLW 0x1003fbe 6fa3 MOVWF 0xa3,0x1} F:\MCP\projects\CAN\Include\adc.c003fc0 d006 BRA 0x3fce else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c003fc2 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c003fc4 6ee6 MOVWF 0xe6,0x0003fc6 ec66 CALL 0x46cc,0x0003fc8 f023003fca 52e5 MOVF 0xe5,0x1,0x0003fcc 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.c003fce 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.c003fd0 cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c003fd2 ffe6003fd4 cfe1 MOVFF 0xfe1,0xfd9003fd6 ffd9{ F:\MCP\projects\CAN\Include\adc.c003fd8 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c003fda 50db MOVF 0xdb,0x0,0x0003fdc 080f SUBLW 0xf003fde e202 BC 0x3fe4003fe0 0e00 MOVLW 0x0003fe2 d015 BRA 0x400eF:\MCP\projects\CAN\Include\adc.c003fe4 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c003fe6 6b91 CLRF 0x91,0x1003fe8 6b92 CLRF 0x92,0x1003fea 6b93 CLRF 0x93,0x1003fec 6b94 CLRF 0x94,0x1003fee 6b95 CLRF 0x95,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c003ff0 6b96 CLRF 0x96,0x1F:\MCP\projects\CAN\Include\adc.c003ff2 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c003ff4 14c2 ANDWF 0xc2,0x0,0x0003ff6 6e00 MOVWF 0x0,0x0003ff8 0efe MOVLW 0xfe003ffa 50db MOVF 0xdb,0x0,0x0003ffc 0d04 MULLW 0x4003ffe 50f3 MOVF 0xf3,0x0,0x0004000 1000 IORWF 0x0,0x0,0x0004002 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c004004 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c004006 6ba3 CLRF 0xa3,0x1F:\MCP\projects\CAN\Include\adc.c004008 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c00400a 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c00400c d000 BRA 0x400e00400e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c004010 cfe7 MOVFF 0xfe7,0xfd9004012 ffd9004014 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.c004016 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c004018 6ba3 CLRF 0xa3,0x100401a c091 MOVFF 0x91,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c00401c fff300401e c092 MOVFF 0x92,0xff4004020 fff4004022 d000 BRA 0x4024004024 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.c004026 cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c004028 ffe600402a cfe1 MOVFF 0xfe1,0xfd900402c ffd900402e 0e08 MOVLW 0x8004030 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c004032 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c004034 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c004036 c091 MOVFF 0x91,0x4 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c004038 f00400403a c092 MOVFF 0x92,0x500403c f00500403e c093 MOVFF 0x93,0x6004040 f006004042 c094 MOVFF 0x94,0x7004044 f007004046 0e27 MOVLW 0x27004048 6e2e MOVWF 0x2e,0x000404a 6a2f CLRF 0x2f,0x000404c 6a30 CLRF 0x30,0x000404e 6a31 CLRF 0x31,0x0004050 c004 MOVFF 0x4,0x29004052 f029004054 c005 MOVFF 0x5,0x2a004056 f02a004058 c006 MOVFF 0x6,0x2b00405a f02b00405c c007 MOVFF 0x7,0x2c00405e f02c004060 ecc4 CALL 0x4588,0x0004062 f022004064 c025 MOVFF 0x25,0x4004066 f004004068 c026 MOVFF 0x26,0x500406a f00500406c c027 MOVFF 0x27,0x600406e f006004070 c028 MOVFF 0x28,0x7004072 f007004074 0e04 MOVLW 0x4004076 90d8 BCF 0xd8,0x0,0x0004078 3207 RRCF 0x7,0x1,0x000407a 3206 RRCF 0x6,0x1,0x000407c 3205 RRCF 0x5,0x1,0x000407e 3204 RRCF 0x4,0x1,0x0004080 06e8 DECF 0xe8,0x1,0x0004082 e1f9 BNZ 0x4076004084 c004 MOVFF 0x4,0x0004086 f000004088 c005 MOVFF 0x5,0x100408a f00100408c c006 MOVFF 0x6,0x200408e f002004090 c007 MOVFF 0x7,0x3004092 f003004094 0ef3 MOVLW 0xf3004096 5e00 SUBWF 0x0,0x1,0x0004098 0e01 MOVLW 0x100409a 5a01 SUBWFB 0x1,0x1,0x000409c 0e00 MOVLW 0x000409e 5a02 SUBWFB 0x2,0x1,0x00040a0 5a03 SUBWFB 0x3,0x1,0x00040a2 0e06 MOVLW 0x60040a4 c000 MOVFF 0x0,0xfdb0040a6 ffdb0040a8 0e07 MOVLW 0x70040aa c001 MOVFF 0x1,0xfdb0040ac ffdbF:\MCP\projects\CAN\Include\adc.c0040ae 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c0040b0 6e00 MOVWF 0x0,0x00040b2 6a01 CLRF 0x1,0x00040b4 0e06 MOVLW 0x60040b6 cfdb MOVFF 0xfdb,0x2b0040b8 f02b0040ba 0e07 MOVLW 0x70040bc cfdb MOVFF 0xfdb,0x2c0040be f02c0040c0 c000 MOVFF 0x0,0x300040c2 f0300040c4 c001 MOVFF 0x1,0x310040c6 f0310040c8 ec57 CALL 0x38ae,0x00040ca f01c0040cc 0e02 MOVLW 0x20040ce c02b MOVFF 0x2b,0xfdb0040d0 ffdb0040d2 0e03 MOVLW 0x30040d4 c02c MOVFF 0x2c,0xfdb0040d6 ffdb0040d8 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c0040da cfdb MOVFF 0xfdb,0x20040dc f0020040de 0e07 MOVLW 0x70040e0 cfdb MOVFF 0xfdb,0x30040e2 f0030040e4 0e0a MOVLW 0xa0040e6 6e2b MOVWF 0x2b,0x00040e8 6a2c CLRF 0x2c,0x00040ea 0e02 MOVLW 0x20040ec cfdb MOVFF 0xfdb,0x300040ee f0300040f0 0e03 MOVLW 0x30040f2 cfdb MOVFF 0xfdb,0x310040f4 f0310040f6 ec7d CALL 0x38fa,0x00040f8 f01c0040fa 5029 MOVF 0x29,0x0,0x00040fc 5c02 SUBWF 0x2,0x0,0x00040fe 6e00 MOVWF 0x0,0x0004100 502a MOVF 0x2a,0x0,0x0004102 5803 SUBWFB 0x3,0x0,0x0004104 6e01 MOVWF 0x1,0x0004106 0e04 MOVLW 0x4004108 c000 MOVFF 0x0,0xfdb00410a ffdb00410c 0e05 MOVLW 0x500410e c001 MOVFF 0x1,0xfdb004110 ffdbF:\MCP\projects\CAN\Include\adc.c004112 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c004114 cfdb MOVFF 0xfdb,0x0004116 f000004118 0e05 MOVLW 0x500411a cfdb MOVFF 0xfdb,0x100411c f00100411e 0100 MOVLB 0x0004120 0e80 MOVLW 0x80004122 1401 ANDWF 0x1,0x0,0x0004124 e112 BNZ 0x414a004126 0e04 MOVLW 0x4004128 cfdb MOVFF 0xfdb,0x200412a f00200412c 0e05 MOVLW 0x500412e cfdb MOVFF 0xfdb,0x3004130 f003004132 3403 RLCF 0x3,0x0,0x0004134 e204 BC 0x413e004136 5002 MOVF 0x2,0x0,0x0004138 0802 SUBLW 0x200413a 0e00 MOVLW 0x000413c 5403 SUBFWB 0x3,0x0,0x000413e e305 BNC 0x414a004140 0e04 MOVLW 0x4004142 6adb CLRF 0xdb,0x0004144 0e05 MOVLW 0x5004146 6adb CLRF 0xdb,0x0004148 d02c BRA 0x41a2 else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c00414a 0e04 MOVLW 0x400414c cfdb MOVFF 0xfdb,0x000414e f000004150 0e05 MOVLW 0x5004152 cfdb MOVFF 0xfdb,0x1004154 f001004156 90d8 BCF 0xd8,0x0,0x0004158 5001 MOVF 0x1,0x0,0x000415a e604 BN 0x416400415c 0e03 MOVLW 0x300415e 5c00 SUBWF 0x0,0x0,0x0004160 0e00 MOVLW 0x0004162 5801 SUBWFB 0x1,0x0,0x0004164 e315 BNC 0x4190004166 0e04 MOVLW 0x4004168 cfdb MOVFF 0xfdb,0x200416a f00200416c 0e05 MOVLW 0x500416e cfdb MOVFF 0xfdb,0x3004170 f003004172 3403 RLCF 0x3,0x0,0x0004174 e204 BC 0x417e004176 5002 MOVF 0x2,0x0,0x0004178 0807 SUBLW 0x700417a 0e00 MOVLW 0x000417c 5403 SUBFWB 0x3,0x0,0x000417e e308 BNC 0x4190004180 0e05 MOVLW 0x5004182 6ef3 MOVWF 0xf3,0x0004184 0e04 MOVLW 0x4004186 cff3 MOVFF 0xff3,0xfdb004188 ffdb00418a 0e05 MOVLW 0x500418c 6adb CLRF 0xdb,0x000418e d009 BRA 0x41a2 else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c004190 0e04 MOVLW 0x4004192 6adb CLRF 0xdb,0x0004194 0e05 MOVLW 0x5004196 6adb CLRF 0xdb,0x0004198 0e02 MOVLW 0x200419a 2adb INCF 0xdb,0x1,0x000419c 0e03 MOVLW 0x300419e e301 BNC 0x41a20041a0 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c0041a2 0efd MOVLW 0xfd *tenth = (signed char)v11; F:\MCP\projects\CAN\Include\adc.c0041a4 cfdb MOVFF 0xfdb,0xfe90041a6 ffe90041a8 0efe MOVLW 0xfe0041aa cfdb MOVFF 0xfdb,0xfea0041ac ffea0041ae 0e02 MOVLW 0x20041b0 cfdb MOVFF 0xfdb,0xfef0041b2 ffef0041b4 0efb MOVLW 0xfb *decimal = (BYTE)v01; F:\MCP\projects\CAN\Include\adc.c0041b6 cfdb MOVFF 0xfdb,0xfe90041b8 ffe90041ba 0efc MOVLW 0xfc0041bc cfdb MOVFF 0xfdb,0xfea0041be ffea0041c0 0e04 MOVLW 0x40041c2 cfdb MOVFF 0xfdb,0xfef0041c4 ffefF:\MCP\projects\CAN\Include\adc.c0041c6 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c0041c8 6ba3 CLRF 0xa3,0x10041ca 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c0041cc 5ce1 SUBWF 0xe1,0x0,0x00041ce e202 BC 0x41d40041d0 6ae1 CLRF 0xe1,0x00041d2 52e5 MOVF 0xe5,0x1,0x00041d4 6ee1 MOVWF 0xe1,0x00041d6 52e5 MOVF 0xe5,0x1,0x00041d8 cfe7 MOVFF 0xfe7,0xfd90041da ffd90041dc 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cunsigned long adcGetRaw() F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c0041de c091 MOVFF 0x91,0x29 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c0041e0 f0290041e2 c092 MOVFF 0x92,0x2a0041e4 f02a0041e6 c093 MOVFF 0x93,0x2b0041e8 f02b0041ea c094 MOVFF 0x94,0x2c0041ec f02c0041ee d000 BRA 0x41f00041f0 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.c0041f2 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c0041f4 51a3 MOVF 0xa3,0x0,0x10041f6 d000 BRA 0x41f80041f8 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 WORD timerVal = 50536; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic WORD turnOffIO = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic signed char currentPrecent = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cstatic BYTE dutyOffCounter = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsInit F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cvoid blindsInit() F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c// setup timer one on 0.5ms. F:\MCP\projects\CAN\canTemp\Source\blinds.c// 16 bit write, system clock, prescale 2 bit, oscillator off, F:\MCP\projects\CAN\canTemp\Source\blinds.c0041fa 0ec1 MOVLW 0xc1 T1CON = 0b11000001; F:\MCP\projects\CAN\canTemp\Source\blinds.c0041fc 6ecd MOVWF 0xcd,0x00041fe 0e00 MOVLW 0x0 TMR1H=((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c004200 0100 MOVLB 0x0004202 1597 ANDWF 0x97,0x0,0x1004204 6e00 MOVWF 0x0,0x0004206 0eff MOVLW 0xff004208 1598 ANDWF 0x98,0x0,0x100420a 6e01 MOVWF 0x1,0x000420c c001 MOVFF 0x1,0x000420e f000004210 6a01 CLRF 0x1,0x0004212 5000 MOVF 0x0,0x0,0x0004214 6ecf MOVWF 0xcf,0x0004216 5197 MOVF 0x97,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c004218 6ece MOVWF 0xce,0x000421a 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c00421c 809d BSF 0x9d,0x0,0x0 PIE1bits.TMR1IE = 1; F:\MCP\projects\CAN\canTemp\Source\blinds.c00421e 909f BCF 0x9f,0x0,0x0 IPR1bits.TMR1IP = 0; // Low prior F:\MCP\projects\CAN\canTemp\Source\blinds.c004220 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.c004222 0100 MOVLB 0x0 return currentPrecent; F:\MCP\projects\CAN\canTemp\Source\blinds.c004224 519b MOVF 0x9b,0x0,0x1004226 d000 BRA 0x4228004228 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.c00422a cfd9 MOVFF 0xfd9,0xfe6 void blindsTurn(BYTE precent) F:\MCP\projects\CAN\canTemp\Source\blinds.c00422c ffe600422e cfe1 MOVFF 0xfe1,0xfd9004230 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.c004232 8a82 BSF 0x82,0x5,0x0 BLINDS0P_IO=1; F:\MCP\projects\CAN\canTemp\Source\blinds.c004234 0100 MOVLB 0x0 turnOffIO = IO_TIMEOUT; F:\MCP\projects\CAN\canTemp\Source\blinds.c004236 0ebc MOVLW 0xbc004238 6f99 MOVWF 0x99,0x100423a 0e02 MOVLW 0x200423c 6f9a MOVWF 0x9a,0x1F:\MCP\projects\CAN\canTemp\Source\blinds.c00423e 0efe MOVLW 0xfe currentPrecent = precent; F:\MCP\projects\CAN\canTemp\Source\blinds.c004240 cfdb MOVFF 0xfdb,0x9b004242 f09b004244 50db MOVF 0xdb,0x0,0x0 if (precent>100) { currentPrecent = 100; } F:\MCP\projects\CAN\canTemp\Source\blinds.c004246 0864 SUBLW 0x64004248 e202 BC 0x424e00424a 0e64 MOVLW 0x6400424c 6f9b MOVWF 0x9b,0x100424e 0e00 MOVLW 0x0 if (precent<0) { currentPrecent = 0; } F:\MCP\projects\CAN\canTemp\Source\blinds.c004250 6ef3 MOVWF 0xf3,0x0004252 0efe MOVLW 0xfe004254 cfdb MOVFF 0xfdb,0xff4004256 fff4004258 50f3 MOVF 0xf3,0x0,0x000425a 5cf4 SUBWF 0xf4,0x0,0x000425c e201 BC 0x426000425e 6b9b CLRF 0x9b,0x1004260 6b9c CLRF 0x9c,0x1 dutyOffCounter = 0; F:\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 ec40 CALL 0x3680,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 ecea CALL 0x37d4,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 ec54 CALL 0x36a8,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 ec54 CALL 0x36a8,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 ecea CALL 0x37d4,0x0004366 f01b004368 ecaa CALL 0x3954,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.c004398 cfd9 MOVFF 0xfd9,0xfe6 void blindsISR(void) F:\MCP\projects\CAN\canTemp\Source\blinds.c00439a ffe600439c cfe1 MOVFF 0xfe1,0xfd900439e ffd90043a0 0e02 MOVLW 0x20043a2 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043a4 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.TMR1IF == 1 && PIE1bits.TMR1IE == 1) F:\MCP\projects\CAN\canTemp\Source\blinds.c0043a6 0b01 ANDLW 0x10043a8 e040 BZ 0x442a0043aa 509d MOVF 0x9d,0x0,0x00043ac 0b01 ANDLW 0x10043ae e03d BZ 0x442a{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043b0 c097 MOVFF 0x97,0xfde WORD timerValBuffer = timerVal; F:\MCP\projects\CAN\canTemp\Source\blinds.c0043b2 ffde0043b4 c098 MOVFF 0x98,0xfdd0043b6 ffddF:\MCP\projects\CAN\canTemp\Source\blinds.c0043b8 0100 MOVLB 0x0 dutyOffCounter++; F:\MCP\projects\CAN\canTemp\Source\blinds.c0043ba 2b9c INCF 0x9c,0x1,0x1F:\MCP\projects\CAN\canTemp\Source\blinds.c0043bc 5082 MOVF 0x82,0x0,0x0 if (BLINDS0_IO==0 && dutyOffCounter>4) F:\MCP\projects\CAN\canTemp\Source\blinds.c0043be 0b10 ANDLW 0x100043c0 e106 BNZ 0x43ce0043c2 519c MOVF 0x9c,0x0,0x10043c4 0804 SUBLW 0x40043c6 e203 BC 0x43ce{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043c8 8882 BSF 0x82,0x4,0x0 BLINDS0_IO=1; F:\MCP\projects\CAN\canTemp\Source\blinds.c0043ca 6b9c CLRF 0x9c,0x1 dutyOffCounter=0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c0043cc d00d BRA 0x43e8 else if (BLINDS0_IO==0 && dutyOffCounter<=4) F:\MCP\projects\CAN\canTemp\Source\blinds.c0043ce 5082 MOVF 0x82,0x0,0x00043d0 0b10 ANDLW 0x100043d2 e108 BNZ 0x43e40043d4 519c MOVF 0x9c,0x0,0x10043d6 0804 SUBLW 0x40043d8 e305 BNC 0x43e4{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043da 0eb0 MOVLW 0xb0 timerValBuffer = DUTY_OFF_DELAY; F:\MCP\projects\CAN\canTemp\Source\blinds.c0043dc 6ede MOVWF 0xde,0x00043de 0e3c MOVLW 0x3c0043e0 6edd MOVWF 0xdd,0x0} F:\MCP\projects\CAN\canTemp\Source\blinds.c0043e2 d002 BRA 0x43e8 else if (BLINDS0_IO==1) F:\MCP\projects\CAN\canTemp\Source\blinds.c0043e4 b882 BTFSC 0x82,0x4,0x0{ F:\MCP\projects\CAN\canTemp\Source\blinds.c0043e6 9882 BCF 0x82,0x4,0x0 BLINDS0_IO=0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c0043e8 cfde MOVFF 0xfde,0x0 TMR1H=((timerValBuffer&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c0043ea f0000043ec cfdd MOVFF 0xfdd,0x10043ee f0010043f0 0e00 MOVLW 0x00043f2 1600 ANDWF 0x0,0x1,0x00043f4 0eff MOVLW 0xff0043f6 1601 ANDWF 0x1,0x1,0x00043f8 c001 MOVFF 0x1,0x00043fa f0000043fc 6a01 CLRF 0x1,0x00043fe 5000 MOVF 0x0,0x0,0x0004400 6ecf MOVWF 0xcf,0x0004402 cfde MOVFF 0xfde,0x0 TMR1L=(timerValBuffer&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c004404 f000004406 cfdd MOVFF 0xfdd,0x1004408 f00100440a 5000 MOVF 0x0,0x0,0x000440c 6ece MOVWF 0xce,0x0F:\MCP\projects\CAN\canTemp\Source\blinds.c00440e c099 MOVFF 0x99,0x0 if (turnOffIO--<1) F:\MCP\projects\CAN\canTemp\Source\blinds.c004410 f000004412 c09a MOVFF 0x9a,0x1004414 f001004416 0799 DECF 0x99,0x1,0x1004418 0e00 MOVLW 0x000441a 5b9a SUBWFB 0x9a,0x1,0x100441c 0e01 MOVLW 0x100441e 5c00 SUBWF 0x0,0x0,0x0004420 0e00 MOVLW 0x0004422 5801 SUBWFB 0x1,0x0,0x0004424 e201 BC 0x4428{ F:\MCP\projects\CAN\canTemp\Source\blinds.c004426 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.c004428 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c00442a 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canTemp\Source\blinds.c00442c 5ce1 SUBWF 0xe1,0x0,0x000442e e202 BC 0x4434004430 6ae1 CLRF 0xe1,0x0004432 52e5 MOVF 0xe5,0x1,0x0004434 6ee1 MOVWF 0xe1,0x0004436 52e5 MOVF 0xe5,0x1,0x0004438 cfe7 MOVFF 0xfe7,0xfd900443a ffd900443c 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\blinds.c#endif F:\MCP\projects\CAN\canTemp\Source\blinds.c