Rev 138 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Nov 20 21:27:30 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.c0016a6 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c0016a8 6e6f MOVWF 0x6f,0x00016aa 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 146e ANDWF 0x6e,0x0,0x00016ae 0880 SUBLW 0x800016b0 e001 BZ 0x16b40016b2 d7fb BRA 0x16aaF:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0016b4 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.c0016b6 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 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.c0016ba 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c0016bc 1070 IORWF 0x70,0x0,0x00016be 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c0016c0 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.c0016c2 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c4 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c6 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.c0016c8 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ca 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016cc 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.c0016ce 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.c0016d0 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.c0016d2 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d4 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d6 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0016d8 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016da 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c0016dc 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.c0016de 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c0016e0 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.c0016e2 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016e4 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c0016e6 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0016e8 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ea 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c0016ec 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.c0016ee 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.c0016f0 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c0016f2 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c0016f4 146e ANDWF 0x6e,0x0,0x00016f6 e001 BZ 0x16fa0016f8 d7fc BRA 0x16f2#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0016fa 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.c0016fc 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c0016fe 0b02 ANDLW 0x2001700 e106 BNZ 0x170e001702 50a4 MOVF 0xa4,0x0,0x0001704 0b02 ANDLW 0x2001706 e103 BNZ 0x170e001708 50a4 MOVF 0xa4,0x0,0x000170a 0b01 ANDLW 0x100170c e016 BZ 0x173a{ F:\MCP\projects\CAN\canBase\Source\CAN.c00170e 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001710 146f ANDWF 0x6f,0x0,0x0001712 0910 IORLW 0x10001714 6e14 MOVWF 0x14,0x0001716 0e00 MOVLW 0x0001718 1477 ANDWF 0x77,0x0,0x000171a 1014 IORWF 0x14,0x0,0x000171c 6e77 MOVWF 0x77,0x000171e be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c001720 d80d RCALL 0x173cF:\MCP\projects\CAN\canBase\Source\CAN.c001722 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001724 d002 BRA 0x172a001726 92a4 BCF 0xa4,0x1,0x0001728 d008 BRA 0x173a00172a a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00172c d002 BRA 0x173200172e 92a4 BCF 0xa4,0x1,0x0001730 d004 BRA 0x173a001732 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001734 d002 BRA 0x173a001736 90a4 BCF 0xa4,0x0,0x0001738 d000 BRA 0x173a} F:\MCP\projects\CAN\canBase\Source\CAN.c00173a 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.c00173c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00173e ffe6001740 cfe1 MOVFF 0xfe1,0xfd9001742 ffd9001744 0e0f MOVLW 0xf001746 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.c001748 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00174a 1461 ANDWF 0x61,0x0,0x000174c 38e8 SWAPF 0xe8,0x0,0x000174e 0b0f ANDLW 0xf001750 6edf MOVWF 0xdf,0x0001752 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.c001754 1461 ANDWF 0x61,0x0,0x0001756 6e1a MOVWF 0x1a,0x0001758 6a1b CLRF 0x1b,0x000175a 0e06 MOVLW 0x600175c 90d8 BCF 0xd8,0x0,0x000175e 361a RLCF 0x1a,0x1,0x0001760 361b RLCF 0x1b,0x1,0x0001762 04e8 DECF 0xe8,0x0,0x0001764 e1fb BNZ 0x175c001766 0ee0 MOVLW 0xe0001768 1462 ANDWF 0x62,0x0,0x000176a 6e1c MOVWF 0x1c,0x000176c 6a1d CLRF 0x1d,0x000176e 90d8 BCF 0xd8,0x0,0x0001770 321d RRCF 0x1d,0x1,0x0001772 321c RRCF 0x1c,0x1,0x0001774 90d8 BCF 0xd8,0x0,0x0001776 321d RRCF 0x1d,0x1,0x0001778 321c RRCF 0x1c,0x1,0x000177a 501a MOVF 0x1a,0x0,0x000177c 241c ADDWF 0x1c,0x0,0x000177e 6e18 MOVWF 0x18,0x0001780 501b MOVF 0x1b,0x0,0x0001782 201d ADDWFC 0x1d,0x0,0x0001784 6e19 MOVWF 0x19,0x0001786 0e03 MOVLW 0x3001788 1462 ANDWF 0x62,0x0,0x000178a 6e1e MOVWF 0x1e,0x000178c 6a1f CLRF 0x1f,0x000178e 90d8 BCF 0xd8,0x0,0x0001790 361e RLCF 0x1e,0x1,0x0001792 361f RLCF 0x1f,0x1,0x0001794 5018 MOVF 0x18,0x0,0x0001796 241e ADDWF 0x1e,0x0,0x0001798 6e16 MOVWF 0x16,0x000179a 5019 MOVF 0x19,0x0,0x000179c 201f ADDWFC 0x1f,0x0,0x000179e 6e17 MOVWF 0x17,0x00017a0 0e80 MOVLW 0x800017a2 1463 ANDWF 0x63,0x0,0x00017a4 6e20 MOVWF 0x20,0x00017a6 6a21 CLRF 0x21,0x00017a8 0e07 MOVLW 0x70017aa 90d8 BCF 0xd8,0x0,0x00017ac 3221 RRCF 0x21,0x1,0x00017ae 3220 RRCF 0x20,0x1,0x00017b0 04e8 DECF 0xe8,0x0,0x00017b2 e1fb BNZ 0x17aa0017b4 5016 MOVF 0x16,0x0,0x00017b6 2420 ADDWF 0x20,0x0,0x00017b8 6e14 MOVWF 0x14,0x00017ba 5017 MOVF 0x17,0x0,0x00017bc 2021 ADDWFC 0x21,0x0,0x00017be 6e15 MOVWF 0x15,0x00017c0 0e01 MOVLW 0x10017c2 c014 MOVFF 0x14,0xfdb0017c4 ffdb0017c6 0e02 MOVLW 0x20017c8 c015 MOVFF 0x15,0xfdb0017ca ffdb0017cc 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0017ce 1463 ANDWF 0x63,0x0,0x00017d0 40e8 RRNCF 0xe8,0x0,0x00017d2 0b7f ANDLW 0x7f0017d4 6ee7 MOVWF 0xe7,0x00017d6 0e03 MOVLW 0x30017d8 cfe7 MOVFF 0xfe7,0xfdb0017da ffdb0017dc 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c0017de 1463 ANDWF 0x63,0x0,0x00017e0 6e16 MOVWF 0x16,0x00017e2 c016 MOVFF 0x16,0x170017e4 f0170017e6 6a16 CLRF 0x16,0x00017e8 5064 MOVF 0x64,0x0,0x00017ea 0100 MOVLB 0x00017ec 2416 ADDWF 0x16,0x0,0x00017ee 6e14 MOVWF 0x14,0x00017f0 0e00 MOVLW 0x00017f2 2017 ADDWFC 0x17,0x0,0x00017f4 6e15 MOVWF 0x15,0x00017f6 0e04 MOVLW 0x40017f8 c014 MOVFF 0x14,0xfdb0017fa ffdb0017fc 0e05 MOVLW 0x50017fe c015 MOVFF 0x15,0xfdb001800 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001802 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.c001804 0b01 ANDLW 0x1001806 6e16 MOVWF 0x16,0x0001808 5065 MOVF 0x65,0x0,0x000180a 0b02 ANDLW 0x200180c e001 BZ 0x181000180e 0e01 MOVLW 0x1001810 24e8 ADDWF 0xe8,0x0,0x0001812 6e15 MOVWF 0x15,0x0001814 5065 MOVF 0x65,0x0,0x0001816 0b04 ANDLW 0x4001818 e001 BZ 0x181c00181a 0e01 MOVLW 0x100181c 0d04 MULLW 0x400181e cff3 MOVFF 0xff3,0x14001820 f014001822 5065 MOVF 0x65,0x0,0x0001824 0b08 ANDLW 0x8001826 e001 BZ 0x182a001828 0e01 MOVLW 0x100182a 0d08 MULLW 0x800182c 50f3 MOVF 0xf3,0x0,0x000182e 2414 ADDWF 0x14,0x0,0x0001830 2415 ADDWF 0x15,0x0,0x0001832 2416 ADDWF 0x16,0x0,0x0001834 6ee7 MOVWF 0xe7,0x0001836 0e06 MOVLW 0x6001838 cfe7 MOVFF 0xfe7,0xfdb00183a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00183c 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00183e cf66 MOVFF 0xf66,0xfdb001840 ffdb001842 0e08 MOVLW 0x8001844 cf67 MOVFF 0xf67,0xfdb001846 ffdb001848 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00184a cf68 MOVFF 0xf68,0xfdb00184c ffdb00184e 0e0a MOVLW 0xa001850 cf69 MOVFF 0xf69,0xfdb001852 ffdb001854 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001856 cf6a MOVFF 0xf6a,0xfdb001858 ffdb00185a 0e0c MOVLW 0xc00185c cf6b MOVFF 0xf6b,0xfdb00185e ffdb001860 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001862 cf6c MOVFF 0xf6c,0xfdb001864 ffdb001866 0e0e MOVLW 0xe001868 cf6d MOVFF 0xf6d,0xfdb00186a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00186c 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.c00186e cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c001870 ffe9001872 cfda MOVFF 0xfda,0xfea001874 ffea001876 cfee MOVFF 0xfee,0xfe6001878 ffe600187a cfee MOVFF 0xfee,0xfe600187c ffe600187e cfee MOVFF 0xfee,0xfe6001880 ffe6001882 cfee MOVFF 0xfee,0xfe6001884 ffe6001886 cfee MOVFF 0xfee,0xfe6001888 ffe600188a cfee MOVFF 0xfee,0xfe600188c ffe600188e cfee MOVFF 0xfee,0xfe6001890 ffe6001892 cfee MOVFF 0xfee,0xfe6001894 ffe6001896 cfee MOVFF 0xfee,0xfe6001898 ffe600189a cfee MOVFF 0xfee,0xfe600189c ffe600189e cfee MOVFF 0xfee,0xfe60018a0 ffe60018a2 cfee MOVFF 0xfee,0xfe60018a4 ffe60018a6 cfee MOVFF 0xfee,0xfe60018a8 ffe60018aa cfee MOVFF 0xfee,0xfe60018ac ffe60018ae cfee MOVFF 0xfee,0xfe60018b0 ffe60018b2 ec8c CALL 0x1518,0x00018b4 f00a0018b6 6e14 MOVWF 0x14,0x00018b8 0e0f MOVLW 0xf0018ba 5ee1 SUBWF 0xe1,0x1,0x00018bc 5014 MOVF 0x14,0x0,0x00018be 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c0018c0 5ce1 SUBWF 0xe1,0x0,0x00018c2 e202 BC 0x18c80018c4 6ae1 CLRF 0xe1,0x00018c6 52e5 MOVF 0xe5,0x1,0x00018c8 6ee1 MOVWF 0xe1,0x00018ca 52e5 MOVF 0xe5,0x1,0x00018cc cfe7 MOVFF 0xfe7,0xfd90018ce ffd90018d0 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.c0018d2 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0018d4 ffe60018d6 cfe1 MOVFF 0xfe1,0xfd90018d8 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0018da 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0018dc b740 BTFSC 0x40,0x3,0x10018de d004 BRA 0x18e80018e0 0e00 MOVLW 0x00018e2 1477 ANDWF 0x77,0x0,0x00018e4 0903 IORLW 0x30018e6 6e77 MOVWF 0x77,0x00018e8 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0018ea b730 BTFSC 0x30,0x3,0x10018ec d004 BRA 0x18f60018ee 0e00 MOVLW 0x00018f0 1477 ANDWF 0x77,0x0,0x00018f2 0904 IORLW 0x40018f4 6e77 MOVWF 0x77,0x00018f6 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0018f8 b720 BTFSC 0x20,0x3,0x10018fa d005 BRA 0x19060018fc 0e00 MOVLW 0x00018fe 1477 ANDWF 0x77,0x0,0x0001900 0905 IORLW 0x5001902 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001904 d002 BRA 0x190a else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001906 0e00 MOVLW 0x0001908 d0b0 BRA 0x1a6aF:\MCP\projects\CAN\canBase\Source\CAN.c00190a 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00190c cfdb MOVFF 0xfdb,0x1400190e f014001910 3414 RLCF 0x14,0x0,0x0001912 e20e BC 0x1930001914 0eef MOVLW 0xef001916 cfdb MOVFF 0xfdb,0x15001918 f01500191a 0e03 MOVLW 0x300191c 6ee7 MOVWF 0xe7,0x000191e 1815 XORWF 0x15,0x0,0x0001920 aee8 BTFSS 0xe8,0x7,0x0001922 d002 BRA 0x1928001924 3415 RLCF 0x15,0x0,0x0001926 d003 BRA 0x192e001928 50e7 MOVF 0xe7,0x0,0x000192a 80d8 BSF 0xd8,0x0,0x000192c 5415 SUBFWB 0x15,0x0,0x000192e e202 BC 0x1934001930 0eef MOVLW 0xef001932 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.c001934 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c001936 cfdb MOVFF 0xfdb,0x14001938 f01400193a 0ef2 MOVLW 0xf200193c cfdb MOVFF 0xfdb,0x1500193e f015001940 0ec0 MOVLW 0xc0001942 1614 ANDWF 0x14,0x1,0x0001944 0e03 MOVLW 0x3001946 1615 ANDWF 0x15,0x1,0x0001948 0e06 MOVLW 0x600194a 90d8 BCF 0xd8,0x0,0x000194c 3215 RRCF 0x15,0x1,0x000194e 3214 RRCF 0x14,0x1,0x0001950 04e8 DECF 0xe8,0x0,0x0001952 e1fb BNZ 0x194a001954 0ef0 MOVLW 0xf0001956 50db MOVF 0xdb,0x0,0x0001958 0b0f ANDLW 0xf00195a 0d10 MULLW 0x1000195c 50f3 MOVF 0xf3,0x0,0x000195e 2414 ADDWF 0x14,0x0,0x0001960 6e61 MOVWF 0x61,0x0001962 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001964 6ee7 MOVWF 0xe7,0x0001966 0ef1 MOVLW 0xf1001968 cfdb MOVFF 0xfdb,0x1600196a f01600196c 0ef2 MOVLW 0xf200196e cfdb MOVFF 0xfdb,0x17001970 f017001972 50e7 MOVF 0xe7,0x0,0x0001974 1616 ANDWF 0x16,0x1,0x0001976 6a17 CLRF 0x17,0x0001978 90d8 BCF 0xd8,0x0,0x000197a 3217 RRCF 0x17,0x1,0x000197c 3216 RRCF 0x16,0x1,0x000197e 0e3f MOVLW 0x3f001980 6ee7 MOVWF 0xe7,0x0001982 0ef1 MOVLW 0xf1001984 cfdb MOVFF 0xfdb,0x14001986 f014001988 0ef2 MOVLW 0xf200198a cfdb MOVFF 0xfdb,0x1500198c f01500198e 50e7 MOVF 0xe7,0x0,0x0001990 1614 ANDWF 0x14,0x1,0x0001992 6a15 CLRF 0x15,0x0001994 90d8 BCF 0xd8,0x0,0x0001996 3614 RLCF 0x14,0x1,0x0001998 3615 RLCF 0x15,0x1,0x000199a 90d8 BCF 0xd8,0x0,0x000199c 3614 RLCF 0x14,0x1,0x000199e 3615 RLCF 0x15,0x1,0x00019a0 5014 MOVF 0x14,0x0,0x00019a2 2416 ADDWF 0x16,0x0,0x00019a4 6e62 MOVWF 0x62,0x00019a6 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.c0019a8 cfdb MOVFF 0xfdb,0x160019aa f0160019ac 0ef5 MOVLW 0xf50019ae cfdb MOVFF 0xfdb,0x170019b0 f0170019b2 0e00 MOVLW 0x00019b4 1616 ANDWF 0x16,0x1,0x00019b6 0e01 MOVLW 0x10019b8 1617 ANDWF 0x17,0x1,0x00019ba c017 MOVFF 0x17,0x160019bc f0160019be 6a17 CLRF 0x17,0x00019c0 0e01 MOVLW 0x10019c2 6ee7 MOVWF 0xe7,0x00019c4 0ef1 MOVLW 0xf10019c6 cfdb MOVFF 0xfdb,0x140019c8 f0140019ca 0ef2 MOVLW 0xf20019cc cfdb MOVFF 0xfdb,0x150019ce f0150019d0 50e7 MOVF 0xe7,0x0,0x00019d2 1614 ANDWF 0x14,0x1,0x00019d4 6a15 CLRF 0x15,0x00019d6 0e07 MOVLW 0x70019d8 90d8 BCF 0xd8,0x0,0x00019da 3614 RLCF 0x14,0x1,0x00019dc 3615 RLCF 0x15,0x1,0x00019de 04e8 DECF 0xe8,0x0,0x00019e0 e1fb BNZ 0x19d80019e2 0ef3 MOVLW 0xf30019e4 50db MOVF 0xdb,0x0,0x00019e6 0b3f ANDLW 0x3f0019e8 24e8 ADDWF 0xe8,0x0,0x00019ea 2414 ADDWF 0x14,0x0,0x00019ec 2416 ADDWF 0x16,0x0,0x00019ee 6e63 MOVWF 0x63,0x00019f0 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c0019f2 6ee7 MOVWF 0xe7,0x00019f4 0ef4 MOVLW 0xf40019f6 cfdb MOVFF 0xfdb,0x140019f8 f0140019fa 0ef5 MOVLW 0xf50019fc cfdb MOVFF 0xfdb,0x150019fe f015001a00 50e7 MOVF 0xe7,0x0,0x0001a02 1614 ANDWF 0x14,0x1,0x0001a04 6a15 CLRF 0x15,0x0001a06 5014 MOVF 0x14,0x0,0x0001a08 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001a0a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001a0c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001a0e 50db MOVF 0xdb,0x0,0x0001a10 0808 SUBLW 0x8001a12 e203 BC 0x1a1a001a14 0e08 MOVLW 0x8001a16 6e65 MOVWF 0x65,0x0001a18 d003 BRA 0x1a20001a1a 0ef6 MOVLW 0xf6001a1c 50db MOVF 0xdb,0x0,0x0001a1e 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.c001a20 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.c001a22 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001a24 50db MOVF 0xdb,0x0,0x0001a26 6e66 MOVWF 0x66,0x0001a28 0ef8 MOVLW 0xf8001a2a 50db MOVF 0xdb,0x0,0x0001a2c 6e67 MOVWF 0x67,0x0001a2e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001a30 50db MOVF 0xdb,0x0,0x0001a32 6e68 MOVWF 0x68,0x0001a34 0efa MOVLW 0xfa001a36 50db MOVF 0xdb,0x0,0x0001a38 6e69 MOVWF 0x69,0x0001a3a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c001a3c 50db MOVF 0xdb,0x0,0x0001a3e 6e6a MOVWF 0x6a,0x0001a40 0efc MOVLW 0xfc001a42 50db MOVF 0xdb,0x0,0x0001a44 6e6b MOVWF 0x6b,0x0001a46 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001a48 50db MOVF 0xdb,0x0,0x0001a4a 6e6c MOVWF 0x6c,0x0001a4c 0efe MOVLW 0xfe001a4e 50db MOVF 0xdb,0x0,0x0001a50 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001a52 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.c001a54 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001a56 cfdb MOVFF 0xfdb,0xfe6001a58 ffe6001a5a 0efc MOVLW 0xfc001a5c 1460 ANDWF 0x60,0x0,0x0001a5e 52e5 MOVF 0xe5,0x1,0x0001a60 10e7 IORWF 0xe7,0x0,0x0001a62 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.c001a64 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.c001a66 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c001a68 d000 BRA 0x1a6aF:\MCP\projects\CAN\canBase\Source\CAN.c001a6a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c001a6c cfe7 MOVFF 0xfe7,0xfd9001a6e ffd9001a70 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.c002018 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00201a 6ed6 MOVWF 0xd6,0x000201c 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c00201e 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.c002020 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c002022 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c002024 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c002026 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c002028 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c00202a 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.c00202c c084 MOVFF 0x84,0x6 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c00202e f006002030 c085 MOVFF 0x85,0x7002032 f007002034 c086 MOVFF 0x86,0x8002036 f008002038 c087 MOVFF 0x87,0x900203a f00900203c d000 BRA 0x203e00203e 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.c002040 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c002042 d00b BRA 0x205a{ F:\MCP\projects\CAN\canBase\Source\Tick.c002044 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c002046 6ed7 MOVWF 0xd7,0x0002048 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00204a 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c00204c 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c00204e 2b84 INCF 0x84,0x1,0x1002050 0e00 MOVLW 0x0002052 2385 ADDWFC 0x85,0x1,0x1002054 2386 ADDWFC 0x86,0x1,0x1002056 2387 ADDWFC 0x87,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c002058 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c00205a 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Main application F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/Main.c $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Last changed: $LastChangedDate: 2006-11-20 17:54:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 129 $ F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canTemp\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c#include <adc.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001050 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c001052 ffe6001054 cfe1 MOVFF 0xfe1,0xfd9001056 ffd9001058 0e11 MOVLW 0x1100105a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c00105c da58 RCALL 0x150e mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canTemp\Source\Main.c00105e ec53 CALL 0x16a6,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c001060 f00b#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c001062 0e0b MOVLW 0xb adcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c001064 6ee6 MOVWF 0xe6,0x0001066 0e01 MOVLW 0x1001068 6ee6 MOVWF 0xe6,0x000106a ec39 CALL 0x1a72,0x000106c f00d00106e 52e5 MOVF 0xe5,0x1,0x0001070 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001072 ec0c CALL 0x2018,0x0 tickInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c001074 f010F:\MCP\projects\CAN\canTemp\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canTemp\Source\Main.c001076 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canTemp\Source\Main.c001078 6ee6 MOVWF 0xe6,0x000107a 6ae6 CLRF 0xe6,0x000107c ecb8 CALL 0x1d70,0x000107e f00e001080 52e5 MOVF 0xe5,0x1,0x0001082 52e5 MOVF 0xe5,0x1,0x0001084 082a SUBLW 0x2a001086 e12b BNZ 0x10de{ F:\MCP\projects\CAN\canTemp\Source\Main.c001088 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canTemp\Source\Main.c00108a 6ee6 MOVWF 0xe6,0x000108c 6ae6 CLRF 0xe6,0x000108e ecb8 CALL 0x1d70,0x0001090 f00e001092 52e5 MOVF 0xe5,0x1,0x0001094 52e5 MOVF 0xe5,0x1,0x0001096 6e14 MOVWF 0x14,0x0001098 c014 MOVFF 0x14,0x1500109a f01500109c 6a14 CLRF 0x14,0x000109e c014 MOVFF 0x14,0xfe60010a0 ffe60010a2 c015 MOVFF 0x15,0xfe60010a4 ffe60010a6 0e02 MOVLW 0x20010a8 6ee6 MOVWF 0xe6,0x00010aa 6ae6 CLRF 0xe6,0x00010ac ecb8 CALL 0x1d70,0x00010ae f00e0010b0 52e5 MOVF 0xe5,0x1,0x00010b2 52e5 MOVF 0xe5,0x1,0x00010b4 52e5 MOVF 0xe5,0x1,0x00010b6 cfe7 MOVFF 0xfe7,0x150010b8 f0150010ba 52e5 MOVF 0xe5,0x1,0x00010bc cfe7 MOVFF 0xfe7,0x140010be f0140010c0 0100 MOVLB 0x00010c2 2414 ADDWF 0x14,0x0,0x00010c4 6f60 MOVWF 0x60,0x10010c6 0e00 MOVLW 0x00010c8 2015 ADDWFC 0x15,0x0,0x00010ca 6f61 MOVWF 0x61,0x10010cc 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canTemp\Source\Main.c0010ce 6ee6 MOVWF 0xe6,0x00010d0 6ae6 CLRF 0xe6,0x00010d2 ecb8 CALL 0x1d70,0x00010d4 f00e0010d6 52e5 MOVF 0xe5,0x1,0x00010d8 52e5 MOVF 0xe5,0x1,0x00010da 0100 MOVLB 0x00010dc 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Send user program startup heatbeat F:\MCP\projects\CAN\canTemp\Source\Main.c0010de 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canTemp\Source\Main.c0010e0 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canTemp\Source\Main.c0010e2 6ef3 MOVWF 0xf3,0x00010e4 0e01 MOVLW 0x10010e6 cff3 MOVFF 0xff3,0xfdb0010e8 ffdb0010ea 0e02 MOVLW 0x20010ec 6adb CLRF 0xdb,0x00010ee 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canTemp\Source\Main.c0010f0 c062 MOVFF 0x62,0xfdb0010f2 ffdb0010f4 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canTemp\Source\Main.c0010f6 c060 MOVFF 0x60,0xfdb0010f8 ffdb0010fa 0e05 MOVLW 0x50010fc c061 MOVFF 0x61,0xfdb0010fe ffdb001100 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c001102 6ef3 MOVWF 0xf3,0x0001104 0e06 MOVLW 0x6001106 cff3 MOVFF 0xff3,0xfdb001108 ffdb00110a 0e01 MOVLW 0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canTemp\Source\Main.c00110c 6ef3 MOVWF 0xf3,0x000110e 0e07 MOVLW 0x7001110 cff3 MOVFF 0xff3,0xfdb001112 ffdb001114 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c001116 6ee6 MOVWF 0xe6,0x0001118 cfd9 MOVFF 0xfd9,0xfe900111a ffe900111c cfda MOVFF 0xfda,0xfea00111e ffea001120 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 cfee MOVFF 0xfee,0xfe6001142 ffe6001144 cfee MOVFF 0xfee,0xfe6001146 ffe6001148 cfee MOVFF 0xfee,0xfe600114a ffe600114c cfee MOVFF 0xfee,0xfe600114e ffe6001150 cfee MOVFF 0xfee,0xfe6001152 ffe6001154 cfee MOVFF 0xfee,0xfe6001156 ffe6001158 cfee MOVFF 0xfee,0xfe600115a ffe600115c ec69 CALL 0x18d2,0x000115e f00c001160 6e14 MOVWF 0x14,0x0001162 0e10 MOVLW 0x10001164 5ee1 SUBWF 0xe1,0x1,0x0001166 5014 MOVF 0x14,0x0,0x0001168 0900 IORLW 0x000116a e101 BNZ 0x116e00116c d7d3 BRA 0x1114F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c0013c6 d6d3 BRA 0x116e while(1) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK temperature = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic BYTE lastTemperature = TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c00116e ec16 CALL 0x202c,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canTemp\Source\Main.c001170 f010001172 0100 MOVLB 0x0001174 516b MOVF 0x6b,0x0,0x1001176 5c06 SUBWF 0x6,0x0,0x0001178 6e14 MOVWF 0x14,0x000117a 516c MOVF 0x6c,0x0,0x100117c 5807 SUBWFB 0x7,0x0,0x000117e 6e15 MOVWF 0x15,0x0001180 516d MOVF 0x6d,0x0,0x1001182 5808 SUBWFB 0x8,0x0,0x0001184 6e16 MOVWF 0x16,0x0001186 516e MOVF 0x6e,0x0,0x1001188 5809 SUBWFB 0x9,0x0,0x000118a 6e17 MOVWF 0x17,0x000118c 80d8 BSF 0xd8,0x0,0x000118e 0ef4 MOVLW 0xf4001190 5414 SUBFWB 0x14,0x0,0x0001192 0e01 MOVLW 0x1001194 5415 SUBFWB 0x15,0x0,0x0001196 0e00 MOVLW 0x0001198 5416 SUBFWB 0x16,0x0,0x000119a 0e00 MOVLW 0x000119c 5417 SUBFWB 0x17,0x0,0x000119e e252 BC 0x1244{ F:\MCP\projects\CAN\canTemp\Source\Main.c// Send alive heartbeat F:\MCP\projects\CAN\canTemp\Source\Main.c0011a0 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canTemp\Source\Main.c0011a2 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canTemp\Source\Main.c0011a4 6ef3 MOVWF 0xf3,0x00011a6 0e01 MOVLW 0x10011a8 cff3 MOVFF 0xff3,0xfdb0011aa ffdb0011ac 0e02 MOVLW 0x20011ae 6adb CLRF 0xdb,0x00011b0 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canTemp\Source\Main.c0011b2 c062 MOVFF 0x62,0xfdb0011b4 ffdb0011b6 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canTemp\Source\Main.c0011b8 c060 MOVFF 0x60,0xfdb0011ba ffdb0011bc 0e05 MOVLW 0x50011be c061 MOVFF 0x61,0xfdb0011c0 ffdb0011c2 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c0011c4 6ef3 MOVWF 0xf3,0x00011c6 0e06 MOVLW 0x60011c8 cff3 MOVFF 0xff3,0xfdb0011ca ffdb0011cc 0e02 MOVLW 0x2 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canTemp\Source\Main.c0011ce 6ef3 MOVWF 0xf3,0x00011d0 0e07 MOVLW 0x70011d2 cff3 MOVFF 0xff3,0xfdb0011d4 ffdb0011d6 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c0011d8 6ee6 MOVWF 0xe6,0x00011da cfd9 MOVFF 0xfd9,0xfe90011dc ffe90011de cfda MOVFF 0xfda,0xfea0011e0 ffea0011e2 cfee MOVFF 0xfee,0xfe60011e4 ffe60011e6 cfee MOVFF 0xfee,0xfe60011e8 ffe60011ea cfee MOVFF 0xfee,0xfe60011ec ffe60011ee cfee MOVFF 0xfee,0xfe60011f0 ffe60011f2 cfee MOVFF 0xfee,0xfe60011f4 ffe60011f6 cfee MOVFF 0xfee,0xfe60011f8 ffe60011fa cfee MOVFF 0xfee,0xfe60011fc ffe60011fe cfee MOVFF 0xfee,0xfe6001200 ffe6001202 cfee MOVFF 0xfee,0xfe6001204 ffe6001206 cfee MOVFF 0xfee,0xfe6001208 ffe600120a cfee MOVFF 0xfee,0xfe600120c ffe600120e cfee MOVFF 0xfee,0xfe6001210 ffe6001212 cfee MOVFF 0xfee,0xfe6001214 ffe6001216 cfee MOVFF 0xfee,0xfe6001218 ffe600121a cfee MOVFF 0xfee,0xfe600121c ffe600121e ec69 CALL 0x18d2,0x0001220 f00c001222 6e14 MOVWF 0x14,0x0001224 0e10 MOVLW 0x10001226 5ee1 SUBWF 0xe1,0x1,0x0001228 5014 MOVF 0x14,0x0,0x000122a 0900 IORLW 0x000122c e101 BNZ 0x123000122e d7d3 BRA 0x11d6F:\MCP\projects\CAN\canTemp\Source\Main.c001230 ec16 CALL 0x202c,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c001232 f010001234 c006 MOVFF 0x6,0x6b001236 f06b001238 c007 MOVFF 0x7,0x6c00123a f06c00123c c008 MOVFF 0x8,0x6d00123e f06d001240 c009 MOVFF 0x9,0x6e001242 f06e} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001244 ec16 CALL 0x202c,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c001246 f010001248 0100 MOVLB 0x000124a 5167 MOVF 0x67,0x0,0x100124c 5c06 SUBWF 0x6,0x0,0x000124e 6e14 MOVWF 0x14,0x0001250 5168 MOVF 0x68,0x0,0x1001252 5807 SUBWFB 0x7,0x0,0x0001254 6e15 MOVWF 0x15,0x0001256 5169 MOVF 0x69,0x0,0x1001258 5808 SUBWFB 0x8,0x0,0x000125a 6e16 MOVWF 0x16,0x000125c 516a MOVF 0x6a,0x0,0x100125e 5809 SUBWFB 0x9,0x0,0x0001260 6e17 MOVWF 0x17,0x0001262 80d8 BSF 0xd8,0x0,0x0001264 0e64 MOVLW 0x64001266 5414 SUBFWB 0x14,0x0,0x0001268 0e00 MOVLW 0x000126a 5415 SUBFWB 0x15,0x0,0x000126c 0e00 MOVLW 0x000126e 5416 SUBFWB 0x16,0x0,0x0001270 0e00 MOVLW 0x0001272 5417 SUBFWB 0x17,0x0,0x0001274 e20b BC 0x128c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001276 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c001278 ec16 CALL 0x202c,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c00127a f01000127c c006 MOVFF 0x6,0x6700127e f067001280 c007 MOVFF 0x7,0x68001282 f068001284 c008 MOVFF 0x8,0x69001286 f069001288 c009 MOVFF 0x9,0x6a00128a f06a} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c00128c ec16 CALL 0x202c,0x0 if ((tickGet()-temperature)>TICK_SECOND*2) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c00128e f010001290 0100 MOVLB 0x0001292 516f MOVF 0x6f,0x0,0x1001294 5c06 SUBWF 0x6,0x0,0x0001296 6e14 MOVWF 0x14,0x0001298 5170 MOVF 0x70,0x0,0x100129a 5807 SUBWFB 0x7,0x0,0x000129c 6e15 MOVWF 0x15,0x000129e 5171 MOVF 0x71,0x0,0x10012a0 5808 SUBWFB 0x8,0x0,0x00012a2 6e16 MOVWF 0x16,0x00012a4 5172 MOVF 0x72,0x0,0x10012a6 5809 SUBWFB 0x9,0x0,0x00012a8 6e17 MOVWF 0x17,0x00012aa 80d8 BSF 0xd8,0x0,0x00012ac 0ec8 MOVLW 0xc80012ae 5414 SUBFWB 0x14,0x0,0x00012b0 0e00 MOVLW 0x00012b2 5415 SUBFWB 0x15,0x0,0x00012b4 0e00 MOVLW 0x00012b6 5416 SUBFWB 0x16,0x0,0x00012b8 0e00 MOVLW 0x00012ba 5417 SUBFWB 0x17,0x0,0x00012bc e215 BC 0x12e8{ F:\MCP\projects\CAN\canTemp\Source\Main.c0012be 5173 MOVF 0x73,0x0,0x1 if (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.c0012c0 e103 BNZ 0x12c80012c2 0e01 MOVLW 0x10012c4 6f73 MOVWF 0x73,0x10012c6 d001 BRA 0x12ca0012c8 6b73 CLRF 0x73,0x10012ca c073 MOVFF 0x73,0xfe6 adcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.c0012cc ffe60012ce eca7 CALL 0x1b4e,0x00012d0 f00d0012d2 52e5 MOVF 0xe5,0x1,0x00012d4 ec16 CALL 0x202c,0x0 temperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c0012d6 f0100012d8 c006 MOVFF 0x6,0x6f0012da f06f0012dc c007 MOVFF 0x7,0x700012de f0700012e0 c008 MOVFF 0x8,0x710012e2 f0710012e4 c009 MOVFF 0x9,0x720012e6 f072} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c0012e8 ecb4 CALL 0x1d68,0x0 if (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c0012ea f00e0012ec 0900 IORLW 0x00012ee e06b BZ 0x13c6{ F:\MCP\projects\CAN\canTemp\Source\Main.cBYTE decimal; F:\MCP\projects\CAN\canTemp\Source\Main.csigned char tenth; F:\MCP\projects\CAN\canTemp\Source\Main.c0012f0 50d9 MOVF 0xd9,0x0,0x0 temperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.c0012f2 0f0f ADDLW 0xf0012f4 6ee6 MOVWF 0xe6,0x00012f6 0e00 MOVLW 0x00012f8 20da ADDWFC 0xda,0x0,0x00012fa 6ee6 MOVWF 0xe6,0x00012fc 50d9 MOVF 0xd9,0x0,0x00012fe 0f10 ADDLW 0x10001300 6ee6 MOVWF 0xe6,0x0001302 0e00 MOVLW 0x0001304 20da ADDWFC 0xda,0x0,0x0001306 6ee6 MOVWF 0xe6,0x0001308 ecd2 CALL 0x1ba4,0x000130a f00d00130c 52e5 MOVF 0xe5,0x1,0x000130e 52e5 MOVF 0xe5,0x1,0x0001310 52e5 MOVF 0xe5,0x1,0x0001312 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canTemp\Source\Main.c001314 0e01 MOVLW 0x1 outCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canTemp\Source\Main.c001316 6edf MOVWF 0xdf,0x0001318 0100 MOVLB 0x0 outCm.funcc = (lastTemperature==TEMPERATURE_INSIDE?FUNCC_SENSORS_TEMPERATURE_INSIDE:FUNCC_SENSORS_TEMPERATURE_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.c00131a 5173 MOVF 0x73,0x0,0x100131c e102 BNZ 0x132200131e 0e02 MOVLW 0x2001320 d001 BRA 0x1324001322 0e03 MOVLW 0x3001324 6e14 MOVWF 0x14,0x0001326 6a15 CLRF 0x15,0x0001328 be14 BTFSC 0x14,0x7,0x000132a 6815 SETF 0x15,0x000132c 0e01 MOVLW 0x100132e c014 MOVFF 0x14,0xfdb001330 ffdb001332 0e02 MOVLW 0x2001334 c015 MOVFF 0x15,0xfdb001336 ffdb001338 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canTemp\Source\Main.c00133a c062 MOVFF 0x62,0xfdb00133c ffdb00133e 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canTemp\Source\Main.c001340 c060 MOVFF 0x60,0xfdb001342 ffdb001344 0e05 MOVLW 0x5001346 c061 MOVFF 0x61,0xfdb001348 ffdb00134a 0e02 MOVLW 0x2 outCm.data_length = 2; F:\MCP\projects\CAN\canTemp\Source\Main.c00134c 6ef3 MOVWF 0xf3,0x000134e 0e06 MOVLW 0x6001350 cff3 MOVFF 0xff3,0xfdb001352 ffdb001354 0e10 MOVLW 0x10 outCm.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.c001356 50db MOVF 0xdb,0x0,0x0001358 6ee7 MOVWF 0xe7,0x000135a 0e08 MOVLW 0x800135c cfe7 MOVFF 0xfe7,0xfdb00135e ffdb001360 0e0f MOVLW 0xf outCm.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.c001362 50db MOVF 0xdb,0x0,0x0001364 6ee7 MOVWF 0xe7,0x0001366 0e07 MOVLW 0x7001368 cfe7 MOVFF 0xfe7,0xfdb00136a ffdb00136c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c00136e 6ee6 MOVWF 0xe6,0x0001370 cfd9 MOVFF 0xfd9,0xfe9001372 ffe9001374 cfda MOVFF 0xfda,0xfea001376 ffea001378 cfee MOVFF 0xfee,0xfe600137a ffe600137c cfee MOVFF 0xfee,0xfe600137e ffe6001380 cfee MOVFF 0xfee,0xfe6001382 ffe6001384 cfee MOVFF 0xfee,0xfe6001386 ffe6001388 cfee MOVFF 0xfee,0xfe600138a ffe600138c cfee MOVFF 0xfee,0xfe600138e ffe6001390 cfee MOVFF 0xfee,0xfe6001392 ffe6001394 cfee MOVFF 0xfee,0xfe6001396 ffe6001398 cfee MOVFF 0xfee,0xfe600139a ffe600139c cfee MOVFF 0xfee,0xfe600139e ffe60013a0 cfee MOVFF 0xfee,0xfe60013a2 ffe60013a4 cfee MOVFF 0xfee,0xfe60013a6 ffe60013a8 cfee MOVFF 0xfee,0xfe60013aa ffe60013ac cfee MOVFF 0xfee,0xfe60013ae ffe60013b0 cfee MOVFF 0xfee,0xfe60013b2 ffe60013b4 ec69 CALL 0x18d2,0x00013b6 f00c0013b8 6e14 MOVWF 0x14,0x00013ba 0e10 MOVLW 0x100013bc 5ee1 SUBWF 0xe1,0x1,0x00013be 5014 MOVF 0x14,0x0,0x00013c0 0900 IORLW 0x00013c2 e101 BNZ 0x13c60013c4 d7d3 BRA 0x136c} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c0013c8 0e11 MOVLW 0x11 } F:\MCP\projects\CAN\canTemp\Source\Main.c0013ca 5ce1 SUBWF 0xe1,0x0,0x00013cc e202 BC 0x13d20013ce 6ae1 CLRF 0xe1,0x00013d0 52e5 MOVF 0xe5,0x1,0x00013d2 6ee1 MOVWF 0xe1,0x00013d4 52e5 MOVF 0xe5,0x1,0x00013d6 cfe7 MOVFF 0xfe7,0xfd90013d8 ffd90013da 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canTemp\Source\Main.c0013dc cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c0013de ffe40013e0 cfe2 MOVFF 0xfe2,0xfda0013e2 ffda0013e4 cfe9 MOVFF 0xfe9,0xfe40013e6 ffe40013e8 cfea MOVFF 0xfea,0xfe40013ea ffe40013ec cff6 MOVFF 0xff6,0xfe40013ee ffe40013f0 cff7 MOVFF 0xff7,0xfe40013f2 ffe40013f4 cff5 MOVFF 0xff5,0xfe40013f6 ffe40013f8 cff3 MOVFF 0xff3,0xfe40013fa ffe40013fc cff4 MOVFF 0xff4,0xfe40013fe ffe4001400 cffa MOVFF 0xffa,0xfe4001402 ffe4001404 ee00 LFSR 0x0,0x0001406 f000001408 0e14 MOVLW 0x1400140a 04e8 DECF 0xe8,0x0,0x000140c e303 BNC 0x141400140e cfee MOVFF 0xfee,0xfe4001410 ffe4001412 d7fb BRA 0x140a001414 ee00 LFSR 0x0,0x14001416 f014001418 0e0e MOVLW 0xe00141a 04e8 DECF 0xe8,0x0,0x000141c e303 BNC 0x142400141e cfee MOVFF 0xfee,0xfe4001420 ffe4001422 d7fb BRA 0x141a001424 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c001426 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canTemp\Source\Main.c001428 ec7e CALL 0x16fc,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c00142a f00b#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c00142c ec20 CALL 0x2040,0x0 tickUpdate(); F:\MCP\projects\CAN\canTemp\Source\Main.c00142e f010F:\MCP\projects\CAN\canTemp\Source\Main.c001430 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001432 ee00 LFSR 0x0,0x21001434 f021001436 0e0e MOVLW 0xe001438 04e8 DECF 0xe8,0x0,0x000143a e303 BNC 0x144200143c cfe5 MOVFF 0xfe5,0xfed00143e ffed001440 d7fb BRA 0x1438001442 ee00 LFSR 0x0,0x13001444 f013001446 0e14 MOVLW 0x14001448 04e8 DECF 0xe8,0x0,0x000144a e303 BNC 0x145200144c cfe5 MOVFF 0xfe5,0xfed00144e ffed001450 d7fb BRA 0x1448001452 cfe5 MOVFF 0xfe5,0xffa001454 fffa001456 cfe5 MOVFF 0xfe5,0xff4001458 fff400145a cfe5 MOVFF 0xfe5,0xff300145c fff300145e cfe5 MOVFF 0xfe5,0xff5001460 fff5001462 cfe5 MOVFF 0xfe5,0xff7001464 fff7001466 cfe5 MOVFF 0xfe5,0xff6001468 fff600146a cfe5 MOVFF 0xfe5,0xfea00146c ffea00146e cfe5 MOVFF 0xfe5,0xfe9001470 ffe9001472 cfe5 MOVFF 0xfe5,0xfda001474 ffda001476 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canTemp\Source\Main.c001478 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c00147a ffe400147c cfe2 MOVFF 0xfe2,0xfda00147e ffda001480 cfe9 MOVFF 0xfe9,0xfe4001482 ffe4001484 cfea MOVFF 0xfea,0xfe4001486 ffe4001488 cff6 MOVFF 0xff6,0xfe400148a ffe400148c cff7 MOVFF 0xff7,0xfe400148e ffe4001490 cff5 MOVFF 0xff5,0xfe4001492 ffe4001494 cff3 MOVFF 0xff3,0xfe4001496 ffe4001498 cff4 MOVFF 0xff4,0xfe400149a ffe400149c cffa MOVFF 0xffa,0xfe400149e ffe40014a0 ee00 LFSR 0x0,0x00014a2 f0000014a4 0e14 MOVLW 0x140014a6 04e8 DECF 0xe8,0x0,0x00014a8 e303 BNC 0x14b00014aa cfee MOVFF 0xfee,0xfe40014ac ffe40014ae d7fb BRA 0x14a60014b0 ee00 LFSR 0x0,0x140014b2 f0140014b4 0e0e MOVLW 0xe0014b6 04e8 DECF 0xe8,0x0,0x00014b8 e303 BNC 0x14c00014ba cfee MOVFF 0xfee,0xfe40014bc ffe40014be d7fb BRA 0x14b60014c0 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c0014c2 ec53 CALL 0x1aa6,0x0 adcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c0014c4 f00d#endif F:\MCP\projects\CAN\canTemp\Source\Main.c0014c6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c0014c8 ee00 LFSR 0x0,0x210014ca f0210014cc 0e0e MOVLW 0xe0014ce 04e8 DECF 0xe8,0x0,0x00014d0 e303 BNC 0x14d80014d2 cfe5 MOVFF 0xfe5,0xfed0014d4 ffed0014d6 d7fb BRA 0x14ce0014d8 ee00 LFSR 0x0,0x130014da f0130014dc 0e14 MOVLW 0x140014de 04e8 DECF 0xe8,0x0,0x00014e0 e303 BNC 0x14e80014e2 cfe5 MOVFF 0xfe5,0xfed0014e4 ffed0014e6 d7fb BRA 0x14de0014e8 cfe5 MOVFF 0xfe5,0xffa0014ea fffa0014ec cfe5 MOVFF 0xfe5,0xff40014ee fff40014f0 cfe5 MOVFF 0xfe5,0xff30014f2 fff30014f4 cfe5 MOVFF 0xfe5,0xff50014f6 fff50014f8 cfe5 MOVFF 0xfe5,0xff70014fa fff70014fc cfe5 MOVFF 0xfe5,0xff60014fe fff6001500 cfe5 MOVFF 0xfe5,0xfea001502 ffea001504 cfe5 MOVFF 0xfe5,0xfe9001506 ffe9001508 cfe5 MOVFF 0xfe5,0xfda00150a ffda00150c 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c00150e 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canTemp\Source\Main.c001510 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c001512 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canTemp\Source\Main.c001514 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001516 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canTemp\Source\Main.c001518 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canTemp\Source\Main.c00151a ffe600151c cfe1 MOVFF 0xfe1,0xfd900151e ffd9001520 0e0f MOVLW 0xf001522 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001524 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001526 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canTemp\Source\Main.c001528 50db MOVF 0xdb,0x0,0x000152a e001 BZ 0x152e00152c d0b2 BRA 0x1692{ F:\MCP\projects\CAN\canTemp\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canTemp\Source\Main.c00152e 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\canTemp\Source\Main.c001530 50db MOVF 0xdb,0x0,0x0001532 0100 MOVLB 0x0001534 5d62 SUBWF 0x62,0x0,0x1001536 e001 BZ 0x153a001538 d0ab BRA 0x169000153a 0efc MOVLW 0xfc00153c cfdb MOVFF 0xfdb,0x1600153e f016001540 c016 MOVFF 0x16,0x17001542 f017001544 6a16 CLRF 0x16,0x0001546 0efb MOVLW 0xfb001548 50db MOVF 0xdb,0x0,0x000154a 0100 MOVLB 0x000154c 2416 ADDWF 0x16,0x0,0x000154e 6e14 MOVWF 0x14,0x0001550 0e00 MOVLW 0x0001552 2017 ADDWFC 0x17,0x0,0x0001554 6e15 MOVWF 0x15,0x0001556 0100 MOVLB 0x0001558 5160 MOVF 0x60,0x0,0x100155a 1814 XORWF 0x14,0x0,0x000155c e102 BNZ 0x156200155e 5161 MOVF 0x61,0x0,0x1001560 1815 XORWF 0x15,0x0,0x0001562 e001 BZ 0x1566001564 d095 BRA 0x1690{ F:\MCP\projects\CAN\canTemp\Source\Main.c001566 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canTemp\Source\Main.c001568 cfdb MOVFF 0xfdb,0x800156a f00800156c 0ef2 MOVLW 0xf200156e cfdb MOVFF 0xfdb,0x9001570 f009001572 0e06 MOVLW 0x6001574 1808 XORWF 0x8,0x0,0x0001576 e101 BNZ 0x157a001578 5009 MOVF 0x9,0x0,0x000157a e008 BZ 0x158c00157c 0e01 MOVLW 0x100157e 1808 XORWF 0x8,0x0,0x0001580 e101 BNZ 0x1584001582 5009 MOVF 0x9,0x0,0x0001584 e001 BZ 0x1588001586 d084 BRA 0x1690{ F:\MCP\projects\CAN\canTemp\Source\Main.c001588 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canTemp\Source\Main.c00158a d082 BRA 0x1690case FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canTemp\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canTemp\Source\Main.c00158c 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\canTemp\Source\Main.c00158e cfdb MOVFF 0xfdb,0x14001590 f014001592 c014 MOVFF 0x14,0x15001594 f015001596 6a14 CLRF 0x14,0x0001598 0ef7 MOVLW 0xf700159a 50db MOVF 0xdb,0x0,0x000159c 0100 MOVLB 0x000159e 2414 ADDWF 0x14,0x0,0x00015a0 6f60 MOVWF 0x60,0x10015a2 0e00 MOVLW 0x00015a4 2015 ADDWFC 0x15,0x0,0x00015a6 6f61 MOVWF 0x61,0x10015a8 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canTemp\Source\Main.c0015aa cfdb MOVFF 0xfdb,0x620015ac f0620015ae 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canTemp\Source\Main.c0015b0 cfdb MOVFF 0xfdb,0xfe60015b2 ffe60015b4 0e01 MOVLW 0x10015b6 6ee6 MOVWF 0xe6,0x00015b8 6ae6 CLRF 0xe6,0x00015ba ecdd CALL 0x1dba,0x00015bc f00e0015be 52e5 MOVF 0xe5,0x1,0x00015c0 52e5 MOVF 0xe5,0x1,0x00015c2 52e5 MOVF 0xe5,0x1,0x00015c4 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canTemp\Source\Main.c0015c6 cfdb MOVFF 0xfdb,0xfe60015c8 ffe60015ca 0e02 MOVLW 0x20015cc 6ee6 MOVWF 0xe6,0x00015ce 6ae6 CLRF 0xe6,0x00015d0 ecdd CALL 0x1dba,0x00015d2 f00e0015d4 52e5 MOVF 0xe5,0x1,0x00015d6 52e5 MOVF 0xe5,0x1,0x00015d8 52e5 MOVF 0xe5,0x1,0x00015da 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canTemp\Source\Main.c0015dc cfdb MOVFF 0xfdb,0xfe60015de ffe60015e0 0e03 MOVLW 0x30015e2 6ee6 MOVWF 0xe6,0x00015e4 6ae6 CLRF 0xe6,0x00015e6 ecdd CALL 0x1dba,0x00015e8 f00e0015ea 52e5 MOVF 0xe5,0x1,0x00015ec 52e5 MOVF 0xe5,0x1,0x00015ee 52e5 MOVF 0xe5,0x1,0x00015f0 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canTemp\Source\Main.c0015f2 6ee6 MOVWF 0xe6,0x00015f4 0e00 MOVLW 0x00015f6 6ee6 MOVWF 0xe6,0x00015f8 6ae6 CLRF 0xe6,0x00015fa ecdd CALL 0x1dba,0x00015fc f00e0015fe 52e5 MOVF 0xe5,0x1,0x0001600 52e5 MOVF 0xe5,0x1,0x0001602 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canTemp\Source\Main.c001604 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canTemp\Source\Main.c001606 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canTemp\Source\Main.c001608 6ef3 MOVWF 0xf3,0x000160a 0e01 MOVLW 0x100160c cff3 MOVFF 0xff3,0xfdb00160e ffdb001610 0e02 MOVLW 0x2001612 6adb CLRF 0xdb,0x0001614 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canTemp\Source\Main.c001616 c062 MOVFF 0x62,0xfdb001618 ffdb00161a 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canTemp\Source\Main.c00161c c060 MOVFF 0x60,0xfdb00161e ffdb001620 0e05 MOVLW 0x5001622 c061 MOVFF 0x61,0xfdb001624 ffdb001626 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canTemp\Source\Main.c001628 6ef3 MOVWF 0xf3,0x000162a 0e06 MOVLW 0x600162c cff3 MOVFF 0xff3,0xfdb00162e ffdb001630 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canTemp\Source\Main.c001632 6adb CLRF 0xdb,0x0001634 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c001636 6ee6 MOVWF 0xe6,0x0001638 cfd9 MOVFF 0xfd9,0xfe900163a ffe900163c cfda MOVFF 0xfda,0xfea00163e ffea001640 cfee MOVFF 0xfee,0xfe6001642 ffe6001644 cfee MOVFF 0xfee,0xfe6001646 ffe6001648 cfee MOVFF 0xfee,0xfe600164a ffe600164c cfee MOVFF 0xfee,0xfe600164e ffe6001650 cfee MOVFF 0xfee,0xfe6001652 ffe6001654 cfee MOVFF 0xfee,0xfe6001656 ffe6001658 cfee MOVFF 0xfee,0xfe600165a ffe600165c cfee MOVFF 0xfee,0xfe600165e ffe6001660 cfee MOVFF 0xfee,0xfe6001662 ffe6001664 cfee MOVFF 0xfee,0xfe6001666 ffe6001668 cfee MOVFF 0xfee,0xfe600166a ffe600166c cfee MOVFF 0xfee,0xfe600166e ffe6001670 cfee MOVFF 0xfee,0xfe6001672 ffe6001674 cfee MOVFF 0xfee,0xfe6001676 ffe6001678 cfee MOVFF 0xfee,0xfe600167a ffe600167c ec69 CALL 0x18d2,0x000167e f00c001680 6e14 MOVWF 0x14,0x0001682 0e10 MOVLW 0x10001684 5ee1 SUBWF 0xe1,0x1,0x0001686 5014 MOVF 0x14,0x0,0x0001688 0900 IORLW 0x000168a e101 BNZ 0x168e00168c d7d3 BRA 0x163400168e d000 BRA 0x1690 break; F:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001690 d000 BRA 0x1692 break; F:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c001692 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canTemp\Source\Main.c001694 5ce1 SUBWF 0xe1,0x0,0x0001696 e202 BC 0x169c001698 6ae1 CLRF 0xe1,0x000169a 52e5 MOVF 0xe5,0x1,0x000169c 6ee1 MOVWF 0xe1,0x000169e 52e5 MOVF 0xe5,0x1,0x00016a0 cfe7 MOVFF 0xfe7,0xfd90016a2 ffd90016a4 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canTemp\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canTemp\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001000 ef44 GOTO 0x2088 _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c001002 f010001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001008 efee GOTO 0x13dc _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00100a f00900100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001018 ef3c GOTO 0x1478 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00101a f00a00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-14 20:15:02 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 94 $ 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.c001d70 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001d72 ffe6001d74 cfe1 MOVFF 0xfe1,0xfd9001d76 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001d78 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001d7a cfdb MOVFF 0xfdb,0x14001d7c f014001d7e 0efe MOVLW 0xfe001d80 cfdb MOVFF 0xfdb,0x15001d82 f015001d84 c015 MOVFF 0x15,0x14001d86 f014001d88 6a15 CLRF 0x15,0x0001d8a 5014 MOVF 0x14,0x0,0x0001d8c 6eaa MOVWF 0xaa,0x0001d8e 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001d90 6ee7 MOVWF 0xe7,0x0001d92 0efd MOVLW 0xfd001d94 cfdb MOVFF 0xfdb,0x14001d96 f014001d98 0efe MOVLW 0xfe001d9a cfdb MOVFF 0xfdb,0x15001d9c f015001d9e 50e7 MOVF 0xe7,0x0,0x0001da0 1614 ANDWF 0x14,0x1,0x0001da2 6a15 CLRF 0x15,0x0001da4 5014 MOVF 0x14,0x0,0x0001da6 6ea9 MOVWF 0xa9,0x0001da8 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001daa 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001dac 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001dae 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001db0 d000 BRA 0x1db2001db2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001db4 cfe7 MOVFF 0xfe7,0xfd9001db6 ffd9001db8 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.c001dba cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001dbc ffe6001dbe cfe1 MOVFF 0xfe1,0xfd9001dc0 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001dc2 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001dc4 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001dc6 cfdb MOVFF 0xfdb,0x14001dc8 f014001dca 0efe MOVLW 0xfe001dcc cfdb MOVFF 0xfdb,0x15001dce f015001dd0 c015 MOVFF 0x15,0x14001dd2 f014001dd4 6a15 CLRF 0x15,0x0001dd6 5014 MOVF 0x14,0x0,0x0001dd8 6eaa MOVWF 0xaa,0x0001dda 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001ddc 6ee7 MOVWF 0xe7,0x0001dde 0efd MOVLW 0xfd001de0 cfdb MOVFF 0xfdb,0x14001de2 f014001de4 0efe MOVLW 0xfe001de6 cfdb MOVFF 0xfdb,0x15001de8 f015001dea 50e7 MOVF 0xe7,0x0,0x0001dec 1614 ANDWF 0x14,0x1,0x0001dee 6a15 CLRF 0x15,0x0001df0 5014 MOVF 0x14,0x0,0x0001df2 6ea9 MOVWF 0xa9,0x0001df4 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001df6 50db MOVF 0xdb,0x0,0x0001df8 6ea8 MOVWF 0xa8,0x0001dfa 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001dfc 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001dfe 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001e00 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001e02 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001e04 6ea7 MOVWF 0xa7,0x0001e06 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001e08 6ea7 MOVWF 0xa7,0x0001e0a 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001e0c 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001e0e a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001e10 d7fe BRA 0x1e0e001e12 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001e14 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001e16 cfe7 MOVFF 0xfe7,0xfd9001e18 ffd9001e1a 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Functions for reading ADC F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c********************************************************************* F:\MCP\projects\CAN\Include\adc.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\adc.c* Last changed: $LastChangedDate: 2006-11-14 20:15:02 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\Include\adc.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\adc.c* Revision: $Revision: 94 $ F:\MCP\projects\CAN\Include\adc.c********************************************************************/ F:\MCP\projects\CAN\Include\adc.c#include <adc.h> F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#ifdef USE_ADC F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cstatic unsigned long TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.cstatic unsigned int TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cBOOL TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcInit F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: True or false to use external voltage reference or not. portCfg is portconfiguration. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c001a72 cfd9 MOVFF 0xfd9,0xfe6 void adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c001a74 ffe6001a76 cfe1 MOVFF 0xfe1,0xfd9001a78 ffd9{ F:\MCP\projects\CAN\Include\adc.c// Setup ADC to use low interrupt prior and external ref or not. F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001a7a 0efd MOVLW 0xfd ADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.c001a7c 50db MOVF 0xdb,0x0,0x0001a7e 0b0f ANDLW 0xf001a80 6e14 MOVWF 0x14,0x0001a82 0efe MOVLW 0xfe001a84 50db MOVF 0xdb,0x0,0x0001a86 0b01 ANDLW 0x1001a88 0d10 MULLW 0x10001a8a 50f3 MOVF 0xf3,0x0,0x0001a8c 1014 IORWF 0x14,0x0,0x0001a8e 6ec1 MOVWF 0xc1,0x0001a90 6ac2 CLRF 0xc2,0x0 ADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.c001a92 0eab MOVLW 0xab ADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c001a94 6ec0 MOVWF 0xc0,0x0//useExtRef F:\MCP\projects\CAN\Include\adc.c001a96 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.c001a98 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.c001a9a 8c9d BSF 0x9d,0x6,0x0 PIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.c001a9c 9c9f BCF 0x9f,0x6,0x0 IPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c001a9e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c001aa0 cfe7 MOVFF 0xfe7,0xfd9001aa2 ffd9001aa4 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcISR F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: ADC interrupt rotune. Need to be called from LOW ISR. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cvoid adcISR(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c001aa6 509d MOVF 0x9d,0x0,0x0 if (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c001aa8 0b40 ANDLW 0x40001aaa e050 BZ 0x1b4c001aac 509e MOVF 0x9e,0x0,0x0001aae 0b40 ANDLW 0x40001ab0 e04d BZ 0x1b4c{ F:\MCP\projects\CAN\Include\adc.c001ab2 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001ab4 50c4 MOVF 0xc4,0x0,0x0 TEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.c001ab6 6e18 MOVWF 0x18,0x0001ab8 c018 MOVFF 0x18,0x19001aba f019001abc 6a18 CLRF 0x18,0x0001abe 50c3 MOVF 0xc3,0x0,0x0001ac0 0100 MOVLB 0x0001ac2 1018 IORWF 0x18,0x0,0x0001ac4 6e14 MOVWF 0x14,0x0001ac6 c019 MOVFF 0x19,0x15001ac8 f015001aca 6a16 CLRF 0x16,0x0001acc 6a17 CLRF 0x17,0x0001ace ae15 BTFSS 0x15,0x7,0x0001ad0 d002 BRA 0x1ad6001ad2 6816 SETF 0x16,0x0001ad4 6817 SETF 0x17,0x0001ad6 5014 MOVF 0x14,0x0,0x0001ad8 0100 MOVLB 0x0001ada 277e ADDWF 0x7e,0x1,0x1001adc 5015 MOVF 0x15,0x0,0x0001ade 237f ADDWFC 0x7f,0x1,0x1001ae0 5016 MOVF 0x16,0x0,0x0001ae2 2380 ADDWFC 0x80,0x1,0x1001ae4 5017 MOVF 0x17,0x0,0x0001ae6 2381 ADDWFC 0x81,0x1,0x1001ae8 2b82 INCF 0x82,0x1,0x1 TEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.c001aea 0e00 MOVLW 0x0001aec 2383 ADDWFC 0x83,0x1,0x1F:\MCP\projects\CAN\Include\adc.c001aee 0e32 MOVLW 0x32 if (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c001af0 5d82 SUBWF 0x82,0x0,0x1001af2 0e00 MOVLW 0x0001af4 5983 SUBWFB 0x83,0x0,0x1001af6 e324 BNC 0x1b40{ F:\MCP\projects\CAN\Include\adc.c001af8 c082 MOVFF 0x82,0x14 TEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.c001afa f014001afc c083 MOVFF 0x83,0x15001afe f015001b00 6a16 CLRF 0x16,0x0001b02 6a17 CLRF 0x17,0x0001b04 c07e MOVFF 0x7e,0x6001b06 f006001b08 c07f MOVFF 0x7f,0x7001b0a f007001b0c c080 MOVFF 0x80,0x8001b0e f008001b10 c081 MOVFF 0x81,0x9001b12 f009001b14 c014 MOVFF 0x14,0xb001b16 f00b001b18 c015 MOVFF 0x15,0xc001b1a f00c001b1c c016 MOVFF 0x16,0xd001b1e f00d001b20 c017 MOVFF 0x17,0xe001b22 f00e001b24 ece8 CALL 0x1fd0,0x0001b26 f00f001b28 c006 MOVFF 0x6,0x7e001b2a f07e001b2c c007 MOVFF 0x7,0x7f001b2e f07f001b30 c008 MOVFF 0x8,0x80001b32 f080001b34 c009 MOVFF 0x9,0x81001b36 f081001b38 0100 MOVLB 0x0 TEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c001b3a 0e01 MOVLW 0x1001b3c 6f88 MOVWF 0x88,0x1} F:\MCP\projects\CAN\Include\adc.c001b3e d006 BRA 0x1b4c else F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c001b40 0e64 MOVLW 0x64 Delay10TCYx(100); F:\MCP\projects\CAN\Include\adc.c001b42 6ee6 MOVWF 0xe6,0x0001b44 ec50 CALL 0x20a0,0x0001b46 f010001b48 52e5 MOVF 0xe5,0x1,0x0001b4a 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.c001b4c 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcConvert F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: Channel to start convert. Between 0 and 15 F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c001b4e cfd9 MOVFF 0xfd9,0xfe6 BOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c001b50 ffe6001b52 cfe1 MOVFF 0xfe1,0xfd9001b54 ffd9{ F:\MCP\projects\CAN\Include\adc.c001b56 0efe MOVLW 0xfe if (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.c001b58 50db MOVF 0xdb,0x0,0x0001b5a 080f SUBLW 0xf001b5c e202 BC 0x1b62001b5e 0e00 MOVLW 0x0001b60 d015 BRA 0x1b8cF:\MCP\projects\CAN\Include\adc.c001b62 0100 MOVLB 0x0 TEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.c001b64 6b7e CLRF 0x7e,0x1001b66 6b7f CLRF 0x7f,0x1001b68 6b80 CLRF 0x80,0x1001b6a 6b81 CLRF 0x81,0x1001b6c 6b82 CLRF 0x82,0x1 TEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.c001b6e 6b83 CLRF 0x83,0x1F:\MCP\projects\CAN\Include\adc.c001b70 0ec3 MOVLW 0xc3 ADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.c001b72 14c2 ANDWF 0xc2,0x0,0x0001b74 6e14 MOVWF 0x14,0x0001b76 0efe MOVLW 0xfe001b78 50db MOVF 0xdb,0x0,0x0001b7a 0d04 MULLW 0x4001b7c 50f3 MOVF 0xf3,0x0,0x0001b7e 1014 IORWF 0x14,0x0,0x0001b80 6ec2 MOVWF 0xc2,0x0F:\MCP\projects\CAN\Include\adc.c001b82 0100 MOVLB 0x0 TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.c001b84 6b88 CLRF 0x88,0x1F:\MCP\projects\CAN\Include\adc.c001b86 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001b88 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\Include\adc.c001b8a d000 BRA 0x1b8c001b8c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\adc.c001b8e cfe7 MOVFF 0xfe7,0xfd9001b90 ffd9001b92 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: Raw read data. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cint adcRead(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c001b94 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c001b96 6b88 CLRF 0x88,0x1001b98 c07e MOVFF 0x7e,0xff3 return TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c001b9a fff3001b9c c07f MOVFF 0x7f,0xff4001b9e fff4001ba0 d000 BRA 0x1ba2001ba2 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: temperatureRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: XX.Y C, where tenth is XX and decimal is Y F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.c001ba4 cfd9 MOVFF 0xfd9,0xfe6 void temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c001ba6 ffe6001ba8 cfe1 MOVFF 0xfe1,0xfd9001baa ffd9001bac 0e08 MOVLW 0x8001bae 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.c001bb0 6ade CLRF 0xde,0x0 signed int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.c001bb2 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\Include\adc.c001bb4 c07e MOVFF 0x7e,0x18 tfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.c001bb6 f018001bb8 c07f MOVFF 0x7f,0x19001bba f019001bbc c080 MOVFF 0x80,0x1a001bbe f01a001bc0 c081 MOVFF 0x81,0x1b001bc2 f01b001bc4 0e27 MOVLW 0x27001bc6 6e0b MOVWF 0xb,0x0001bc8 6a0c CLRF 0xc,0x0001bca 6a0d CLRF 0xd,0x0001bcc 6a0e CLRF 0xe,0x0001bce c018 MOVFF 0x18,0x6001bd0 f006001bd2 c019 MOVFF 0x19,0x7001bd4 f007001bd6 c01a MOVFF 0x1a,0x8001bd8 f008001bda c01b MOVFF 0x1b,0x9001bdc f009001bde ecb0 CALL 0x1f60,0x0001be0 f00f001be2 c002 MOVFF 0x2,0x18001be4 f018001be6 c003 MOVFF 0x3,0x19001be8 f019001bea c004 MOVFF 0x4,0x1a001bec f01a001bee c005 MOVFF 0x5,0x1b001bf0 f01b001bf2 0e04 MOVLW 0x4001bf4 90d8 BCF 0xd8,0x0,0x0001bf6 321b RRCF 0x1b,0x1,0x0001bf8 321a RRCF 0x1a,0x1,0x0001bfa 3219 RRCF 0x19,0x1,0x0001bfc 3218 RRCF 0x18,0x1,0x0001bfe 06e8 DECF 0xe8,0x1,0x0001c00 e1f9 BNZ 0x1bf4001c02 c018 MOVFF 0x18,0x14001c04 f014001c06 c019 MOVFF 0x19,0x15001c08 f015001c0a c01a MOVFF 0x1a,0x16001c0c f016001c0e c01b MOVFF 0x1b,0x17001c10 f017001c12 0ef3 MOVLW 0xf3001c14 5e14 SUBWF 0x14,0x1,0x0001c16 0e01 MOVLW 0x1001c18 5a15 SUBWFB 0x15,0x1,0x0001c1a 0e00 MOVLW 0x0001c1c 5a16 SUBWFB 0x16,0x1,0x0001c1e 5a17 SUBWFB 0x17,0x1,0x0001c20 0e06 MOVLW 0x6001c22 c014 MOVFF 0x14,0xfdb001c24 ffdb001c26 0e07 MOVLW 0x7001c28 c015 MOVFF 0x15,0xfdb001c2a ffdbF:\MCP\projects\CAN\Include\adc.c001c2c 0e0a MOVLW 0xa v11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.c001c2e 6e14 MOVWF 0x14,0x0001c30 6a15 CLRF 0x15,0x0001c32 0e06 MOVLW 0x6001c34 cfdb MOVFF 0xfdb,0x8001c36 f008001c38 0e07 MOVLW 0x7001c3a cfdb MOVFF 0xfdb,0x9001c3c f009001c3e c014 MOVFF 0x14,0xd001c40 f00d001c42 c015 MOVFF 0x15,0xe001c44 f00e001c46 ec0e CALL 0x1e1c,0x0001c48 f00f001c4a 0e02 MOVLW 0x2001c4c c008 MOVFF 0x8,0xfdb001c4e ffdb001c50 0e03 MOVLW 0x3001c52 c009 MOVFF 0x9,0xfdb001c54 ffdb001c56 0e06 MOVLW 0x6 v01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.c001c58 cfdb MOVFF 0xfdb,0x16001c5a f016001c5c 0e07 MOVLW 0x7001c5e cfdb MOVFF 0xfdb,0x17001c60 f017001c62 0e0a MOVLW 0xa001c64 6e08 MOVWF 0x8,0x0001c66 6a09 CLRF 0x9,0x0001c68 0e02 MOVLW 0x2001c6a cfdb MOVFF 0xfdb,0xd001c6c f00d001c6e 0e03 MOVLW 0x3001c70 cfdb MOVFF 0xfdb,0xe001c72 f00e001c74 ec34 CALL 0x1e68,0x0001c76 f00f001c78 5006 MOVF 0x6,0x0,0x0001c7a 5c16 SUBWF 0x16,0x0,0x0001c7c 6e14 MOVWF 0x14,0x0001c7e 5007 MOVF 0x7,0x0,0x0001c80 5817 SUBWFB 0x17,0x0,0x0001c82 6e15 MOVWF 0x15,0x0001c84 0e04 MOVLW 0x4001c86 c014 MOVFF 0x14,0xfdb001c88 ffdb001c8a 0e05 MOVLW 0x5001c8c c015 MOVFF 0x15,0xfdb001c8e ffdbF:\MCP\projects\CAN\Include\adc.c001c90 0e04 MOVLW 0x4 if (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.c001c92 cfdb MOVFF 0xfdb,0x14001c94 f014001c96 0e05 MOVLW 0x5001c98 cfdb MOVFF 0xfdb,0x15001c9a f015001c9c 0100 MOVLB 0x0001c9e 0e80 MOVLW 0x80001ca0 1415 ANDWF 0x15,0x0,0x0001ca2 e112 BNZ 0x1cc8001ca4 0e04 MOVLW 0x4001ca6 cfdb MOVFF 0xfdb,0x16001ca8 f016001caa 0e05 MOVLW 0x5001cac cfdb MOVFF 0xfdb,0x17001cae f017001cb0 3417 RLCF 0x17,0x0,0x0001cb2 e204 BC 0x1cbc001cb4 5016 MOVF 0x16,0x0,0x0001cb6 0802 SUBLW 0x2001cb8 0e00 MOVLW 0x0001cba 5417 SUBFWB 0x17,0x0,0x0001cbc e305 BNC 0x1cc8001cbe 0e04 MOVLW 0x4001cc0 6adb CLRF 0xdb,0x0001cc2 0e05 MOVLW 0x5001cc4 6adb CLRF 0xdb,0x0001cc6 d02c BRA 0x1d20 else if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.c001cc8 0e04 MOVLW 0x4001cca cfdb MOVFF 0xfdb,0x14001ccc f014001cce 0e05 MOVLW 0x5001cd0 cfdb MOVFF 0xfdb,0x15001cd2 f015001cd4 90d8 BCF 0xd8,0x0,0x0001cd6 5015 MOVF 0x15,0x0,0x0001cd8 e604 BN 0x1ce2001cda 0e03 MOVLW 0x3001cdc 5c14 SUBWF 0x14,0x0,0x0001cde 0e00 MOVLW 0x0001ce0 5815 SUBWFB 0x15,0x0,0x0001ce2 e315 BNC 0x1d0e001ce4 0e04 MOVLW 0x4001ce6 cfdb MOVFF 0xfdb,0x16001ce8 f016001cea 0e05 MOVLW 0x5001cec cfdb MOVFF 0xfdb,0x17001cee f017001cf0 3417 RLCF 0x17,0x0,0x0001cf2 e204 BC 0x1cfc001cf4 5016 MOVF 0x16,0x0,0x0001cf6 0807 SUBLW 0x7001cf8 0e00 MOVLW 0x0001cfa 5417 SUBFWB 0x17,0x0,0x0001cfc e308 BNC 0x1d0e001cfe 0e05 MOVLW 0x5001d00 6ef3 MOVWF 0xf3,0x0001d02 0e04 MOVLW 0x4001d04 cff3 MOVFF 0xff3,0xfdb001d06 ffdb001d08 0e05 MOVLW 0x5001d0a 6adb CLRF 0xdb,0x0001d0c d009 BRA 0x1d20 else { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.c001d0e 0e04 MOVLW 0x4001d10 6adb CLRF 0xdb,0x0001d12 0e05 MOVLW 0x5001d14 6adb CLRF 0xdb,0x0001d16 0e02 MOVLW 0x2001d18 2adb INCF 0xdb,0x1,0x0001d1a 0e03 MOVLW 0x3001d1c e301 BNC 0x1d20001d1e 2adb INCF 0xdb,0x1,0x0F:\MCP\projects\CAN\Include\adc.c001d20 0e02 MOVLW 0x2 tenth = (signed char *)v11; F:\MCP\projects\CAN\Include\adc.c001d22 cfdb MOVFF 0xfdb,0x8001d24 f008001d26 0e03 MOVLW 0x3001d28 cfdb MOVFF 0xfdb,0x9001d2a f009001d2c 0efd MOVLW 0xfd001d2e c008 MOVFF 0x8,0xfdb001d30 ffdb001d32 0efe MOVLW 0xfe001d34 c009 MOVFF 0x9,0xfdb001d36 ffdb001d38 0e04 MOVLW 0x4 decimal = (BYTE *)v01; F:\MCP\projects\CAN\Include\adc.c001d3a cfdb MOVFF 0xfdb,0x8001d3c f008001d3e 0e05 MOVLW 0x5001d40 cfdb MOVFF 0xfdb,0x9001d42 f009001d44 0efb MOVLW 0xfb001d46 c008 MOVFF 0x8,0xfdb001d48 ffdb001d4a 0efc MOVLW 0xfc001d4c c009 MOVFF 0x9,0xfdb001d4e ffdbF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c001d50 0100 MOVLB 0x0 TEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c001d52 6b88 CLRF 0x88,0x1001d54 0e08 MOVLW 0x8 } F:\MCP\projects\CAN\Include\adc.c001d56 5ce1 SUBWF 0xe1,0x0,0x0001d58 e202 BC 0x1d5e001d5a 6ae1 CLRF 0xe1,0x0001d5c 52e5 MOVF 0xe5,0x1,0x0001d5e 6ee1 MOVWF 0xe1,0x0001d60 52e5 MOVF 0xe5,0x1,0x0001d62 cfe7 MOVFF 0xfe7,0xfd9001d64 ffd9001d66 0012 RETURN 0x0F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcDone F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: If adc convertion is done or not. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cBOOL adcDone(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c001d68 0100 MOVLB 0x0 return TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c001d6a 5188 MOVF 0x88,0x0,0x1001d6c d000 BRA 0x1d6e001d6e 0012 RETURN 0x0 } F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#endif F:\MCP\projects\CAN\Include\adc.c