Rev 275 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Jan 30 12:48:30 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-01-28 14:58:11 +0100 (sö, 28 jan 2007) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 260 $ 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 BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic CAN_MESSAGE outCm; 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.c001068 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00106a 6e6f MOVWF 0x6f,0x000106c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c00106e 146e ANDWF 0x6e,0x0,0x0001070 0880 SUBLW 0x80001072 e001 BZ 0x1076001074 d7fb BRA 0x106cF:\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.c001076 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c001078 6e70 MOVWF 0x70,0x000107a 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c00107c 6e71 MOVWF 0x71,0x000107e 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c001080 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.c001082 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001084 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001086 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.c001088 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00108a 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.c00108c 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00108e 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001090 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001092 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001094 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001096 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.c001098 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.c00109a 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00109c 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00109e 146e ANDWF 0x6e,0x0,0x00010a0 e001 BZ 0x10a40010a2 d7fc BRA 0x109c#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.c0010a4 ec33 CALL 0x2066,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c0010a6 f010F:\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.c0010a8 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0010aa 6ee6 MOVWF 0xe6,0x00010ac 6ae6 CLRF 0xe6,0x00010ae eca1 CALL 0x1d42,0x00010b0 f00e0010b2 52e5 MOVF 0xe5,0x1,0x00010b4 52e5 MOVF 0xe5,0x1,0x00010b6 082a SUBLW 0x2a0010b8 e12b BNZ 0x1110{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010ba 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\CAN.c0010bc 6ee6 MOVWF 0xe6,0x00010be 6ae6 CLRF 0xe6,0x00010c0 eca1 CALL 0x1d42,0x00010c2 f00e0010c4 52e5 MOVF 0xe5,0x1,0x00010c6 52e5 MOVF 0xe5,0x1,0x00010c8 6e14 MOVWF 0x14,0x00010ca c014 MOVFF 0x14,0x150010cc f0150010ce 6a14 CLRF 0x14,0x00010d0 c014 MOVFF 0x14,0xfe60010d2 ffe60010d4 c015 MOVFF 0x15,0xfe60010d6 ffe60010d8 0e02 MOVLW 0x20010da 6ee6 MOVWF 0xe6,0x00010dc 6ae6 CLRF 0xe6,0x00010de eca1 CALL 0x1d42,0x00010e0 f00e0010e2 52e5 MOVF 0xe5,0x1,0x00010e4 52e5 MOVF 0xe5,0x1,0x00010e6 52e5 MOVF 0xe5,0x1,0x00010e8 cfe7 MOVFF 0xfe7,0x150010ea f0150010ec 52e5 MOVF 0xe5,0x1,0x00010ee cfe7 MOVFF 0xfe7,0x140010f0 f0140010f2 0100 MOVLB 0x00010f4 2414 ADDWF 0x14,0x0,0x00010f6 6f9c MOVWF 0x9c,0x10010f8 0e00 MOVLW 0x00010fa 2015 ADDWFC 0x15,0x0,0x00010fc 6f9d MOVWF 0x9d,0x10010fe 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\CAN.c001100 6ee6 MOVWF 0xe6,0x0001102 6ae6 CLRF 0xe6,0x0001104 eca1 CALL 0x1d42,0x0001106 f00e001108 52e5 MOVF 0xe5,0x1,0x000110a 52e5 MOVF 0xe5,0x1,0x000110c 0100 MOVLB 0x000110e 6f9e MOVWF 0x9e,0x1} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Send user program startup heatbeat F:\MCP\projects\CAN\canBase\Source\CAN.c001110 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001112 6b64 CLRF 0x64,0x1001114 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c001116 6f65 MOVWF 0x65,0x1001118 6b66 CLRF 0x66,0x100111a 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c00111c 6f6a MOVWF 0x6a,0x100111e 6f6b MOVWF 0x6b,0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canBase\Source\CAN.c001120 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c001122 6ee6 MOVWF 0xe6,0x0001124 c064 MOVFF 0x64,0xfe6001126 ffe6001128 c065 MOVFF 0x65,0xfe600112a ffe600112c c066 MOVFF 0x66,0xfe600112e ffe6001130 c067 MOVFF 0x67,0xfe6001132 ffe6001134 c068 MOVFF 0x68,0xfe6001136 ffe6001138 c069 MOVFF 0x69,0xfe600113a ffe600113c c06a MOVFF 0x6a,0xfe600113e ffe6001140 c06b MOVFF 0x6b,0xfe6001142 ffe6001144 c06c MOVFF 0x6c,0xfe6001146 ffe6001148 c06d MOVFF 0x6d,0xfe600114a ffe600114c c06e MOVFF 0x6e,0xfe600114e ffe6001150 c06f MOVFF 0x6f,0xfe6001152 ffe6001154 c070 MOVFF 0x70,0xfe6001156 ffe6001158 c071 MOVFF 0x71,0xfe600115a ffe600115c c072 MOVFF 0x72,0xfe600115e ffe6001160 d9f3 RCALL 0x1548001162 6e14 MOVWF 0x14,0x0001164 0e10 MOVLW 0x10001166 5ee1 SUBWF 0xe1,0x1,0x0001168 5014 MOVF 0x14,0x0,0x000116a 0900 IORLW 0x000116c e101 BNZ 0x117000116e d7d8 BRA 0x1120F:\MCP\projects\CAN\canBase\Source\CAN.c001170 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.c001172 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001174 0b02 ANDLW 0x2001176 e106 BNZ 0x1184001178 50a4 MOVF 0xa4,0x0,0x000117a 0b02 ANDLW 0x200117c e103 BNZ 0x118400117e 50a4 MOVF 0xa4,0x0,0x0001180 0b01 ANDLW 0x1001182 e016 BZ 0x11b0{ F:\MCP\projects\CAN\canBase\Source\CAN.c001184 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001186 146f ANDWF 0x6f,0x0,0x0001188 0910 IORLW 0x1000118a 6e14 MOVWF 0x14,0x000118c 0e00 MOVLW 0x000118e 1477 ANDWF 0x77,0x0,0x0001190 1014 IORWF 0x14,0x0,0x0001192 6e77 MOVWF 0x77,0x0001194 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c001196 d86a RCALL 0x126cF:\MCP\projects\CAN\canBase\Source\CAN.c001198 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00119a d002 BRA 0x11a000119c 92a4 BCF 0xa4,0x1,0x000119e d065 BRA 0x126a0011a0 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0011a2 d002 BRA 0x11a80011a4 92a4 BCF 0xa4,0x1,0x00011a6 d061 BRA 0x126a0011a8 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0011aa d002 BRA 0x11b00011ac 90a4 BCF 0xa4,0x0,0x00011ae d05d BRA 0x126a} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0011b0 ec47 CALL 0x208e,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c0011b2 f010F:\MCP\projects\CAN\canBase\Source\CAN.c0011b4 ec3d CALL 0x207a,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c0011b6 f0100011b8 0100 MOVLB 0x00011ba 5160 MOVF 0x60,0x0,0x10011bc 5c06 SUBWF 0x6,0x0,0x00011be 6e14 MOVWF 0x14,0x00011c0 0100 MOVLB 0x00011c2 5161 MOVF 0x61,0x0,0x10011c4 5807 SUBWFB 0x7,0x0,0x00011c6 6e15 MOVWF 0x15,0x00011c8 0100 MOVLB 0x00011ca 5162 MOVF 0x62,0x0,0x10011cc 5808 SUBWFB 0x8,0x0,0x00011ce 6e16 MOVWF 0x16,0x00011d0 0100 MOVLB 0x00011d2 5163 MOVF 0x63,0x0,0x10011d4 5809 SUBWFB 0x9,0x0,0x00011d6 6e17 MOVWF 0x17,0x00011d8 80d8 BSF 0xd8,0x0,0x00011da 0ef4 MOVLW 0xf40011dc 5414 SUBFWB 0x14,0x0,0x00011de 0e01 MOVLW 0x10011e0 5415 SUBFWB 0x15,0x0,0x00011e2 0e00 MOVLW 0x00011e4 5416 SUBFWB 0x16,0x0,0x00011e6 0e00 MOVLW 0x00011e8 5417 SUBFWB 0x17,0x0,0x00011ea e23e BC 0x1268{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0011ec 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0011ee 6b64 CLRF 0x64,0x10011f0 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0011f2 0100 MOVLB 0x00011f4 6f65 MOVWF 0x65,0x10011f6 6b66 CLRF 0x66,0x10011f8 0100 MOVLB 0x0 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011fa 0e01 MOVLW 0x10011fc 6f6a MOVWF 0x6a,0x10011fe 0100 MOVLB 0x0 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canBase\Source\CAN.c001200 0e02 MOVLW 0x2001202 6f6b MOVWF 0x6b,0x1001204 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c001206 6ee6 MOVWF 0xe6,0x0001208 c064 MOVFF 0x64,0xfe600120a ffe600120c c065 MOVFF 0x65,0xfe600120e ffe6001210 c066 MOVFF 0x66,0xfe6001212 ffe6001214 c067 MOVFF 0x67,0xfe6001216 ffe6001218 c068 MOVFF 0x68,0xfe600121a ffe600121c c069 MOVFF 0x69,0xfe600121e ffe6001220 c06a MOVFF 0x6a,0xfe6001222 ffe6001224 c06b MOVFF 0x6b,0xfe6001226 ffe6001228 c06c MOVFF 0x6c,0xfe600122a ffe600122c c06d MOVFF 0x6d,0xfe600122e ffe6001230 c06e MOVFF 0x6e,0xfe6001232 ffe6001234 c06f MOVFF 0x6f,0xfe6001236 ffe6001238 c070 MOVFF 0x70,0xfe600123a ffe600123c c071 MOVFF 0x71,0xfe600123e ffe6001240 c072 MOVFF 0x72,0xfe6001242 ffe6001244 d981 RCALL 0x1548001246 6e14 MOVWF 0x14,0x0001248 0e10 MOVLW 0x1000124a 5ee1 SUBWF 0xe1,0x1,0x000124c 5014 MOVF 0x14,0x0,0x000124e 0900 IORLW 0x0001250 e101 BNZ 0x1254001252 d7d8 BRA 0x1204F:\MCP\projects\CAN\canBase\Source\CAN.c001254 ec3d CALL 0x207a,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c001256 f010001258 c006 MOVFF 0x6,0x6000125a f06000125c c007 MOVFF 0x7,0x6100125e f061001260 c008 MOVFF 0x8,0x62001262 f062001264 c009 MOVFF 0x9,0x63001266 f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001268 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.c00126a 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.c00126c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00126e ffe6001270 cfe1 MOVFF 0xfe1,0xfd9001272 ffd9001274 0e0f MOVLW 0xf001276 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001278 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00127a 1461 ANDWF 0x61,0x0,0x000127c 38e8 SWAPF 0xe8,0x0,0x000127e 0b0f ANDLW 0xf001280 6edf MOVWF 0xdf,0x0001282 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBase\Source\CAN.c001284 1461 ANDWF 0x61,0x0,0x0001286 6e1a MOVWF 0x1a,0x0001288 6a1b CLRF 0x1b,0x000128a 0e06 MOVLW 0x600128c 90d8 BCF 0xd8,0x0,0x000128e 361a RLCF 0x1a,0x1,0x0001290 361b RLCF 0x1b,0x1,0x0001292 04e8 DECF 0xe8,0x0,0x0001294 e1fb BNZ 0x128c001296 0ee0 MOVLW 0xe0001298 1462 ANDWF 0x62,0x0,0x000129a 6e1c MOVWF 0x1c,0x000129c 6a1d CLRF 0x1d,0x000129e 90d8 BCF 0xd8,0x0,0x00012a0 321d RRCF 0x1d,0x1,0x00012a2 321c RRCF 0x1c,0x1,0x00012a4 90d8 BCF 0xd8,0x0,0x00012a6 321d RRCF 0x1d,0x1,0x00012a8 321c RRCF 0x1c,0x1,0x00012aa 501a MOVF 0x1a,0x0,0x00012ac 241c ADDWF 0x1c,0x0,0x00012ae 6e18 MOVWF 0x18,0x00012b0 501b MOVF 0x1b,0x0,0x00012b2 201d ADDWFC 0x1d,0x0,0x00012b4 6e19 MOVWF 0x19,0x00012b6 0e03 MOVLW 0x30012b8 1462 ANDWF 0x62,0x0,0x00012ba 6e1e MOVWF 0x1e,0x00012bc 6a1f CLRF 0x1f,0x00012be 90d8 BCF 0xd8,0x0,0x00012c0 361e RLCF 0x1e,0x1,0x00012c2 361f RLCF 0x1f,0x1,0x00012c4 5018 MOVF 0x18,0x0,0x00012c6 241e ADDWF 0x1e,0x0,0x00012c8 6e16 MOVWF 0x16,0x00012ca 5019 MOVF 0x19,0x0,0x00012cc 201f ADDWFC 0x1f,0x0,0x00012ce 6e17 MOVWF 0x17,0x00012d0 0e80 MOVLW 0x800012d2 1463 ANDWF 0x63,0x0,0x00012d4 6e20 MOVWF 0x20,0x00012d6 6a21 CLRF 0x21,0x00012d8 0e07 MOVLW 0x70012da 90d8 BCF 0xd8,0x0,0x00012dc 3221 RRCF 0x21,0x1,0x00012de 3220 RRCF 0x20,0x1,0x00012e0 04e8 DECF 0xe8,0x0,0x00012e2 e1fb BNZ 0x12da0012e4 5016 MOVF 0x16,0x0,0x00012e6 2420 ADDWF 0x20,0x0,0x00012e8 6e14 MOVWF 0x14,0x00012ea 5017 MOVF 0x17,0x0,0x00012ec 2021 ADDWFC 0x21,0x0,0x00012ee 6e15 MOVWF 0x15,0x00012f0 0e01 MOVLW 0x10012f2 c014 MOVFF 0x14,0xfdb0012f4 ffdb0012f6 0e02 MOVLW 0x20012f8 c015 MOVFF 0x15,0xfdb0012fa ffdb0012fc 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0012fe 1463 ANDWF 0x63,0x0,0x0001300 40e8 RRNCF 0xe8,0x0,0x0001302 0b7f ANDLW 0x7f001304 6ee7 MOVWF 0xe7,0x0001306 0e03 MOVLW 0x3001308 cfe7 MOVFF 0xfe7,0xfdb00130a ffdb00130c 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00130e 1463 ANDWF 0x63,0x0,0x0001310 6e16 MOVWF 0x16,0x0001312 c016 MOVFF 0x16,0x17001314 f017001316 6a16 CLRF 0x16,0x0001318 5064 MOVF 0x64,0x0,0x000131a 0100 MOVLB 0x000131c 2416 ADDWF 0x16,0x0,0x000131e 6e14 MOVWF 0x14,0x0001320 0e00 MOVLW 0x0001322 2017 ADDWFC 0x17,0x0,0x0001324 6e15 MOVWF 0x15,0x0001326 0e04 MOVLW 0x4001328 c014 MOVFF 0x14,0xfdb00132a ffdb00132c 0e05 MOVLW 0x500132e c015 MOVFF 0x15,0xfdb001330 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001332 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c001334 0b01 ANDLW 0x1001336 6e16 MOVWF 0x16,0x0001338 5065 MOVF 0x65,0x0,0x000133a 0b02 ANDLW 0x200133c e001 BZ 0x134000133e 0e01 MOVLW 0x1001340 24e8 ADDWF 0xe8,0x0,0x0001342 6e15 MOVWF 0x15,0x0001344 5065 MOVF 0x65,0x0,0x0001346 0b04 ANDLW 0x4001348 e001 BZ 0x134c00134a 0e01 MOVLW 0x100134c 0d04 MULLW 0x400134e cff3 MOVFF 0xff3,0x14001350 f014001352 5065 MOVF 0x65,0x0,0x0001354 0b08 ANDLW 0x8001356 e001 BZ 0x135a001358 0e01 MOVLW 0x100135a 0d08 MULLW 0x800135c 50f3 MOVF 0xf3,0x0,0x000135e 2414 ADDWF 0x14,0x0,0x0001360 2415 ADDWF 0x15,0x0,0x0001362 2416 ADDWF 0x16,0x0,0x0001364 6ee7 MOVWF 0xe7,0x0001366 0e06 MOVLW 0x6001368 cfe7 MOVFF 0xfe7,0xfdb00136a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00136c 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00136e cf66 MOVFF 0xf66,0xfdb001370 ffdb001372 0e08 MOVLW 0x8001374 cf67 MOVFF 0xf67,0xfdb001376 ffdb001378 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00137a cf68 MOVFF 0xf68,0xfdb00137c ffdb00137e 0e0a MOVLW 0xa001380 cf69 MOVFF 0xf69,0xfdb001382 ffdb001384 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001386 cf6a MOVFF 0xf6a,0xfdb001388 ffdb00138a 0e0c MOVLW 0xc00138c cf6b MOVFF 0xf6b,0xfdb00138e ffdb001390 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001392 cf6c MOVFF 0xf6c,0xfdb001394 ffdb001396 0e0e MOVLW 0xe001398 cf6d MOVFF 0xf6d,0xfdb00139a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00139c 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 FUNCT_BOOTLOADER specific. F:\MCP\projects\CAN\canBase\Source\CAN.c// reset and id change F:\MCP\projects\CAN\canBase\Source\CAN.c00139e 50df MOVF 0xdf,0x0,0x0 if (cm.funct==FUNCT_BOOTLOADER) F:\MCP\projects\CAN\canBase\Source\CAN.c0013a0 e001 BZ 0x13a40013a2 d0a0 BRA 0x14e4{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013a4 0e03 MOVLW 0x3 if (cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013a6 50db MOVF 0xdb,0x0,0x00013a8 0100 MOVLB 0x00013aa 5d9e SUBWF 0x9e,0x0,0x10013ac e001 BZ 0x13b00013ae d09a BRA 0x14e40013b0 0e0c MOVLW 0xc0013b2 cfdb MOVFF 0xfdb,0x160013b4 f0160013b6 c016 MOVFF 0x16,0x170013b8 f0170013ba 6a16 CLRF 0x16,0x00013bc 0e0b MOVLW 0xb0013be 50db MOVF 0xdb,0x0,0x00013c0 0100 MOVLB 0x00013c2 2416 ADDWF 0x16,0x0,0x00013c4 6e14 MOVWF 0x14,0x00013c6 0e00 MOVLW 0x00013c8 2017 ADDWFC 0x17,0x0,0x00013ca 6e15 MOVWF 0x15,0x00013cc 0100 MOVLB 0x00013ce 519c MOVF 0x9c,0x0,0x10013d0 1814 XORWF 0x14,0x0,0x00013d2 e102 BNZ 0x13d80013d4 519d MOVF 0x9d,0x0,0x10013d6 1815 XORWF 0x15,0x0,0x00013d8 e001 BZ 0x13dc0013da d084 BRA 0x14e4{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013dc 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0013de 0f01 ADDLW 0x10013e0 6ee9 MOVWF 0xe9,0x00013e2 cfda MOVFF 0xfda,0xfea0013e4 ffea0013e6 0e01 MOVLW 0x10013e8 18ee XORWF 0xee,0x0,0x00013ea e101 BNZ 0x13ee0013ec 50ed MOVF 0xed,0x0,0x00013ee e101 BNZ 0x13f20013f0 00ff RESET0013f2 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_SET_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013f4 0f01 ADDLW 0x10013f6 6ee9 MOVWF 0xe9,0x00013f8 cfda MOVFF 0xfda,0xfea0013fa ffea0013fc 0e06 MOVLW 0x60013fe 18ee XORWF 0xee,0x0,0x0001400 e101 BNZ 0x1404001402 50ed MOVF 0xed,0x0,0x0001404 e16f BNZ 0x14e4{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c001406 0e08 MOVLW 0x8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c001408 cfdb MOVFF 0xfdb,0x1400140a f01400140c c014 MOVFF 0x14,0x1500140e f015001410 6a14 CLRF 0x14,0x0001412 0e07 MOVLW 0x7001414 50db MOVF 0xdb,0x0,0x0001416 0100 MOVLB 0x0001418 2414 ADDWF 0x14,0x0,0x000141a 6f9c MOVWF 0x9c,0x100141c 0e00 MOVLW 0x000141e 2015 ADDWFC 0x15,0x0,0x0001420 6f9d MOVWF 0x9d,0x1001422 0e09 MOVLW 0x9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c001424 cfdb MOVFF 0xfdb,0x9e001426 f09e001428 0e08 MOVLW 0x8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00142a cfdb MOVFF 0xfdb,0xfe600142c ffe600142e 0e01 MOVLW 0x1001430 6ee6 MOVWF 0xe6,0x0001432 6ae6 CLRF 0xe6,0x0001434 ecc6 CALL 0x1d8c,0x0001436 f00e001438 52e5 MOVF 0xe5,0x1,0x000143a 52e5 MOVF 0xe5,0x1,0x000143c 52e5 MOVF 0xe5,0x1,0x000143e 0e07 MOVLW 0x7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001440 cfdb MOVFF 0xfdb,0xfe6001442 ffe6001444 0e02 MOVLW 0x2001446 6ee6 MOVWF 0xe6,0x0001448 6ae6 CLRF 0xe6,0x000144a ecc6 CALL 0x1d8c,0x000144c f00e00144e 52e5 MOVF 0xe5,0x1,0x0001450 52e5 MOVF 0xe5,0x1,0x0001452 52e5 MOVF 0xe5,0x1,0x0001454 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001456 cfdb MOVFF 0xfdb,0xfe6001458 ffe600145a 0e03 MOVLW 0x300145c 6ee6 MOVWF 0xe6,0x000145e 6ae6 CLRF 0xe6,0x0001460 ecc6 CALL 0x1d8c,0x0001462 f00e001464 52e5 MOVF 0xe5,0x1,0x0001466 52e5 MOVF 0xe5,0x1,0x0001468 52e5 MOVF 0xe5,0x1,0x000146a 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c00146c 6ee6 MOVWF 0xe6,0x000146e 0e00 MOVLW 0x0001470 6ee6 MOVWF 0xe6,0x0001472 6ae6 CLRF 0xe6,0x0001474 ecc6 CALL 0x1d8c,0x0001476 f00e001478 52e5 MOVF 0xe5,0x1,0x000147a 52e5 MOVF 0xe5,0x1,0x000147c 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c00147e 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001480 6b64 CLRF 0x64,0x1001482 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\CAN.c001484 0100 MOVLB 0x0001486 6f65 MOVWF 0x65,0x1001488 6b66 CLRF 0x66,0x100148a 0100 MOVLB 0x0 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\CAN.c00148c 0e08 MOVLW 0x800148e 6f6a MOVWF 0x6a,0x1001490 0100 MOVLB 0x0 outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\CAN.c001492 6b6f CLRF 0x6f,0x1001494 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c001496 6ee6 MOVWF 0xe6,0x0001498 c064 MOVFF 0x64,0xfe600149a ffe600149c c065 MOVFF 0x65,0xfe600149e ffe60014a0 c066 MOVFF 0x66,0xfe60014a2 ffe60014a4 c067 MOVFF 0x67,0xfe60014a6 ffe60014a8 c068 MOVFF 0x68,0xfe60014aa ffe60014ac c069 MOVFF 0x69,0xfe60014ae ffe60014b0 c06a MOVFF 0x6a,0xfe60014b2 ffe60014b4 c06b MOVFF 0x6b,0xfe60014b6 ffe60014b8 c06c MOVFF 0x6c,0xfe60014ba ffe60014bc c06d MOVFF 0x6d,0xfe60014be ffe60014c0 c06e MOVFF 0x6e,0xfe60014c2 ffe60014c4 c06f MOVFF 0x6f,0xfe60014c6 ffe60014c8 c070 MOVFF 0x70,0xfe60014ca ffe60014cc c071 MOVFF 0x71,0xfe60014ce ffe60014d0 c072 MOVFF 0x72,0xfe60014d2 ffe60014d4 d839 RCALL 0x15480014d6 6e14 MOVWF 0x14,0x00014d8 0e10 MOVLW 0x100014da 5ee1 SUBWF 0xe1,0x1,0x00014dc 5014 MOVF 0x14,0x0,0x00014de 0900 IORLW 0x00014e0 e101 BNZ 0x14e40014e2 d7d8 BRA 0x1494} 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.c0014e4 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0014e6 ffe90014e8 cfda MOVFF 0xfda,0xfea0014ea ffea0014ec cfee MOVFF 0xfee,0xfe60014ee ffe60014f0 cfee MOVFF 0xfee,0xfe60014f2 ffe60014f4 cfee MOVFF 0xfee,0xfe60014f6 ffe60014f8 cfee MOVFF 0xfee,0xfe60014fa ffe60014fc cfee MOVFF 0xfee,0xfe60014fe ffe6001500 cfee MOVFF 0xfee,0xfe6001502 ffe6001504 cfee MOVFF 0xfee,0xfe6001506 ffe6001508 cfee MOVFF 0xfee,0xfe600150a ffe600150c cfee MOVFF 0xfee,0xfe600150e ffe6001510 cfee MOVFF 0xfee,0xfe6001512 ffe6001514 cfee MOVFF 0xfee,0xfe6001516 ffe6001518 cfee MOVFF 0xfee,0xfe600151a ffe600151c cfee MOVFF 0xfee,0xfe600151e ffe6001520 cfee MOVFF 0xfee,0xfe6001522 ffe6001524 cfee MOVFF 0xfee,0xfe6001526 ffe6001528 ec13 CALL 0x1a26,0x000152a f00d00152c 6e14 MOVWF 0x14,0x000152e 0e0f MOVLW 0xf001530 5ee1 SUBWF 0xe1,0x1,0x0001532 5014 MOVF 0x14,0x0,0x0001534 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c001536 5ce1 SUBWF 0xe1,0x0,0x0001538 e202 BC 0x153e00153a 6ae1 CLRF 0xe1,0x000153c 52e5 MOVF 0xe5,0x1,0x000153e 6ee1 MOVWF 0xe1,0x0001540 52e5 MOVF 0xe5,0x1,0x0001542 cfe7 MOVFF 0xfe7,0xfd9001544 ffd9001546 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.c001548 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c00154a ffe600154c cfe1 MOVFF 0xfe1,0xfd900154e ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001550 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001552 b740 BTFSC 0x40,0x3,0x1001554 d004 BRA 0x155e001556 0e00 MOVLW 0x0001558 1477 ANDWF 0x77,0x0,0x000155a 0903 IORLW 0x300155c 6e77 MOVWF 0x77,0x000155e 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001560 b730 BTFSC 0x30,0x3,0x1001562 d004 BRA 0x156c001564 0e00 MOVLW 0x0001566 1477 ANDWF 0x77,0x0,0x0001568 0904 IORLW 0x400156a 6e77 MOVWF 0x77,0x000156c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c00156e b720 BTFSC 0x20,0x3,0x1001570 d005 BRA 0x157c001572 0e00 MOVLW 0x0001574 1477 ANDWF 0x77,0x0,0x0001576 0905 IORLW 0x5001578 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c00157a d002 BRA 0x1580 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c00157c 0e00 MOVLW 0x000157e d0b9 BRA 0x16f2F:\MCP\projects\CAN\canBase\Source\CAN.c001580 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001582 cfdb MOVFF 0xfdb,0x14001584 f014001586 3414 RLCF 0x14,0x0,0x0001588 e20e BC 0x15a600158a 0eef MOVLW 0xef00158c cfdb MOVFF 0xfdb,0x1500158e f015001590 0e03 MOVLW 0x3001592 6ee7 MOVWF 0xe7,0x0001594 1815 XORWF 0x15,0x0,0x0001596 aee8 BTFSS 0xe8,0x7,0x0001598 d002 BRA 0x159e00159a 3415 RLCF 0x15,0x0,0x000159c d003 BRA 0x15a400159e 50e7 MOVF 0xe7,0x0,0x00015a0 80d8 BSF 0xd8,0x0,0x00015a2 5415 SUBFWB 0x15,0x0,0x00015a4 e202 BC 0x15aa0015a6 0eef MOVLW 0xef0015a8 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Append my id and nid F:\MCP\projects\CAN\canBase\Source\CAN.c0015aa 0ef3 MOVLW 0xf3 cm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015ac c09e MOVFF 0x9e,0xfdb0015ae ffdb0015b0 0ef4 MOVLW 0xf4 cm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015b2 c09c MOVFF 0x9c,0xfdb0015b4 ffdb0015b6 0ef5 MOVLW 0xf50015b8 c09d MOVFF 0x9d,0xfdb0015ba ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0015bc 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0015be cfdb MOVFF 0xfdb,0x140015c0 f0140015c2 0ef2 MOVLW 0xf20015c4 cfdb MOVFF 0xfdb,0x150015c6 f0150015c8 0ec0 MOVLW 0xc00015ca 1614 ANDWF 0x14,0x1,0x00015cc 0e03 MOVLW 0x30015ce 1615 ANDWF 0x15,0x1,0x00015d0 0e06 MOVLW 0x60015d2 90d8 BCF 0xd8,0x0,0x00015d4 3215 RRCF 0x15,0x1,0x00015d6 3214 RRCF 0x14,0x1,0x00015d8 04e8 DECF 0xe8,0x0,0x00015da e1fb BNZ 0x15d20015dc 0ef0 MOVLW 0xf00015de 50db MOVF 0xdb,0x0,0x00015e0 0b0f ANDLW 0xf0015e2 0d10 MULLW 0x100015e4 50f3 MOVF 0xf3,0x0,0x00015e6 2414 ADDWF 0x14,0x0,0x00015e8 6e61 MOVWF 0x61,0x00015ea 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015ec 6ee7 MOVWF 0xe7,0x00015ee 0ef1 MOVLW 0xf10015f0 cfdb MOVFF 0xfdb,0x160015f2 f0160015f4 0ef2 MOVLW 0xf20015f6 cfdb MOVFF 0xfdb,0x170015f8 f0170015fa 50e7 MOVF 0xe7,0x0,0x00015fc 1616 ANDWF 0x16,0x1,0x00015fe 6a17 CLRF 0x17,0x0001600 90d8 BCF 0xd8,0x0,0x0001602 3217 RRCF 0x17,0x1,0x0001604 3216 RRCF 0x16,0x1,0x0001606 0e3f MOVLW 0x3f001608 6ee7 MOVWF 0xe7,0x000160a 0ef1 MOVLW 0xf100160c cfdb MOVFF 0xfdb,0x1400160e f014001610 0ef2 MOVLW 0xf2001612 cfdb MOVFF 0xfdb,0x15001614 f015001616 50e7 MOVF 0xe7,0x0,0x0001618 1614 ANDWF 0x14,0x1,0x000161a 6a15 CLRF 0x15,0x000161c 90d8 BCF 0xd8,0x0,0x000161e 3614 RLCF 0x14,0x1,0x0001620 3615 RLCF 0x15,0x1,0x0001622 90d8 BCF 0xd8,0x0,0x0001624 3614 RLCF 0x14,0x1,0x0001626 3615 RLCF 0x15,0x1,0x0001628 5014 MOVF 0x14,0x0,0x000162a 2416 ADDWF 0x16,0x0,0x000162c 6e62 MOVWF 0x62,0x000162e 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c001630 cfdb MOVFF 0xfdb,0x16001632 f016001634 0ef5 MOVLW 0xf5001636 cfdb MOVFF 0xfdb,0x17001638 f01700163a 0e00 MOVLW 0x000163c 1616 ANDWF 0x16,0x1,0x000163e 0e01 MOVLW 0x1001640 1617 ANDWF 0x17,0x1,0x0001642 c017 MOVFF 0x17,0x16001644 f016001646 6a17 CLRF 0x17,0x0001648 0e01 MOVLW 0x100164a 6ee7 MOVWF 0xe7,0x000164c 0ef1 MOVLW 0xf100164e cfdb MOVFF 0xfdb,0x14001650 f014001652 0ef2 MOVLW 0xf2001654 cfdb MOVFF 0xfdb,0x15001656 f015001658 50e7 MOVF 0xe7,0x0,0x000165a 1614 ANDWF 0x14,0x1,0x000165c 6a15 CLRF 0x15,0x000165e 0e07 MOVLW 0x7001660 90d8 BCF 0xd8,0x0,0x0001662 3614 RLCF 0x14,0x1,0x0001664 3615 RLCF 0x15,0x1,0x0001666 04e8 DECF 0xe8,0x0,0x0001668 e1fb BNZ 0x166000166a 0ef3 MOVLW 0xf300166c 50db MOVF 0xdb,0x0,0x000166e 0b3f ANDLW 0x3f001670 24e8 ADDWF 0xe8,0x0,0x0001672 2414 ADDWF 0x14,0x0,0x0001674 2416 ADDWF 0x16,0x0,0x0001676 6e63 MOVWF 0x63,0x0001678 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c00167a 6ee7 MOVWF 0xe7,0x000167c 0ef4 MOVLW 0xf400167e cfdb MOVFF 0xfdb,0x14001680 f014001682 0ef5 MOVLW 0xf5001684 cfdb MOVFF 0xfdb,0x15001686 f015001688 50e7 MOVF 0xe7,0x0,0x000168a 1614 ANDWF 0x14,0x1,0x000168c 6a15 CLRF 0x15,0x000168e 5014 MOVF 0x14,0x0,0x0001690 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001692 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001694 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001696 50db MOVF 0xdb,0x0,0x0001698 0808 SUBLW 0x800169a e203 BC 0x16a200169c 0e08 MOVLW 0x800169e 6e65 MOVWF 0x65,0x00016a0 d003 BRA 0x16a80016a2 0ef6 MOVLW 0xf60016a4 50db MOVF 0xdb,0x0,0x00016a6 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// NOT Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c0016a8 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.c0016aa 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 50db MOVF 0xdb,0x0,0x00016ae 6e66 MOVWF 0x66,0x00016b0 0ef8 MOVLW 0xf80016b2 50db MOVF 0xdb,0x0,0x00016b4 6e67 MOVWF 0x67,0x00016b6 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 50db MOVF 0xdb,0x0,0x00016ba 6e68 MOVWF 0x68,0x00016bc 0efa MOVLW 0xfa0016be 50db MOVF 0xdb,0x0,0x00016c0 6e69 MOVWF 0x69,0x00016c2 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c4 50db MOVF 0xdb,0x0,0x00016c6 6e6a MOVWF 0x6a,0x00016c8 0efc MOVLW 0xfc0016ca 50db MOVF 0xdb,0x0,0x00016cc 6e6b MOVWF 0x6b,0x00016ce 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d0 50db MOVF 0xdb,0x0,0x00016d2 6e6c MOVWF 0x6c,0x00016d4 0efe MOVLW 0xfe0016d6 50db MOVF 0xdb,0x0,0x00016d8 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0016da 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.c0016dc 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0016de cfdb MOVFF 0xfdb,0xfe60016e0 ffe60016e2 0efc MOVLW 0xfc0016e4 1460 ANDWF 0x60,0x0,0x00016e6 52e5 MOVF 0xe5,0x1,0x00016e8 10e7 IORWF 0xe7,0x0,0x00016ea 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.c0016ec 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.c0016ee 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0016f0 d000 BRA 0x16f2F:\MCP\projects\CAN\canBase\Source\CAN.c0016f2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0016f4 cfe7 MOVFF 0xfe7,0xfd90016f6 ffd90016f8 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.c002066 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c002068 6ed6 MOVWF 0xd6,0x000206a 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c00206c 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.c00206e 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c002070 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c002072 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c002074 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c002076 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c002078 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.c00207a c098 MOVFF 0x98,0x6 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c00207c f00600207e c099 MOVFF 0x99,0x7002080 f007002082 c09a MOVFF 0x9a,0x8002084 f008002086 c09b MOVFF 0x9b,0x9002088 f00900208a d000 BRA 0x208c00208c 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.c00208e a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c002090 d00b BRA 0x20a8{ F:\MCP\projects\CAN\canBase\Source\Tick.c002092 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c002094 6ed7 MOVWF 0xd7,0x0002096 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c002098 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c00209a 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c00209c 2b98 INCF 0x98,0x1,0x100209e 0e00 MOVLW 0x00020a0 2399 ADDWFC 0x99,0x1,0x10020a2 239a ADDWFC 0x9a,0x1,0x10020a4 239b ADDWFC 0x9b,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c0020a6 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c0020a8 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-01-30 12:34:06 +0100 (ti, 30 jan 2007) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 275 $ 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.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.c0016fa cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c0016fc ffe60016fe cfe1 MOVFF 0xfe1,0xfd9001700 ffd9001702 0e11 MOVLW 0x11001704 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_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.c001706 d989 RCALL 0x1a1a mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001708 ec34 CALL 0x1068,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c00170a f008F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c00170c 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c00170e 6ee6 MOVWF 0xe6,0x0001710 0e01 MOVLW 0x1001712 6ee6 MOVWF 0xe6,0x0001714 ec22 CALL 0x1a44,0x0001716 f00d001718 52e5 MOVF 0xe5,0x1,0x000171a 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.c00171c ec99 CALL 0x1f32,0x0 blindsInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c00171e f00f#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c0018d4 d725 BRA 0x1720 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 BYTE lastTemperature = TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK blinds = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001720 ec3d CALL 0x207a,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c001722 f010001724 0100 MOVLB 0x0001726 5177 MOVF 0x77,0x0,0x1001728 5c06 SUBWF 0x6,0x0,0x000172a 6e14 MOVWF 0x14,0x000172c 5178 MOVF 0x78,0x0,0x100172e 5807 SUBWFB 0x7,0x0,0x0001730 6e15 MOVWF 0x15,0x0001732 5179 MOVF 0x79,0x0,0x1001734 5808 SUBWFB 0x8,0x0,0x0001736 6e16 MOVWF 0x16,0x0001738 517a MOVF 0x7a,0x0,0x100173a 5809 SUBWFB 0x9,0x0,0x000173c 6e17 MOVWF 0x17,0x000173e 80d8 BSF 0xd8,0x0,0x0001740 0e64 MOVLW 0x64001742 5414 SUBFWB 0x14,0x0,0x0001744 0e00 MOVLW 0x0001746 5415 SUBFWB 0x15,0x0,0x0001748 0e00 MOVLW 0x000174a 5416 SUBFWB 0x16,0x0,0x000174c 0e00 MOVLW 0x000174e 5417 SUBFWB 0x17,0x0,0x0001750 e20b BC 0x1768{ F:\MCP\projects\CAN\canTemp\Source\Main.c001752 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c001754 ec3d CALL 0x207a,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c001756 f010001758 c006 MOVFF 0x6,0x7700175a f07700175c c007 MOVFF 0x7,0x7800175e f078001760 c008 MOVFF 0x8,0x79001762 f079001764 c009 MOVFF 0x9,0x7a001766 f07a} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001768 ec3d CALL 0x207a,0x0 if ((tickGet()-blinds)>2*TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c00176a f01000176c 0100 MOVLB 0x000176e 5180 MOVF 0x80,0x0,0x1001770 5c06 SUBWF 0x6,0x0,0x0001772 6e14 MOVWF 0x14,0x0001774 5181 MOVF 0x81,0x0,0x1001776 5807 SUBWFB 0x7,0x0,0x0001778 6e15 MOVWF 0x15,0x000177a 5182 MOVF 0x82,0x0,0x100177c 5808 SUBWFB 0x8,0x0,0x000177e 6e16 MOVWF 0x16,0x0001780 5183 MOVF 0x83,0x0,0x1001782 5809 SUBWFB 0x9,0x0,0x0001784 6e17 MOVWF 0x17,0x0001786 80d8 BSF 0xd8,0x0,0x0001788 0ec8 MOVLW 0xc800178a 5414 SUBFWB 0x14,0x0,0x000178c 0e00 MOVLW 0x000178e 5415 SUBFWB 0x15,0x0,0x0001790 0e00 MOVLW 0x0001792 5416 SUBFWB 0x16,0x0,0x0001794 0e00 MOVLW 0x0001796 5417 SUBFWB 0x17,0x0,0x0001798 e20a BC 0x17ae{ F:\MCP\projects\CAN\canTemp\Source\Main.c//blindsTurn(MIDDLE,3000); F:\MCP\projects\CAN\canTemp\Source\Main.c00179a ec3d CALL 0x207a,0x0 blinds = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c00179c f01000179e c006 MOVFF 0x6,0x800017a0 f0800017a2 c007 MOVFF 0x7,0x810017a4 f0810017a6 c008 MOVFF 0x8,0x820017a8 f0820017aa c009 MOVFF 0x9,0x830017ac f083} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c0017ae ec3d CALL 0x207a,0x0 if ((tickGet()-temperature)>TICK_SECOND*2) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c0017b0 f0100017b2 0100 MOVLB 0x00017b4 517b MOVF 0x7b,0x0,0x10017b6 5c06 SUBWF 0x6,0x0,0x00017b8 6e14 MOVWF 0x14,0x00017ba 517c MOVF 0x7c,0x0,0x10017bc 5807 SUBWFB 0x7,0x0,0x00017be 6e15 MOVWF 0x15,0x00017c0 517d MOVF 0x7d,0x0,0x10017c2 5808 SUBWFB 0x8,0x0,0x00017c4 6e16 MOVWF 0x16,0x00017c6 517e MOVF 0x7e,0x0,0x10017c8 5809 SUBWFB 0x9,0x0,0x00017ca 6e17 MOVWF 0x17,0x00017cc 80d8 BSF 0xd8,0x0,0x00017ce 0ec8 MOVLW 0xc80017d0 5414 SUBFWB 0x14,0x0,0x00017d2 0e00 MOVLW 0x00017d4 5415 SUBFWB 0x15,0x0,0x00017d6 0e00 MOVLW 0x00017d8 5416 SUBFWB 0x16,0x0,0x00017da 0e00 MOVLW 0x00017dc 5417 SUBFWB 0x17,0x0,0x00017de e215 BC 0x180a{ F:\MCP\projects\CAN\canTemp\Source\Main.c0017e0 517f MOVF 0x7f,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c0017e2 e103 BNZ 0x17ea0017e4 0e01 MOVLW 0x10017e6 6f7f MOVWF 0x7f,0x10017e8 d001 BRA 0x17ec0017ea 6b7f CLRF 0x7f,0x10017ec c07f MOVFF 0x7f,0xfe6 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c0017ee ffe60017f0 ec90 CALL 0x1b20,0x00017f2 f00d0017f4 52e5 MOVF 0xe5,0x1,0x00017f6 ec3d CALL 0x207a,0x0 temperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c0017f8 f0100017fa c006 MOVFF 0x6,0x7b0017fc f07b0017fe c007 MOVFF 0x7,0x7c001800 f07c001802 c008 MOVFF 0x8,0x7d001804 f07d001806 c009 MOVFF 0x9,0x7e001808 f07e} 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.c00180a ec9d CALL 0x1d3a,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c00180c f00e00180e 0900 IORLW 0x0001810 e061 BZ 0x18d4{ 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.c001812 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c001814 0f0f ADDLW 0xf001816 6ee6 MOVWF 0xe6,0x0001818 0e00 MOVLW 0x000181a 20da ADDWFC 0xda,0x0,0x000181c 6ee6 MOVWF 0xe6,0x000181e 50d9 MOVF 0xd9,0x0,0x0001820 0f10 ADDLW 0x10001822 6ee6 MOVWF 0xe6,0x0001824 0e00 MOVLW 0x0001826 20da ADDWFC 0xda,0x0,0x0001828 6ee6 MOVWF 0xe6,0x000182a ecbb CALL 0x1b76,0x000182c f00d00182e 52e5 MOVF 0xe5,0x1,0x0001830 52e5 MOVF 0xe5,0x1,0x0001832 52e5 MOVF 0xe5,0x1,0x0001834 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canTemp\Source\Main.c001836 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canTemp\Source\Main.c001838 6edf MOVWF 0xdf,0x000183a 0100 MOVLB 0x0 outCm.funcc = (lastTemperature==TEMPERATURE_INSIDE?FUNCC_SENSORS_TEMPERATURE_INSIDE:FUNCC_SENSORS_TEMPERATURE_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c00183c 517f MOVF 0x7f,0x0,0x100183e e102 BNZ 0x1844001840 0e10 MOVLW 0x10001842 d001 BRA 0x1846001844 0e11 MOVLW 0x11001846 6e14 MOVWF 0x14,0x0001848 6a15 CLRF 0x15,0x000184a be14 BTFSC 0x14,0x7,0x000184c 6815 SETF 0x15,0x000184e 0e01 MOVLW 0x1001850 c014 MOVFF 0x14,0xfdb001852 ffdb001854 0e02 MOVLW 0x2001856 c015 MOVFF 0x15,0xfdb001858 ffdb00185a 6ef3 MOVWF 0xf3,0x0 outCm.data_length = 2; F:\MCP\projects\CAN\canTemp\Source\Main.c00185c 0e06 MOVLW 0x600185e cff3 MOVFF 0xff3,0xfdb001860 ffdb001862 0e10 MOVLW 0x10 outCm.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c001864 50db MOVF 0xdb,0x0,0x0001866 6ee7 MOVWF 0xe7,0x0001868 0e08 MOVLW 0x800186a cfe7 MOVFF 0xfe7,0xfdb00186c ffdb00186e 0e0f MOVLW 0xf outCm.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c001870 50db MOVF 0xdb,0x0,0x0001872 6ee7 MOVWF 0xe7,0x0001874 0e07 MOVLW 0x7001876 cfe7 MOVFF 0xfe7,0xfdb001878 ffdb00187a 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c00187c 6ee6 MOVWF 0xe6,0x000187e cfd9 MOVFF 0xfd9,0xfe9001880 ffe9001882 cfda MOVFF 0xfda,0xfea001884 ffea001886 cfee MOVFF 0xfee,0xfe6001888 ffe600188a cfee MOVFF 0xfee,0xfe600188c ffe600188e cfee MOVFF 0xfee,0xfe6001890 ffe6001892 cfee MOVFF 0xfee,0xfe6001894 ffe6001896 cfee MOVFF 0xfee,0xfe6001898 ffe600189a cfee MOVFF 0xfee,0xfe600189c ffe600189e cfee MOVFF 0xfee,0xfe60018a0 ffe60018a2 cfee MOVFF 0xfee,0xfe60018a4 ffe60018a6 cfee MOVFF 0xfee,0xfe60018a8 ffe60018aa cfee MOVFF 0xfee,0xfe60018ac ffe60018ae cfee MOVFF 0xfee,0xfe60018b0 ffe60018b2 cfee MOVFF 0xfee,0xfe60018b4 ffe60018b6 cfee MOVFF 0xfee,0xfe60018b8 ffe60018ba cfee MOVFF 0xfee,0xfe60018bc ffe60018be cfee MOVFF 0xfee,0xfe60018c0 ffe60018c2 eca4 CALL 0x1548,0x00018c4 f00a0018c6 6e14 MOVWF 0x14,0x00018c8 0e10 MOVLW 0x100018ca 5ee1 SUBWF 0xe1,0x1,0x00018cc 5014 MOVF 0x14,0x0,0x00018ce 0900 IORLW 0x00018d0 e101 BNZ 0x18d40018d2 d7d3 BRA 0x187a} 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.c0018d6 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canTemp\Source\Main.c0018d8 5ce1 SUBWF 0xe1,0x0,0x00018da e202 BC 0x18e00018dc 6ae1 CLRF 0xe1,0x00018de 52e5 MOVF 0xe5,0x1,0x00018e0 6ee1 MOVWF 0xe1,0x00018e2 52e5 MOVF 0xe5,0x1,0x00018e4 cfe7 MOVFF 0xfe7,0xfd90018e6 ffd90018e8 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.c0018ea cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c0018ec ffe40018ee cfe2 MOVFF 0xfe2,0xfda0018f0 ffda0018f2 cfe9 MOVFF 0xfe9,0xfe40018f4 ffe40018f6 cfea MOVFF 0xfea,0xfe40018f8 ffe40018fa cff6 MOVFF 0xff6,0xfe40018fc ffe40018fe cff7 MOVFF 0xff7,0xfe4001900 ffe4001902 cff5 MOVFF 0xff5,0xfe4001904 ffe4001906 cff3 MOVFF 0xff3,0xfe4001908 ffe400190a cff4 MOVFF 0xff4,0xfe400190c ffe400190e cffa MOVFF 0xffa,0xfe4001910 ffe4001912 ee00 LFSR 0x0,0x0001914 f000001916 0e14 MOVLW 0x14001918 04e8 DECF 0xe8,0x0,0x000191a e303 BNC 0x192200191c cfee MOVFF 0xfee,0xfe400191e ffe4001920 d7fb BRA 0x1918001922 ee00 LFSR 0x0,0x14001924 f014001926 0e0e MOVLW 0xe001928 04e8 DECF 0xe8,0x0,0x000192a e303 BNC 0x193200192c cfee MOVFF 0xfee,0xfe400192e ffe4001930 d7fb BRA 0x1928001932 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c001934 ecb9 CALL 0x1172,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c001936 f008F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c001938 ecba CALL 0x1f74,0x0 blindsISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c00193a f00f#endif F:\MCP\projects\CAN\canTemp\Source\Main.c00193c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c00193e ee00 LFSR 0x0,0x21001940 f021001942 0e0e MOVLW 0xe001944 04e8 DECF 0xe8,0x0,0x0001946 e303 BNC 0x194e001948 cfe5 MOVFF 0xfe5,0xfed00194a ffed00194c d7fb BRA 0x194400194e ee00 LFSR 0x0,0x13001950 f013001952 0e14 MOVLW 0x14001954 04e8 DECF 0xe8,0x0,0x0001956 e303 BNC 0x195e001958 cfe5 MOVFF 0xfe5,0xfed00195a ffed00195c d7fb BRA 0x195400195e cfe5 MOVFF 0xfe5,0xffa001960 fffa001962 cfe5 MOVFF 0xfe5,0xff4001964 fff4001966 cfe5 MOVFF 0xfe5,0xff3001968 fff300196a cfe5 MOVFF 0xfe5,0xff500196c fff500196e cfe5 MOVFF 0xfe5,0xff7001970 fff7001972 cfe5 MOVFF 0xfe5,0xff6001974 fff6001976 cfe5 MOVFF 0xfe5,0xfea001978 ffea00197a cfe5 MOVFF 0xfe5,0xfe900197c ffe900197e cfe5 MOVFF 0xfe5,0xfda001980 ffda001982 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.c001984 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c001986 ffe4001988 cfe2 MOVFF 0xfe2,0xfda00198a ffda00198c cfe9 MOVFF 0xfe9,0xfe400198e ffe4001990 cfea MOVFF 0xfea,0xfe4001992 ffe4001994 cff6 MOVFF 0xff6,0xfe4001996 ffe4001998 cff7 MOVFF 0xff7,0xfe400199a ffe400199c cff5 MOVFF 0xff5,0xfe400199e ffe40019a0 cff3 MOVFF 0xff3,0xfe40019a2 ffe40019a4 cff4 MOVFF 0xff4,0xfe40019a6 ffe40019a8 cffa MOVFF 0xffa,0xfe40019aa ffe40019ac ee00 LFSR 0x0,0x00019ae f0000019b0 0e14 MOVLW 0x140019b2 04e8 DECF 0xe8,0x0,0x00019b4 e303 BNC 0x19bc0019b6 cfee MOVFF 0xfee,0xfe40019b8 ffe40019ba d7fb BRA 0x19b20019bc ee00 LFSR 0x0,0x140019be f0140019c0 0e0e MOVLW 0xe0019c2 04e8 DECF 0xe8,0x0,0x00019c4 e303 BNC 0x19cc0019c6 cfee MOVFF 0xfee,0xfe40019c8 ffe40019ca d7fb BRA 0x19c20019cc 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c0019ce ec3c CALL 0x1a78,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c0019d0 f00d#endif F:\MCP\projects\CAN\canTemp\Source\Main.c0019d2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c0019d4 ee00 LFSR 0x0,0x210019d6 f0210019d8 0e0e MOVLW 0xe0019da 04e8 DECF 0xe8,0x0,0x00019dc e303 BNC 0x19e40019de cfe5 MOVFF 0xfe5,0xfed0019e0 ffed0019e2 d7fb BRA 0x19da0019e4 ee00 LFSR 0x0,0x130019e6 f0130019e8 0e14 MOVLW 0x140019ea 04e8 DECF 0xe8,0x0,0x00019ec e303 BNC 0x19f40019ee cfe5 MOVFF 0xfe5,0xfed0019f0 ffed0019f2 d7fb BRA 0x19ea0019f4 cfe5 MOVFF 0xfe5,0xffa0019f6 fffa0019f8 cfe5 MOVFF 0xfe5,0xff40019fa fff40019fc cfe5 MOVFF 0xfe5,0xff30019fe fff3001a00 cfe5 MOVFF 0xfe5,0xff5001a02 fff5001a04 cfe5 MOVFF 0xfe5,0xff7001a06 fff7001a08 cfe5 MOVFF 0xfe5,0xff6001a0a fff6001a0c cfe5 MOVFF 0xfe5,0xfea001a0e ffea001a10 cfe5 MOVFF 0xfe5,0xfe9001a12 ffe9001a14 cfe5 MOVFF 0xfe5,0xfda001a16 ffda001a18 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.c001a1a 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c001a1c 9894 BCF 0x94,0x4,0x0 BLINDS0_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.c001a1e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c001a20 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canTemp\Source\Main.c001a22 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001a24 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.c001a26 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canTemp\Source\Main.c001a28 ffe6001a2a cfe1 MOVFF 0xfe1,0xfd9001a2c ffd9001a2e 0e0f MOVLW 0xf001a30 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001a32 5ce1 SUBWF 0xe1,0x0,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001a34 e202 BC 0x1a3a001a36 6ae1 CLRF 0xe1,0x0001a38 52e5 MOVF 0xe5,0x1,0x0001a3a 6ee1 MOVWF 0xe1,0x0001a3c 52e5 MOVF 0xe5,0x1,0x0001a3e cfe7 MOVFF 0xfe7,0xfd9001a40 ffd9001a42 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 = 0x001000 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.c001000 ef6b GOTO 0x20d6 _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c001002 f010001004 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 = 0x001008 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.c001008 ef75 GOTO 0x18ea _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00100a f00c00100c 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 = 0x001018 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.c001018 efc2 GOTO 0x1984 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00101a f00c00101c 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.c001d42 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001d44 ffe6001d46 cfe1 MOVFF 0xfe1,0xfd9001d48 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001d4a 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001d4c cfdb MOVFF 0xfdb,0x14001d4e f014001d50 0efe MOVLW 0xfe001d52 cfdb MOVFF 0xfdb,0x15001d54 f015001d56 c015 MOVFF 0x15,0x14001d58 f014001d5a 6a15 CLRF 0x15,0x0001d5c 5014 MOVF 0x14,0x0,0x0001d5e 6eaa MOVWF 0xaa,0x0001d60 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001d62 6ee7 MOVWF 0xe7,0x0001d64 0efd MOVLW 0xfd001d66 cfdb MOVFF 0xfdb,0x14001d68 f014001d6a 0efe MOVLW 0xfe001d6c cfdb MOVFF 0xfdb,0x15001d6e f015001d70 50e7 MOVF 0xe7,0x0,0x0001d72 1614 ANDWF 0x14,0x1,0x0001d74 6a15 CLRF 0x15,0x0001d76 5014 MOVF 0x14,0x0,0x0001d78 6ea9 MOVWF 0xa9,0x0001d7a 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001d7c 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001d7e 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001d80 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001d82 d000 BRA 0x1d84001d84 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001d86 cfe7 MOVFF 0xfe7,0xfd9001d88 ffd9001d8a 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.c001d8c cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001d8e ffe6001d90 cfe1 MOVFF 0xfe1,0xfd9001d92 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001d94 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001d96 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001d98 cfdb MOVFF 0xfdb,0x14001d9a f014001d9c 0efe MOVLW 0xfe001d9e cfdb MOVFF 0xfdb,0x15001da0 f015001da2 c015 MOVFF 0x15,0x14001da4 f014001da6 6a15 CLRF 0x15,0x0001da8 5014 MOVF 0x14,0x0,0x0001daa 6eaa MOVWF 0xaa,0x0001dac 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001dae 6ee7 MOVWF 0xe7,0x0001db0 0efd MOVLW 0xfd001db2 cfdb MOVFF 0xfdb,0x14001db4 f014001db6 0efe MOVLW 0xfe001db8 cfdb MOVFF 0xfdb,0x15001dba f015001dbc 50e7 MOVF 0xe7,0x0,0x0001dbe 1614 ANDWF 0x14,0x1,0x0001dc0 6a15 CLRF 0x15,0x0001dc2 5014 MOVF 0x14,0x0,0x0001dc4 6ea9 MOVWF 0xa9,0x0001dc6 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001dc8 50db MOVF 0xdb,0x0,0x0001dca 6ea8 MOVWF 0xa8,0x0001dcc 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001dce 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001dd0 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001dd2 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001dd4 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001dd6 6ea7 MOVWF 0xa7,0x0001dd8 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001dda 6ea7 MOVWF 0xa7,0x0001ddc 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001dde 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001de0 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001de2 d7fe BRA 0x1de0001de4 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001de6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001de8 cfe7 MOVFF 0xfe7,0xfd9001dea ffd9001dec 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: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\adc.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\adc.c* Revision: $Revision: 139 $ 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.c001a44 cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c001a46 ffe6001a48 cfe1 MOVFF 0xfe1,0xfd9001a4a 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.c001a4c 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c001a4e 50db MOVF 0xdb,0x0,0x0001a50 0b0f ANDLW 0xf001a52 6e14 MOVWF 0x14,0x0001a54 0efe MOVLW 0xfe001a56 50db MOVF 0xdb,0x0,0x0001a58 0b01 ANDLW 0x1001a5a 0d10 MULLW 0x10001a5c 50f3 MOVF 0xf3,0x0,0x0001a5e 1014 IORWF 0x14,0x0,0x0001a60 6ec1 MOVWF 0xc1,0x0001a62 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c001a64 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c001a66 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c001a68 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c001a6a 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c001a6c 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c001a6e 9c9f BCF 0x9f,0x6,0x0 IPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c001a70 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c001a72 cfe7 MOVFF 0xfe7,0xfd9001a74 ffd9001a76 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.c001a78 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c001a7a 0b40 ANDLW 0x40001a7c e050 BZ 0x1b1e001a7e 509e MOVF 0x9e,0x0,0x0001a80 0b40 ANDLW 0x40001a82 e04d BZ 0x1b1e{ F:\MCP\projects\CAN\Include\adc.c001a84 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001a86 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.c001a88 6e18 MOVWF 0x18,0x0001a8a c018 MOVFF 0x18,0x19001a8c f019001a8e 6a18 CLRF 0x18,0x0001a90 50c3 MOVF 0xc3,0x0,0x0001a92 0100 MOVLB 0x0001a94 1018 IORWF 0x18,0x0,0x0001a96 6e14 MOVWF 0x14,0x0001a98 c019 MOVFF 0x19,0x15001a9a f015001a9c 6a16 CLRF 0x16,0x0001a9e 6a17 CLRF 0x17,0x0001aa0 ae15 BTFSS 0x15,0x7,0x0001aa2 d002 BRA 0x1aa8001aa4 6816 SETF 0x16,0x0001aa6 6817 SETF 0x17,0x0001aa8 5014 MOVF 0x14,0x0,0x0001aaa 0100 MOVLB 0x0001aac 278e ADDWF 0x8e,0x1,0x1001aae 5015 MOVF 0x15,0x0,0x0001ab0 238f ADDWFC 0x8f,0x1,0x1001ab2 5016 MOVF 0x16,0x0,0x0001ab4 2390 ADDWFC 0x90,0x1,0x1001ab6 5017 MOVF 0x17,0x0,0x0001ab8 2391 ADDWFC 0x91,0x1,0x1001aba 2b92 INCF 0x92,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c001abc 0e00 MOVLW 0x0001abe 2393 ADDWFC 0x93,0x1,0x1F:\MCP\projects\CAN\Include\adc.c001ac0 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c001ac2 5d92 SUBWF 0x92,0x0,0x1001ac4 0e00 MOVLW 0x0001ac6 5993 SUBWFB 0x93,0x0,0x1001ac8 e324 BNC 0x1b12{ F:\MCP\projects\CAN\Include\adc.c001aca c092 MOVFF 0x92,0x14 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c001acc f014001ace c093 MOVFF 0x93,0x15001ad0 f015001ad2 6a16 CLRF 0x16,0x0001ad4 6a17 CLRF 0x17,0x0001ad6 c08e MOVFF 0x8e,0x6001ad8 f006001ada c08f MOVFF 0x8f,0x7001adc f007001ade c090 MOVFF 0x90,0x8001ae0 f008001ae2 c091 MOVFF 0x91,0x9001ae4 f009001ae6 c014 MOVFF 0x14,0xb001ae8 f00b001aea c015 MOVFF 0x15,0xc001aec f00c001aee c016 MOVFF 0x16,0xd001af0 f00d001af2 c017 MOVFF 0x17,0xe001af4 f00e001af6 ec0f CALL 0x201e,0x0001af8 f010001afa c006 MOVFF 0x6,0x8e001afc f08e001afe c007 MOVFF 0x7,0x8f001b00 f08f001b02 c008 MOVFF 0x8,0x90001b04 f090001b06 c009 MOVFF 0x9,0x91001b08 f091001b0a 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c001b0c 0e01 MOVLW 0x1001b0e 6f9f MOVWF 0x9f,0x1} F:\MCP\projects\CAN\Include\adc.c001b10 d006 BRA 0x1b1e else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c001b12 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c001b14 6ee6 MOVWF 0xe6,0x0001b16 ec77 CALL 0x20ee,0x0001b18 f010001b1a 52e5 MOVF 0xe5,0x1,0x0001b1c 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.c001b1e 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.c001b20 cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c001b22 ffe6001b24 cfe1 MOVFF 0xfe1,0xfd9001b26 ffd9{ F:\MCP\projects\CAN\Include\adc.c001b28 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c001b2a 50db MOVF 0xdb,0x0,0x0001b2c 080f SUBLW 0xf001b2e e202 BC 0x1b34001b30 0e00 MOVLW 0x0001b32 d015 BRA 0x1b5eF:\MCP\projects\CAN\Include\adc.c001b34 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c001b36 6b8e CLRF 0x8e,0x1001b38 6b8f CLRF 0x8f,0x1001b3a 6b90 CLRF 0x90,0x1001b3c 6b91 CLRF 0x91,0x1001b3e 6b92 CLRF 0x92,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c001b40 6b93 CLRF 0x93,0x1F:\MCP\projects\CAN\Include\adc.c001b42 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c001b44 14c2 ANDWF 0xc2,0x0,0x0001b46 6e14 MOVWF 0x14,0x0001b48 0efe MOVLW 0xfe001b4a 50db MOVF 0xdb,0x0,0x0001b4c 0d04 MULLW 0x4001b4e 50f3 MOVF 0xf3,0x0,0x0001b50 1014 IORWF 0x14,0x0,0x0001b52 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c001b54 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c001b56 6b9f CLRF 0x9f,0x1F:\MCP\projects\CAN\Include\adc.c001b58 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001b5a 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c001b5c d000 BRA 0x1b5e001b5e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c001b60 cfe7 MOVFF 0xfe7,0xfd9001b62 ffd9001b64 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.c001b66 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c001b68 6b9f CLRF 0x9f,0x1001b6a c08e MOVFF 0x8e,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c001b6c fff3001b6e c08f MOVFF 0x8f,0xff4001b70 fff4001b72 d000 BRA 0x1b74001b74 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.c001b76 cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c001b78 ffe6001b7a cfe1 MOVFF 0xfe1,0xfd9001b7c ffd9001b7e 0e08 MOVLW 0x8001b80 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c001b82 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c001b84 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c001b86 c08e MOVFF 0x8e,0x18 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c001b88 f018001b8a c08f MOVFF 0x8f,0x19001b8c f019001b8e c090 MOVFF 0x90,0x1a001b90 f01a001b92 c091 MOVFF 0x91,0x1b001b94 f01b001b96 0e27 MOVLW 0x27001b98 6e0b MOVWF 0xb,0x0001b9a 6a0c CLRF 0xc,0x0001b9c 6a0d CLRF 0xd,0x0001b9e 6a0e CLRF 0xe,0x0001ba0 c018 MOVFF 0x18,0x6001ba2 f006001ba4 c019 MOVFF 0x19,0x7001ba6 f007001ba8 c01a MOVFF 0x1a,0x8001baa f008001bac c01b MOVFF 0x1b,0x9001bae f009001bb0 ecd7 CALL 0x1fae,0x0001bb2 f00f001bb4 c002 MOVFF 0x2,0x18001bb6 f018001bb8 c003 MOVFF 0x3,0x19001bba f019001bbc c004 MOVFF 0x4,0x1a001bbe f01a001bc0 c005 MOVFF 0x5,0x1b001bc2 f01b001bc4 0e04 MOVLW 0x4001bc6 90d8 BCF 0xd8,0x0,0x0001bc8 321b RRCF 0x1b,0x1,0x0001bca 321a RRCF 0x1a,0x1,0x0001bcc 3219 RRCF 0x19,0x1,0x0001bce 3218 RRCF 0x18,0x1,0x0001bd0 06e8 DECF 0xe8,0x1,0x0001bd2 e1f9 BNZ 0x1bc6001bd4 c018 MOVFF 0x18,0x14001bd6 f014001bd8 c019 MOVFF 0x19,0x15001bda f015001bdc c01a MOVFF 0x1a,0x16001bde f016001be0 c01b MOVFF 0x1b,0x17001be2 f017001be4 0ef3 MOVLW 0xf3001be6 5e14 SUBWF 0x14,0x1,0x0001be8 0e01 MOVLW 0x1001bea 5a15 SUBWFB 0x15,0x1,0x0001bec 0e00 MOVLW 0x0001bee 5a16 SUBWFB 0x16,0x1,0x0001bf0 5a17 SUBWFB 0x17,0x1,0x0001bf2 0e06 MOVLW 0x6001bf4 c014 MOVFF 0x14,0xfdb001bf6 ffdb001bf8 0e07 MOVLW 0x7001bfa c015 MOVFF 0x15,0xfdb001bfc ffdbF:\MCP\projects\CAN\Include\adc.c001bfe 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c001c00 6e14 MOVWF 0x14,0x0001c02 6a15 CLRF 0x15,0x0001c04 0e06 MOVLW 0x6001c06 cfdb MOVFF 0xfdb,0x8001c08 f008001c0a 0e07 MOVLW 0x7001c0c cfdb MOVFF 0xfdb,0x9001c0e f009001c10 c014 MOVFF 0x14,0xd001c12 f00d001c14 c015 MOVFF 0x15,0xe001c16 f00e001c18 ecf7 CALL 0x1dee,0x0001c1a f00e001c1c 0e02 MOVLW 0x2001c1e c008 MOVFF 0x8,0xfdb001c20 ffdb001c22 0e03 MOVLW 0x3001c24 c009 MOVFF 0x9,0xfdb001c26 ffdb001c28 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c001c2a cfdb MOVFF 0xfdb,0x16001c2c f016001c2e 0e07 MOVLW 0x7001c30 cfdb MOVFF 0xfdb,0x17001c32 f017001c34 0e0a MOVLW 0xa001c36 6e08 MOVWF 0x8,0x0001c38 6a09 CLRF 0x9,0x0001c3a 0e02 MOVLW 0x2001c3c cfdb MOVFF 0xfdb,0xd001c3e f00d001c40 0e03 MOVLW 0x3001c42 cfdb MOVFF 0xfdb,0xe001c44 f00e001c46 ec1d CALL 0x1e3a,0x0001c48 f00f001c4a 5006 MOVF 0x6,0x0,0x0001c4c 5c16 SUBWF 0x16,0x0,0x0001c4e 6e14 MOVWF 0x14,0x0001c50 5007 MOVF 0x7,0x0,0x0001c52 5817 SUBWFB 0x17,0x0,0x0001c54 6e15 MOVWF 0x15,0x0001c56 0e04 MOVLW 0x4001c58 c014 MOVFF 0x14,0xfdb001c5a ffdb001c5c 0e05 MOVLW 0x5001c5e c015 MOVFF 0x15,0xfdb001c60 ffdbF:\MCP\projects\CAN\Include\adc.c001c62 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c001c64 cfdb MOVFF 0xfdb,0x14001c66 f014001c68 0e05 MOVLW 0x5001c6a cfdb MOVFF 0xfdb,0x15001c6c f015001c6e 0100 MOVLB 0x0001c70 0e80 MOVLW 0x80001c72 1415 ANDWF 0x15,0x0,0x0001c74 e112 BNZ 0x1c9a001c76 0e04 MOVLW 0x4001c78 cfdb MOVFF 0xfdb,0x16001c7a f016001c7c 0e05 MOVLW 0x5001c7e cfdb MOVFF 0xfdb,0x17001c80 f017001c82 3417 RLCF 0x17,0x0,0x0001c84 e204 BC 0x1c8e001c86 5016 MOVF 0x16,0x0,0x0001c88 0802 SUBLW 0x2001c8a 0e00 MOVLW 0x0001c8c 5417 SUBFWB 0x17,0x0,0x0001c8e e305 BNC 0x1c9a001c90 0e04 MOVLW 0x4001c92 6adb CLRF 0xdb,0x0001c94 0e05 MOVLW 0x5001c96 6adb CLRF 0xdb,0x0001c98 d02c BRA 0x1cf2 else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c001c9a 0e04 MOVLW 0x4001c9c cfdb MOVFF 0xfdb,0x14001c9e f014001ca0 0e05 MOVLW 0x5001ca2 cfdb MOVFF 0xfdb,0x15001ca4 f015001ca6 90d8 BCF 0xd8,0x0,0x0001ca8 5015 MOVF 0x15,0x0,0x0001caa e604 BN 0x1cb4001cac 0e03 MOVLW 0x3001cae 5c14 SUBWF 0x14,0x0,0x0001cb0 0e00 MOVLW 0x0001cb2 5815 SUBWFB 0x15,0x0,0x0001cb4 e315 BNC 0x1ce0001cb6 0e04 MOVLW 0x4001cb8 cfdb MOVFF 0xfdb,0x16001cba f016001cbc 0e05 MOVLW 0x5001cbe cfdb MOVFF 0xfdb,0x17001cc0 f017001cc2 3417 RLCF 0x17,0x0,0x0001cc4 e204 BC 0x1cce001cc6 5016 MOVF 0x16,0x0,0x0001cc8 0807 SUBLW 0x7001cca 0e00 MOVLW 0x0001ccc 5417 SUBFWB 0x17,0x0,0x0001cce e308 BNC 0x1ce0001cd0 0e05 MOVLW 0x5001cd2 6ef3 MOVWF 0xf3,0x0001cd4 0e04 MOVLW 0x4001cd6 cff3 MOVFF 0xff3,0xfdb001cd8 ffdb001cda 0e05 MOVLW 0x5001cdc 6adb CLRF 0xdb,0x0001cde d009 BRA 0x1cf2 else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c001ce0 0e04 MOVLW 0x4001ce2 6adb CLRF 0xdb,0x0001ce4 0e05 MOVLW 0x5001ce6 6adb CLRF 0xdb,0x0001ce8 0e02 MOVLW 0x2001cea 2adb INCF 0xdb,0x1,0x0001cec 0e03 MOVLW 0x3001cee e301 BNC 0x1cf2001cf0 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c001cf2 0e02 MOVLW 0x2 tenth = (signed char *)v11; F:\MCP\projects\CAN\Include\adc.c001cf4 cfdb MOVFF 0xfdb,0x8001cf6 f008001cf8 0e03 MOVLW 0x3001cfa cfdb MOVFF 0xfdb,0x9001cfc f009001cfe 0efd MOVLW 0xfd001d00 c008 MOVFF 0x8,0xfdb001d02 ffdb001d04 0efe MOVLW 0xfe001d06 c009 MOVFF 0x9,0xfdb001d08 ffdb001d0a 0e04 MOVLW 0x4 decimal = (BYTE *)v01; F:\MCP\projects\CAN\Include\adc.c001d0c cfdb MOVFF 0xfdb,0x8001d0e f008001d10 0e05 MOVLW 0x5001d12 cfdb MOVFF 0xfdb,0x9001d14 f009001d16 0efb MOVLW 0xfb001d18 c008 MOVFF 0x8,0xfdb001d1a ffdb001d1c 0efc MOVLW 0xfc001d1e c009 MOVFF 0x9,0xfdb001d20 ffdbF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001d22 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c001d24 6b9f CLRF 0x9f,0x1001d26 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c001d28 5ce1 SUBWF 0xe1,0x0,0x0001d2a e202 BC 0x1d30001d2c 6ae1 CLRF 0xe1,0x0001d2e 52e5 MOVF 0xe5,0x1,0x0001d30 6ee1 MOVWF 0xe1,0x0001d32 52e5 MOVF 0xe5,0x1,0x0001d34 cfe7 MOVFF 0xfe7,0xfd9001d36 ffd9001d38 0012 RETURN 0x0F:\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.c001d3a 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c001d3c 519f MOVF 0x9f,0x0,0x1001d3e d000 BRA 0x1d40001d40 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-01-30 12:34:06 +0100 (ti, 30 jan 2007) $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Revision: $Revision: 275 $ 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.cBLINDS_DIR mode = MIDDLE; F:\MCP\projects\CAN\canTemp\Source\blinds.cWORD numSteps = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cBYTE minCounter = 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.c001f32 0ec1 MOVLW 0xc1 T1CON = 0b11000001; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f34 6ecd MOVWF 0xcd,0x0001f36 0eec MOVLW 0xec TMR1H=((TMR1_VAL&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c001f38 6ecf MOVWF 0xcf,0x0001f3a 0e78 MOVLW 0x78 TMR1L=(TMR1_VAL&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c001f3c 6ece MOVWF 0xce,0x0001f3e 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f40 809d BSF 0x9d,0x0,0x0 PIE1bits.TMR1IE = 1; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f42 809f BSF 0x9f,0x0,0x0 IPR1bits.TMR1IP = 1; // high prior? F:\MCP\projects\CAN\canTemp\Source\blinds.c001f44 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: blindsTurn F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: Direction and number of steps to perform. 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.c001f46 cfd9 MOVFF 0xfd9,0xfe6 void blindsTurn(BLINDS_DIR dir, WORD steps) F:\MCP\projects\CAN\canTemp\Source\blinds.c001f48 ffe6001f4a cfe1 MOVFF 0xfe1,0xfd9001f4c ffd9{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f4e 0efe MOVLW 0xfe mode = dir; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f50 cfdb MOVFF 0xfdb,0x94001f52 f094001f54 0100 MOVLB 0x0 minCounter = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f56 6b97 CLRF 0x97,0x1001f58 0efc MOVLW 0xfc numSteps = steps; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f5a cfdb MOVFF 0xfdb,0x95001f5c f095001f5e 0efd MOVLW 0xfd001f60 cfdb MOVFF 0xfdb,0x96001f62 f096001f64 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.c001f66 cfe7 MOVFF 0xfe7,0xfd9001f68 ffd9001f6a 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: blindsStop F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: Stop blind at current position. 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 blindsStop() F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f6c 0100 MOVLB 0x0 numSteps = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c001f6e 6b95 CLRF 0x95,0x1001f70 6b96 CLRF 0x96,0x1001f72 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: blindsISR F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cvoid blindsISR(void) F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f74 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.TMR1IF == 1 && PIE1bits.TMR1IE == 1) F:\MCP\projects\CAN\canTemp\Source\blinds.c001f76 0b01 ANDLW 0x1001f78 e019 BZ 0x1fac001f7a 509d MOVF 0x9d,0x0,0x0001f7c 0b01 ANDLW 0x1001f7e e016 BZ 0x1fac{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f80 0eec MOVLW 0xec TMR1H=((TMR1_VAL&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c001f82 6ecf MOVWF 0xcf,0x0001f84 0e78 MOVLW 0x78 TMR1L=(TMR1_VAL&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c001f86 6ece MOVWF 0xce,0x0F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c001f88 0100 MOVLB 0x0 if (numSteps>1) F:\MCP\projects\CAN\canTemp\Source\blinds.c001f8a 0e01 MOVLW 0x1001f8c 80d8 BSF 0xd8,0x0,0x0001f8e 5595 SUBFWB 0x95,0x0,0x1001f90 0e00 MOVLW 0x0001f92 5596 SUBFWB 0x96,0x0,0x1001f94 e20a BC 0x1faa{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f96 0797 DECF 0x97,0x1,0x1 if ((--minCounter)<1) F:\MCP\projects\CAN\canTemp\Source\blinds.c001f98 0e01 MOVLW 0x1001f9a 5d97 SUBWF 0x97,0x0,0x1001f9c e206 BC 0x1faa{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001f9e 0795 DECF 0x95,0x1,0x1 numSteps--; F:\MCP\projects\CAN\canTemp\Source\blinds.c001fa0 0e00 MOVLW 0x0001fa2 5b96 SUBWFB 0x96,0x1,0x1001fa4 7882 BTG 0x82,0x4,0x0 BLINDS0_IO=~BLINDS0_IO; F:\MCP\projects\CAN\canTemp\Source\blinds.c001fa6 c094 MOVFF 0x94,0x97 minCounter=mode; F:\MCP\projects\CAN\canTemp\Source\blinds.c001fa8 f097} F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c001faa 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c001fac 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c#endif F:\MCP\projects\CAN\canTemp\Source\blinds.c