Rev 260 | Blame | Compare with Previous | 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:52:31 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.c001050 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c001052 6e6f MOVWF 0x6f,0x0001054 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001056 146e ANDWF 0x6e,0x0,0x0001058 0880 SUBLW 0x8000105a e001 BZ 0x105e00105c d7fb BRA 0x1054F:\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.c00105e 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c001060 6e70 MOVWF 0x70,0x0001062 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c001064 6e71 MOVWF 0x71,0x0001066 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c001068 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.c00106a 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c00106c 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00106e 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.c001070 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c001072 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.c001074 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001076 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001078 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c00107c 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00107e 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.c001080 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.c001082 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001084 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001086 146e ANDWF 0x6e,0x0,0x0001088 e001 BZ 0x108c00108a d7fc BRA 0x1084#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.c00108c ecb6 CALL 0x196c,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c00108e f00cF:\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.c001090 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c001092 6ee6 MOVWF 0xe6,0x0001094 6ae6 CLRF 0xe6,0x0001096 ec11 CALL 0x1822,0x0001098 f00c00109a 52e5 MOVF 0xe5,0x1,0x000109c 52e5 MOVF 0xe5,0x1,0x000109e 082a SUBLW 0x2a0010a0 e12b BNZ 0x10f8{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010a2 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\CAN.c0010a4 6ee6 MOVWF 0xe6,0x00010a6 6ae6 CLRF 0xe6,0x00010a8 ec11 CALL 0x1822,0x00010aa f00c0010ac 52e5 MOVF 0xe5,0x1,0x00010ae 52e5 MOVF 0xe5,0x1,0x00010b0 6e00 MOVWF 0x0,0x00010b2 c000 MOVFF 0x0,0x10010b4 f0010010b6 6a00 CLRF 0x0,0x00010b8 c000 MOVFF 0x0,0xfe60010ba ffe60010bc c001 MOVFF 0x1,0xfe60010be ffe60010c0 0e02 MOVLW 0x20010c2 6ee6 MOVWF 0xe6,0x00010c4 6ae6 CLRF 0xe6,0x00010c6 ec11 CALL 0x1822,0x00010c8 f00c0010ca 52e5 MOVF 0xe5,0x1,0x00010cc 52e5 MOVF 0xe5,0x1,0x00010ce 52e5 MOVF 0xe5,0x1,0x00010d0 cfe7 MOVFF 0xfe7,0x10010d2 f0010010d4 52e5 MOVF 0xe5,0x1,0x00010d6 cfe7 MOVFF 0xfe7,0x00010d8 f0000010da 0100 MOVLB 0x00010dc 2400 ADDWF 0x0,0x0,0x00010de 6f89 MOVWF 0x89,0x10010e0 0e00 MOVLW 0x00010e2 2001 ADDWFC 0x1,0x0,0x00010e4 6f8a MOVWF 0x8a,0x10010e6 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\CAN.c0010e8 6ee6 MOVWF 0xe6,0x00010ea 6ae6 CLRF 0xe6,0x00010ec ec11 CALL 0x1822,0x00010ee f00c0010f0 52e5 MOVF 0xe5,0x1,0x00010f2 52e5 MOVF 0xe5,0x1,0x00010f4 0100 MOVLB 0x00010f6 6f8b MOVWF 0x8b,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.c0010f8 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0010fa 6b64 CLRF 0x64,0x10010fc 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0010fe 6f65 MOVWF 0x65,0x1001100 6b66 CLRF 0x66,0x1001102 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c001104 6f6a MOVWF 0x6a,0x1001106 6f6b MOVWF 0x6b,0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canBase\Source\CAN.c001108 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c00110a 6ee6 MOVWF 0xe6,0x000110c c064 MOVFF 0x64,0xfe600110e ffe6001110 c065 MOVFF 0x65,0xfe6001112 ffe6001114 c066 MOVFF 0x66,0xfe6001116 ffe6001118 c067 MOVFF 0x67,0xfe600111a ffe600111c c068 MOVFF 0x68,0xfe600111e ffe6001120 c069 MOVFF 0x69,0xfe6001122 ffe6001124 c06a MOVFF 0x6a,0xfe6001126 ffe6001128 c06b MOVFF 0x6b,0xfe600112a ffe600112c c06c MOVFF 0x6c,0xfe600112e ffe6001130 c06d MOVFF 0x6d,0xfe6001132 ffe6001134 c06e MOVFF 0x6e,0xfe6001136 ffe6001138 c06f MOVFF 0x6f,0xfe600113a ffe600113c c070 MOVFF 0x70,0xfe600113e ffe6001140 c071 MOVFF 0x71,0xfe6001142 ffe6001144 c072 MOVFF 0x72,0xfe6001146 ffe6001148 d9f3 RCALL 0x153000114a 6e00 MOVWF 0x0,0x000114c 0e10 MOVLW 0x1000114e 5ee1 SUBWF 0xe1,0x1,0x0001150 5000 MOVF 0x0,0x0,0x0001152 0900 IORLW 0x0001154 e101 BNZ 0x1158001156 d7d8 BRA 0x1108F:\MCP\projects\CAN\canBase\Source\CAN.c001158 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.c00115a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c00115c 0b02 ANDLW 0x200115e e106 BNZ 0x116c001160 50a4 MOVF 0xa4,0x0,0x0001162 0b02 ANDLW 0x2001164 e103 BNZ 0x116c001166 50a4 MOVF 0xa4,0x0,0x0001168 0b01 ANDLW 0x100116a e016 BZ 0x1198{ F:\MCP\projects\CAN\canBase\Source\CAN.c00116c 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c00116e 146f ANDWF 0x6f,0x0,0x0001170 0910 IORLW 0x10001172 6e00 MOVWF 0x0,0x0001174 0e00 MOVLW 0x0001176 1477 ANDWF 0x77,0x0,0x0001178 1000 IORWF 0x0,0x0,0x000117a 6e77 MOVWF 0x77,0x000117c be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c00117e d86a RCALL 0x1254F:\MCP\projects\CAN\canBase\Source\CAN.c001180 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001182 d002 BRA 0x1188001184 92a4 BCF 0xa4,0x1,0x0001186 d065 BRA 0x1252001188 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00118a d002 BRA 0x119000118c 92a4 BCF 0xa4,0x1,0x000118e d061 BRA 0x1252001190 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001192 d002 BRA 0x1198001194 90a4 BCF 0xa4,0x0,0x0001196 d05d BRA 0x1252} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001198 ecca CALL 0x1994,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c00119a f00cF:\MCP\projects\CAN\canBase\Source\CAN.c00119c ecc0 CALL 0x1980,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c00119e f00c0011a0 0100 MOVLB 0x00011a2 5160 MOVF 0x60,0x0,0x10011a4 5c12 SUBWF 0x12,0x0,0x00011a6 6e00 MOVWF 0x0,0x00011a8 0100 MOVLB 0x00011aa 5161 MOVF 0x61,0x0,0x10011ac 5813 SUBWFB 0x13,0x0,0x00011ae 6e01 MOVWF 0x1,0x00011b0 0100 MOVLB 0x00011b2 5162 MOVF 0x62,0x0,0x10011b4 5814 SUBWFB 0x14,0x0,0x00011b6 6e02 MOVWF 0x2,0x00011b8 0100 MOVLB 0x00011ba 5163 MOVF 0x63,0x0,0x10011bc 5815 SUBWFB 0x15,0x0,0x00011be 6e03 MOVWF 0x3,0x00011c0 80d8 BSF 0xd8,0x0,0x00011c2 0ef4 MOVLW 0xf40011c4 5400 SUBFWB 0x0,0x0,0x00011c6 0e01 MOVLW 0x10011c8 5401 SUBFWB 0x1,0x0,0x00011ca 0e00 MOVLW 0x00011cc 5402 SUBFWB 0x2,0x0,0x00011ce 0e00 MOVLW 0x00011d0 5403 SUBFWB 0x3,0x0,0x00011d2 e23e BC 0x1250{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0011d4 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0011d6 6b64 CLRF 0x64,0x10011d8 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0011da 0100 MOVLB 0x00011dc 6f65 MOVWF 0x65,0x10011de 6b66 CLRF 0x66,0x10011e0 0100 MOVLB 0x0 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e2 0e01 MOVLW 0x10011e4 6f6a MOVWF 0x6a,0x10011e6 0100 MOVLB 0x0 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e8 0e02 MOVLW 0x20011ea 6f6b MOVWF 0x6b,0x10011ec 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c0011ee 6ee6 MOVWF 0xe6,0x00011f0 c064 MOVFF 0x64,0xfe60011f2 ffe60011f4 c065 MOVFF 0x65,0xfe60011f6 ffe60011f8 c066 MOVFF 0x66,0xfe60011fa ffe60011fc c067 MOVFF 0x67,0xfe60011fe ffe6001200 c068 MOVFF 0x68,0xfe6001202 ffe6001204 c069 MOVFF 0x69,0xfe6001206 ffe6001208 c06a MOVFF 0x6a,0xfe600120a ffe600120c c06b MOVFF 0x6b,0xfe600120e ffe6001210 c06c MOVFF 0x6c,0xfe6001212 ffe6001214 c06d MOVFF 0x6d,0xfe6001216 ffe6001218 c06e MOVFF 0x6e,0xfe600121a ffe600121c c06f MOVFF 0x6f,0xfe600121e ffe6001220 c070 MOVFF 0x70,0xfe6001222 ffe6001224 c071 MOVFF 0x71,0xfe6001226 ffe6001228 c072 MOVFF 0x72,0xfe600122a ffe600122c d981 RCALL 0x153000122e 6e00 MOVWF 0x0,0x0001230 0e10 MOVLW 0x10001232 5ee1 SUBWF 0xe1,0x1,0x0001234 5000 MOVF 0x0,0x0,0x0001236 0900 IORLW 0x0001238 e101 BNZ 0x123c00123a d7d8 BRA 0x11ecF:\MCP\projects\CAN\canBase\Source\CAN.c00123c ecc0 CALL 0x1980,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c00123e f00c001240 c012 MOVFF 0x12,0x60001242 f060001244 c013 MOVFF 0x13,0x61001246 f061001248 c014 MOVFF 0x14,0x6200124a f06200124c c015 MOVFF 0x15,0x6300124e f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001250 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.c001252 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.c001254 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001256 ffe6001258 cfe1 MOVFF 0xfe1,0xfd900125a ffd900125c 0e0f MOVLW 0xf00125e 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.c001260 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c001262 1461 ANDWF 0x61,0x0,0x0001264 38e8 SWAPF 0xe8,0x0,0x0001266 0b0f ANDLW 0xf001268 6edf MOVWF 0xdf,0x000126a 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.c00126c 1461 ANDWF 0x61,0x0,0x000126e 6e06 MOVWF 0x6,0x0001270 6a07 CLRF 0x7,0x0001272 0e06 MOVLW 0x6001274 90d8 BCF 0xd8,0x0,0x0001276 3606 RLCF 0x6,0x1,0x0001278 3607 RLCF 0x7,0x1,0x000127a 04e8 DECF 0xe8,0x0,0x000127c e1fb BNZ 0x127400127e 0ee0 MOVLW 0xe0001280 1462 ANDWF 0x62,0x0,0x0001282 6e08 MOVWF 0x8,0x0001284 6a09 CLRF 0x9,0x0001286 90d8 BCF 0xd8,0x0,0x0001288 3209 RRCF 0x9,0x1,0x000128a 3208 RRCF 0x8,0x1,0x000128c 90d8 BCF 0xd8,0x0,0x000128e 3209 RRCF 0x9,0x1,0x0001290 3208 RRCF 0x8,0x1,0x0001292 5006 MOVF 0x6,0x0,0x0001294 2408 ADDWF 0x8,0x0,0x0001296 6e04 MOVWF 0x4,0x0001298 5007 MOVF 0x7,0x0,0x000129a 2009 ADDWFC 0x9,0x0,0x000129c 6e05 MOVWF 0x5,0x000129e 0e03 MOVLW 0x30012a0 1462 ANDWF 0x62,0x0,0x00012a2 6e0a MOVWF 0xa,0x00012a4 6a0b CLRF 0xb,0x00012a6 90d8 BCF 0xd8,0x0,0x00012a8 360a RLCF 0xa,0x1,0x00012aa 360b RLCF 0xb,0x1,0x00012ac 5004 MOVF 0x4,0x0,0x00012ae 240a ADDWF 0xa,0x0,0x00012b0 6e02 MOVWF 0x2,0x00012b2 5005 MOVF 0x5,0x0,0x00012b4 200b ADDWFC 0xb,0x0,0x00012b6 6e03 MOVWF 0x3,0x00012b8 0e80 MOVLW 0x800012ba 1463 ANDWF 0x63,0x0,0x00012bc 6e0c MOVWF 0xc,0x00012be 6a0d CLRF 0xd,0x00012c0 0e07 MOVLW 0x70012c2 90d8 BCF 0xd8,0x0,0x00012c4 320d RRCF 0xd,0x1,0x00012c6 320c RRCF 0xc,0x1,0x00012c8 04e8 DECF 0xe8,0x0,0x00012ca e1fb BNZ 0x12c20012cc 5002 MOVF 0x2,0x0,0x00012ce 240c ADDWF 0xc,0x0,0x00012d0 6e00 MOVWF 0x0,0x00012d2 5003 MOVF 0x3,0x0,0x00012d4 200d ADDWFC 0xd,0x0,0x00012d6 6e01 MOVWF 0x1,0x00012d8 0e01 MOVLW 0x10012da c000 MOVFF 0x0,0xfdb0012dc ffdb0012de 0e02 MOVLW 0x20012e0 c001 MOVFF 0x1,0xfdb0012e2 ffdb0012e4 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0012e6 1463 ANDWF 0x63,0x0,0x00012e8 40e8 RRNCF 0xe8,0x0,0x00012ea 0b7f ANDLW 0x7f0012ec 6ee7 MOVWF 0xe7,0x00012ee 0e03 MOVLW 0x30012f0 cfe7 MOVFF 0xfe7,0xfdb0012f2 ffdb0012f4 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c0012f6 1463 ANDWF 0x63,0x0,0x00012f8 6e02 MOVWF 0x2,0x00012fa c002 MOVFF 0x2,0x30012fc f0030012fe 6a02 CLRF 0x2,0x0001300 5064 MOVF 0x64,0x0,0x0001302 0100 MOVLB 0x0001304 2402 ADDWF 0x2,0x0,0x0001306 6e00 MOVWF 0x0,0x0001308 0e00 MOVLW 0x000130a 2003 ADDWFC 0x3,0x0,0x000130c 6e01 MOVWF 0x1,0x000130e 0e04 MOVLW 0x4001310 c000 MOVFF 0x0,0xfdb001312 ffdb001314 0e05 MOVLW 0x5001316 c001 MOVFF 0x1,0xfdb001318 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00131a 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.c00131c 0b01 ANDLW 0x100131e 6e02 MOVWF 0x2,0x0001320 5065 MOVF 0x65,0x0,0x0001322 0b02 ANDLW 0x2001324 e001 BZ 0x1328001326 0e01 MOVLW 0x1001328 24e8 ADDWF 0xe8,0x0,0x000132a 6e01 MOVWF 0x1,0x000132c 5065 MOVF 0x65,0x0,0x000132e 0b04 ANDLW 0x4001330 e001 BZ 0x1334001332 0e01 MOVLW 0x1001334 0d04 MULLW 0x4001336 cff3 MOVFF 0xff3,0x0001338 f00000133a 5065 MOVF 0x65,0x0,0x000133c 0b08 ANDLW 0x800133e e001 BZ 0x1342001340 0e01 MOVLW 0x1001342 0d08 MULLW 0x8001344 50f3 MOVF 0xf3,0x0,0x0001346 2400 ADDWF 0x0,0x0,0x0001348 2401 ADDWF 0x1,0x0,0x000134a 2402 ADDWF 0x2,0x0,0x000134c 6ee7 MOVWF 0xe7,0x000134e 0e06 MOVLW 0x6001350 cfe7 MOVFF 0xfe7,0xfdb001352 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001354 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001356 cf66 MOVFF 0xf66,0xfdb001358 ffdb00135a 0e08 MOVLW 0x800135c cf67 MOVFF 0xf67,0xfdb00135e ffdb001360 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001362 cf68 MOVFF 0xf68,0xfdb001364 ffdb001366 0e0a MOVLW 0xa001368 cf69 MOVFF 0xf69,0xfdb00136a ffdb00136c 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c00136e cf6a MOVFF 0xf6a,0xfdb001370 ffdb001372 0e0c MOVLW 0xc001374 cf6b MOVFF 0xf6b,0xfdb001376 ffdb001378 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c00137a cf6c MOVFF 0xf6c,0xfdb00137c ffdb00137e 0e0e MOVLW 0xe001380 cf6d MOVFF 0xf6d,0xfdb001382 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001384 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.c001386 50df MOVF 0xdf,0x0,0x0 if (cm.funct==FUNCT_BOOTLOADER) F:\MCP\projects\CAN\canBase\Source\CAN.c001388 e001 BZ 0x138c00138a d0a0 BRA 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c00138c 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.c00138e 50db MOVF 0xdb,0x0,0x0001390 0100 MOVLB 0x0001392 5d8b SUBWF 0x8b,0x0,0x1001394 e001 BZ 0x1398001396 d09a BRA 0x14cc001398 0e0c MOVLW 0xc00139a cfdb MOVFF 0xfdb,0x200139c f00200139e c002 MOVFF 0x2,0x30013a0 f0030013a2 6a02 CLRF 0x2,0x00013a4 0e0b MOVLW 0xb0013a6 50db MOVF 0xdb,0x0,0x00013a8 0100 MOVLB 0x00013aa 2402 ADDWF 0x2,0x0,0x00013ac 6e00 MOVWF 0x0,0x00013ae 0e00 MOVLW 0x00013b0 2003 ADDWFC 0x3,0x0,0x00013b2 6e01 MOVWF 0x1,0x00013b4 0100 MOVLB 0x00013b6 5189 MOVF 0x89,0x0,0x10013b8 1800 XORWF 0x0,0x0,0x00013ba e102 BNZ 0x13c00013bc 518a MOVF 0x8a,0x0,0x10013be 1801 XORWF 0x1,0x0,0x00013c0 e001 BZ 0x13c40013c2 d084 BRA 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013c4 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0013c6 0f01 ADDLW 0x10013c8 6ee9 MOVWF 0xe9,0x00013ca cfda MOVFF 0xfda,0xfea0013cc ffea0013ce 0e01 MOVLW 0x10013d0 18ee XORWF 0xee,0x0,0x00013d2 e101 BNZ 0x13d60013d4 50ed MOVF 0xed,0x0,0x00013d6 e101 BNZ 0x13da0013d8 00ff RESET0013da 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_SET_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013dc 0f01 ADDLW 0x10013de 6ee9 MOVWF 0xe9,0x00013e0 cfda MOVFF 0xfda,0xfea0013e2 ffea0013e4 0e06 MOVLW 0x60013e6 18ee XORWF 0xee,0x0,0x00013e8 e101 BNZ 0x13ec0013ea 50ed MOVF 0xed,0x0,0x00013ec e16f BNZ 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0013ee 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.c0013f0 cfdb MOVFF 0xfdb,0x00013f2 f0000013f4 c000 MOVFF 0x0,0x10013f6 f0010013f8 6a00 CLRF 0x0,0x00013fa 0e07 MOVLW 0x70013fc 50db MOVF 0xdb,0x0,0x00013fe 0100 MOVLB 0x0001400 2400 ADDWF 0x0,0x0,0x0001402 6f89 MOVWF 0x89,0x1001404 0e00 MOVLW 0x0001406 2001 ADDWFC 0x1,0x0,0x0001408 6f8a MOVWF 0x8a,0x100140a 0e09 MOVLW 0x9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c00140c cfdb MOVFF 0xfdb,0x8b00140e f08b001410 0e08 MOVLW 0x8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001412 cfdb MOVFF 0xfdb,0xfe6001414 ffe6001416 0e01 MOVLW 0x1001418 6ee6 MOVWF 0xe6,0x000141a 6ae6 CLRF 0xe6,0x000141c ec36 CALL 0x186c,0x000141e f00c001420 52e5 MOVF 0xe5,0x1,0x0001422 52e5 MOVF 0xe5,0x1,0x0001424 52e5 MOVF 0xe5,0x1,0x0001426 0e07 MOVLW 0x7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001428 cfdb MOVFF 0xfdb,0xfe600142a ffe600142c 0e02 MOVLW 0x200142e 6ee6 MOVWF 0xe6,0x0001430 6ae6 CLRF 0xe6,0x0001432 ec36 CALL 0x186c,0x0001434 f00c001436 52e5 MOVF 0xe5,0x1,0x0001438 52e5 MOVF 0xe5,0x1,0x000143a 52e5 MOVF 0xe5,0x1,0x000143c 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00143e cfdb MOVFF 0xfdb,0xfe6001440 ffe6001442 0e03 MOVLW 0x3001444 6ee6 MOVWF 0xe6,0x0001446 6ae6 CLRF 0xe6,0x0001448 ec36 CALL 0x186c,0x000144a f00c00144c 52e5 MOVF 0xe5,0x1,0x000144e 52e5 MOVF 0xe5,0x1,0x0001450 52e5 MOVF 0xe5,0x1,0x0001452 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c001454 6ee6 MOVWF 0xe6,0x0001456 0e00 MOVLW 0x0001458 6ee6 MOVWF 0xe6,0x000145a 6ae6 CLRF 0xe6,0x000145c ec36 CALL 0x186c,0x000145e f00c001460 52e5 MOVF 0xe5,0x1,0x0001462 52e5 MOVF 0xe5,0x1,0x0001464 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c001466 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001468 6b64 CLRF 0x64,0x100146a 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\CAN.c00146c 0100 MOVLB 0x000146e 6f65 MOVWF 0x65,0x1001470 6b66 CLRF 0x66,0x1001472 0100 MOVLB 0x0 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\CAN.c001474 0e08 MOVLW 0x8001476 6f6a MOVWF 0x6a,0x1001478 0100 MOVLB 0x0 outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\CAN.c00147a 6b6f CLRF 0x6f,0x100147c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c00147e 6ee6 MOVWF 0xe6,0x0001480 c064 MOVFF 0x64,0xfe6001482 ffe6001484 c065 MOVFF 0x65,0xfe6001486 ffe6001488 c066 MOVFF 0x66,0xfe600148a ffe600148c c067 MOVFF 0x67,0xfe600148e ffe6001490 c068 MOVFF 0x68,0xfe6001492 ffe6001494 c069 MOVFF 0x69,0xfe6001496 ffe6001498 c06a MOVFF 0x6a,0xfe600149a ffe600149c c06b MOVFF 0x6b,0xfe600149e ffe60014a0 c06c MOVFF 0x6c,0xfe60014a2 ffe60014a4 c06d MOVFF 0x6d,0xfe60014a6 ffe60014a8 c06e MOVFF 0x6e,0xfe60014aa ffe60014ac c06f MOVFF 0x6f,0xfe60014ae ffe60014b0 c070 MOVFF 0x70,0xfe60014b2 ffe60014b4 c071 MOVFF 0x71,0xfe60014b6 ffe60014b8 c072 MOVFF 0x72,0xfe60014ba ffe60014bc d839 RCALL 0x15300014be 6e00 MOVWF 0x0,0x00014c0 0e10 MOVLW 0x100014c2 5ee1 SUBWF 0xe1,0x1,0x00014c4 5000 MOVF 0x0,0x0,0x00014c6 0900 IORLW 0x00014c8 e101 BNZ 0x14cc0014ca d7d8 BRA 0x147c} 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.c0014cc cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0014ce ffe90014d0 cfda MOVFF 0xfda,0xfea0014d2 ffea0014d4 cfee MOVFF 0xfee,0xfe60014d6 ffe60014d8 cfee MOVFF 0xfee,0xfe60014da ffe60014dc cfee MOVFF 0xfee,0xfe60014de ffe60014e0 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 ec02 CALL 0x1804,0x0001512 f00c001514 6e00 MOVWF 0x0,0x0001516 0e0f MOVLW 0xf001518 5ee1 SUBWF 0xe1,0x1,0x000151a 5000 MOVF 0x0,0x0,0x000151c 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00151e 5ce1 SUBWF 0xe1,0x0,0x0001520 e202 BC 0x1526001522 6ae1 CLRF 0xe1,0x0001524 52e5 MOVF 0xe5,0x1,0x0001526 6ee1 MOVWF 0xe1,0x0001528 52e5 MOVF 0xe5,0x1,0x000152a cfe7 MOVFF 0xfe7,0xfd900152c ffd900152e 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.c001530 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001532 ffe6001534 cfe1 MOVFF 0xfe1,0xfd9001536 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001538 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c00153a b740 BTFSC 0x40,0x3,0x100153c d004 BRA 0x154600153e 0e00 MOVLW 0x0001540 1477 ANDWF 0x77,0x0,0x0001542 0903 IORLW 0x3001544 6e77 MOVWF 0x77,0x0001546 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001548 b730 BTFSC 0x30,0x3,0x100154a d004 BRA 0x155400154c 0e00 MOVLW 0x000154e 1477 ANDWF 0x77,0x0,0x0001550 0904 IORLW 0x4001552 6e77 MOVWF 0x77,0x0001554 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001556 b720 BTFSC 0x20,0x3,0x1001558 d005 BRA 0x156400155a 0e00 MOVLW 0x000155c 1477 ANDWF 0x77,0x0,0x000155e 0905 IORLW 0x5001560 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001562 d002 BRA 0x1568 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001564 0e00 MOVLW 0x0001566 d0b9 BRA 0x16daF:\MCP\projects\CAN\canBase\Source\CAN.c001568 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00156a cfdb MOVFF 0xfdb,0x000156c f00000156e 3400 RLCF 0x0,0x0,0x0001570 e20e BC 0x158e001572 0eef MOVLW 0xef001574 cfdb MOVFF 0xfdb,0x1001576 f001001578 0e03 MOVLW 0x300157a 6ee7 MOVWF 0xe7,0x000157c 1801 XORWF 0x1,0x0,0x000157e aee8 BTFSS 0xe8,0x7,0x0001580 d002 BRA 0x1586001582 3401 RLCF 0x1,0x0,0x0001584 d003 BRA 0x158c001586 50e7 MOVF 0xe7,0x0,0x0001588 80d8 BSF 0xd8,0x0,0x000158a 5401 SUBFWB 0x1,0x0,0x000158c e202 BC 0x159200158e 0eef MOVLW 0xef001590 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Append my id and nid F:\MCP\projects\CAN\canBase\Source\CAN.c001592 0ef3 MOVLW 0xf3 cm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\CAN.c001594 c08b MOVFF 0x8b,0xfdb001596 ffdb001598 0ef4 MOVLW 0xf4 cm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c00159a c089 MOVFF 0x89,0xfdb00159c ffdb00159e 0ef5 MOVLW 0xf50015a0 c08a MOVFF 0x8a,0xfdb0015a2 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.c0015a4 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0015a6 cfdb MOVFF 0xfdb,0x00015a8 f0000015aa 0ef2 MOVLW 0xf20015ac cfdb MOVFF 0xfdb,0x10015ae f0010015b0 0ec0 MOVLW 0xc00015b2 1600 ANDWF 0x0,0x1,0x00015b4 0e03 MOVLW 0x30015b6 1601 ANDWF 0x1,0x1,0x00015b8 0e06 MOVLW 0x60015ba 90d8 BCF 0xd8,0x0,0x00015bc 3201 RRCF 0x1,0x1,0x00015be 3200 RRCF 0x0,0x1,0x00015c0 04e8 DECF 0xe8,0x0,0x00015c2 e1fb BNZ 0x15ba0015c4 0ef0 MOVLW 0xf00015c6 50db MOVF 0xdb,0x0,0x00015c8 0b0f ANDLW 0xf0015ca 0d10 MULLW 0x100015cc 50f3 MOVF 0xf3,0x0,0x00015ce 2400 ADDWF 0x0,0x0,0x00015d0 6e61 MOVWF 0x61,0x00015d2 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015d4 6ee7 MOVWF 0xe7,0x00015d6 0ef1 MOVLW 0xf10015d8 cfdb MOVFF 0xfdb,0x20015da f0020015dc 0ef2 MOVLW 0xf20015de cfdb MOVFF 0xfdb,0x30015e0 f0030015e2 50e7 MOVF 0xe7,0x0,0x00015e4 1602 ANDWF 0x2,0x1,0x00015e6 6a03 CLRF 0x3,0x00015e8 90d8 BCF 0xd8,0x0,0x00015ea 3203 RRCF 0x3,0x1,0x00015ec 3202 RRCF 0x2,0x1,0x00015ee 0e3f MOVLW 0x3f0015f0 6ee7 MOVWF 0xe7,0x00015f2 0ef1 MOVLW 0xf10015f4 cfdb MOVFF 0xfdb,0x00015f6 f0000015f8 0ef2 MOVLW 0xf20015fa cfdb MOVFF 0xfdb,0x10015fc f0010015fe 50e7 MOVF 0xe7,0x0,0x0001600 1600 ANDWF 0x0,0x1,0x0001602 6a01 CLRF 0x1,0x0001604 90d8 BCF 0xd8,0x0,0x0001606 3600 RLCF 0x0,0x1,0x0001608 3601 RLCF 0x1,0x1,0x000160a 90d8 BCF 0xd8,0x0,0x000160c 3600 RLCF 0x0,0x1,0x000160e 3601 RLCF 0x1,0x1,0x0001610 5000 MOVF 0x0,0x0,0x0001612 2402 ADDWF 0x2,0x0,0x0001614 6e62 MOVWF 0x62,0x0001616 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.c001618 cfdb MOVFF 0xfdb,0x200161a f00200161c 0ef5 MOVLW 0xf500161e cfdb MOVFF 0xfdb,0x3001620 f003001622 0e00 MOVLW 0x0001624 1602 ANDWF 0x2,0x1,0x0001626 0e01 MOVLW 0x1001628 1603 ANDWF 0x3,0x1,0x000162a c003 MOVFF 0x3,0x200162c f00200162e 6a03 CLRF 0x3,0x0001630 0e01 MOVLW 0x1001632 6ee7 MOVWF 0xe7,0x0001634 0ef1 MOVLW 0xf1001636 cfdb MOVFF 0xfdb,0x0001638 f00000163a 0ef2 MOVLW 0xf200163c cfdb MOVFF 0xfdb,0x100163e f001001640 50e7 MOVF 0xe7,0x0,0x0001642 1600 ANDWF 0x0,0x1,0x0001644 6a01 CLRF 0x1,0x0001646 0e07 MOVLW 0x7001648 90d8 BCF 0xd8,0x0,0x000164a 3600 RLCF 0x0,0x1,0x000164c 3601 RLCF 0x1,0x1,0x000164e 04e8 DECF 0xe8,0x0,0x0001650 e1fb BNZ 0x1648001652 0ef3 MOVLW 0xf3001654 50db MOVF 0xdb,0x0,0x0001656 0b3f ANDLW 0x3f001658 24e8 ADDWF 0xe8,0x0,0x000165a 2400 ADDWF 0x0,0x0,0x000165c 2402 ADDWF 0x2,0x0,0x000165e 6e63 MOVWF 0x63,0x0001660 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001662 6ee7 MOVWF 0xe7,0x0001664 0ef4 MOVLW 0xf4001666 cfdb MOVFF 0xfdb,0x0001668 f00000166a 0ef5 MOVLW 0xf500166c cfdb MOVFF 0xfdb,0x100166e f001001670 50e7 MOVF 0xe7,0x0,0x0001672 1600 ANDWF 0x0,0x1,0x0001674 6a01 CLRF 0x1,0x0001676 5000 MOVF 0x0,0x0,0x0001678 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00167a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00167c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00167e 50db MOVF 0xdb,0x0,0x0001680 0808 SUBLW 0x8001682 e203 BC 0x168a001684 0e08 MOVLW 0x8001686 6e65 MOVWF 0x65,0x0001688 d003 BRA 0x169000168a 0ef6 MOVLW 0xf600168c 50db MOVF 0xdb,0x0,0x000168e 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.c001690 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.c001692 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001694 50db MOVF 0xdb,0x0,0x0001696 6e66 MOVWF 0x66,0x0001698 0ef8 MOVLW 0xf800169a 50db MOVF 0xdb,0x0,0x000169c 6e67 MOVWF 0x67,0x000169e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016a0 50db MOVF 0xdb,0x0,0x00016a2 6e68 MOVWF 0x68,0x00016a4 0efa MOVLW 0xfa0016a6 50db MOVF 0xdb,0x0,0x00016a8 6e69 MOVWF 0x69,0x00016aa 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 50db MOVF 0xdb,0x0,0x00016ae 6e6a MOVWF 0x6a,0x00016b0 0efc MOVLW 0xfc0016b2 50db MOVF 0xdb,0x0,0x00016b4 6e6b MOVWF 0x6b,0x00016b6 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 50db MOVF 0xdb,0x0,0x00016ba 6e6c MOVWF 0x6c,0x00016bc 0efe MOVLW 0xfe0016be 50db MOVF 0xdb,0x0,0x00016c0 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0016c2 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.c0016c4 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c6 cfdb MOVFF 0xfdb,0xfe60016c8 ffe60016ca 0efc MOVLW 0xfc0016cc 1460 ANDWF 0x60,0x0,0x00016ce 52e5 MOVF 0xe5,0x1,0x00016d0 10e7 IORWF 0xe7,0x0,0x00016d2 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.c0016d4 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.c0016d6 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d8 d000 BRA 0x16daF:\MCP\projects\CAN\canBase\Source\CAN.c0016da 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0016dc cfe7 MOVFF 0xfe7,0xfd90016de ffd90016e0 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.c00196c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00196e 6ed6 MOVWF 0xd6,0x0001970 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001972 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.c001974 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001976 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001978 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c00197a 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c00197c 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c00197e 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.c001980 c085 MOVFF 0x85,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001982 f012001984 c086 MOVFF 0x86,0x13001986 f013001988 c087 MOVFF 0x87,0x1400198a f01400198c c088 MOVFF 0x88,0x1500198e f015001990 d000 BRA 0x1992001992 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.c001994 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001996 d00b BRA 0x19ae{ F:\MCP\projects\CAN\canBase\Source\Tick.c001998 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c00199a 6ed7 MOVWF 0xd7,0x000199c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00199e 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c0019a0 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c0019a2 2b85 INCF 0x85,0x1,0x10019a4 0e00 MOVLW 0x00019a6 2386 ADDWFC 0x86,0x1,0x10019a8 2387 ADDWFC 0x87,0x1,0x10019aa 2388 ADDWFC 0x88,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c0019ac 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c0019ae 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Main application F:\MCP\projects\CAN\canIRtrans\Source\Main.c* F:\MCP\projects\CAN\canIRtrans\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canIRtrans/Source/Main.c $ F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Last changed: $LastChangedDate: 2006-11-20 17:54:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canIRtrans\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Revision: $Revision: 129 $ F:\MCP\projects\CAN\canIRtrans\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canIRtrans\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canIRtrans\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canIRtrans\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canIRtrans\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c0016e2 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canIRtrans\Source\Main.c0016e4 ffe60016e6 cfe1 MOVFF 0xfe1,0xfd90016e8 ffd90016ea 0e0f MOVLW 0xf0016ec 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIRtrans\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canIRtrans\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c// Inits F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c0016ee d885 RCALL 0x17fa mainInit(); F:\MCP\projects\CAN\canIRtrans\Source\Main.c0016f0 ec28 CALL 0x1050,0x0 canInit(); F:\MCP\projects\CAN\canIRtrans\Source\Main.c0016f2 f008F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c00173c d7db BRA 0x16f4 while(1) F:\MCP\projects\CAN\canIRtrans\Source\Main.c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c0016f4 ecc0 CALL 0x1980,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canIRtrans\Source\Main.c0016f6 f00c0016f8 0100 MOVLB 0x00016fa 5181 MOVF 0x81,0x0,0x10016fc 5c12 SUBWF 0x12,0x0,0x00016fe 6e00 MOVWF 0x0,0x0001700 5182 MOVF 0x82,0x0,0x1001702 5813 SUBWFB 0x13,0x0,0x0001704 6e01 MOVWF 0x1,0x0001706 5183 MOVF 0x83,0x0,0x1001708 5814 SUBWFB 0x14,0x0,0x000170a 6e02 MOVWF 0x2,0x000170c 5184 MOVF 0x84,0x0,0x100170e 5815 SUBWFB 0x15,0x0,0x0001710 6e03 MOVWF 0x3,0x0001712 80d8 BSF 0xd8,0x0,0x0001714 0e64 MOVLW 0x64001716 5400 SUBFWB 0x0,0x0,0x0001718 0e00 MOVLW 0x000171a 5401 SUBFWB 0x1,0x0,0x000171c 0e00 MOVLW 0x000171e 5402 SUBFWB 0x2,0x0,0x0001720 0e00 MOVLW 0x0001722 5403 SUBFWB 0x3,0x0,0x0001724 e20b BC 0x173c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c001726 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canIRtrans\Source\Main.c001728 ecc0 CALL 0x1980,0x0 t = tickGet(); F:\MCP\projects\CAN\canIRtrans\Source\Main.c00172a f00c00172c c012 MOVFF 0x12,0x8100172e f081001730 c013 MOVFF 0x13,0x82001732 f082001734 c014 MOVFF 0x14,0x83001736 f083001738 c015 MOVFF 0x15,0x8400173a f084} F:\MCP\projects\CAN\canIRtrans\Source\Main.c} F:\MCP\projects\CAN\canIRtrans\Source\Main.c00173e 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canIRtrans\Source\Main.c001740 5ce1 SUBWF 0xe1,0x0,0x0001742 e202 BC 0x1748001744 6ae1 CLRF 0xe1,0x0001746 52e5 MOVF 0xe5,0x1,0x0001748 6ee1 MOVWF 0xe1,0x000174a 52e5 MOVF 0xe5,0x1,0x000174c cfe7 MOVFF 0xfe7,0xfd900174e ffd9001750 0012 RETURN 0x0F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canIRtrans\Source\Main.c001752 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canIRtrans\Source\Main.c001754 ffe4001756 cfe2 MOVFF 0xfe2,0xfda001758 ffda00175a cfe9 MOVFF 0xfe9,0xfe400175c ffe400175e cfea MOVFF 0xfea,0xfe4001760 ffe4001762 cff6 MOVFF 0xff6,0xfe4001764 ffe4001766 cff7 MOVFF 0xff7,0xfe4001768 ffe400176a cff5 MOVFF 0xff5,0xfe400176c ffe400176e cff3 MOVFF 0xff3,0xfe4001770 ffe4001772 cff4 MOVFF 0xff4,0xfe4001774 ffe4001776 cffa MOVFF 0xffa,0xfe4001778 ffe400177a ee00 LFSR 0x0,0xe00177c f00e00177e 0e0b MOVLW 0xb001780 04e8 DECF 0xe8,0x0,0x0001782 e303 BNC 0x178a001784 cfee MOVFF 0xfee,0xfe4001786 ffe4001788 d7fb BRA 0x178000178a ee00 LFSR 0x0,0x000178c f00000178e 0e0e MOVLW 0xe001790 04e8 DECF 0xe8,0x0,0x0001792 e303 BNC 0x179a001794 cfee MOVFF 0xfee,0xfe4001796 ffe4001798 d7fb BRA 0x179000179a 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c00179c ecad CALL 0x115a,0x0 canISR(); F:\MCP\projects\CAN\canIRtrans\Source\Main.c00179e f0080017a0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017a2 ee00 LFSR 0x0,0xd0017a4 f00d0017a6 0e0e MOVLW 0xe0017a8 04e8 DECF 0xe8,0x0,0x00017aa e303 BNC 0x17b20017ac cfe5 MOVFF 0xfe5,0xfed0017ae ffed0017b0 d7fb BRA 0x17a80017b2 ee00 LFSR 0x0,0x180017b4 f0180017b6 0e0b MOVLW 0xb0017b8 04e8 DECF 0xe8,0x0,0x00017ba e303 BNC 0x17c20017bc cfe5 MOVFF 0xfe5,0xfed0017be ffed0017c0 d7fb BRA 0x17b80017c2 cfe5 MOVFF 0xfe5,0xffa0017c4 fffa0017c6 cfe5 MOVFF 0xfe5,0xff40017c8 fff40017ca cfe5 MOVFF 0xfe5,0xff30017cc fff30017ce cfe5 MOVFF 0xfe5,0xff50017d0 fff50017d2 cfe5 MOVFF 0xfe5,0xff70017d4 fff70017d6 cfe5 MOVFF 0xfe5,0xff60017d8 fff60017da cfe5 MOVFF 0xfe5,0xfea0017dc ffea0017de cfe5 MOVFF 0xfe5,0xfe90017e0 ffe90017e2 cfe5 MOVFF 0xfe5,0xfda0017e4 ffda0017e6 0011 RETFIE 0x1F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017e8 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017ea ffe40017ec cfe2 MOVFF 0xfe2,0xfda0017ee ffda0017f0 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c0017f2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017f4 cfe5 MOVFF 0xfe5,0xfda0017f6 ffda0017f8 0011 RETFIE 0x1F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c/* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canIRtrans\Source\Main.c* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Input: none F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Output: none F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canIRtrans\Source\Main.c*/ F:\MCP\projects\CAN\canIRtrans\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canIRtrans\Source\Main.c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017fa 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017fc 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canIRtrans\Source\Main.c0017fe 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canIRtrans\Source\Main.c001800 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c001802 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c/* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canIRtrans\Source\Main.c* F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Output: none F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canIRtrans\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canIRtrans\Source\Main.c*/ F:\MCP\projects\CAN\canIRtrans\Source\Main.c001804 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canIRtrans\Source\Main.c001806 ffe6001808 cfe1 MOVFF 0xfe1,0xfd900180a ffd900180c 0e0f MOVLW 0xf00180e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canIRtrans\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canIRtrans\Source\Main.c001810 5ce1 SUBWF 0xe1,0x0,0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c001812 e202 BC 0x1818001814 6ae1 CLRF 0xe1,0x0001816 52e5 MOVF 0xe5,0x1,0x0001818 6ee1 MOVWF 0xe1,0x000181a 52e5 MOVF 0xe5,0x1,0x000181c cfe7 MOVFF 0xfe7,0xfd900181e ffd9001820 0012 RETURN 0x0F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canIRtrans\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canIRtrans\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canIRtrans\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canIRtrans\Source\Main.c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c001000 efd8 GOTO 0x19b0 _asm goto _startup _endasm F:\MCP\projects\CAN\canIRtrans\Source\Main.c001002 f00c001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code F:\MCP\projects\CAN\canIRtrans\Source\Main.c#endif F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canIRtrans\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canIRtrans\Source\Main.c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c001008 efa9 GOTO 0x1752 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canIRtrans\Source\Main.c00100a f00b00100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code F:\MCP\projects\CAN\canIRtrans\Source\Main.cF:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canIRtrans\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canIRtrans\Source\Main.c{ F:\MCP\projects\CAN\canIRtrans\Source\Main.c001018 eff4 GOTO 0x17e8 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canIRtrans\Source\Main.c00101a f00b00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canIRtrans\Source\Main.c#pragma code F:\MCP\projects\CAN\canIRtrans\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.c001822 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001824 ffe6001826 cfe1 MOVFF 0xfe1,0xfd9001828 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c00182a 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c00182c cfdb MOVFF 0xfdb,0x000182e f000001830 0efe MOVLW 0xfe001832 cfdb MOVFF 0xfdb,0x1001834 f001001836 c001 MOVFF 0x1,0x0001838 f00000183a 6a01 CLRF 0x1,0x000183c 5000 MOVF 0x0,0x0,0x000183e 6eaa MOVWF 0xaa,0x0001840 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001842 6ee7 MOVWF 0xe7,0x0001844 0efd MOVLW 0xfd001846 cfdb MOVFF 0xfdb,0x0001848 f00000184a 0efe MOVLW 0xfe00184c cfdb MOVFF 0xfdb,0x100184e f001001850 50e7 MOVF 0xe7,0x0,0x0001852 1600 ANDWF 0x0,0x1,0x0001854 6a01 CLRF 0x1,0x0001856 5000 MOVF 0x0,0x0,0x0001858 6ea9 MOVWF 0xa9,0x000185a 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c00185c 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c00185e 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001860 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001862 d000 BRA 0x1864001864 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001866 cfe7 MOVFF 0xfe7,0xfd9001868 ffd900186a 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.c00186c cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c00186e ffe6001870 cfe1 MOVFF 0xfe1,0xfd9001872 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001874 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001876 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001878 cfdb MOVFF 0xfdb,0x000187a f00000187c 0efe MOVLW 0xfe00187e cfdb MOVFF 0xfdb,0x1001880 f001001882 c001 MOVFF 0x1,0x0001884 f000001886 6a01 CLRF 0x1,0x0001888 5000 MOVF 0x0,0x0,0x000188a 6eaa MOVWF 0xaa,0x000188c 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c00188e 6ee7 MOVWF 0xe7,0x0001890 0efd MOVLW 0xfd001892 cfdb MOVFF 0xfdb,0x0001894 f000001896 0efe MOVLW 0xfe001898 cfdb MOVFF 0xfdb,0x100189a f00100189c 50e7 MOVF 0xe7,0x0,0x000189e 1600 ANDWF 0x0,0x1,0x00018a0 6a01 CLRF 0x1,0x00018a2 5000 MOVF 0x0,0x0,0x00018a4 6ea9 MOVWF 0xa9,0x00018a6 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c0018a8 50db MOVF 0xdb,0x0,0x00018aa 6ea8 MOVWF 0xa8,0x00018ac 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c0018ae 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c0018b0 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c0018b2 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c0018b4 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c0018b6 6ea7 MOVWF 0xa7,0x00018b8 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c0018ba 6ea7 MOVWF 0xa7,0x00018bc 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c0018be 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c0018c0 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c0018c2 d7fe BRA 0x18c00018c4 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c0018c6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c0018c8 cfe7 MOVFF 0xfe7,0xfd90018ca ffd90018cc 0012 RETURN 0x0