Rev 135 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Nov 21 10:53:37 2006Address 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.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.c#ifdef USE_CAN 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.c001634 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c001636 6e6f MOVWF 0x6f,0x0001638 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c00163a 146e ANDWF 0x6e,0x0,0x000163c 0880 SUBLW 0x8000163e e001 BZ 0x1642001640 d7fb BRA 0x1638F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001642 6a70 CLRF 0x70,0x0 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.c001644 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001646 8c70 BSF 0x70,0x6,0x0 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.c001648 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c00164a 1070 IORWF 0x70,0x0,0x000164c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c00164e 8e71 BSF 0x71,0x7,0x0 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.c001650 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001652 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001654 8671 BSF 0x71,0x3,0x0 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.c001656 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001658 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00165a 8071 BSF 0x71,0x0,0x0 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.c00165c 9e72 BCF 0x72,0x7,0x0 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.c00165e 9c72 BCF 0x72,0x6,0x0 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.c001660 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001662 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001664 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001666 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001668 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00166a 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.c00166c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00166e 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.c001670 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001672 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001674 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001676 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001678 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00167a 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.c00167c 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.c00167e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001680 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001682 146e ANDWF 0x6e,0x0,0x0001684 e001 BZ 0x1688001686 d7fc BRA 0x1680#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001688 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.c00168a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c00168c 0b02 ANDLW 0x200168e e106 BNZ 0x169c001690 50a4 MOVF 0xa4,0x0,0x0001692 0b02 ANDLW 0x2001694 e103 BNZ 0x169c001696 50a4 MOVF 0xa4,0x0,0x0001698 0b01 ANDLW 0x100169a e016 BZ 0x16c8{ F:\MCP\projects\CAN\canBase\Source\CAN.c00169c 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c00169e 146f ANDWF 0x6f,0x0,0x00016a0 0910 IORLW 0x100016a2 6e00 MOVWF 0x0,0x00016a4 0e00 MOVLW 0x00016a6 1477 ANDWF 0x77,0x0,0x00016a8 1000 IORWF 0x0,0x0,0x00016aa 6e77 MOVWF 0x77,0x00016ac be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c0016ae d80d RCALL 0x16caF:\MCP\projects\CAN\canBase\Source\CAN.c0016b0 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0016b2 d002 BRA 0x16b80016b4 92a4 BCF 0xa4,0x1,0x00016b6 d008 BRA 0x16c80016b8 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0016ba d002 BRA 0x16c00016bc 92a4 BCF 0xa4,0x1,0x00016be d004 BRA 0x16c80016c0 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0016c2 d002 BRA 0x16c80016c4 90a4 BCF 0xa4,0x0,0x00016c6 d000 BRA 0x16c8} F:\MCP\projects\CAN\canBase\Source\CAN.c0016c8 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.c0016ca cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c0016cc ffe60016ce cfe1 MOVFF 0xfe1,0xfd90016d0 ffd90016d2 0e0f MOVLW 0xf0016d4 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.c0016d6 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c0016d8 1461 ANDWF 0x61,0x0,0x00016da 38e8 SWAPF 0xe8,0x0,0x00016dc 0b0f ANDLW 0xf0016de 6edf MOVWF 0xdf,0x00016e0 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.c0016e2 1461 ANDWF 0x61,0x0,0x00016e4 6e06 MOVWF 0x6,0x00016e6 6a07 CLRF 0x7,0x00016e8 0e06 MOVLW 0x60016ea 90d8 BCF 0xd8,0x0,0x00016ec 3606 RLCF 0x6,0x1,0x00016ee 3607 RLCF 0x7,0x1,0x00016f0 04e8 DECF 0xe8,0x0,0x00016f2 e1fb BNZ 0x16ea0016f4 0ee0 MOVLW 0xe00016f6 1462 ANDWF 0x62,0x0,0x00016f8 6e08 MOVWF 0x8,0x00016fa 6a09 CLRF 0x9,0x00016fc 90d8 BCF 0xd8,0x0,0x00016fe 3209 RRCF 0x9,0x1,0x0001700 3208 RRCF 0x8,0x1,0x0001702 90d8 BCF 0xd8,0x0,0x0001704 3209 RRCF 0x9,0x1,0x0001706 3208 RRCF 0x8,0x1,0x0001708 5006 MOVF 0x6,0x0,0x000170a 2408 ADDWF 0x8,0x0,0x000170c 6e04 MOVWF 0x4,0x000170e 5007 MOVF 0x7,0x0,0x0001710 2009 ADDWFC 0x9,0x0,0x0001712 6e05 MOVWF 0x5,0x0001714 0e03 MOVLW 0x3001716 1462 ANDWF 0x62,0x0,0x0001718 6e0a MOVWF 0xa,0x000171a 6a0b CLRF 0xb,0x000171c 90d8 BCF 0xd8,0x0,0x000171e 360a RLCF 0xa,0x1,0x0001720 360b RLCF 0xb,0x1,0x0001722 5004 MOVF 0x4,0x0,0x0001724 240a ADDWF 0xa,0x0,0x0001726 6e02 MOVWF 0x2,0x0001728 5005 MOVF 0x5,0x0,0x000172a 200b ADDWFC 0xb,0x0,0x000172c 6e03 MOVWF 0x3,0x000172e 0e80 MOVLW 0x80001730 1463 ANDWF 0x63,0x0,0x0001732 6e0c MOVWF 0xc,0x0001734 6a0d CLRF 0xd,0x0001736 0e07 MOVLW 0x7001738 90d8 BCF 0xd8,0x0,0x000173a 320d RRCF 0xd,0x1,0x000173c 320c RRCF 0xc,0x1,0x000173e 04e8 DECF 0xe8,0x0,0x0001740 e1fb BNZ 0x1738001742 5002 MOVF 0x2,0x0,0x0001744 240c ADDWF 0xc,0x0,0x0001746 6e00 MOVWF 0x0,0x0001748 5003 MOVF 0x3,0x0,0x000174a 200d ADDWFC 0xd,0x0,0x000174c 6e01 MOVWF 0x1,0x000174e 0e01 MOVLW 0x1001750 c000 MOVFF 0x0,0xfdb001752 ffdb001754 0e02 MOVLW 0x2001756 c001 MOVFF 0x1,0xfdb001758 ffdb00175a 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c00175c 1463 ANDWF 0x63,0x0,0x000175e 40e8 RRNCF 0xe8,0x0,0x0001760 0b7f ANDLW 0x7f001762 6ee7 MOVWF 0xe7,0x0001764 0e03 MOVLW 0x3001766 cfe7 MOVFF 0xfe7,0xfdb001768 ffdb00176a 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00176c 1463 ANDWF 0x63,0x0,0x000176e 6e02 MOVWF 0x2,0x0001770 c002 MOVFF 0x2,0x3001772 f003001774 6a02 CLRF 0x2,0x0001776 5064 MOVF 0x64,0x0,0x0001778 0100 MOVLB 0x000177a 2402 ADDWF 0x2,0x0,0x000177c 6e00 MOVWF 0x0,0x000177e 0e00 MOVLW 0x0001780 2003 ADDWFC 0x3,0x0,0x0001782 6e01 MOVWF 0x1,0x0001784 0e04 MOVLW 0x4001786 c000 MOVFF 0x0,0xfdb001788 ffdb00178a 0e05 MOVLW 0x500178c c001 MOVFF 0x1,0xfdb00178e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001790 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.c001792 0b01 ANDLW 0x1001794 6e02 MOVWF 0x2,0x0001796 5065 MOVF 0x65,0x0,0x0001798 0b02 ANDLW 0x200179a e001 BZ 0x179e00179c 0e01 MOVLW 0x100179e 24e8 ADDWF 0xe8,0x0,0x00017a0 6e01 MOVWF 0x1,0x00017a2 5065 MOVF 0x65,0x0,0x00017a4 0b04 ANDLW 0x40017a6 e001 BZ 0x17aa0017a8 0e01 MOVLW 0x10017aa 0d04 MULLW 0x40017ac cff3 MOVFF 0xff3,0x00017ae f0000017b0 5065 MOVF 0x65,0x0,0x00017b2 0b08 ANDLW 0x80017b4 e001 BZ 0x17b80017b6 0e01 MOVLW 0x10017b8 0d08 MULLW 0x80017ba 50f3 MOVF 0xf3,0x0,0x00017bc 2400 ADDWF 0x0,0x0,0x00017be 2401 ADDWF 0x1,0x0,0x00017c0 2402 ADDWF 0x2,0x0,0x00017c2 6ee7 MOVWF 0xe7,0x00017c4 0e06 MOVLW 0x60017c6 cfe7 MOVFF 0xfe7,0xfdb0017c8 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c0017ca 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c0017cc cf66 MOVFF 0xf66,0xfdb0017ce ffdb0017d0 0e08 MOVLW 0x80017d2 cf67 MOVFF 0xf67,0xfdb0017d4 ffdb0017d6 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c0017d8 cf68 MOVFF 0xf68,0xfdb0017da ffdb0017dc 0e0a MOVLW 0xa0017de cf69 MOVFF 0xf69,0xfdb0017e0 ffdb0017e2 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c0017e4 cf6a MOVFF 0xf6a,0xfdb0017e6 ffdb0017e8 0e0c MOVLW 0xc0017ea cf6b MOVFF 0xf6b,0xfdb0017ec ffdb0017ee 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c0017f0 cf6c MOVFF 0xf6c,0xfdb0017f2 ffdb0017f4 0e0e MOVLW 0xe0017f6 cf6d MOVFF 0xf6d,0xfdb0017f8 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c0017fa 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c0017fc cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0017fe ffe9001800 cfda MOVFF 0xfda,0xfea001802 ffea001804 cfee MOVFF 0xfee,0xfe6001806 ffe6001808 cfee MOVFF 0xfee,0xfe600180a ffe600180c cfee MOVFF 0xfee,0xfe600180e ffe6001810 cfee MOVFF 0xfee,0xfe6001812 ffe6001814 cfee MOVFF 0xfee,0xfe6001816 ffe6001818 cfee MOVFF 0xfee,0xfe600181a ffe600181c cfee MOVFF 0xfee,0xfe600181e ffe6001820 cfee MOVFF 0xfee,0xfe6001822 ffe6001824 cfee MOVFF 0xfee,0xfe6001826 ffe6001828 cfee MOVFF 0xfee,0xfe600182a ffe600182c cfee MOVFF 0xfee,0xfe600182e ffe6001830 cfee MOVFF 0xfee,0xfe6001832 ffe6001834 cfee MOVFF 0xfee,0xfe6001836 ffe6001838 cfee MOVFF 0xfee,0xfe600183a ffe600183c cfee MOVFF 0xfee,0xfe600183e ffe6001840 ec53 CALL 0x14a6,0x0001842 f00a001844 6e00 MOVWF 0x0,0x0001846 0e0f MOVLW 0xf001848 5ee1 SUBWF 0xe1,0x1,0x000184a 5000 MOVF 0x0,0x0,0x000184c 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00184e 5ce1 SUBWF 0xe1,0x0,0x0001850 e202 BC 0x1856001852 6ae1 CLRF 0xe1,0x0001854 52e5 MOVF 0xe5,0x1,0x0001856 6ee1 MOVWF 0xe1,0x0001858 52e5 MOVF 0xe5,0x1,0x000185a cfe7 MOVFF 0xfe7,0xfd900185c ffd900185e 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.c001860 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001862 ffe6001864 cfe1 MOVFF 0xfe1,0xfd9001866 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001868 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c00186a b740 BTFSC 0x40,0x3,0x100186c d004 BRA 0x187600186e 0e00 MOVLW 0x0001870 1477 ANDWF 0x77,0x0,0x0001872 0903 IORLW 0x3001874 6e77 MOVWF 0x77,0x0001876 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001878 b730 BTFSC 0x30,0x3,0x100187a d004 BRA 0x188400187c 0e00 MOVLW 0x000187e 1477 ANDWF 0x77,0x0,0x0001880 0904 IORLW 0x4001882 6e77 MOVWF 0x77,0x0001884 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001886 b720 BTFSC 0x20,0x3,0x1001888 d005 BRA 0x189400188a 0e00 MOVLW 0x000188c 1477 ANDWF 0x77,0x0,0x000188e 0905 IORLW 0x5001890 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001892 d002 BRA 0x1898 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001894 0e00 MOVLW 0x0001896 d0b0 BRA 0x19f8F:\MCP\projects\CAN\canBase\Source\CAN.c001898 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00189a cfdb MOVFF 0xfdb,0x000189c f00000189e 3400 RLCF 0x0,0x0,0x00018a0 e20e BC 0x18be0018a2 0eef MOVLW 0xef0018a4 cfdb MOVFF 0xfdb,0x10018a6 f0010018a8 0e03 MOVLW 0x30018aa 6ee7 MOVWF 0xe7,0x00018ac 1801 XORWF 0x1,0x0,0x00018ae aee8 BTFSS 0xe8,0x7,0x00018b0 d002 BRA 0x18b60018b2 3401 RLCF 0x1,0x0,0x00018b4 d003 BRA 0x18bc0018b6 50e7 MOVF 0xe7,0x0,0x00018b8 80d8 BSF 0xd8,0x0,0x00018ba 5401 SUBFWB 0x1,0x0,0x00018bc e202 BC 0x18c20018be 0eef MOVLW 0xef0018c0 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.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.c0018c2 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0018c4 cfdb MOVFF 0xfdb,0x00018c6 f0000018c8 0ef2 MOVLW 0xf20018ca cfdb MOVFF 0xfdb,0x10018cc f0010018ce 0ec0 MOVLW 0xc00018d0 1600 ANDWF 0x0,0x1,0x00018d2 0e03 MOVLW 0x30018d4 1601 ANDWF 0x1,0x1,0x00018d6 0e06 MOVLW 0x60018d8 90d8 BCF 0xd8,0x0,0x00018da 3201 RRCF 0x1,0x1,0x00018dc 3200 RRCF 0x0,0x1,0x00018de 04e8 DECF 0xe8,0x0,0x00018e0 e1fb BNZ 0x18d80018e2 0ef0 MOVLW 0xf00018e4 50db MOVF 0xdb,0x0,0x00018e6 0b0f ANDLW 0xf0018e8 0d10 MULLW 0x100018ea 50f3 MOVF 0xf3,0x0,0x00018ec 2400 ADDWF 0x0,0x0,0x00018ee 6e61 MOVWF 0x61,0x00018f0 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0018f2 6ee7 MOVWF 0xe7,0x00018f4 0ef1 MOVLW 0xf10018f6 cfdb MOVFF 0xfdb,0x20018f8 f0020018fa 0ef2 MOVLW 0xf20018fc cfdb MOVFF 0xfdb,0x30018fe f003001900 50e7 MOVF 0xe7,0x0,0x0001902 1602 ANDWF 0x2,0x1,0x0001904 6a03 CLRF 0x3,0x0001906 90d8 BCF 0xd8,0x0,0x0001908 3203 RRCF 0x3,0x1,0x000190a 3202 RRCF 0x2,0x1,0x000190c 0e3f MOVLW 0x3f00190e 6ee7 MOVWF 0xe7,0x0001910 0ef1 MOVLW 0xf1001912 cfdb MOVFF 0xfdb,0x0001914 f000001916 0ef2 MOVLW 0xf2001918 cfdb MOVFF 0xfdb,0x100191a f00100191c 50e7 MOVF 0xe7,0x0,0x000191e 1600 ANDWF 0x0,0x1,0x0001920 6a01 CLRF 0x1,0x0001922 90d8 BCF 0xd8,0x0,0x0001924 3600 RLCF 0x0,0x1,0x0001926 3601 RLCF 0x1,0x1,0x0001928 90d8 BCF 0xd8,0x0,0x000192a 3600 RLCF 0x0,0x1,0x000192c 3601 RLCF 0x1,0x1,0x000192e 5000 MOVF 0x0,0x0,0x0001930 2402 ADDWF 0x2,0x0,0x0001932 6e62 MOVWF 0x62,0x0001934 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.c001936 cfdb MOVFF 0xfdb,0x2001938 f00200193a 0ef5 MOVLW 0xf500193c cfdb MOVFF 0xfdb,0x300193e f003001940 0e00 MOVLW 0x0001942 1602 ANDWF 0x2,0x1,0x0001944 0e01 MOVLW 0x1001946 1603 ANDWF 0x3,0x1,0x0001948 c003 MOVFF 0x3,0x200194a f00200194c 6a03 CLRF 0x3,0x000194e 0e01 MOVLW 0x1001950 6ee7 MOVWF 0xe7,0x0001952 0ef1 MOVLW 0xf1001954 cfdb MOVFF 0xfdb,0x0001956 f000001958 0ef2 MOVLW 0xf200195a cfdb MOVFF 0xfdb,0x100195c f00100195e 50e7 MOVF 0xe7,0x0,0x0001960 1600 ANDWF 0x0,0x1,0x0001962 6a01 CLRF 0x1,0x0001964 0e07 MOVLW 0x7001966 90d8 BCF 0xd8,0x0,0x0001968 3600 RLCF 0x0,0x1,0x000196a 3601 RLCF 0x1,0x1,0x000196c 04e8 DECF 0xe8,0x0,0x000196e e1fb BNZ 0x1966001970 0ef3 MOVLW 0xf3001972 50db MOVF 0xdb,0x0,0x0001974 0b3f ANDLW 0x3f001976 24e8 ADDWF 0xe8,0x0,0x0001978 2400 ADDWF 0x0,0x0,0x000197a 2402 ADDWF 0x2,0x0,0x000197c 6e63 MOVWF 0x63,0x000197e 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001980 6ee7 MOVWF 0xe7,0x0001982 0ef4 MOVLW 0xf4001984 cfdb MOVFF 0xfdb,0x0001986 f000001988 0ef5 MOVLW 0xf500198a cfdb MOVFF 0xfdb,0x100198c f00100198e 50e7 MOVF 0xe7,0x0,0x0001990 1600 ANDWF 0x0,0x1,0x0001992 6a01 CLRF 0x1,0x0001994 5000 MOVF 0x0,0x0,0x0001996 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001998 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00199a 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00199c 50db MOVF 0xdb,0x0,0x000199e 0808 SUBLW 0x80019a0 e203 BC 0x19a80019a2 0e08 MOVLW 0x80019a4 6e65 MOVWF 0x65,0x00019a6 d003 BRA 0x19ae0019a8 0ef6 MOVLW 0xf60019aa 50db MOVF 0xdb,0x0,0x00019ac 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.c0019ae 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.c0019b0 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0019b2 50db MOVF 0xdb,0x0,0x00019b4 6e66 MOVWF 0x66,0x00019b6 0ef8 MOVLW 0xf80019b8 50db MOVF 0xdb,0x0,0x00019ba 6e67 MOVWF 0x67,0x00019bc 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0019be 50db MOVF 0xdb,0x0,0x00019c0 6e68 MOVWF 0x68,0x00019c2 0efa MOVLW 0xfa0019c4 50db MOVF 0xdb,0x0,0x00019c6 6e69 MOVWF 0x69,0x00019c8 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0019ca 50db MOVF 0xdb,0x0,0x00019cc 6e6a MOVWF 0x6a,0x00019ce 0efc MOVLW 0xfc0019d0 50db MOVF 0xdb,0x0,0x00019d2 6e6b MOVWF 0x6b,0x00019d4 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0019d6 50db MOVF 0xdb,0x0,0x00019d8 6e6c MOVWF 0x6c,0x00019da 0efe MOVLW 0xfe0019dc 50db MOVF 0xdb,0x0,0x00019de 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0019e0 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.c0019e2 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0019e4 cfdb MOVFF 0xfdb,0xfe60019e6 ffe60019e8 0efc MOVLW 0xfc0019ea 1460 ANDWF 0x60,0x0,0x00019ec 52e5 MOVF 0xe5,0x1,0x00019ee 10e7 IORWF 0xe7,0x0,0x00019f0 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.c0019f2 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.c0019f4 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0019f6 d000 BRA 0x19f8F:\MCP\projects\CAN\canBase\Source\CAN.c0019f8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0019fa cfe7 MOVFF 0xfe7,0xfd90019fc ffd90019fe 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canBase\Source\CAN.c/********************************************************************* 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.c001b4a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001b4c 6ed6 MOVWF 0xd6,0x0001b4e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001b50 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.c001b52 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001b54 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001b56 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001b58 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001b5a 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001b5c 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.c001b5e c080 MOVFF 0x80,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001b60 f012001b62 c081 MOVFF 0x81,0x13001b64 f013001b66 c082 MOVFF 0x82,0x14001b68 f014001b6a c083 MOVFF 0x83,0x15001b6c f015001b6e d000 BRA 0x1b70001b70 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.c001b72 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001b74 d00b BRA 0x1b8c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001b76 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001b78 6ed7 MOVWF 0xd7,0x0001b7a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001b7c 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001b7e 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001b80 2b80 INCF 0x80,0x1,0x1001b82 0e00 MOVLW 0x0001b84 2381 ADDWFC 0x81,0x1,0x1001b86 2382 ADDWFC 0x82,0x1,0x1001b88 2383 ADDWFC 0x83,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001b8a 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001b8c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canFreezer\Source\Main.c* F:\MCP\projects\CAN\canFreezer\Source\Main.c* Main application F:\MCP\projects\CAN\canFreezer\Source\Main.c* F:\MCP\projects\CAN\canFreezer\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canFreezer\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/Main.c $ F:\MCP\projects\CAN\canFreezer\Source\Main.c* Last changed: $LastChangedDate: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canFreezer\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canFreezer\Source\Main.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\canFreezer\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canFreezer\Source\Main.c#include <adc.h> F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c001044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canFreezer\Source\Main.c001046 ffe6001048 cfe1 MOVFF 0xfe1,0xfd900104a ffd900104c 0e0f MOVLW 0xf00104e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canFreezer\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c// Inits F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c001050 da23 RCALL 0x1498 mainInit(); F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canFreezer\Source\Main.c001052 ec1a CALL 0x1634,0x0 canInit(); F:\MCP\projects\CAN\canFreezer\Source\Main.c001054 f00b#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canFreezer\Source\Main.cadcInit(TRUE,0b1011); F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c001056 eca5 CALL 0x1b4a,0x0 tickInit(); F:\MCP\projects\CAN\canFreezer\Source\Main.c001058 f00dF:\MCP\projects\CAN\canFreezer\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canFreezer\Source\Main.c00105a 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canFreezer\Source\Main.c00105c 6ee6 MOVWF 0xe6,0x000105e 6ae6 CLRF 0xe6,0x0001060 ec00 CALL 0x1a00,0x0001062 f00d001064 52e5 MOVF 0xe5,0x1,0x0001066 52e5 MOVF 0xe5,0x1,0x0001068 082a SUBLW 0x2a00106a e12b BNZ 0x10c2{ F:\MCP\projects\CAN\canFreezer\Source\Main.c00106c 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canFreezer\Source\Main.c00106e 6ee6 MOVWF 0xe6,0x0001070 6ae6 CLRF 0xe6,0x0001072 ec00 CALL 0x1a00,0x0001074 f00d001076 52e5 MOVF 0xe5,0x1,0x0001078 52e5 MOVF 0xe5,0x1,0x000107a 6e00 MOVWF 0x0,0x000107c c000 MOVFF 0x0,0x100107e f001001080 6a00 CLRF 0x0,0x0001082 c000 MOVFF 0x0,0xfe6001084 ffe6001086 c001 MOVFF 0x1,0xfe6001088 ffe600108a 0e02 MOVLW 0x200108c 6ee6 MOVWF 0xe6,0x000108e 6ae6 CLRF 0xe6,0x0001090 ec00 CALL 0x1a00,0x0001092 f00d001094 52e5 MOVF 0xe5,0x1,0x0001096 52e5 MOVF 0xe5,0x1,0x0001098 52e5 MOVF 0xe5,0x1,0x000109a cfe7 MOVFF 0xfe7,0x100109c f00100109e 52e5 MOVF 0xe5,0x1,0x00010a0 cfe7 MOVFF 0xfe7,0x00010a2 f0000010a4 0100 MOVLB 0x00010a6 2400 ADDWF 0x0,0x0,0x00010a8 6f60 MOVWF 0x60,0x10010aa 0e00 MOVLW 0x00010ac 2001 ADDWFC 0x1,0x0,0x00010ae 6f61 MOVWF 0x61,0x10010b0 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canFreezer\Source\Main.c0010b2 6ee6 MOVWF 0xe6,0x00010b4 6ae6 CLRF 0xe6,0x00010b6 ec00 CALL 0x1a00,0x00010b8 f00d0010ba 52e5 MOVF 0xe5,0x1,0x00010bc 52e5 MOVF 0xe5,0x1,0x00010be 0100 MOVLB 0x00010c0 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c// Send user program startup heatbeat F:\MCP\projects\CAN\canFreezer\Source\Main.c0010c2 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010c4 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010c6 6ef3 MOVWF 0xf3,0x00010c8 0e01 MOVLW 0x10010ca cff3 MOVFF 0xff3,0xfdb0010cc ffdb0010ce 0e02 MOVLW 0x20010d0 6adb CLRF 0xdb,0x00010d2 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010d4 c062 MOVFF 0x62,0xfdb0010d6 ffdb0010d8 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010da c060 MOVFF 0x60,0xfdb0010dc ffdb0010de 0e05 MOVLW 0x50010e0 c061 MOVFF 0x61,0xfdb0010e2 ffdb0010e4 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010e6 6ef3 MOVWF 0xf3,0x00010e8 0e06 MOVLW 0x60010ea cff3 MOVFF 0xff3,0xfdb0010ec ffdb0010ee 0e01 MOVLW 0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canFreezer\Source\Main.c0010f0 6ef3 MOVWF 0xf3,0x00010f2 0e07 MOVLW 0x70010f4 cff3 MOVFF 0xff3,0xfdb0010f6 ffdb0010f8 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c0010fa 6ee6 MOVWF 0xe6,0x00010fc cfd9 MOVFF 0xfd9,0xfe90010fe ffe9001100 cfda MOVFF 0xfda,0xfea001102 ffea001104 cfee MOVFF 0xfee,0xfe6001106 ffe6001108 cfee MOVFF 0xfee,0xfe600110a ffe600110c cfee MOVFF 0xfee,0xfe600110e ffe6001110 cfee MOVFF 0xfee,0xfe6001112 ffe6001114 cfee MOVFF 0xfee,0xfe6001116 ffe6001118 cfee MOVFF 0xfee,0xfe600111a ffe600111c cfee MOVFF 0xfee,0xfe600111e ffe6001120 cfee MOVFF 0xfee,0xfe6001122 ffe6001124 cfee MOVFF 0xfee,0xfe6001126 ffe6001128 cfee MOVFF 0xfee,0xfe600112a ffe600112c cfee MOVFF 0xfee,0xfe600112e ffe6001130 cfee MOVFF 0xfee,0xfe6001132 ffe6001134 cfee MOVFF 0xfee,0xfe6001136 ffe6001138 cfee MOVFF 0xfee,0xfe600113a ffe600113c cfee MOVFF 0xfee,0xfe600113e ffe6001140 ec30 CALL 0x1860,0x0001142 f00c001144 6e00 MOVWF 0x0,0x0001146 0e10 MOVLW 0x10001148 5ee1 SUBWF 0xe1,0x1,0x000114a 5000 MOVF 0x0,0x0,0x000114c 0900 IORLW 0x000114e e101 BNZ 0x1152001150 d7d3 BRA 0x10f8F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c0013d4 d6be BRA 0x1152 while(1) F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic TICK temperature = 0; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic BYTE lastTemperature = TEMPERATURE_FREEZER; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic BYTE lastFreezerDoor = DOOR_CLOSED; F:\MCP\projects\CAN\canFreezer\Source\Main.cstatic BYTE lastRefrigeratorDoor = DOOR_CLOSED; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c//Poll doors freezer door F:\MCP\projects\CAN\canFreezer\Source\Main.c001152 5080 MOVF 0x80,0x0,0x0 if (lastFreezerDoor!=DOOR_FREEZER_IO) F:\MCP\projects\CAN\canFreezer\Source\Main.c001154 0b10 ANDLW 0x10001156 e001 BZ 0x115a001158 0e01 MOVLW 0x100115a 0100 MOVLB 0x000115c 5d74 SUBWF 0x74,0x0,0x100115e e052 BZ 0x1204{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001160 5080 MOVF 0x80,0x0,0x0 lastFreezerDoor=DOOR_FREEZER_IO; F:\MCP\projects\CAN\canFreezer\Source\Main.c001162 0b10 ANDLW 0x10001164 e001 BZ 0x1168001166 0e01 MOVLW 0x1001168 6f74 MOVWF 0x74,0x1// Send door status change F:\MCP\projects\CAN\canFreezer\Source\Main.c00116a 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canFreezer\Source\Main.c00116c 6edf MOVWF 0xdf,0x000116e 0e20 MOVLW 0x20 outCm.funcc = FUNCC_SENSORS_DOORS_FREEZER; F:\MCP\projects\CAN\canFreezer\Source\Main.c001170 6ef3 MOVWF 0xf3,0x0001172 0e01 MOVLW 0x1001174 cff3 MOVFF 0xff3,0xfdb001176 ffdb001178 0e02 MOVLW 0x200117a 6adb CLRF 0xdb,0x000117c 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.c00117e c062 MOVFF 0x62,0xfdb001180 ffdb001182 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.c001184 c060 MOVFF 0x60,0xfdb001186 ffdb001188 0e05 MOVLW 0x500118a c061 MOVFF 0x61,0xfdb00118c ffdb00118e 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.c001190 6ef3 MOVWF 0xf3,0x0001192 0e06 MOVLW 0x6001194 cff3 MOVFF 0xff3,0xfdb001196 ffdb001198 0574 DECF 0x74,0x0,0x1 outCm.data[0] = (lastFreezerDoor==DOOR_OPEN?0:1); F:\MCP\projects\CAN\canFreezer\Source\Main.c00119a e102 BNZ 0x11a000119c 0e00 MOVLW 0x000119e d001 BRA 0x11a20011a0 0e01 MOVLW 0x10011a2 6ee7 MOVWF 0xe7,0x00011a4 0e07 MOVLW 0x70011a6 cfe7 MOVFF 0xfe7,0xfdb0011a8 ffdb0011aa 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c0011ac 6ee6 MOVWF 0xe6,0x00011ae cfd9 MOVFF 0xfd9,0xfe90011b0 ffe90011b2 cfda MOVFF 0xfda,0xfea0011b4 ffea0011b6 cfee MOVFF 0xfee,0xfe60011b8 ffe60011ba cfee MOVFF 0xfee,0xfe60011bc ffe60011be cfee MOVFF 0xfee,0xfe60011c0 ffe60011c2 cfee MOVFF 0xfee,0xfe60011c4 ffe60011c6 cfee MOVFF 0xfee,0xfe60011c8 ffe60011ca cfee MOVFF 0xfee,0xfe60011cc ffe60011ce cfee MOVFF 0xfee,0xfe60011d0 ffe60011d2 cfee MOVFF 0xfee,0xfe60011d4 ffe60011d6 cfee MOVFF 0xfee,0xfe60011d8 ffe60011da cfee MOVFF 0xfee,0xfe60011dc ffe60011de cfee MOVFF 0xfee,0xfe60011e0 ffe60011e2 cfee MOVFF 0xfee,0xfe60011e4 ffe60011e6 cfee MOVFF 0xfee,0xfe60011e8 ffe60011ea cfee MOVFF 0xfee,0xfe60011ec ffe60011ee cfee MOVFF 0xfee,0xfe60011f0 ffe60011f2 ec30 CALL 0x1860,0x00011f4 f00c0011f6 6e00 MOVWF 0x0,0x00011f8 0e10 MOVLW 0x100011fa 5ee1 SUBWF 0xe1,0x1,0x00011fc 5000 MOVF 0x0,0x0,0x00011fe 0900 IORLW 0x0001200 e101 BNZ 0x1204001202 d7d3 BRA 0x11aa} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c//Poll doors refrigerator door F:\MCP\projects\CAN\canFreezer\Source\Main.c001204 5080 MOVF 0x80,0x0,0x0 if (lastRefrigeratorDoor!=DOOR_REFRIGERATOR_IO) F:\MCP\projects\CAN\canFreezer\Source\Main.c001206 0b20 ANDLW 0x20001208 e001 BZ 0x120c00120a 0e01 MOVLW 0x100120c 0100 MOVLB 0x000120e 5d75 SUBWF 0x75,0x0,0x1001210 e052 BZ 0x12b6{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001212 5080 MOVF 0x80,0x0,0x0 lastRefrigeratorDoor=DOOR_REFRIGERATOR_IO; F:\MCP\projects\CAN\canFreezer\Source\Main.c001214 0b20 ANDLW 0x20001216 e001 BZ 0x121a001218 0e01 MOVLW 0x100121a 6f75 MOVWF 0x75,0x1// Send door status change F:\MCP\projects\CAN\canFreezer\Source\Main.c00121c 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canFreezer\Source\Main.c00121e 6edf MOVWF 0xdf,0x0001220 0e21 MOVLW 0x21 outCm.funcc = FUNCC_SENSORS_DOORS_REFRIGERATOR; F:\MCP\projects\CAN\canFreezer\Source\Main.c001222 6ef3 MOVWF 0xf3,0x0001224 0e01 MOVLW 0x1001226 cff3 MOVFF 0xff3,0xfdb001228 ffdb00122a 0e02 MOVLW 0x200122c 6adb CLRF 0xdb,0x000122e 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.c001230 c062 MOVFF 0x62,0xfdb001232 ffdb001234 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.c001236 c060 MOVFF 0x60,0xfdb001238 ffdb00123a 0e05 MOVLW 0x500123c c061 MOVFF 0x61,0xfdb00123e ffdb001240 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.c001242 6ef3 MOVWF 0xf3,0x0001244 0e06 MOVLW 0x6001246 cff3 MOVFF 0xff3,0xfdb001248 ffdb00124a 0575 DECF 0x75,0x0,0x1 outCm.data[0] = (lastRefrigeratorDoor==DOOR_OPEN?0:1); F:\MCP\projects\CAN\canFreezer\Source\Main.c00124c e102 BNZ 0x125200124e 0e00 MOVLW 0x0001250 d001 BRA 0x1254001252 0e01 MOVLW 0x1001254 6ee7 MOVWF 0xe7,0x0001256 0e07 MOVLW 0x7001258 cfe7 MOVFF 0xfe7,0xfdb00125a ffdb00125c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c00125e 6ee6 MOVWF 0xe6,0x0001260 cfd9 MOVFF 0xfd9,0xfe9001262 ffe9001264 cfda MOVFF 0xfda,0xfea001266 ffea001268 cfee MOVFF 0xfee,0xfe600126a ffe600126c cfee MOVFF 0xfee,0xfe600126e ffe6001270 cfee MOVFF 0xfee,0xfe6001272 ffe6001274 cfee MOVFF 0xfee,0xfe6001276 ffe6001278 cfee MOVFF 0xfee,0xfe600127a ffe600127c cfee MOVFF 0xfee,0xfe600127e ffe6001280 cfee MOVFF 0xfee,0xfe6001282 ffe6001284 cfee MOVFF 0xfee,0xfe6001286 ffe6001288 cfee MOVFF 0xfee,0xfe600128a ffe600128c cfee MOVFF 0xfee,0xfe600128e ffe6001290 cfee MOVFF 0xfee,0xfe6001292 ffe6001294 cfee MOVFF 0xfee,0xfe6001296 ffe6001298 cfee MOVFF 0xfee,0xfe600129a ffe600129c cfee MOVFF 0xfee,0xfe600129e ffe60012a0 cfee MOVFF 0xfee,0xfe60012a2 ffe60012a4 ec30 CALL 0x1860,0x00012a6 f00c0012a8 6e00 MOVWF 0x0,0x00012aa 0e10 MOVLW 0x100012ac 5ee1 SUBWF 0xe1,0x1,0x00012ae 5000 MOVF 0x0,0x0,0x00012b0 0900 IORLW 0x00012b2 e101 BNZ 0x12b60012b4 d7d3 BRA 0x125c} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c0012b6 ecaf CALL 0x1b5e,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canFreezer\Source\Main.c0012b8 f00d0012ba 0100 MOVLB 0x00012bc 516b MOVF 0x6b,0x0,0x10012be 5c12 SUBWF 0x12,0x0,0x00012c0 6e00 MOVWF 0x0,0x00012c2 516c MOVF 0x6c,0x0,0x10012c4 5813 SUBWFB 0x13,0x0,0x00012c6 6e01 MOVWF 0x1,0x00012c8 516d MOVF 0x6d,0x0,0x10012ca 5814 SUBWFB 0x14,0x0,0x00012cc 6e02 MOVWF 0x2,0x00012ce 516e MOVF 0x6e,0x0,0x10012d0 5815 SUBWFB 0x15,0x0,0x00012d2 6e03 MOVWF 0x3,0x00012d4 80d8 BSF 0xd8,0x0,0x00012d6 0ef4 MOVLW 0xf40012d8 5400 SUBFWB 0x0,0x0,0x00012da 0e01 MOVLW 0x10012dc 5401 SUBFWB 0x1,0x0,0x00012de 0e00 MOVLW 0x00012e0 5402 SUBFWB 0x2,0x0,0x00012e2 0e00 MOVLW 0x00012e4 5403 SUBFWB 0x3,0x0,0x00012e6 e252 BC 0x138c{ F:\MCP\projects\CAN\canFreezer\Source\Main.c// Send alive heartbeat F:\MCP\projects\CAN\canFreezer\Source\Main.c0012e8 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canFreezer\Source\Main.c0012ea 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canFreezer\Source\Main.c0012ec 6ef3 MOVWF 0xf3,0x00012ee 0e01 MOVLW 0x10012f0 cff3 MOVFF 0xff3,0xfdb0012f2 ffdb0012f4 0e02 MOVLW 0x20012f6 6adb CLRF 0xdb,0x00012f8 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.c0012fa c062 MOVFF 0x62,0xfdb0012fc ffdb0012fe 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.c001300 c060 MOVFF 0x60,0xfdb001302 ffdb001304 0e05 MOVLW 0x5001306 c061 MOVFF 0x61,0xfdb001308 ffdb00130a 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.c00130c 6ef3 MOVWF 0xf3,0x000130e 0e06 MOVLW 0x6001310 cff3 MOVFF 0xff3,0xfdb001312 ffdb001314 0e02 MOVLW 0x2 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canFreezer\Source\Main.c001316 6ef3 MOVWF 0xf3,0x0001318 0e07 MOVLW 0x700131a cff3 MOVFF 0xff3,0xfdb00131c ffdb00131e 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c001320 6ee6 MOVWF 0xe6,0x0001322 cfd9 MOVFF 0xfd9,0xfe9001324 ffe9001326 cfda MOVFF 0xfda,0xfea001328 ffea00132a cfee MOVFF 0xfee,0xfe600132c ffe600132e cfee MOVFF 0xfee,0xfe6001330 ffe6001332 cfee MOVFF 0xfee,0xfe6001334 ffe6001336 cfee MOVFF 0xfee,0xfe6001338 ffe600133a cfee MOVFF 0xfee,0xfe600133c ffe600133e cfee MOVFF 0xfee,0xfe6001340 ffe6001342 cfee MOVFF 0xfee,0xfe6001344 ffe6001346 cfee MOVFF 0xfee,0xfe6001348 ffe600134a cfee MOVFF 0xfee,0xfe600134c ffe600134e cfee MOVFF 0xfee,0xfe6001350 ffe6001352 cfee MOVFF 0xfee,0xfe6001354 ffe6001356 cfee MOVFF 0xfee,0xfe6001358 ffe600135a cfee MOVFF 0xfee,0xfe600135c ffe600135e cfee MOVFF 0xfee,0xfe6001360 ffe6001362 cfee MOVFF 0xfee,0xfe6001364 ffe6001366 ec30 CALL 0x1860,0x0001368 f00c00136a 6e00 MOVWF 0x0,0x000136c 0e10 MOVLW 0x1000136e 5ee1 SUBWF 0xe1,0x1,0x0001370 5000 MOVF 0x0,0x0,0x0001372 0900 IORLW 0x0001374 e101 BNZ 0x1378001376 d7d3 BRA 0x131eF:\MCP\projects\CAN\canFreezer\Source\Main.c001378 ecaf CALL 0x1b5e,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canFreezer\Source\Main.c00137a f00d00137c c012 MOVFF 0x12,0x6b00137e f06b001380 c013 MOVFF 0x13,0x6c001382 f06c001384 c014 MOVFF 0x14,0x6d001386 f06d001388 c015 MOVFF 0x15,0x6e00138a f06e} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c00138c ecaf CALL 0x1b5e,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canFreezer\Source\Main.c00138e f00d001390 0100 MOVLB 0x0001392 5167 MOVF 0x67,0x0,0x1001394 5c12 SUBWF 0x12,0x0,0x0001396 6e00 MOVWF 0x0,0x0001398 5168 MOVF 0x68,0x0,0x100139a 5813 SUBWFB 0x13,0x0,0x000139c 6e01 MOVWF 0x1,0x000139e 5169 MOVF 0x69,0x0,0x10013a0 5814 SUBWFB 0x14,0x0,0x00013a2 6e02 MOVWF 0x2,0x00013a4 516a MOVF 0x6a,0x0,0x10013a6 5815 SUBWFB 0x15,0x0,0x00013a8 6e03 MOVWF 0x3,0x00013aa 80d8 BSF 0xd8,0x0,0x00013ac 0e64 MOVLW 0x640013ae 5400 SUBFWB 0x0,0x0,0x00013b0 0e00 MOVLW 0x00013b2 5401 SUBFWB 0x1,0x0,0x00013b4 0e00 MOVLW 0x00013b6 5402 SUBFWB 0x2,0x0,0x00013b8 0e00 MOVLW 0x00013ba 5403 SUBFWB 0x3,0x0,0x00013bc e20b BC 0x13d4{ F:\MCP\projects\CAN\canFreezer\Source\Main.c0013be 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canFreezer\Source\Main.c0013c0 ecaf CALL 0x1b5e,0x0 t = tickGet(); F:\MCP\projects\CAN\canFreezer\Source\Main.c0013c2 f00d0013c4 c012 MOVFF 0x12,0x670013c6 f0670013c8 c013 MOVFF 0x13,0x680013ca f0680013cc c014 MOVFF 0x14,0x690013ce f0690013d0 c015 MOVFF 0x15,0x6a0013d2 f06a} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canFreezer\Source\Main.cif ((tickGet()-temperature)>TICK_SECOND*2) // Each 2 second, read temperature. F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.cif (lastTemperature==TEMPERATURE_FREEZER) lastTemperature=TEMPERATURE_REFRIGERATOR; else lastTemperature=TEMPERATURE_FREEZER; F:\MCP\projects\CAN\canFreezer\Source\Main.cadcConvert(lastTemperature); F:\MCP\projects\CAN\canFreezer\Source\Main.ctemperature = tickGet(); F:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canFreezer\Source\Main.cif (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.cBYTE decimal; F:\MCP\projects\CAN\canFreezer\Source\Main.csigned char tenth; F:\MCP\projects\CAN\canFreezer\Source\Main.ctemperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.funcc = (lastTemperature==TEMPERATURE_FREEZER?FUNCC_SENSORS_TEMPERATURE_FREEZER:FUNCC_SENSORS_TEMPERATURE_REFRIGERATOR); F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.data_length = 2; F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canFreezer\Source\Main.coutCm.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canFreezer\Source\Main.cwhile(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.c0013d6 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canFreezer\Source\Main.c0013d8 5ce1 SUBWF 0xe1,0x0,0x00013da e202 BC 0x13e00013dc 6ae1 CLRF 0xe1,0x00013de 52e5 MOVF 0xe5,0x1,0x00013e0 6ee1 MOVWF 0xe1,0x00013e2 52e5 MOVF 0xe5,0x1,0x00013e4 cfe7 MOVFF 0xfe7,0xfd90013e6 ffd90013e8 0012 RETURN 0x0F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canFreezer\Source\Main.c0013ea cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canFreezer\Source\Main.c0013ec ffe40013ee cfe2 MOVFF 0xfe2,0xfda0013f0 ffda0013f2 cfe9 MOVFF 0xfe9,0xfe40013f4 ffe40013f6 cfea MOVFF 0xfea,0xfe40013f8 ffe40013fa cff6 MOVFF 0xff6,0xfe40013fc ffe40013fe cff7 MOVFF 0xff7,0xfe4001400 ffe4001402 cff5 MOVFF 0xff5,0xfe4001404 ffe4001406 cff3 MOVFF 0xff3,0xfe4001408 ffe400140a cff4 MOVFF 0xff4,0xfe400140c ffe400140e cffa MOVFF 0xffa,0xfe4001410 ffe4001412 ee00 LFSR 0x0,0xe001414 f00e001416 0e0b MOVLW 0xb001418 04e8 DECF 0xe8,0x0,0x000141a e303 BNC 0x142200141c cfee MOVFF 0xfee,0xfe400141e ffe4001420 d7fb BRA 0x1418001422 ee00 LFSR 0x0,0x0001424 f000001426 0e0e MOVLW 0xe001428 04e8 DECF 0xe8,0x0,0x000142a e303 BNC 0x143200142c cfee MOVFF 0xfee,0xfe400142e ffe4001430 d7fb BRA 0x1428001432 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001434 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canFreezer\Source\Main.c001436 ec45 CALL 0x168a,0x0 canISR(); F:\MCP\projects\CAN\canFreezer\Source\Main.c001438 f00b#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c00143a ecb9 CALL 0x1b72,0x0 tickUpdate(); F:\MCP\projects\CAN\canFreezer\Source\Main.c00143c f00dF:\MCP\projects\CAN\canFreezer\Source\Main.c00143e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.c001440 ee00 LFSR 0x0,0xd001442 f00d001444 0e0e MOVLW 0xe001446 04e8 DECF 0xe8,0x0,0x0001448 e303 BNC 0x145000144a cfe5 MOVFF 0xfe5,0xfed00144c ffed00144e d7fb BRA 0x1446001450 ee00 LFSR 0x0,0x18001452 f018001454 0e0b MOVLW 0xb001456 04e8 DECF 0xe8,0x0,0x0001458 e303 BNC 0x146000145a cfe5 MOVFF 0xfe5,0xfed00145c ffed00145e d7fb BRA 0x1456001460 cfe5 MOVFF 0xfe5,0xffa001462 fffa001464 cfe5 MOVFF 0xfe5,0xff4001466 fff4001468 cfe5 MOVFF 0xfe5,0xff300146a fff300146c cfe5 MOVFF 0xfe5,0xff500146e fff5001470 cfe5 MOVFF 0xfe5,0xff7001472 fff7001474 cfe5 MOVFF 0xfe5,0xff6001476 fff6001478 cfe5 MOVFF 0xfe5,0xfea00147a ffea00147c cfe5 MOVFF 0xfe5,0xfe900147e ffe9001480 cfe5 MOVFF 0xfe5,0xfda001482 ffda001484 0011 RETFIE 0x1F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canFreezer\Source\Main.c001486 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canFreezer\Source\Main.c001488 ffe400148a cfe2 MOVFF 0xfe2,0xfda00148c ffda00148e 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canFreezer\Source\Main.cadcISR(); F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.c001490 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.c001492 cfe5 MOVFF 0xfe5,0xfda001494 ffda001496 0011 RETFIE 0x1F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c/* F:\MCP\projects\CAN\canFreezer\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canFreezer\Source\Main.c* F:\MCP\projects\CAN\canFreezer\Source\Main.c* Input: none F:\MCP\projects\CAN\canFreezer\Source\Main.c* Output: none F:\MCP\projects\CAN\canFreezer\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canFreezer\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canFreezer\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canFreezer\Source\Main.c*/ F:\MCP\projects\CAN\canFreezer\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001498 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c00149a 8892 BSF 0x92,0x4,0x0 DOOR_FREEZER_TRIS=1; F:\MCP\projects\CAN\canFreezer\Source\Main.c00149c 8a92 BSF 0x92,0x5,0x0 DOOR_REFRIGERATOR_TRIS=1; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canFreezer\Source\Main.c00149e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.c0014a0 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canFreezer\Source\Main.c0014a2 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c0014a4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c/* F:\MCP\projects\CAN\canFreezer\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canFreezer\Source\Main.c* F:\MCP\projects\CAN\canFreezer\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canFreezer\Source\Main.c* Output: none F:\MCP\projects\CAN\canFreezer\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canFreezer\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canFreezer\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canFreezer\Source\Main.c*/ F:\MCP\projects\CAN\canFreezer\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canFreezer\Source\Main.c0014a6 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canFreezer\Source\Main.c0014a8 ffe60014aa cfe1 MOVFF 0xfe1,0xfd90014ac ffd90014ae 0e0f MOVLW 0xf0014b0 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canFreezer\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c0014b2 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c0014b4 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canFreezer\Source\Main.c0014b6 50db MOVF 0xdb,0x0,0x00014b8 e001 BZ 0x14bc0014ba d0b2 BRA 0x1620{ F:\MCP\projects\CAN\canFreezer\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canFreezer\Source\Main.c0014bc 0ef3 MOVLW 0xf3 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\canFreezer\Source\Main.c0014be 50db MOVF 0xdb,0x0,0x00014c0 0100 MOVLB 0x00014c2 5d62 SUBWF 0x62,0x0,0x10014c4 e001 BZ 0x14c80014c6 d0ab BRA 0x161e0014c8 0efc MOVLW 0xfc0014ca cfdb MOVFF 0xfdb,0x20014cc f0020014ce c002 MOVFF 0x2,0x30014d0 f0030014d2 6a02 CLRF 0x2,0x00014d4 0efb MOVLW 0xfb0014d6 50db MOVF 0xdb,0x0,0x00014d8 0100 MOVLB 0x00014da 2402 ADDWF 0x2,0x0,0x00014dc 6e00 MOVWF 0x0,0x00014de 0e00 MOVLW 0x00014e0 2003 ADDWFC 0x3,0x0,0x00014e2 6e01 MOVWF 0x1,0x00014e4 0100 MOVLB 0x00014e6 5160 MOVF 0x60,0x0,0x10014e8 1800 XORWF 0x0,0x0,0x00014ea e102 BNZ 0x14f00014ec 5161 MOVF 0x61,0x0,0x10014ee 1801 XORWF 0x1,0x0,0x00014f0 e001 BZ 0x14f40014f2 d095 BRA 0x161e{ F:\MCP\projects\CAN\canFreezer\Source\Main.c0014f4 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canFreezer\Source\Main.c0014f6 cfdb MOVFF 0xfdb,0x140014f8 f0140014fa 0ef2 MOVLW 0xf20014fc cfdb MOVFF 0xfdb,0x150014fe f015001500 0e06 MOVLW 0x6001502 1814 XORWF 0x14,0x0,0x0001504 e101 BNZ 0x1508001506 5015 MOVF 0x15,0x0,0x0001508 e008 BZ 0x151a00150a 0e01 MOVLW 0x100150c 1814 XORWF 0x14,0x0,0x000150e e101 BNZ 0x1512001510 5015 MOVF 0x15,0x0,0x0001512 e001 BZ 0x1516001514 d084 BRA 0x161e{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001516 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canFreezer\Source\Main.c001518 d082 BRA 0x161ecase FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canFreezer\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canFreezer\Source\Main.c00151a 0ef8 MOVLW 0xf8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canFreezer\Source\Main.c00151c cfdb MOVFF 0xfdb,0x000151e f000001520 c000 MOVFF 0x0,0x1001522 f001001524 6a00 CLRF 0x0,0x0001526 0ef7 MOVLW 0xf7001528 50db MOVF 0xdb,0x0,0x000152a 0100 MOVLB 0x000152c 2400 ADDWF 0x0,0x0,0x000152e 6f60 MOVWF 0x60,0x1001530 0e00 MOVLW 0x0001532 2001 ADDWFC 0x1,0x0,0x0001534 6f61 MOVWF 0x61,0x1001536 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canFreezer\Source\Main.c001538 cfdb MOVFF 0xfdb,0x6200153a f06200153c 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canFreezer\Source\Main.c00153e cfdb MOVFF 0xfdb,0xfe6001540 ffe6001542 0e01 MOVLW 0x1001544 6ee6 MOVWF 0xe6,0x0001546 6ae6 CLRF 0xe6,0x0001548 ec25 CALL 0x1a4a,0x000154a f00d00154c 52e5 MOVF 0xe5,0x1,0x000154e 52e5 MOVF 0xe5,0x1,0x0001550 52e5 MOVF 0xe5,0x1,0x0001552 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canFreezer\Source\Main.c001554 cfdb MOVFF 0xfdb,0xfe6001556 ffe6001558 0e02 MOVLW 0x200155a 6ee6 MOVWF 0xe6,0x000155c 6ae6 CLRF 0xe6,0x000155e ec25 CALL 0x1a4a,0x0001560 f00d001562 52e5 MOVF 0xe5,0x1,0x0001564 52e5 MOVF 0xe5,0x1,0x0001566 52e5 MOVF 0xe5,0x1,0x0001568 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canFreezer\Source\Main.c00156a cfdb MOVFF 0xfdb,0xfe600156c ffe600156e 0e03 MOVLW 0x3001570 6ee6 MOVWF 0xe6,0x0001572 6ae6 CLRF 0xe6,0x0001574 ec25 CALL 0x1a4a,0x0001576 f00d001578 52e5 MOVF 0xe5,0x1,0x000157a 52e5 MOVF 0xe5,0x1,0x000157c 52e5 MOVF 0xe5,0x1,0x000157e 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canFreezer\Source\Main.c001580 6ee6 MOVWF 0xe6,0x0001582 0e00 MOVLW 0x0001584 6ee6 MOVWF 0xe6,0x0001586 6ae6 CLRF 0xe6,0x0001588 ec25 CALL 0x1a4a,0x000158a f00d00158c 52e5 MOVF 0xe5,0x1,0x000158e 52e5 MOVF 0xe5,0x1,0x0001590 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canFreezer\Source\Main.c001592 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canFreezer\Source\Main.c001594 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canFreezer\Source\Main.c001596 6ef3 MOVWF 0xf3,0x0001598 0e01 MOVLW 0x100159a cff3 MOVFF 0xff3,0xfdb00159c ffdb00159e 0e02 MOVLW 0x20015a0 6adb CLRF 0xdb,0x00015a2 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canFreezer\Source\Main.c0015a4 c062 MOVFF 0x62,0xfdb0015a6 ffdb0015a8 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canFreezer\Source\Main.c0015aa c060 MOVFF 0x60,0xfdb0015ac ffdb0015ae 0e05 MOVLW 0x50015b0 c061 MOVFF 0x61,0xfdb0015b2 ffdb0015b4 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canFreezer\Source\Main.c0015b6 6ef3 MOVWF 0xf3,0x00015b8 0e06 MOVLW 0x60015ba cff3 MOVFF 0xff3,0xfdb0015bc ffdb0015be 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canFreezer\Source\Main.c0015c0 6adb CLRF 0xdb,0x00015c2 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canFreezer\Source\Main.c0015c4 6ee6 MOVWF 0xe6,0x00015c6 cfd9 MOVFF 0xfd9,0xfe90015c8 ffe90015ca cfda MOVFF 0xfda,0xfea0015cc ffea0015ce cfee MOVFF 0xfee,0xfe60015d0 ffe60015d2 cfee MOVFF 0xfee,0xfe60015d4 ffe60015d6 cfee MOVFF 0xfee,0xfe60015d8 ffe60015da cfee MOVFF 0xfee,0xfe60015dc ffe60015de cfee MOVFF 0xfee,0xfe60015e0 ffe60015e2 cfee MOVFF 0xfee,0xfe60015e4 ffe60015e6 cfee MOVFF 0xfee,0xfe60015e8 ffe60015ea cfee MOVFF 0xfee,0xfe60015ec ffe60015ee cfee MOVFF 0xfee,0xfe60015f0 ffe60015f2 cfee MOVFF 0xfee,0xfe60015f4 ffe60015f6 cfee MOVFF 0xfee,0xfe60015f8 ffe60015fa cfee MOVFF 0xfee,0xfe60015fc ffe60015fe cfee MOVFF 0xfee,0xfe6001600 ffe6001602 cfee MOVFF 0xfee,0xfe6001604 ffe6001606 cfee MOVFF 0xfee,0xfe6001608 ffe600160a ec30 CALL 0x1860,0x000160c f00c00160e 6e00 MOVWF 0x0,0x0001610 0e10 MOVLW 0x10001612 5ee1 SUBWF 0xe1,0x1,0x0001614 5000 MOVF 0x0,0x0,0x0001616 0900 IORLW 0x0001618 e101 BNZ 0x161c00161a d7d3 BRA 0x15c200161c d000 BRA 0x161e break; F:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c00161e d000 BRA 0x1620 break; F:\MCP\projects\CAN\canFreezer\Source\Main.c} F:\MCP\projects\CAN\canFreezer\Source\Main.c001620 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canFreezer\Source\Main.c001622 5ce1 SUBWF 0xe1,0x0,0x0001624 e202 BC 0x162a001626 6ae1 CLRF 0xe1,0x0001628 52e5 MOVF 0xe5,0x1,0x000162a 6ee1 MOVWF 0xe1,0x000162c 52e5 MOVF 0xe5,0x1,0x000162e cfe7 MOVFF 0xfe7,0xfd9001630 ffd9001632 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canFreezer\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canFreezer\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canFreezer\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001000 efc7 GOTO 0x1b8e _asm goto _startup _endasm F:\MCP\projects\CAN\canFreezer\Source\Main.c001002 f00d001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code F:\MCP\projects\CAN\canFreezer\Source\Main.c#endif F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canFreezer\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001008 eff5 GOTO 0x13ea _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canFreezer\Source\Main.c00100a f00900100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code F:\MCP\projects\CAN\canFreezer\Source\Main.cF:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canFreezer\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canFreezer\Source\Main.c{ F:\MCP\projects\CAN\canFreezer\Source\Main.c001018 ef43 GOTO 0x1486 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canFreezer\Source\Main.c00101a f00a00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canFreezer\Source\Main.c#pragma code F:\MCP\projects\CAN\canFreezer\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.c001a00 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001a02 ffe6001a04 cfe1 MOVFF 0xfe1,0xfd9001a06 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001a08 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001a0a cfdb MOVFF 0xfdb,0x0001a0c f000001a0e 0efe MOVLW 0xfe001a10 cfdb MOVFF 0xfdb,0x1001a12 f001001a14 c001 MOVFF 0x1,0x0001a16 f000001a18 6a01 CLRF 0x1,0x0001a1a 5000 MOVF 0x0,0x0,0x0001a1c 6eaa MOVWF 0xaa,0x0001a1e 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001a20 6ee7 MOVWF 0xe7,0x0001a22 0efd MOVLW 0xfd001a24 cfdb MOVFF 0xfdb,0x0001a26 f000001a28 0efe MOVLW 0xfe001a2a cfdb MOVFF 0xfdb,0x1001a2c f001001a2e 50e7 MOVF 0xe7,0x0,0x0001a30 1600 ANDWF 0x0,0x1,0x0001a32 6a01 CLRF 0x1,0x0001a34 5000 MOVF 0x0,0x0,0x0001a36 6ea9 MOVWF 0xa9,0x0001a38 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001a3a 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001a3c 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001a3e 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001a40 d000 BRA 0x1a42001a42 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001a44 cfe7 MOVFF 0xfe7,0xfd9001a46 ffd9001a48 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.c001a4a cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001a4c ffe6001a4e cfe1 MOVFF 0xfe1,0xfd9001a50 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001a52 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001a54 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001a56 cfdb MOVFF 0xfdb,0x0001a58 f000001a5a 0efe MOVLW 0xfe001a5c cfdb MOVFF 0xfdb,0x1001a5e f001001a60 c001 MOVFF 0x1,0x0001a62 f000001a64 6a01 CLRF 0x1,0x0001a66 5000 MOVF 0x0,0x0,0x0001a68 6eaa MOVWF 0xaa,0x0001a6a 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001a6c 6ee7 MOVWF 0xe7,0x0001a6e 0efd MOVLW 0xfd001a70 cfdb MOVFF 0xfdb,0x0001a72 f000001a74 0efe MOVLW 0xfe001a76 cfdb MOVFF 0xfdb,0x1001a78 f001001a7a 50e7 MOVF 0xe7,0x0,0x0001a7c 1600 ANDWF 0x0,0x1,0x0001a7e 6a01 CLRF 0x1,0x0001a80 5000 MOVF 0x0,0x0,0x0001a82 6ea9 MOVWF 0xa9,0x0001a84 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001a86 50db MOVF 0xdb,0x0,0x0001a88 6ea8 MOVWF 0xa8,0x0001a8a 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001a8c 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001a8e 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001a90 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001a92 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001a94 6ea7 MOVWF 0xa7,0x0001a96 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001a98 6ea7 MOVWF 0xa7,0x0001a9a 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001a9c 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001a9e a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001aa0 d7fe BRA 0x1a9e001aa2 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001aa4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001aa6 cfe7 MOVFF 0xfe7,0xfd9001aa8 ffd9001aaa 0012 RETURN 0x0