Rev 139 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Jan 28 14:54:34 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: 2006-11-14 21:11:28 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 95 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.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.c00105c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00105e 6e6f MOVWF 0x6f,0x0001060 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001062 146e ANDWF 0x6e,0x0,0x0001064 0880 SUBLW 0x80001066 e001 BZ 0x106a001068 d7fb BRA 0x1060F:\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.c00106a 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c00106c 6e70 MOVWF 0x70,0x000106e 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c001070 6e71 MOVWF 0x71,0x0001072 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c001074 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.c001076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001078 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 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.c00107c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00107e 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.c001080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108a 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.c00108c 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.c00108e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001092 146e ANDWF 0x6e,0x0,0x0001094 e001 BZ 0x1098001096 d7fc BRA 0x1090#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.c001098 ecc7 CALL 0x1f8e,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c00109a f00fF:\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.c00109c 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00109e 6ee6 MOVWF 0xe6,0x00010a0 6ae6 CLRF 0xe6,0x00010a2 ec73 CALL 0x1ce6,0x00010a4 f00e0010a6 52e5 MOVF 0xe5,0x1,0x00010a8 52e5 MOVF 0xe5,0x1,0x00010aa 082a SUBLW 0x2a0010ac e12b BNZ 0x1104{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\CAN.c0010b0 6ee6 MOVWF 0xe6,0x00010b2 6ae6 CLRF 0xe6,0x00010b4 ec73 CALL 0x1ce6,0x00010b6 f00e0010b8 52e5 MOVF 0xe5,0x1,0x00010ba 52e5 MOVF 0xe5,0x1,0x00010bc 6e14 MOVWF 0x14,0x00010be c014 MOVFF 0x14,0x150010c0 f0150010c2 6a14 CLRF 0x14,0x00010c4 c014 MOVFF 0x14,0xfe60010c6 ffe60010c8 c015 MOVFF 0x15,0xfe60010ca ffe60010cc 0e02 MOVLW 0x20010ce 6ee6 MOVWF 0xe6,0x00010d0 6ae6 CLRF 0xe6,0x00010d2 ec73 CALL 0x1ce6,0x00010d4 f00e0010d6 52e5 MOVF 0xe5,0x1,0x00010d8 52e5 MOVF 0xe5,0x1,0x00010da 52e5 MOVF 0xe5,0x1,0x00010dc cfe7 MOVFF 0xfe7,0x150010de f0150010e0 52e5 MOVF 0xe5,0x1,0x00010e2 cfe7 MOVFF 0xfe7,0x140010e4 f0140010e6 0100 MOVLB 0x00010e8 2414 ADDWF 0x14,0x0,0x00010ea 6f94 MOVWF 0x94,0x10010ec 0e00 MOVLW 0x00010ee 2015 ADDWFC 0x15,0x0,0x00010f0 6f95 MOVWF 0x95,0x10010f2 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\CAN.c0010f4 6ee6 MOVWF 0xe6,0x00010f6 6ae6 CLRF 0xe6,0x00010f8 ec73 CALL 0x1ce6,0x00010fa f00e0010fc 52e5 MOVF 0xe5,0x1,0x00010fe 52e5 MOVF 0xe5,0x1,0x0001100 0100 MOVLB 0x0001102 6f96 MOVWF 0x96,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.c001104 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001106 6b64 CLRF 0x64,0x1001108 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c00110a 6f65 MOVWF 0x65,0x100110c 6b66 CLRF 0x66,0x100110e 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c001110 6f6a MOVWF 0x6a,0x1001112 6f6b MOVWF 0x6b,0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canBase\Source\CAN.c001114 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c001116 6ee6 MOVWF 0xe6,0x0001118 c064 MOVFF 0x64,0xfe600111a ffe600111c c065 MOVFF 0x65,0xfe600111e ffe6001120 c066 MOVFF 0x66,0xfe6001122 ffe6001124 c067 MOVFF 0x67,0xfe6001126 ffe6001128 c068 MOVFF 0x68,0xfe600112a ffe600112c c069 MOVFF 0x69,0xfe600112e ffe6001130 c06a MOVFF 0x6a,0xfe6001132 ffe6001134 c06b MOVFF 0x6b,0xfe6001136 ffe6001138 c06c MOVFF 0x6c,0xfe600113a ffe600113c c06d MOVFF 0x6d,0xfe600113e ffe6001140 c06e MOVFF 0x6e,0xfe6001142 ffe6001144 c06f MOVFF 0x6f,0xfe6001146 ffe6001148 c070 MOVFF 0x70,0xfe600114a ffe600114c c071 MOVFF 0x71,0xfe600114e ffe6001150 c072 MOVFF 0x72,0xfe6001152 ffe6001154 d9f3 RCALL 0x153c001156 6e14 MOVWF 0x14,0x0001158 0e10 MOVLW 0x1000115a 5ee1 SUBWF 0xe1,0x1,0x000115c 5014 MOVF 0x14,0x0,0x000115e 0900 IORLW 0x0001160 e101 BNZ 0x1164001162 d7d8 BRA 0x1114F:\MCP\projects\CAN\canBase\Source\CAN.c001164 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.c001166 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001168 0b02 ANDLW 0x200116a e106 BNZ 0x117800116c 50a4 MOVF 0xa4,0x0,0x000116e 0b02 ANDLW 0x2001170 e103 BNZ 0x1178001172 50a4 MOVF 0xa4,0x0,0x0001174 0b01 ANDLW 0x1001176 e016 BZ 0x11a4{ F:\MCP\projects\CAN\canBase\Source\CAN.c001178 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c00117a 146f ANDWF 0x6f,0x0,0x000117c 0910 IORLW 0x1000117e 6e14 MOVWF 0x14,0x0001180 0e00 MOVLW 0x0001182 1477 ANDWF 0x77,0x0,0x0001184 1014 IORWF 0x14,0x0,0x0001186 6e77 MOVWF 0x77,0x0001188 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c00118a d86a RCALL 0x1260F:\MCP\projects\CAN\canBase\Source\CAN.c00118c a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00118e d002 BRA 0x1194001190 92a4 BCF 0xa4,0x1,0x0001192 d065 BRA 0x125e001194 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001196 d002 BRA 0x119c001198 92a4 BCF 0xa4,0x1,0x000119a d061 BRA 0x125e00119c a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00119e d002 BRA 0x11a40011a0 90a4 BCF 0xa4,0x0,0x00011a2 d05d BRA 0x125e} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0011a4 ecdb CALL 0x1fb6,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c0011a6 f00fF:\MCP\projects\CAN\canBase\Source\CAN.c0011a8 ecd1 CALL 0x1fa2,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c0011aa f00f0011ac 0100 MOVLB 0x00011ae 5160 MOVF 0x60,0x0,0x10011b0 5c06 SUBWF 0x6,0x0,0x00011b2 6e14 MOVWF 0x14,0x00011b4 0100 MOVLB 0x00011b6 5161 MOVF 0x61,0x0,0x10011b8 5807 SUBWFB 0x7,0x0,0x00011ba 6e15 MOVWF 0x15,0x00011bc 0100 MOVLB 0x00011be 5162 MOVF 0x62,0x0,0x10011c0 5808 SUBWFB 0x8,0x0,0x00011c2 6e16 MOVWF 0x16,0x00011c4 0100 MOVLB 0x00011c6 5163 MOVF 0x63,0x0,0x10011c8 5809 SUBWFB 0x9,0x0,0x00011ca 6e17 MOVWF 0x17,0x00011cc 80d8 BSF 0xd8,0x0,0x00011ce 0ef4 MOVLW 0xf40011d0 5414 SUBFWB 0x14,0x0,0x00011d2 0e01 MOVLW 0x10011d4 5415 SUBFWB 0x15,0x0,0x00011d6 0e00 MOVLW 0x00011d8 5416 SUBFWB 0x16,0x0,0x00011da 0e00 MOVLW 0x00011dc 5417 SUBFWB 0x17,0x0,0x00011de e23e BC 0x125c{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0011e0 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e2 6b64 CLRF 0x64,0x10011e4 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e6 0100 MOVLB 0x00011e8 6f65 MOVWF 0x65,0x10011ea 6b66 CLRF 0x66,0x10011ec 0100 MOVLB 0x0 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011ee 0e01 MOVLW 0x10011f0 6f6a MOVWF 0x6a,0x10011f2 0100 MOVLB 0x0 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canBase\Source\CAN.c0011f4 0e02 MOVLW 0x20011f6 6f6b MOVWF 0x6b,0x10011f8 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0011fa 6ee6 MOVWF 0xe6,0x00011fc c064 MOVFF 0x64,0xfe60011fe ffe6001200 c065 MOVFF 0x65,0xfe6001202 ffe6001204 c066 MOVFF 0x66,0xfe6001206 ffe6001208 c067 MOVFF 0x67,0xfe600120a ffe600120c c068 MOVFF 0x68,0xfe600120e ffe6001210 c069 MOVFF 0x69,0xfe6001212 ffe6001214 c06a MOVFF 0x6a,0xfe6001216 ffe6001218 c06b MOVFF 0x6b,0xfe600121a ffe600121c c06c MOVFF 0x6c,0xfe600121e ffe6001220 c06d MOVFF 0x6d,0xfe6001222 ffe6001224 c06e MOVFF 0x6e,0xfe6001226 ffe6001228 c06f MOVFF 0x6f,0xfe600122a ffe600122c c070 MOVFF 0x70,0xfe600122e ffe6001230 c071 MOVFF 0x71,0xfe6001232 ffe6001234 c072 MOVFF 0x72,0xfe6001236 ffe6001238 d981 RCALL 0x153c00123a 6e14 MOVWF 0x14,0x000123c 0e10 MOVLW 0x1000123e 5ee1 SUBWF 0xe1,0x1,0x0001240 5014 MOVF 0x14,0x0,0x0001242 0900 IORLW 0x0001244 e101 BNZ 0x1248001246 d7d8 BRA 0x11f8F:\MCP\projects\CAN\canBase\Source\CAN.c001248 ecd1 CALL 0x1fa2,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c00124a f00f00124c c006 MOVFF 0x6,0x6000124e f060001250 c007 MOVFF 0x7,0x61001252 f061001254 c008 MOVFF 0x8,0x62001256 f062001258 c009 MOVFF 0x9,0x6300125a f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00125c 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.c00125e 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.c001260 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001262 ffe6001264 cfe1 MOVFF 0xfe1,0xfd9001266 ffd9001268 0e0f MOVLW 0xf00126a 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.c00126c 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00126e 1461 ANDWF 0x61,0x0,0x0001270 38e8 SWAPF 0xe8,0x0,0x0001272 0b0f ANDLW 0xf001274 6edf MOVWF 0xdf,0x0001276 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.c001278 1461 ANDWF 0x61,0x0,0x000127a 6e1a MOVWF 0x1a,0x000127c 6a1b CLRF 0x1b,0x000127e 0e06 MOVLW 0x6001280 90d8 BCF 0xd8,0x0,0x0001282 361a RLCF 0x1a,0x1,0x0001284 361b RLCF 0x1b,0x1,0x0001286 04e8 DECF 0xe8,0x0,0x0001288 e1fb BNZ 0x128000128a 0ee0 MOVLW 0xe000128c 1462 ANDWF 0x62,0x0,0x000128e 6e1c MOVWF 0x1c,0x0001290 6a1d CLRF 0x1d,0x0001292 90d8 BCF 0xd8,0x0,0x0001294 321d RRCF 0x1d,0x1,0x0001296 321c RRCF 0x1c,0x1,0x0001298 90d8 BCF 0xd8,0x0,0x000129a 321d RRCF 0x1d,0x1,0x000129c 321c RRCF 0x1c,0x1,0x000129e 501a MOVF 0x1a,0x0,0x00012a0 241c ADDWF 0x1c,0x0,0x00012a2 6e18 MOVWF 0x18,0x00012a4 501b MOVF 0x1b,0x0,0x00012a6 201d ADDWFC 0x1d,0x0,0x00012a8 6e19 MOVWF 0x19,0x00012aa 0e03 MOVLW 0x30012ac 1462 ANDWF 0x62,0x0,0x00012ae 6e1e MOVWF 0x1e,0x00012b0 6a1f CLRF 0x1f,0x00012b2 90d8 BCF 0xd8,0x0,0x00012b4 361e RLCF 0x1e,0x1,0x00012b6 361f RLCF 0x1f,0x1,0x00012b8 5018 MOVF 0x18,0x0,0x00012ba 241e ADDWF 0x1e,0x0,0x00012bc 6e16 MOVWF 0x16,0x00012be 5019 MOVF 0x19,0x0,0x00012c0 201f ADDWFC 0x1f,0x0,0x00012c2 6e17 MOVWF 0x17,0x00012c4 0e80 MOVLW 0x800012c6 1463 ANDWF 0x63,0x0,0x00012c8 6e20 MOVWF 0x20,0x00012ca 6a21 CLRF 0x21,0x00012cc 0e07 MOVLW 0x70012ce 90d8 BCF 0xd8,0x0,0x00012d0 3221 RRCF 0x21,0x1,0x00012d2 3220 RRCF 0x20,0x1,0x00012d4 04e8 DECF 0xe8,0x0,0x00012d6 e1fb BNZ 0x12ce0012d8 5016 MOVF 0x16,0x0,0x00012da 2420 ADDWF 0x20,0x0,0x00012dc 6e14 MOVWF 0x14,0x00012de 5017 MOVF 0x17,0x0,0x00012e0 2021 ADDWFC 0x21,0x0,0x00012e2 6e15 MOVWF 0x15,0x00012e4 0e01 MOVLW 0x10012e6 c014 MOVFF 0x14,0xfdb0012e8 ffdb0012ea 0e02 MOVLW 0x20012ec c015 MOVFF 0x15,0xfdb0012ee ffdb0012f0 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0012f2 1463 ANDWF 0x63,0x0,0x00012f4 40e8 RRNCF 0xe8,0x0,0x00012f6 0b7f ANDLW 0x7f0012f8 6ee7 MOVWF 0xe7,0x00012fa 0e03 MOVLW 0x30012fc cfe7 MOVFF 0xfe7,0xfdb0012fe ffdb001300 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c001302 1463 ANDWF 0x63,0x0,0x0001304 6e16 MOVWF 0x16,0x0001306 c016 MOVFF 0x16,0x17001308 f01700130a 6a16 CLRF 0x16,0x000130c 5064 MOVF 0x64,0x0,0x000130e 0100 MOVLB 0x0001310 2416 ADDWF 0x16,0x0,0x0001312 6e14 MOVWF 0x14,0x0001314 0e00 MOVLW 0x0001316 2017 ADDWFC 0x17,0x0,0x0001318 6e15 MOVWF 0x15,0x000131a 0e04 MOVLW 0x400131c c014 MOVFF 0x14,0xfdb00131e ffdb001320 0e05 MOVLW 0x5001322 c015 MOVFF 0x15,0xfdb001324 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001326 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.c001328 0b01 ANDLW 0x100132a 6e16 MOVWF 0x16,0x000132c 5065 MOVF 0x65,0x0,0x000132e 0b02 ANDLW 0x2001330 e001 BZ 0x1334001332 0e01 MOVLW 0x1001334 24e8 ADDWF 0xe8,0x0,0x0001336 6e15 MOVWF 0x15,0x0001338 5065 MOVF 0x65,0x0,0x000133a 0b04 ANDLW 0x400133c e001 BZ 0x134000133e 0e01 MOVLW 0x1001340 0d04 MULLW 0x4001342 cff3 MOVFF 0xff3,0x14001344 f014001346 5065 MOVF 0x65,0x0,0x0001348 0b08 ANDLW 0x800134a e001 BZ 0x134e00134c 0e01 MOVLW 0x100134e 0d08 MULLW 0x8001350 50f3 MOVF 0xf3,0x0,0x0001352 2414 ADDWF 0x14,0x0,0x0001354 2415 ADDWF 0x15,0x0,0x0001356 2416 ADDWF 0x16,0x0,0x0001358 6ee7 MOVWF 0xe7,0x000135a 0e06 MOVLW 0x600135c cfe7 MOVFF 0xfe7,0xfdb00135e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001360 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001362 cf66 MOVFF 0xf66,0xfdb001364 ffdb001366 0e08 MOVLW 0x8001368 cf67 MOVFF 0xf67,0xfdb00136a ffdb00136c 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00136e cf68 MOVFF 0xf68,0xfdb001370 ffdb001372 0e0a MOVLW 0xa001374 cf69 MOVFF 0xf69,0xfdb001376 ffdb001378 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c00137a cf6a MOVFF 0xf6a,0xfdb00137c ffdb00137e 0e0c MOVLW 0xc001380 cf6b MOVFF 0xf6b,0xfdb001382 ffdb001384 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001386 cf6c MOVFF 0xf6c,0xfdb001388 ffdb00138a 0e0e MOVLW 0xe00138c cf6d MOVFF 0xf6d,0xfdb00138e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001390 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.c001392 50df MOVF 0xdf,0x0,0x0 if (cm.funct==FUNCT_BOOTLOADER) F:\MCP\projects\CAN\canBase\Source\CAN.c001394 e001 BZ 0x1398001396 d0a0 BRA 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c001398 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.c00139a 50db MOVF 0xdb,0x0,0x000139c 0100 MOVLB 0x000139e 5d96 SUBWF 0x96,0x0,0x10013a0 e001 BZ 0x13a40013a2 d09a BRA 0x14d80013a4 0e0c MOVLW 0xc0013a6 cfdb MOVFF 0xfdb,0x160013a8 f0160013aa c016 MOVFF 0x16,0x170013ac f0170013ae 6a16 CLRF 0x16,0x00013b0 0e0b MOVLW 0xb0013b2 50db MOVF 0xdb,0x0,0x00013b4 0100 MOVLB 0x00013b6 2416 ADDWF 0x16,0x0,0x00013b8 6e14 MOVWF 0x14,0x00013ba 0e00 MOVLW 0x00013bc 2017 ADDWFC 0x17,0x0,0x00013be 6e15 MOVWF 0x15,0x00013c0 0100 MOVLB 0x00013c2 5194 MOVF 0x94,0x0,0x10013c4 1814 XORWF 0x14,0x0,0x00013c6 e102 BNZ 0x13cc0013c8 5195 MOVF 0x95,0x0,0x10013ca 1815 XORWF 0x15,0x0,0x00013cc e001 BZ 0x13d00013ce d084 BRA 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013d0 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0013d2 0f01 ADDLW 0x10013d4 6ee9 MOVWF 0xe9,0x00013d6 cfda MOVFF 0xfda,0xfea0013d8 ffea0013da 0e01 MOVLW 0x10013dc 18ee XORWF 0xee,0x0,0x00013de e101 BNZ 0x13e20013e0 50ed MOVF 0xed,0x0,0x00013e2 e101 BNZ 0x13e60013e4 00ff RESET0013e6 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_SET_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013e8 0f01 ADDLW 0x10013ea 6ee9 MOVWF 0xe9,0x00013ec cfda MOVFF 0xfda,0xfea0013ee ffea0013f0 0e06 MOVLW 0x60013f2 18ee XORWF 0xee,0x0,0x00013f4 e101 BNZ 0x13f80013f6 50ed MOVF 0xed,0x0,0x00013f8 e16f BNZ 0x14d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0013fa 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.c0013fc cfdb MOVFF 0xfdb,0x140013fe f014001400 c014 MOVFF 0x14,0x15001402 f015001404 6a14 CLRF 0x14,0x0001406 0e07 MOVLW 0x7001408 50db MOVF 0xdb,0x0,0x000140a 0100 MOVLB 0x000140c 2414 ADDWF 0x14,0x0,0x000140e 6f94 MOVWF 0x94,0x1001410 0e00 MOVLW 0x0001412 2015 ADDWFC 0x15,0x0,0x0001414 6f95 MOVWF 0x95,0x1001416 0e09 MOVLW 0x9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c001418 cfdb MOVFF 0xfdb,0x9600141a f09600141c 0e08 MOVLW 0x8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00141e cfdb MOVFF 0xfdb,0xfe6001420 ffe6001422 0e01 MOVLW 0x1001424 6ee6 MOVWF 0xe6,0x0001426 6ae6 CLRF 0xe6,0x0001428 ec98 CALL 0x1d30,0x000142a f00e00142c 52e5 MOVF 0xe5,0x1,0x000142e 52e5 MOVF 0xe5,0x1,0x0001430 52e5 MOVF 0xe5,0x1,0x0001432 0e07 MOVLW 0x7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001434 cfdb MOVFF 0xfdb,0xfe6001436 ffe6001438 0e02 MOVLW 0x200143a 6ee6 MOVWF 0xe6,0x000143c 6ae6 CLRF 0xe6,0x000143e ec98 CALL 0x1d30,0x0001440 f00e001442 52e5 MOVF 0xe5,0x1,0x0001444 52e5 MOVF 0xe5,0x1,0x0001446 52e5 MOVF 0xe5,0x1,0x0001448 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00144a cfdb MOVFF 0xfdb,0xfe600144c ffe600144e 0e03 MOVLW 0x3001450 6ee6 MOVWF 0xe6,0x0001452 6ae6 CLRF 0xe6,0x0001454 ec98 CALL 0x1d30,0x0001456 f00e001458 52e5 MOVF 0xe5,0x1,0x000145a 52e5 MOVF 0xe5,0x1,0x000145c 52e5 MOVF 0xe5,0x1,0x000145e 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c001460 6ee6 MOVWF 0xe6,0x0001462 0e00 MOVLW 0x0001464 6ee6 MOVWF 0xe6,0x0001466 6ae6 CLRF 0xe6,0x0001468 ec98 CALL 0x1d30,0x000146a f00e00146c 52e5 MOVF 0xe5,0x1,0x000146e 52e5 MOVF 0xe5,0x1,0x0001470 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c001472 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001474 6b64 CLRF 0x64,0x1001476 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\CAN.c001478 0100 MOVLB 0x000147a 6f65 MOVWF 0x65,0x100147c 6b66 CLRF 0x66,0x100147e 0100 MOVLB 0x0 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\CAN.c001480 0e08 MOVLW 0x8001482 6f6a MOVWF 0x6a,0x1001484 0100 MOVLB 0x0 outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\CAN.c001486 6b6f CLRF 0x6f,0x1001488 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c00148a 6ee6 MOVWF 0xe6,0x000148c c064 MOVFF 0x64,0xfe600148e ffe6001490 c065 MOVFF 0x65,0xfe6001492 ffe6001494 c066 MOVFF 0x66,0xfe6001496 ffe6001498 c067 MOVFF 0x67,0xfe600149a ffe600149c c068 MOVFF 0x68,0xfe600149e ffe60014a0 c069 MOVFF 0x69,0xfe60014a2 ffe60014a4 c06a MOVFF 0x6a,0xfe60014a6 ffe60014a8 c06b MOVFF 0x6b,0xfe60014aa ffe60014ac c06c MOVFF 0x6c,0xfe60014ae ffe60014b0 c06d MOVFF 0x6d,0xfe60014b2 ffe60014b4 c06e MOVFF 0x6e,0xfe60014b6 ffe60014b8 c06f MOVFF 0x6f,0xfe60014ba ffe60014bc c070 MOVFF 0x70,0xfe60014be ffe60014c0 c071 MOVFF 0x71,0xfe60014c2 ffe60014c4 c072 MOVFF 0x72,0xfe60014c6 ffe60014c8 d839 RCALL 0x153c0014ca 6e14 MOVWF 0x14,0x00014cc 0e10 MOVLW 0x100014ce 5ee1 SUBWF 0xe1,0x1,0x00014d0 5014 MOVF 0x14,0x0,0x00014d2 0900 IORLW 0x00014d4 e101 BNZ 0x14d80014d6 d7d8 BRA 0x1488} 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.c0014d8 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0014da ffe90014dc cfda MOVFF 0xfda,0xfea0014de ffea0014e0 cfee MOVFF 0xfee,0xfe60014e2 ffe60014e4 cfee MOVFF 0xfee,0xfe60014e6 ffe60014e8 cfee MOVFF 0xfee,0xfe60014ea ffe60014ec 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 ec64 CALL 0x1cc8,0x000151e f00e001520 6e14 MOVWF 0x14,0x0001522 0e0f MOVLW 0xf001524 5ee1 SUBWF 0xe1,0x1,0x0001526 5014 MOVF 0x14,0x0,0x0001528 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00152a 5ce1 SUBWF 0xe1,0x0,0x000152c e202 BC 0x153200152e 6ae1 CLRF 0xe1,0x0001530 52e5 MOVF 0xe5,0x1,0x0001532 6ee1 MOVWF 0xe1,0x0001534 52e5 MOVF 0xe5,0x1,0x0001536 cfe7 MOVFF 0xfe7,0xfd9001538 ffd900153a 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.c00153c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c00153e ffe6001540 cfe1 MOVFF 0xfe1,0xfd9001542 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001544 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001546 b740 BTFSC 0x40,0x3,0x1001548 d004 BRA 0x155200154a 0e00 MOVLW 0x000154c 1477 ANDWF 0x77,0x0,0x000154e 0903 IORLW 0x3001550 6e77 MOVWF 0x77,0x0001552 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001554 b730 BTFSC 0x30,0x3,0x1001556 d004 BRA 0x1560001558 0e00 MOVLW 0x000155a 1477 ANDWF 0x77,0x0,0x000155c 0904 IORLW 0x400155e 6e77 MOVWF 0x77,0x0001560 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001562 b720 BTFSC 0x20,0x3,0x1001564 d005 BRA 0x1570001566 0e00 MOVLW 0x0001568 1477 ANDWF 0x77,0x0,0x000156a 0905 IORLW 0x500156c 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c00156e d002 BRA 0x1574 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001570 0e00 MOVLW 0x0001572 d0b9 BRA 0x16e6F:\MCP\projects\CAN\canBase\Source\CAN.c001574 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001576 cfdb MOVFF 0xfdb,0x14001578 f01400157a 3414 RLCF 0x14,0x0,0x000157c e20e BC 0x159a00157e 0eef MOVLW 0xef001580 cfdb MOVFF 0xfdb,0x15001582 f015001584 0e03 MOVLW 0x3001586 6ee7 MOVWF 0xe7,0x0001588 1815 XORWF 0x15,0x0,0x000158a aee8 BTFSS 0xe8,0x7,0x000158c d002 BRA 0x159200158e 3415 RLCF 0x15,0x0,0x0001590 d003 BRA 0x1598001592 50e7 MOVF 0xe7,0x0,0x0001594 80d8 BSF 0xd8,0x0,0x0001596 5415 SUBFWB 0x15,0x0,0x0001598 e202 BC 0x159e00159a 0eef MOVLW 0xef00159c 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Append my id and nid F:\MCP\projects\CAN\canBase\Source\CAN.c00159e 0ef3 MOVLW 0xf3 cm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015a0 c096 MOVFF 0x96,0xfdb0015a2 ffdb0015a4 0ef4 MOVLW 0xf4 cm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c0015a6 c094 MOVFF 0x94,0xfdb0015a8 ffdb0015aa 0ef5 MOVLW 0xf50015ac c095 MOVFF 0x95,0xfdb0015ae 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.c0015b0 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0015b2 cfdb MOVFF 0xfdb,0x140015b4 f0140015b6 0ef2 MOVLW 0xf20015b8 cfdb MOVFF 0xfdb,0x150015ba f0150015bc 0ec0 MOVLW 0xc00015be 1614 ANDWF 0x14,0x1,0x00015c0 0e03 MOVLW 0x30015c2 1615 ANDWF 0x15,0x1,0x00015c4 0e06 MOVLW 0x60015c6 90d8 BCF 0xd8,0x0,0x00015c8 3215 RRCF 0x15,0x1,0x00015ca 3214 RRCF 0x14,0x1,0x00015cc 04e8 DECF 0xe8,0x0,0x00015ce e1fb BNZ 0x15c60015d0 0ef0 MOVLW 0xf00015d2 50db MOVF 0xdb,0x0,0x00015d4 0b0f ANDLW 0xf0015d6 0d10 MULLW 0x100015d8 50f3 MOVF 0xf3,0x0,0x00015da 2414 ADDWF 0x14,0x0,0x00015dc 6e61 MOVWF 0x61,0x00015de 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015e0 6ee7 MOVWF 0xe7,0x00015e2 0ef1 MOVLW 0xf10015e4 cfdb MOVFF 0xfdb,0x160015e6 f0160015e8 0ef2 MOVLW 0xf20015ea cfdb MOVFF 0xfdb,0x170015ec f0170015ee 50e7 MOVF 0xe7,0x0,0x00015f0 1616 ANDWF 0x16,0x1,0x00015f2 6a17 CLRF 0x17,0x00015f4 90d8 BCF 0xd8,0x0,0x00015f6 3217 RRCF 0x17,0x1,0x00015f8 3216 RRCF 0x16,0x1,0x00015fa 0e3f MOVLW 0x3f0015fc 6ee7 MOVWF 0xe7,0x00015fe 0ef1 MOVLW 0xf1001600 cfdb MOVFF 0xfdb,0x14001602 f014001604 0ef2 MOVLW 0xf2001606 cfdb MOVFF 0xfdb,0x15001608 f01500160a 50e7 MOVF 0xe7,0x0,0x000160c 1614 ANDWF 0x14,0x1,0x000160e 6a15 CLRF 0x15,0x0001610 90d8 BCF 0xd8,0x0,0x0001612 3614 RLCF 0x14,0x1,0x0001614 3615 RLCF 0x15,0x1,0x0001616 90d8 BCF 0xd8,0x0,0x0001618 3614 RLCF 0x14,0x1,0x000161a 3615 RLCF 0x15,0x1,0x000161c 5014 MOVF 0x14,0x0,0x000161e 2416 ADDWF 0x16,0x0,0x0001620 6e62 MOVWF 0x62,0x0001622 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.c001624 cfdb MOVFF 0xfdb,0x16001626 f016001628 0ef5 MOVLW 0xf500162a cfdb MOVFF 0xfdb,0x1700162c f01700162e 0e00 MOVLW 0x0001630 1616 ANDWF 0x16,0x1,0x0001632 0e01 MOVLW 0x1001634 1617 ANDWF 0x17,0x1,0x0001636 c017 MOVFF 0x17,0x16001638 f01600163a 6a17 CLRF 0x17,0x000163c 0e01 MOVLW 0x100163e 6ee7 MOVWF 0xe7,0x0001640 0ef1 MOVLW 0xf1001642 cfdb MOVFF 0xfdb,0x14001644 f014001646 0ef2 MOVLW 0xf2001648 cfdb MOVFF 0xfdb,0x1500164a f01500164c 50e7 MOVF 0xe7,0x0,0x000164e 1614 ANDWF 0x14,0x1,0x0001650 6a15 CLRF 0x15,0x0001652 0e07 MOVLW 0x7001654 90d8 BCF 0xd8,0x0,0x0001656 3614 RLCF 0x14,0x1,0x0001658 3615 RLCF 0x15,0x1,0x000165a 04e8 DECF 0xe8,0x0,0x000165c e1fb BNZ 0x165400165e 0ef3 MOVLW 0xf3001660 50db MOVF 0xdb,0x0,0x0001662 0b3f ANDLW 0x3f001664 24e8 ADDWF 0xe8,0x0,0x0001666 2414 ADDWF 0x14,0x0,0x0001668 2416 ADDWF 0x16,0x0,0x000166a 6e63 MOVWF 0x63,0x000166c 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c00166e 6ee7 MOVWF 0xe7,0x0001670 0ef4 MOVLW 0xf4001672 cfdb MOVFF 0xfdb,0x14001674 f014001676 0ef5 MOVLW 0xf5001678 cfdb MOVFF 0xfdb,0x1500167a f01500167c 50e7 MOVF 0xe7,0x0,0x000167e 1614 ANDWF 0x14,0x1,0x0001680 6a15 CLRF 0x15,0x0001682 5014 MOVF 0x14,0x0,0x0001684 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001686 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001688 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00168a 50db MOVF 0xdb,0x0,0x000168c 0808 SUBLW 0x800168e e203 BC 0x1696001690 0e08 MOVLW 0x8001692 6e65 MOVWF 0x65,0x0001694 d003 BRA 0x169c001696 0ef6 MOVLW 0xf6001698 50db MOVF 0xdb,0x0,0x000169a 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.c00169c 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.c00169e 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016a0 50db MOVF 0xdb,0x0,0x00016a2 6e66 MOVWF 0x66,0x00016a4 0ef8 MOVLW 0xf80016a6 50db MOVF 0xdb,0x0,0x00016a8 6e67 MOVWF 0x67,0x00016aa 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 50db MOVF 0xdb,0x0,0x00016ae 6e68 MOVWF 0x68,0x00016b0 0efa MOVLW 0xfa0016b2 50db MOVF 0xdb,0x0,0x00016b4 6e69 MOVWF 0x69,0x00016b6 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 50db MOVF 0xdb,0x0,0x00016ba 6e6a MOVWF 0x6a,0x00016bc 0efc MOVLW 0xfc0016be 50db MOVF 0xdb,0x0,0x00016c0 6e6b MOVWF 0x6b,0x00016c2 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c4 50db MOVF 0xdb,0x0,0x00016c6 6e6c MOVWF 0x6c,0x00016c8 0efe MOVLW 0xfe0016ca 50db MOVF 0xdb,0x0,0x00016cc 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0016ce 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.c0016d0 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d2 cfdb MOVFF 0xfdb,0xfe60016d4 ffe60016d6 0efc MOVLW 0xfc0016d8 1460 ANDWF 0x60,0x0,0x00016da 52e5 MOVF 0xe5,0x1,0x00016dc 10e7 IORWF 0xe7,0x0,0x00016de 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.c0016e0 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.c0016e2 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0016e4 d000 BRA 0x16e6F:\MCP\projects\CAN\canBase\Source\CAN.c0016e6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0016e8 cfe7 MOVFF 0xfe7,0xfd90016ea ffd90016ec 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.c001f8e 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001f90 6ed6 MOVWF 0xd6,0x0001f92 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001f94 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.c001f96 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001f98 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001f9a 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001f9c 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001f9e 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001fa0 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.c001fa2 c090 MOVFF 0x90,0x6 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001fa4 f006001fa6 c091 MOVFF 0x91,0x7001fa8 f007001faa c092 MOVFF 0x92,0x8001fac f008001fae c093 MOVFF 0x93,0x9001fb0 f009001fb2 d000 BRA 0x1fb4001fb4 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.c001fb6 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001fb8 d00b BRA 0x1fd0{ F:\MCP\projects\CAN\canBase\Source\Tick.c001fba 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001fbc 6ed7 MOVWF 0xd7,0x0001fbe 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001fc0 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001fc2 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001fc4 2b90 INCF 0x90,0x1,0x1001fc6 0e00 MOVLW 0x0001fc8 2391 ADDWFC 0x91,0x1,0x1001fca 2392 ADDWFC 0x92,0x1,0x1001fcc 2393 ADDWFC 0x93,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001fce 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001fd0 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: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 139 $ 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.cstatic void mainInit(void); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c0019ec cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c0019ee ffe60019f0 cfe1 MOVFF 0xfe1,0xfd90019f2 ffd90019f4 0e11 MOVLW 0x110019f6 26e1 ADDWF 0xe1,0x1,0x0{ F:\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.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.c0019f8 d962 RCALL 0x1cbe mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c0019fa ec2e CALL 0x105c,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c0019fc f008F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c0019fe 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c001a00 6ee6 MOVWF 0xe6,0x0001a02 0e01 MOVLW 0x1001a04 6ee6 MOVWF 0xe6,0x0001a06 ec77 CALL 0x16ee,0x0001a08 f00b001a0a 52e5 MOVF 0xe5,0x1,0x0001a0c 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001b7c d748 BRA 0x1a0e 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.cF:\MCP\projects\CAN\canTemp\Source\Main.c001a0e ecd1 CALL 0x1fa2,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c001a10 f00f001a12 0100 MOVLB 0x0001a14 5177 MOVF 0x77,0x0,0x1001a16 5c06 SUBWF 0x6,0x0,0x0001a18 6e14 MOVWF 0x14,0x0001a1a 5178 MOVF 0x78,0x0,0x1001a1c 5807 SUBWFB 0x7,0x0,0x0001a1e 6e15 MOVWF 0x15,0x0001a20 5179 MOVF 0x79,0x0,0x1001a22 5808 SUBWFB 0x8,0x0,0x0001a24 6e16 MOVWF 0x16,0x0001a26 517a MOVF 0x7a,0x0,0x1001a28 5809 SUBWFB 0x9,0x0,0x0001a2a 6e17 MOVWF 0x17,0x0001a2c 80d8 BSF 0xd8,0x0,0x0001a2e 0e64 MOVLW 0x64001a30 5414 SUBFWB 0x14,0x0,0x0001a32 0e00 MOVLW 0x0001a34 5415 SUBFWB 0x15,0x0,0x0001a36 0e00 MOVLW 0x0001a38 5416 SUBFWB 0x16,0x0,0x0001a3a 0e00 MOVLW 0x0001a3c 5417 SUBFWB 0x17,0x0,0x0001a3e e20b BC 0x1a56{ F:\MCP\projects\CAN\canTemp\Source\Main.c001a40 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c001a42 ecd1 CALL 0x1fa2,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c001a44 f00f001a46 c006 MOVFF 0x6,0x77001a48 f077001a4a c007 MOVFF 0x7,0x78001a4c f078001a4e c008 MOVFF 0x8,0x79001a50 f079001a52 c009 MOVFF 0x9,0x7a001a54 f07a} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c001a56 ecd1 CALL 0x1fa2,0x0 if ((tickGet()-temperature)>TICK_SECOND*2) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c001a58 f00f001a5a 0100 MOVLB 0x0001a5c 517b MOVF 0x7b,0x0,0x1001a5e 5c06 SUBWF 0x6,0x0,0x0001a60 6e14 MOVWF 0x14,0x0001a62 517c MOVF 0x7c,0x0,0x1001a64 5807 SUBWFB 0x7,0x0,0x0001a66 6e15 MOVWF 0x15,0x0001a68 517d MOVF 0x7d,0x0,0x1001a6a 5808 SUBWFB 0x8,0x0,0x0001a6c 6e16 MOVWF 0x16,0x0001a6e 517e MOVF 0x7e,0x0,0x1001a70 5809 SUBWFB 0x9,0x0,0x0001a72 6e17 MOVWF 0x17,0x0001a74 80d8 BSF 0xd8,0x0,0x0001a76 0ec8 MOVLW 0xc8001a78 5414 SUBFWB 0x14,0x0,0x0001a7a 0e00 MOVLW 0x0001a7c 5415 SUBFWB 0x15,0x0,0x0001a7e 0e00 MOVLW 0x0001a80 5416 SUBFWB 0x16,0x0,0x0001a82 0e00 MOVLW 0x0001a84 5417 SUBFWB 0x17,0x0,0x0001a86 e215 BC 0x1ab2{ F:\MCP\projects\CAN\canTemp\Source\Main.c001a88 517f MOVF 0x7f,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c001a8a e103 BNZ 0x1a92001a8c 0e01 MOVLW 0x1001a8e 6f7f MOVWF 0x7f,0x1001a90 d001 BRA 0x1a94001a92 6b7f CLRF 0x7f,0x1001a94 c07f MOVFF 0x7f,0xfe6 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c001a96 ffe6001a98 ece5 CALL 0x17ca,0x0001a9a f00b001a9c 52e5 MOVF 0xe5,0x1,0x0001a9e ecd1 CALL 0x1fa2,0x0 temperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c001aa0 f00f001aa2 c006 MOVFF 0x6,0x7b001aa4 f07b001aa6 c007 MOVFF 0x7,0x7c001aa8 f07c001aaa c008 MOVFF 0x8,0x7d001aac f07d001aae c009 MOVFF 0x9,0x7e001ab0 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.c001ab2 ecf2 CALL 0x19e4,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c001ab4 f00c001ab6 0900 IORLW 0x0001ab8 e061 BZ 0x1b7c{ 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.c001aba 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c001abc 0f0f ADDLW 0xf001abe 6ee6 MOVWF 0xe6,0x0001ac0 0e00 MOVLW 0x0001ac2 20da ADDWFC 0xda,0x0,0x0001ac4 6ee6 MOVWF 0xe6,0x0001ac6 50d9 MOVF 0xd9,0x0,0x0001ac8 0f10 ADDLW 0x10001aca 6ee6 MOVWF 0xe6,0x0001acc 0e00 MOVLW 0x0001ace 20da ADDWFC 0xda,0x0,0x0001ad0 6ee6 MOVWF 0xe6,0x0001ad2 ec10 CALL 0x1820,0x0001ad4 f00c001ad6 52e5 MOVF 0xe5,0x1,0x0001ad8 52e5 MOVF 0xe5,0x1,0x0001ada 52e5 MOVF 0xe5,0x1,0x0001adc 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canTemp\Source\Main.c001ade 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canTemp\Source\Main.c001ae0 6edf MOVWF 0xdf,0x0001ae2 0100 MOVLB 0x0 outCm.funcc = (lastTemperature==TEMPERATURE_INSIDE?FUNCC_SENSORS_TEMPERATURE_INSIDE:FUNCC_SENSORS_TEMPERATURE_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c001ae4 517f MOVF 0x7f,0x0,0x1001ae6 e102 BNZ 0x1aec001ae8 0e10 MOVLW 0x10001aea d001 BRA 0x1aee001aec 0e11 MOVLW 0x11001aee 6e14 MOVWF 0x14,0x0001af0 6a15 CLRF 0x15,0x0001af2 be14 BTFSC 0x14,0x7,0x0001af4 6815 SETF 0x15,0x0001af6 0e01 MOVLW 0x1001af8 c014 MOVFF 0x14,0xfdb001afa ffdb001afc 0e02 MOVLW 0x2001afe c015 MOVFF 0x15,0xfdb001b00 ffdb001b02 6ef3 MOVWF 0xf3,0x0 outCm.data_length = 2; F:\MCP\projects\CAN\canTemp\Source\Main.c001b04 0e06 MOVLW 0x6001b06 cff3 MOVFF 0xff3,0xfdb001b08 ffdb001b0a 0e10 MOVLW 0x10 outCm.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c001b0c 50db MOVF 0xdb,0x0,0x0001b0e 6ee7 MOVWF 0xe7,0x0001b10 0e08 MOVLW 0x8001b12 cfe7 MOVFF 0xfe7,0xfdb001b14 ffdb001b16 0e0f MOVLW 0xf outCm.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c001b18 50db MOVF 0xdb,0x0,0x0001b1a 6ee7 MOVWF 0xe7,0x0001b1c 0e07 MOVLW 0x7001b1e cfe7 MOVFF 0xfe7,0xfdb001b20 ffdb001b22 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c001b24 6ee6 MOVWF 0xe6,0x0001b26 cfd9 MOVFF 0xfd9,0xfe9001b28 ffe9001b2a cfda MOVFF 0xfda,0xfea001b2c ffea001b2e cfee MOVFF 0xfee,0xfe6001b30 ffe6001b32 cfee MOVFF 0xfee,0xfe6001b34 ffe6001b36 cfee MOVFF 0xfee,0xfe6001b38 ffe6001b3a cfee MOVFF 0xfee,0xfe6001b3c ffe6001b3e cfee MOVFF 0xfee,0xfe6001b40 ffe6001b42 cfee MOVFF 0xfee,0xfe6001b44 ffe6001b46 cfee MOVFF 0xfee,0xfe6001b48 ffe6001b4a cfee MOVFF 0xfee,0xfe6001b4c ffe6001b4e cfee MOVFF 0xfee,0xfe6001b50 ffe6001b52 cfee MOVFF 0xfee,0xfe6001b54 ffe6001b56 cfee MOVFF 0xfee,0xfe6001b58 ffe6001b5a cfee MOVFF 0xfee,0xfe6001b5c ffe6001b5e cfee MOVFF 0xfee,0xfe6001b60 ffe6001b62 cfee MOVFF 0xfee,0xfe6001b64 ffe6001b66 cfee MOVFF 0xfee,0xfe6001b68 ffe6001b6a ec9e CALL 0x153c,0x0001b6c f00a001b6e 6e14 MOVWF 0x14,0x0001b70 0e10 MOVLW 0x10001b72 5ee1 SUBWF 0xe1,0x1,0x0001b74 5014 MOVF 0x14,0x0,0x0001b76 0900 IORLW 0x0001b78 e101 BNZ 0x1b7c001b7a d7d3 BRA 0x1b22} 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.c001b7e 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canTemp\Source\Main.c001b80 5ce1 SUBWF 0xe1,0x0,0x0001b82 e202 BC 0x1b88001b84 6ae1 CLRF 0xe1,0x0001b86 52e5 MOVF 0xe5,0x1,0x0001b88 6ee1 MOVWF 0xe1,0x0001b8a 52e5 MOVF 0xe5,0x1,0x0001b8c cfe7 MOVFF 0xfe7,0xfd9001b8e ffd9001b90 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.c001b92 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c001b94 ffe4001b96 cfe2 MOVFF 0xfe2,0xfda001b98 ffda001b9a cfe9 MOVFF 0xfe9,0xfe4001b9c ffe4001b9e cfea MOVFF 0xfea,0xfe4001ba0 ffe4001ba2 cff6 MOVFF 0xff6,0xfe4001ba4 ffe4001ba6 cff7 MOVFF 0xff7,0xfe4001ba8 ffe4001baa cff5 MOVFF 0xff5,0xfe4001bac ffe4001bae cff3 MOVFF 0xff3,0xfe4001bb0 ffe4001bb2 cff4 MOVFF 0xff4,0xfe4001bb4 ffe4001bb6 cffa MOVFF 0xffa,0xfe4001bb8 ffe4001bba ee00 LFSR 0x0,0x0001bbc f000001bbe 0e14 MOVLW 0x14001bc0 04e8 DECF 0xe8,0x0,0x0001bc2 e303 BNC 0x1bca001bc4 cfee MOVFF 0xfee,0xfe4001bc6 ffe4001bc8 d7fb BRA 0x1bc0001bca ee00 LFSR 0x0,0x14001bcc f014001bce 0e0e MOVLW 0xe001bd0 04e8 DECF 0xe8,0x0,0x0001bd2 e303 BNC 0x1bda001bd4 cfee MOVFF 0xfee,0xfe4001bd6 ffe4001bd8 d7fb BRA 0x1bd0001bda 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c001bdc ecb3 CALL 0x1166,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c001bde f008001be0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001be2 ee00 LFSR 0x0,0x21001be4 f021001be6 0e0e MOVLW 0xe001be8 04e8 DECF 0xe8,0x0,0x0001bea e303 BNC 0x1bf2001bec cfe5 MOVFF 0xfe5,0xfed001bee ffed001bf0 d7fb BRA 0x1be8001bf2 ee00 LFSR 0x0,0x13001bf4 f013001bf6 0e14 MOVLW 0x14001bf8 04e8 DECF 0xe8,0x0,0x0001bfa e303 BNC 0x1c02001bfc cfe5 MOVFF 0xfe5,0xfed001bfe ffed001c00 d7fb BRA 0x1bf8001c02 cfe5 MOVFF 0xfe5,0xffa001c04 fffa001c06 cfe5 MOVFF 0xfe5,0xff4001c08 fff4001c0a cfe5 MOVFF 0xfe5,0xff3001c0c fff3001c0e cfe5 MOVFF 0xfe5,0xff5001c10 fff5001c12 cfe5 MOVFF 0xfe5,0xff7001c14 fff7001c16 cfe5 MOVFF 0xfe5,0xff6001c18 fff6001c1a cfe5 MOVFF 0xfe5,0xfea001c1c ffea001c1e cfe5 MOVFF 0xfe5,0xfe9001c20 ffe9001c22 cfe5 MOVFF 0xfe5,0xfda001c24 ffda001c26 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.c001c28 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c001c2a ffe4001c2c cfe2 MOVFF 0xfe2,0xfda001c2e ffda001c30 cfe9 MOVFF 0xfe9,0xfe4001c32 ffe4001c34 cfea MOVFF 0xfea,0xfe4001c36 ffe4001c38 cff6 MOVFF 0xff6,0xfe4001c3a ffe4001c3c cff7 MOVFF 0xff7,0xfe4001c3e ffe4001c40 cff5 MOVFF 0xff5,0xfe4001c42 ffe4001c44 cff3 MOVFF 0xff3,0xfe4001c46 ffe4001c48 cff4 MOVFF 0xff4,0xfe4001c4a ffe4001c4c cffa MOVFF 0xffa,0xfe4001c4e ffe4001c50 ee00 LFSR 0x0,0x0001c52 f000001c54 0e14 MOVLW 0x14001c56 04e8 DECF 0xe8,0x0,0x0001c58 e303 BNC 0x1c60001c5a cfee MOVFF 0xfee,0xfe4001c5c ffe4001c5e d7fb BRA 0x1c56001c60 ee00 LFSR 0x0,0x14001c62 f014001c64 0e0e MOVLW 0xe001c66 04e8 DECF 0xe8,0x0,0x0001c68 e303 BNC 0x1c70001c6a cfee MOVFF 0xfee,0xfe4001c6c ffe4001c6e d7fb BRA 0x1c66001c70 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c001c72 ec91 CALL 0x1722,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c001c74 f00b#endif F:\MCP\projects\CAN\canTemp\Source\Main.c001c76 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001c78 ee00 LFSR 0x0,0x21001c7a f021001c7c 0e0e MOVLW 0xe001c7e 04e8 DECF 0xe8,0x0,0x0001c80 e303 BNC 0x1c88001c82 cfe5 MOVFF 0xfe5,0xfed001c84 ffed001c86 d7fb BRA 0x1c7e001c88 ee00 LFSR 0x0,0x13001c8a f013001c8c 0e14 MOVLW 0x14001c8e 04e8 DECF 0xe8,0x0,0x0001c90 e303 BNC 0x1c98001c92 cfe5 MOVFF 0xfe5,0xfed001c94 ffed001c96 d7fb BRA 0x1c8e001c98 cfe5 MOVFF 0xfe5,0xffa001c9a fffa001c9c cfe5 MOVFF 0xfe5,0xff4001c9e fff4001ca0 cfe5 MOVFF 0xfe5,0xff3001ca2 fff3001ca4 cfe5 MOVFF 0xfe5,0xff5001ca6 fff5001ca8 cfe5 MOVFF 0xfe5,0xff7001caa fff7001cac cfe5 MOVFF 0xfe5,0xff6001cae fff6001cb0 cfe5 MOVFF 0xfe5,0xfea001cb2 ffea001cb4 cfe5 MOVFF 0xfe5,0xfe9001cb6 ffe9001cb8 cfe5 MOVFF 0xfe5,0xfda001cba ffda001cbc 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.c001cbe 9294 BCF 0x94,0x1,0x0 LED0_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.c001cc0 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c001cc2 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.c001cc4 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.c001cc6 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.c001cc8 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canTemp\Source\Main.c001cca ffe6001ccc cfe1 MOVFF 0xfe1,0xfd9001cce ffd9001cd0 0e0f MOVLW 0xf001cd2 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.c001cd4 5ce1 SUBWF 0xe1,0x0,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001cd6 e202 BC 0x1cdc001cd8 6ae1 CLRF 0xe1,0x0001cda 52e5 MOVF 0xe5,0x1,0x0001cdc 6ee1 MOVWF 0xe1,0x0001cde 52e5 MOVF 0xe5,0x1,0x0001ce0 cfe7 MOVFF 0xfe7,0xfd9001ce2 ffd9001ce4 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 efff GOTO 0x1ffe _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c001002 f00f001004 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 efc9 GOTO 0x1b92 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00100a f00d00100c 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 ef14 GOTO 0x1c28 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00101a f00e00101c 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.c001ce6 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001ce8 ffe6001cea cfe1 MOVFF 0xfe1,0xfd9001cec ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001cee 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001cf0 cfdb MOVFF 0xfdb,0x14001cf2 f014001cf4 0efe MOVLW 0xfe001cf6 cfdb MOVFF 0xfdb,0x15001cf8 f015001cfa c015 MOVFF 0x15,0x14001cfc f014001cfe 6a15 CLRF 0x15,0x0001d00 5014 MOVF 0x14,0x0,0x0001d02 6eaa MOVWF 0xaa,0x0001d04 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001d06 6ee7 MOVWF 0xe7,0x0001d08 0efd MOVLW 0xfd001d0a cfdb MOVFF 0xfdb,0x14001d0c f014001d0e 0efe MOVLW 0xfe001d10 cfdb MOVFF 0xfdb,0x15001d12 f015001d14 50e7 MOVF 0xe7,0x0,0x0001d16 1614 ANDWF 0x14,0x1,0x0001d18 6a15 CLRF 0x15,0x0001d1a 5014 MOVF 0x14,0x0,0x0001d1c 6ea9 MOVWF 0xa9,0x0001d1e 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001d20 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001d22 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001d24 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001d26 d000 BRA 0x1d28001d28 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001d2a cfe7 MOVFF 0xfe7,0xfd9001d2c ffd9001d2e 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.c001d30 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001d32 ffe6001d34 cfe1 MOVFF 0xfe1,0xfd9001d36 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001d38 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001d3a 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001d3c cfdb MOVFF 0xfdb,0x14001d3e f014001d40 0efe MOVLW 0xfe001d42 cfdb MOVFF 0xfdb,0x15001d44 f015001d46 c015 MOVFF 0x15,0x14001d48 f014001d4a 6a15 CLRF 0x15,0x0001d4c 5014 MOVF 0x14,0x0,0x0001d4e 6eaa MOVWF 0xaa,0x0001d50 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001d52 6ee7 MOVWF 0xe7,0x0001d54 0efd MOVLW 0xfd001d56 cfdb MOVFF 0xfdb,0x14001d58 f014001d5a 0efe MOVLW 0xfe001d5c cfdb MOVFF 0xfdb,0x15001d5e f015001d60 50e7 MOVF 0xe7,0x0,0x0001d62 1614 ANDWF 0x14,0x1,0x0001d64 6a15 CLRF 0x15,0x0001d66 5014 MOVF 0x14,0x0,0x0001d68 6ea9 MOVWF 0xa9,0x0001d6a 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001d6c 50db MOVF 0xdb,0x0,0x0001d6e 6ea8 MOVWF 0xa8,0x0001d70 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001d72 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001d74 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001d76 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001d78 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001d7a 6ea7 MOVWF 0xa7,0x0001d7c 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001d7e 6ea7 MOVWF 0xa7,0x0001d80 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001d82 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001d84 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001d86 d7fe BRA 0x1d84001d88 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001d8a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001d8c cfe7 MOVFF 0xfe7,0xfd9001d8e ffd9001d90 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.c0016ee cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c0016f0 ffe60016f2 cfe1 MOVFF 0xfe1,0xfd90016f4 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.c0016f6 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c0016f8 50db MOVF 0xdb,0x0,0x00016fa 0b0f ANDLW 0xf0016fc 6e14 MOVWF 0x14,0x00016fe 0efe MOVLW 0xfe001700 50db MOVF 0xdb,0x0,0x0001702 0b01 ANDLW 0x1001704 0d10 MULLW 0x10001706 50f3 MOVF 0xf3,0x0,0x0001708 1014 IORWF 0x14,0x0,0x000170a 6ec1 MOVWF 0xc1,0x000170c 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c00170e 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c001710 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c001712 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c001714 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c001716 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c001718 9c9f BCF 0x9f,0x6,0x0 IPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c00171a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c00171c cfe7 MOVFF 0xfe7,0xfd900171e ffd9001720 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.c001722 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c001724 0b40 ANDLW 0x40001726 e050 BZ 0x17c8001728 509e MOVF 0x9e,0x0,0x000172a 0b40 ANDLW 0x4000172c e04d BZ 0x17c8{ F:\MCP\projects\CAN\Include\adc.c00172e 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001730 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.c001732 6e18 MOVWF 0x18,0x0001734 c018 MOVFF 0x18,0x19001736 f019001738 6a18 CLRF 0x18,0x000173a 50c3 MOVF 0xc3,0x0,0x000173c 0100 MOVLB 0x000173e 1018 IORWF 0x18,0x0,0x0001740 6e14 MOVWF 0x14,0x0001742 c019 MOVFF 0x19,0x15001744 f015001746 6a16 CLRF 0x16,0x0001748 6a17 CLRF 0x17,0x000174a ae15 BTFSS 0x15,0x7,0x000174c d002 BRA 0x175200174e 6816 SETF 0x16,0x0001750 6817 SETF 0x17,0x0001752 5014 MOVF 0x14,0x0,0x0001754 0100 MOVLB 0x0001756 278a ADDWF 0x8a,0x1,0x1001758 5015 MOVF 0x15,0x0,0x000175a 238b ADDWFC 0x8b,0x1,0x100175c 5016 MOVF 0x16,0x0,0x000175e 238c ADDWFC 0x8c,0x1,0x1001760 5017 MOVF 0x17,0x0,0x0001762 238d ADDWFC 0x8d,0x1,0x1001764 2b8e INCF 0x8e,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c001766 0e00 MOVLW 0x0001768 238f ADDWFC 0x8f,0x1,0x1F:\MCP\projects\CAN\Include\adc.c00176a 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c00176c 5d8e SUBWF 0x8e,0x0,0x100176e 0e00 MOVLW 0x0001770 598f SUBWFB 0x8f,0x0,0x1001772 e324 BNC 0x17bc{ F:\MCP\projects\CAN\Include\adc.c001774 c08e MOVFF 0x8e,0x14 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c001776 f014001778 c08f MOVFF 0x8f,0x1500177a f01500177c 6a16 CLRF 0x16,0x000177e 6a17 CLRF 0x17,0x0001780 c08a MOVFF 0x8a,0x6001782 f006001784 c08b MOVFF 0x8b,0x7001786 f007001788 c08c MOVFF 0x8c,0x800178a f00800178c c08d MOVFF 0x8d,0x900178e f009001790 c014 MOVFF 0x14,0xb001792 f00b001794 c015 MOVFF 0x15,0xc001796 f00c001798 c016 MOVFF 0x16,0xd00179a f00d00179c c017 MOVFF 0x17,0xe00179e f00e0017a0 eca3 CALL 0x1f46,0x00017a2 f00f0017a4 c006 MOVFF 0x6,0x8a0017a6 f08a0017a8 c007 MOVFF 0x7,0x8b0017aa f08b0017ac c008 MOVFF 0x8,0x8c0017ae f08c0017b0 c009 MOVFF 0x9,0x8d0017b2 f08d0017b4 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c0017b6 0e01 MOVLW 0x10017b8 6f97 MOVWF 0x97,0x1} F:\MCP\projects\CAN\Include\adc.c0017ba d006 BRA 0x17c8 else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c0017bc 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c0017be 6ee6 MOVWF 0xe6,0x00017c0 ec0b CALL 0x2016,0x00017c2 f0100017c4 52e5 MOVF 0xe5,0x1,0x00017c6 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.c0017c8 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.c0017ca cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c0017cc ffe60017ce cfe1 MOVFF 0xfe1,0xfd90017d0 ffd9{ F:\MCP\projects\CAN\Include\adc.c0017d2 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c0017d4 50db MOVF 0xdb,0x0,0x00017d6 080f SUBLW 0xf0017d8 e202 BC 0x17de0017da 0e00 MOVLW 0x00017dc d015 BRA 0x1808F:\MCP\projects\CAN\Include\adc.c0017de 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c0017e0 6b8a CLRF 0x8a,0x10017e2 6b8b CLRF 0x8b,0x10017e4 6b8c CLRF 0x8c,0x10017e6 6b8d CLRF 0x8d,0x10017e8 6b8e CLRF 0x8e,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c0017ea 6b8f CLRF 0x8f,0x1F:\MCP\projects\CAN\Include\adc.c0017ec 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c0017ee 14c2 ANDWF 0xc2,0x0,0x00017f0 6e14 MOVWF 0x14,0x00017f2 0efe MOVLW 0xfe0017f4 50db MOVF 0xdb,0x0,0x00017f6 0d04 MULLW 0x40017f8 50f3 MOVF 0xf3,0x0,0x00017fa 1014 IORWF 0x14,0x0,0x00017fc 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c0017fe 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c001800 6b97 CLRF 0x97,0x1F:\MCP\projects\CAN\Include\adc.c001802 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001804 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c001806 d000 BRA 0x1808001808 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c00180a cfe7 MOVFF 0xfe7,0xfd900180c ffd900180e 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.c001810 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c001812 6b97 CLRF 0x97,0x1001814 c08a MOVFF 0x8a,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c001816 fff3001818 c08b MOVFF 0x8b,0xff400181a fff400181c d000 BRA 0x181e00181e 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.c001820 cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c001822 ffe6001824 cfe1 MOVFF 0xfe1,0xfd9001826 ffd9001828 0e08 MOVLW 0x800182a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c00182c 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c00182e 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c001830 c08a MOVFF 0x8a,0x18 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c001832 f018001834 c08b MOVFF 0x8b,0x19001836 f019001838 c08c MOVFF 0x8c,0x1a00183a f01a00183c c08d MOVFF 0x8d,0x1b00183e f01b001840 0e27 MOVLW 0x27001842 6e0b MOVWF 0xb,0x0001844 6a0c CLRF 0xc,0x0001846 6a0d CLRF 0xd,0x0001848 6a0e CLRF 0xe,0x000184a c018 MOVFF 0x18,0x600184c f00600184e c019 MOVFF 0x19,0x7001850 f007001852 c01a MOVFF 0x1a,0x8001854 f008001856 c01b MOVFF 0x1b,0x9001858 f00900185a ec6b CALL 0x1ed6,0x000185c f00f00185e c002 MOVFF 0x2,0x18001860 f018001862 c003 MOVFF 0x3,0x19001864 f019001866 c004 MOVFF 0x4,0x1a001868 f01a00186a c005 MOVFF 0x5,0x1b00186c f01b00186e 0e04 MOVLW 0x4001870 90d8 BCF 0xd8,0x0,0x0001872 321b RRCF 0x1b,0x1,0x0001874 321a RRCF 0x1a,0x1,0x0001876 3219 RRCF 0x19,0x1,0x0001878 3218 RRCF 0x18,0x1,0x000187a 06e8 DECF 0xe8,0x1,0x000187c e1f9 BNZ 0x187000187e c018 MOVFF 0x18,0x14001880 f014001882 c019 MOVFF 0x19,0x15001884 f015001886 c01a MOVFF 0x1a,0x16001888 f01600188a c01b MOVFF 0x1b,0x1700188c f01700188e 0ef3 MOVLW 0xf3001890 5e14 SUBWF 0x14,0x1,0x0001892 0e01 MOVLW 0x1001894 5a15 SUBWFB 0x15,0x1,0x0001896 0e00 MOVLW 0x0001898 5a16 SUBWFB 0x16,0x1,0x000189a 5a17 SUBWFB 0x17,0x1,0x000189c 0e06 MOVLW 0x600189e c014 MOVFF 0x14,0xfdb0018a0 ffdb0018a2 0e07 MOVLW 0x70018a4 c015 MOVFF 0x15,0xfdb0018a6 ffdbF:\MCP\projects\CAN\Include\adc.c0018a8 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c0018aa 6e14 MOVWF 0x14,0x00018ac 6a15 CLRF 0x15,0x00018ae 0e06 MOVLW 0x60018b0 cfdb MOVFF 0xfdb,0x80018b2 f0080018b4 0e07 MOVLW 0x70018b6 cfdb MOVFF 0xfdb,0x90018b8 f0090018ba c014 MOVFF 0x14,0xd0018bc f00d0018be c015 MOVFF 0x15,0xe0018c0 f00e0018c2 ecc9 CALL 0x1d92,0x00018c4 f00e0018c6 0e02 MOVLW 0x20018c8 c008 MOVFF 0x8,0xfdb0018ca ffdb0018cc 0e03 MOVLW 0x30018ce c009 MOVFF 0x9,0xfdb0018d0 ffdb0018d2 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c0018d4 cfdb MOVFF 0xfdb,0x160018d6 f0160018d8 0e07 MOVLW 0x70018da cfdb MOVFF 0xfdb,0x170018dc f0170018de 0e0a MOVLW 0xa0018e0 6e08 MOVWF 0x8,0x00018e2 6a09 CLRF 0x9,0x00018e4 0e02 MOVLW 0x20018e6 cfdb MOVFF 0xfdb,0xd0018e8 f00d0018ea 0e03 MOVLW 0x30018ec cfdb MOVFF 0xfdb,0xe0018ee f00e0018f0 ecef CALL 0x1dde,0x00018f2 f00e0018f4 5006 MOVF 0x6,0x0,0x00018f6 5c16 SUBWF 0x16,0x0,0x00018f8 6e14 MOVWF 0x14,0x00018fa 5007 MOVF 0x7,0x0,0x00018fc 5817 SUBWFB 0x17,0x0,0x00018fe 6e15 MOVWF 0x15,0x0001900 0e04 MOVLW 0x4001902 c014 MOVFF 0x14,0xfdb001904 ffdb001906 0e05 MOVLW 0x5001908 c015 MOVFF 0x15,0xfdb00190a ffdbF:\MCP\projects\CAN\Include\adc.c00190c 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c00190e cfdb MOVFF 0xfdb,0x14001910 f014001912 0e05 MOVLW 0x5001914 cfdb MOVFF 0xfdb,0x15001916 f015001918 0100 MOVLB 0x000191a 0e80 MOVLW 0x8000191c 1415 ANDWF 0x15,0x0,0x000191e e112 BNZ 0x1944001920 0e04 MOVLW 0x4001922 cfdb MOVFF 0xfdb,0x16001924 f016001926 0e05 MOVLW 0x5001928 cfdb MOVFF 0xfdb,0x1700192a f01700192c 3417 RLCF 0x17,0x0,0x000192e e204 BC 0x1938001930 5016 MOVF 0x16,0x0,0x0001932 0802 SUBLW 0x2001934 0e00 MOVLW 0x0001936 5417 SUBFWB 0x17,0x0,0x0001938 e305 BNC 0x194400193a 0e04 MOVLW 0x400193c 6adb CLRF 0xdb,0x000193e 0e05 MOVLW 0x5001940 6adb CLRF 0xdb,0x0001942 d02c BRA 0x199c else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c001944 0e04 MOVLW 0x4001946 cfdb MOVFF 0xfdb,0x14001948 f01400194a 0e05 MOVLW 0x500194c cfdb MOVFF 0xfdb,0x1500194e f015001950 90d8 BCF 0xd8,0x0,0x0001952 5015 MOVF 0x15,0x0,0x0001954 e604 BN 0x195e001956 0e03 MOVLW 0x3001958 5c14 SUBWF 0x14,0x0,0x000195a 0e00 MOVLW 0x000195c 5815 SUBWFB 0x15,0x0,0x000195e e315 BNC 0x198a001960 0e04 MOVLW 0x4001962 cfdb MOVFF 0xfdb,0x16001964 f016001966 0e05 MOVLW 0x5001968 cfdb MOVFF 0xfdb,0x1700196a f01700196c 3417 RLCF 0x17,0x0,0x000196e e204 BC 0x1978001970 5016 MOVF 0x16,0x0,0x0001972 0807 SUBLW 0x7001974 0e00 MOVLW 0x0001976 5417 SUBFWB 0x17,0x0,0x0001978 e308 BNC 0x198a00197a 0e05 MOVLW 0x500197c 6ef3 MOVWF 0xf3,0x000197e 0e04 MOVLW 0x4001980 cff3 MOVFF 0xff3,0xfdb001982 ffdb001984 0e05 MOVLW 0x5001986 6adb CLRF 0xdb,0x0001988 d009 BRA 0x199c else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c00198a 0e04 MOVLW 0x400198c 6adb CLRF 0xdb,0x000198e 0e05 MOVLW 0x5001990 6adb CLRF 0xdb,0x0001992 0e02 MOVLW 0x2001994 2adb INCF 0xdb,0x1,0x0001996 0e03 MOVLW 0x3001998 e301 BNC 0x199c00199a 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c00199c 0e02 MOVLW 0x2 tenth = (signed char *)v11; F:\MCP\projects\CAN\Include\adc.c00199e cfdb MOVFF 0xfdb,0x80019a0 f0080019a2 0e03 MOVLW 0x30019a4 cfdb MOVFF 0xfdb,0x90019a6 f0090019a8 0efd MOVLW 0xfd0019aa c008 MOVFF 0x8,0xfdb0019ac ffdb0019ae 0efe MOVLW 0xfe0019b0 c009 MOVFF 0x9,0xfdb0019b2 ffdb0019b4 0e04 MOVLW 0x4 decimal = (BYTE *)v01; F:\MCP\projects\CAN\Include\adc.c0019b6 cfdb MOVFF 0xfdb,0x80019b8 f0080019ba 0e05 MOVLW 0x50019bc cfdb MOVFF 0xfdb,0x90019be f0090019c0 0efb MOVLW 0xfb0019c2 c008 MOVFF 0x8,0xfdb0019c4 ffdb0019c6 0efc MOVLW 0xfc0019c8 c009 MOVFF 0x9,0xfdb0019ca ffdbF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c0019cc 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c0019ce 6b97 CLRF 0x97,0x10019d0 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c0019d2 5ce1 SUBWF 0xe1,0x0,0x00019d4 e202 BC 0x19da0019d6 6ae1 CLRF 0xe1,0x00019d8 52e5 MOVF 0xe5,0x1,0x00019da 6ee1 MOVWF 0xe1,0x00019dc 52e5 MOVF 0xe5,0x1,0x00019de cfe7 MOVFF 0xfe7,0xfd90019e0 ffd90019e2 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.c0019e4 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c0019e6 5197 MOVF 0x97,0x0,0x10019e8 d000 BRA 0x19ea0019ea 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#endif F:\MCP\projects\CAN\Include\adc.c