Rev 90 | 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 14 21:08:48 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* 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.c001722 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001724 6ed6 MOVWF 0xd6,0x0001726 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001728 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.c00172a 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c00172c 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c00172e 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001730 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001732 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001734 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.c001736 c072 MOVFF 0x72,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001738 f01200173a c073 MOVFF 0x73,0x1300173c f01300173e c074 MOVFF 0x74,0x14001740 f014001742 c075 MOVFF 0x75,0x15001744 f015001746 d000 BRA 0x1748001748 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.c00174a a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c00174c d00b BRA 0x1764{ F:\MCP\projects\CAN\canBase\Source\Tick.c00174e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001750 6ed7 MOVWF 0xd7,0x0001752 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001754 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001756 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001758 2b72 INCF 0x72,0x1,0x100175a 0e00 MOVLW 0x000175c 2373 ADDWFC 0x73,0x1,0x100175e 2374 ADDWFC 0x74,0x1,0x1001760 2375 ADDWFC 0x75,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001762 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001764 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* 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 11:20:48 +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: 87 $ 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.c001044 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c001046 6e6f MOVWF 0x6f,0x0001048 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c00104a 146e ANDWF 0x6e,0x0,0x000104c 0880 SUBLW 0x8000104e e001 BZ 0x1052001050 d7fb BRA 0x1048F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001052 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.c001054 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001056 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.c001058 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c00105a 1070 IORWF 0x70,0x0,0x000105c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c00105e 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.c001060 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001062 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001064 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.c001066 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001068 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00106a 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.c00106c 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.c00106e 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.c001070 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001072 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001074 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001078 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; // 1 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBase\Source\CAN.c00107c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00107e 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108a 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108c 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canBase\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBase\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.c#else F:\MCP\projects\CAN\canBase\Source\CAN.c00108e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001092 146e ANDWF 0x6e,0x0,0x0001094 e001 BZ 0x1098001096 d7fc BRA 0x1090#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001098 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.c00109a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c00109c 0b02 ANDLW 0x200109e e106 BNZ 0x10ac0010a0 50a4 MOVF 0xa4,0x0,0x00010a2 0b02 ANDLW 0x20010a4 e103 BNZ 0x10ac0010a6 50a4 MOVF 0xa4,0x0,0x00010a8 0b01 ANDLW 0x10010aa e016 BZ 0x10d8{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010ac 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae 146f ANDWF 0x6f,0x0,0x00010b0 0910 IORLW 0x100010b2 6e00 MOVWF 0x0,0x00010b4 0e00 MOVLW 0x00010b6 1477 ANDWF 0x77,0x0,0x00010b8 1000 IORWF 0x0,0x0,0x00010ba 6e77 MOVWF 0x77,0x00010bc be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c0010be d80d RCALL 0x10daF:\MCP\projects\CAN\canBase\Source\CAN.c0010c0 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0010c2 d002 BRA 0x10c80010c4 92a4 BCF 0xa4,0x1,0x00010c6 d008 BRA 0x10d80010c8 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0010ca d002 BRA 0x10d00010cc 92a4 BCF 0xa4,0x1,0x00010ce d004 BRA 0x10d80010d0 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0010d2 d002 BRA 0x10d80010d4 90a4 BCF 0xa4,0x0,0x00010d6 d000 BRA 0x10d8} F:\MCP\projects\CAN\canBase\Source\CAN.c0010d8 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.c0010da cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c0010dc ffe60010de cfe1 MOVFF 0xfe1,0xfd90010e0 ffd90010e2 0e0f MOVLW 0xf0010e4 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.c0010e6 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c0010e8 1461 ANDWF 0x61,0x0,0x00010ea 38e8 SWAPF 0xe8,0x0,0x00010ec 0b0f ANDLW 0xf0010ee 6edf MOVWF 0xdf,0x00010f0 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.c0010f2 1461 ANDWF 0x61,0x0,0x00010f4 6e06 MOVWF 0x6,0x00010f6 6a07 CLRF 0x7,0x00010f8 0e06 MOVLW 0x60010fa 90d8 BCF 0xd8,0x0,0x00010fc 3606 RLCF 0x6,0x1,0x00010fe 3607 RLCF 0x7,0x1,0x0001100 04e8 DECF 0xe8,0x0,0x0001102 e1fb BNZ 0x10fa001104 0ee0 MOVLW 0xe0001106 1462 ANDWF 0x62,0x0,0x0001108 6e08 MOVWF 0x8,0x000110a 6a09 CLRF 0x9,0x000110c 90d8 BCF 0xd8,0x0,0x000110e 3209 RRCF 0x9,0x1,0x0001110 3208 RRCF 0x8,0x1,0x0001112 90d8 BCF 0xd8,0x0,0x0001114 3209 RRCF 0x9,0x1,0x0001116 3208 RRCF 0x8,0x1,0x0001118 5006 MOVF 0x6,0x0,0x000111a 2408 ADDWF 0x8,0x0,0x000111c 6e04 MOVWF 0x4,0x000111e 5007 MOVF 0x7,0x0,0x0001120 2009 ADDWFC 0x9,0x0,0x0001122 6e05 MOVWF 0x5,0x0001124 0e03 MOVLW 0x3001126 1462 ANDWF 0x62,0x0,0x0001128 6e0a MOVWF 0xa,0x000112a 6a0b CLRF 0xb,0x000112c 90d8 BCF 0xd8,0x0,0x000112e 360a RLCF 0xa,0x1,0x0001130 360b RLCF 0xb,0x1,0x0001132 5004 MOVF 0x4,0x0,0x0001134 240a ADDWF 0xa,0x0,0x0001136 6e02 MOVWF 0x2,0x0001138 5005 MOVF 0x5,0x0,0x000113a 200b ADDWFC 0xb,0x0,0x000113c 6e03 MOVWF 0x3,0x000113e 0e80 MOVLW 0x80001140 1463 ANDWF 0x63,0x0,0x0001142 6e0c MOVWF 0xc,0x0001144 6a0d CLRF 0xd,0x0001146 0e07 MOVLW 0x7001148 90d8 BCF 0xd8,0x0,0x000114a 320d RRCF 0xd,0x1,0x000114c 320c RRCF 0xc,0x1,0x000114e 04e8 DECF 0xe8,0x0,0x0001150 e1fb BNZ 0x1148001152 5002 MOVF 0x2,0x0,0x0001154 240c ADDWF 0xc,0x0,0x0001156 6e00 MOVWF 0x0,0x0001158 5003 MOVF 0x3,0x0,0x000115a 200d ADDWFC 0xd,0x0,0x000115c 6e01 MOVWF 0x1,0x000115e 0e01 MOVLW 0x1001160 c000 MOVFF 0x0,0xfdb001162 ffdb001164 0e02 MOVLW 0x2001166 c001 MOVFF 0x1,0xfdb001168 ffdb00116a 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c00116c 1463 ANDWF 0x63,0x0,0x000116e 40e8 RRNCF 0xe8,0x0,0x0001170 0b7f ANDLW 0x7f001172 6ee7 MOVWF 0xe7,0x0001174 0e03 MOVLW 0x3001176 cfe7 MOVFF 0xfe7,0xfdb001178 ffdb00117a 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00117c 1463 ANDWF 0x63,0x0,0x000117e 6e02 MOVWF 0x2,0x0001180 c002 MOVFF 0x2,0x3001182 f003001184 6a02 CLRF 0x2,0x0001186 5064 MOVF 0x64,0x0,0x0001188 0100 MOVLB 0x000118a 2402 ADDWF 0x2,0x0,0x000118c 6e00 MOVWF 0x0,0x000118e 0e00 MOVLW 0x0001190 2003 ADDWFC 0x3,0x0,0x0001192 6e01 MOVWF 0x1,0x0001194 0e04 MOVLW 0x4001196 c000 MOVFF 0x0,0xfdb001198 ffdb00119a 0e05 MOVLW 0x500119c c001 MOVFF 0x1,0xfdb00119e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c0011a0 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.c0011a2 0b01 ANDLW 0x10011a4 6e02 MOVWF 0x2,0x00011a6 5065 MOVF 0x65,0x0,0x00011a8 0b02 ANDLW 0x20011aa e001 BZ 0x11ae0011ac 0e01 MOVLW 0x10011ae 24e8 ADDWF 0xe8,0x0,0x00011b0 6e01 MOVWF 0x1,0x00011b2 5065 MOVF 0x65,0x0,0x00011b4 0b04 ANDLW 0x40011b6 e001 BZ 0x11ba0011b8 0e01 MOVLW 0x10011ba 0d04 MULLW 0x40011bc cff3 MOVFF 0xff3,0x00011be f0000011c0 5065 MOVF 0x65,0x0,0x00011c2 0b08 ANDLW 0x80011c4 e001 BZ 0x11c80011c6 0e01 MOVLW 0x10011c8 0d08 MULLW 0x80011ca 50f3 MOVF 0xf3,0x0,0x00011cc 2400 ADDWF 0x0,0x0,0x00011ce 2401 ADDWF 0x1,0x0,0x00011d0 2402 ADDWF 0x2,0x0,0x00011d2 6ee7 MOVWF 0xe7,0x00011d4 0e06 MOVLW 0x60011d6 cfe7 MOVFF 0xfe7,0xfdb0011d8 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c0011da 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011dc cf66 MOVFF 0xf66,0xfdb0011de ffdb0011e0 0e08 MOVLW 0x80011e2 cf67 MOVFF 0xf67,0xfdb0011e4 ffdb0011e6 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e8 cf68 MOVFF 0xf68,0xfdb0011ea ffdb0011ec 0e0a MOVLW 0xa0011ee cf69 MOVFF 0xf69,0xfdb0011f0 ffdb0011f2 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c0011f4 cf6a MOVFF 0xf6a,0xfdb0011f6 ffdb0011f8 0e0c MOVLW 0xc0011fa cf6b MOVFF 0xf6b,0xfdb0011fc ffdb0011fe 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001200 cf6c MOVFF 0xf6c,0xfdb001202 ffdb001204 0e0e MOVLW 0xe001206 cf6d MOVFF 0xf6d,0xfdb001208 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00120a 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.c00120c cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c00120e ffe9001210 cfda MOVFF 0xfda,0xfea001212 ffea001214 cfee MOVFF 0xfee,0xfe6001216 ffe6001218 cfee MOVFF 0xfee,0xfe600121a ffe600121c cfee MOVFF 0xfee,0xfe600121e ffe6001220 cfee MOVFF 0xfee,0xfe6001222 ffe6001224 cfee MOVFF 0xfee,0xfe6001226 ffe6001228 cfee MOVFF 0xfee,0xfe600122a ffe600122c cfee MOVFF 0xfee,0xfe600122e ffe6001230 cfee MOVFF 0xfee,0xfe6001232 ffe6001234 cfee MOVFF 0xfee,0xfe6001236 ffe6001238 cfee MOVFF 0xfee,0xfe600123a ffe600123c cfee MOVFF 0xfee,0xfe600123e ffe6001240 cfee MOVFF 0xfee,0xfe6001242 ffe6001244 cfee MOVFF 0xfee,0xfe6001246 ffe6001248 cfee MOVFF 0xfee,0xfe600124a ffe600124c cfee MOVFF 0xfee,0xfe600124e ffe6001250 ecd2 CALL 0x15a4,0x0001252 f00a001254 6e00 MOVWF 0x0,0x0001256 0e0f MOVLW 0xf001258 5ee1 SUBWF 0xe1,0x1,0x000125a 5000 MOVF 0x0,0x0,0x000125c 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00125e 5ce1 SUBWF 0xe1,0x0,0x0001260 e202 BC 0x1266001262 6ae1 CLRF 0xe1,0x0001264 52e5 MOVF 0xe5,0x1,0x0001266 6ee1 MOVWF 0xe1,0x0001268 52e5 MOVF 0xe5,0x1,0x000126a cfe7 MOVFF 0xfe7,0xfd900126c ffd900126e 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.c001270 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001272 ffe6001274 cfe1 MOVFF 0xfe1,0xfd9001276 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001278 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c00127a b740 BTFSC 0x40,0x3,0x100127c d004 BRA 0x128600127e 0e00 MOVLW 0x0001280 1477 ANDWF 0x77,0x0,0x0001282 0903 IORLW 0x3001284 6e77 MOVWF 0x77,0x0001286 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001288 b730 BTFSC 0x30,0x3,0x100128a d004 BRA 0x129400128c 0e00 MOVLW 0x000128e 1477 ANDWF 0x77,0x0,0x0001290 0904 IORLW 0x4001292 6e77 MOVWF 0x77,0x0001294 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001296 b720 BTFSC 0x20,0x3,0x1001298 d005 BRA 0x12a400129a 0e00 MOVLW 0x000129c 1477 ANDWF 0x77,0x0,0x000129e 0905 IORLW 0x50012a0 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c0012a2 d002 BRA 0x12a8 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c0012a4 0e00 MOVLW 0x00012a6 d0b0 BRA 0x1408F:\MCP\projects\CAN\canBase\Source\CAN.c0012a8 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0012aa cfdb MOVFF 0xfdb,0x00012ac f0000012ae 3400 RLCF 0x0,0x0,0x00012b0 e20e BC 0x12ce0012b2 0eef MOVLW 0xef0012b4 cfdb MOVFF 0xfdb,0x10012b6 f0010012b8 0e03 MOVLW 0x30012ba 6ee7 MOVWF 0xe7,0x00012bc 1801 XORWF 0x1,0x0,0x00012be aee8 BTFSS 0xe8,0x7,0x00012c0 d002 BRA 0x12c60012c2 3401 RLCF 0x1,0x0,0x00012c4 d003 BRA 0x12cc0012c6 50e7 MOVF 0xe7,0x0,0x00012c8 80d8 BSF 0xd8,0x0,0x00012ca 5401 SUBFWB 0x1,0x0,0x00012cc e202 BC 0x12d20012ce 0eef MOVLW 0xef0012d0 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.c0012d2 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0012d4 cfdb MOVFF 0xfdb,0x00012d6 f0000012d8 0ef2 MOVLW 0xf20012da cfdb MOVFF 0xfdb,0x10012dc f0010012de 0ec0 MOVLW 0xc00012e0 1600 ANDWF 0x0,0x1,0x00012e2 0e03 MOVLW 0x30012e4 1601 ANDWF 0x1,0x1,0x00012e6 0e06 MOVLW 0x60012e8 90d8 BCF 0xd8,0x0,0x00012ea 3201 RRCF 0x1,0x1,0x00012ec 3200 RRCF 0x0,0x1,0x00012ee 04e8 DECF 0xe8,0x0,0x00012f0 e1fb BNZ 0x12e80012f2 0ef0 MOVLW 0xf00012f4 50db MOVF 0xdb,0x0,0x00012f6 0b0f ANDLW 0xf0012f8 0d10 MULLW 0x100012fa 50f3 MOVF 0xf3,0x0,0x00012fc 2400 ADDWF 0x0,0x0,0x00012fe 6e61 MOVWF 0x61,0x0001300 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001302 6ee7 MOVWF 0xe7,0x0001304 0ef1 MOVLW 0xf1001306 cfdb MOVFF 0xfdb,0x2001308 f00200130a 0ef2 MOVLW 0xf200130c cfdb MOVFF 0xfdb,0x300130e f003001310 50e7 MOVF 0xe7,0x0,0x0001312 1602 ANDWF 0x2,0x1,0x0001314 6a03 CLRF 0x3,0x0001316 90d8 BCF 0xd8,0x0,0x0001318 3203 RRCF 0x3,0x1,0x000131a 3202 RRCF 0x2,0x1,0x000131c 0e3f MOVLW 0x3f00131e 6ee7 MOVWF 0xe7,0x0001320 0ef1 MOVLW 0xf1001322 cfdb MOVFF 0xfdb,0x0001324 f000001326 0ef2 MOVLW 0xf2001328 cfdb MOVFF 0xfdb,0x100132a f00100132c 50e7 MOVF 0xe7,0x0,0x000132e 1600 ANDWF 0x0,0x1,0x0001330 6a01 CLRF 0x1,0x0001332 90d8 BCF 0xd8,0x0,0x0001334 3600 RLCF 0x0,0x1,0x0001336 3601 RLCF 0x1,0x1,0x0001338 90d8 BCF 0xd8,0x0,0x000133a 3600 RLCF 0x0,0x1,0x000133c 3601 RLCF 0x1,0x1,0x000133e 5000 MOVF 0x0,0x0,0x0001340 2402 ADDWF 0x2,0x0,0x0001342 6e62 MOVWF 0x62,0x0001344 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.c001346 cfdb MOVFF 0xfdb,0x2001348 f00200134a 0ef5 MOVLW 0xf500134c cfdb MOVFF 0xfdb,0x300134e f003001350 0e00 MOVLW 0x0001352 1602 ANDWF 0x2,0x1,0x0001354 0e01 MOVLW 0x1001356 1603 ANDWF 0x3,0x1,0x0001358 c003 MOVFF 0x3,0x200135a f00200135c 6a03 CLRF 0x3,0x000135e 0e01 MOVLW 0x1001360 6ee7 MOVWF 0xe7,0x0001362 0ef1 MOVLW 0xf1001364 cfdb MOVFF 0xfdb,0x0001366 f000001368 0ef2 MOVLW 0xf200136a cfdb MOVFF 0xfdb,0x100136c f00100136e 50e7 MOVF 0xe7,0x0,0x0001370 1600 ANDWF 0x0,0x1,0x0001372 6a01 CLRF 0x1,0x0001374 0e07 MOVLW 0x7001376 90d8 BCF 0xd8,0x0,0x0001378 3600 RLCF 0x0,0x1,0x000137a 3601 RLCF 0x1,0x1,0x000137c 04e8 DECF 0xe8,0x0,0x000137e e1fb BNZ 0x1376001380 0ef3 MOVLW 0xf3001382 50db MOVF 0xdb,0x0,0x0001384 0b3f ANDLW 0x3f001386 24e8 ADDWF 0xe8,0x0,0x0001388 2400 ADDWF 0x0,0x0,0x000138a 2402 ADDWF 0x2,0x0,0x000138c 6e63 MOVWF 0x63,0x000138e 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001390 6ee7 MOVWF 0xe7,0x0001392 0ef4 MOVLW 0xf4001394 cfdb MOVFF 0xfdb,0x0001396 f000001398 0ef5 MOVLW 0xf500139a cfdb MOVFF 0xfdb,0x100139c f00100139e 50e7 MOVF 0xe7,0x0,0x00013a0 1600 ANDWF 0x0,0x1,0x00013a2 6a01 CLRF 0x1,0x00013a4 5000 MOVF 0x0,0x0,0x00013a6 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c0013a8 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0013aa 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c0013ac 50db MOVF 0xdb,0x0,0x00013ae 0808 SUBLW 0x80013b0 e203 BC 0x13b80013b2 0e08 MOVLW 0x80013b4 6e65 MOVWF 0x65,0x00013b6 d003 BRA 0x13be0013b8 0ef6 MOVLW 0xf60013ba 50db MOVF 0xdb,0x0,0x00013bc 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.c0013be 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.c0013c0 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013c2 50db MOVF 0xdb,0x0,0x00013c4 6e66 MOVWF 0x66,0x00013c6 0ef8 MOVLW 0xf80013c8 50db MOVF 0xdb,0x0,0x00013ca 6e67 MOVWF 0x67,0x00013cc 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013ce 50db MOVF 0xdb,0x0,0x00013d0 6e68 MOVWF 0x68,0x00013d2 0efa MOVLW 0xfa0013d4 50db MOVF 0xdb,0x0,0x00013d6 6e69 MOVWF 0x69,0x00013d8 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013da 50db MOVF 0xdb,0x0,0x00013dc 6e6a MOVWF 0x6a,0x00013de 0efc MOVLW 0xfc0013e0 50db MOVF 0xdb,0x0,0x00013e2 6e6b MOVWF 0x6b,0x00013e4 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013e6 50db MOVF 0xdb,0x0,0x00013e8 6e6c MOVWF 0x6c,0x00013ea 0efe MOVLW 0xfe0013ec 50db MOVF 0xdb,0x0,0x00013ee 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0013f0 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.c0013f2 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0013f4 cfdb MOVFF 0xfdb,0xfe60013f6 ffe60013f8 0efc MOVLW 0xfc0013fa 1460 ANDWF 0x60,0x0,0x00013fc 52e5 MOVF 0xe5,0x1,0x00013fe 10e7 IORWF 0xe7,0x0,0x0001400 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.c001402 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.c001404 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c001406 d000 BRA 0x1408F:\MCP\projects\CAN\canBase\Source\CAN.c001408 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c00140a cfe7 MOVFF 0xfe7,0xfd900140c ffd900140e 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\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c* Main application F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Main.c $ F:\MCP\projects\CAN\canBase\Source\Main.c* Last changed: $LastChangedDate: 2006-11-14 12:49:56 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Main.c* Revision: $Revision: 90 $ F:\MCP\projects\CAN\canBase\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001410 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBase\Source\Main.c001412 ffe6001414 cfe1 MOVFF 0xfe1,0xfd9001416 ffd9001418 0e0f MOVLW 0xf00141a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canBase\Source\Main.cCAN_MESSAGE cm2; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Inits F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00141c d8be RCALL 0x159a mainInit(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c00141e ec22 CALL 0x1044,0x0 canInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001420 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001422 ec91 CALL 0x1722,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001424 f00bF:\MCP\projects\CAN\canBase\Source\Main.c// Dummy bootmessage F:\MCP\projects\CAN\canBase\Source\Main.c001426 0e91 MOVLW 0x91 cm2.data[0]=0x91; F:\MCP\projects\CAN\canBase\Source\Main.c001428 6ef3 MOVWF 0xf3,0x000142a 0e07 MOVLW 0x700142c cff3 MOVFF 0xff3,0xfdb00142e ffdb001430 0e01 MOVLW 0x1 cm2.data_length=1; F:\MCP\projects\CAN\canBase\Source\Main.c001432 6ef3 MOVWF 0xf3,0x0001434 0e06 MOVLW 0x6001436 cff3 MOVFF 0xff3,0xfdb001438 ffdb00143a 0e02 MOVLW 0x2 canSendMessage(cm2,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\Main.c00143c 6ee6 MOVWF 0xe6,0x000143e cfd9 MOVFF 0xfd9,0xfe9001440 ffe9001442 cfda MOVFF 0xfda,0xfea001444 ffea001446 cfee MOVFF 0xfee,0xfe6001448 ffe600144a cfee MOVFF 0xfee,0xfe600144c ffe600144e cfee MOVFF 0xfee,0xfe6001450 ffe6001452 cfee MOVFF 0xfee,0xfe6001454 ffe6001456 cfee MOVFF 0xfee,0xfe6001458 ffe600145a cfee MOVFF 0xfee,0xfe600145c ffe600145e cfee MOVFF 0xfee,0xfe6001460 ffe6001462 cfee MOVFF 0xfee,0xfe6001464 ffe6001466 cfee MOVFF 0xfee,0xfe6001468 ffe600146a cfee MOVFF 0xfee,0xfe600146c ffe600146e cfee MOVFF 0xfee,0xfe6001470 ffe6001472 cfee MOVFF 0xfee,0xfe6001474 ffe6001476 cfee MOVFF 0xfee,0xfe6001478 ffe600147a cfee MOVFF 0xfee,0xfe600147c ffe600147e cfee MOVFF 0xfee,0xfe6001480 ffe6001482 ec38 CALL 0x1270,0x0001484 f009001486 6e00 MOVWF 0x0,0x0001488 0e10 MOVLW 0x1000148a 5ee1 SUBWF 0xe1,0x1,0x000148c 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0014d6 d7db BRA 0x148e while(1) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canBase\Source\Main.c00148e ec9b CALL 0x1736,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canBase\Source\Main.c001490 f00b001492 0100 MOVLB 0x0001494 516e MOVF 0x6e,0x0,0x1001496 5c12 SUBWF 0x12,0x0,0x0001498 6e00 MOVWF 0x0,0x000149a 516f MOVF 0x6f,0x0,0x100149c 5813 SUBWFB 0x13,0x0,0x000149e 6e01 MOVWF 0x1,0x00014a0 5170 MOVF 0x70,0x0,0x10014a2 5814 SUBWFB 0x14,0x0,0x00014a4 6e02 MOVWF 0x2,0x00014a6 5171 MOVF 0x71,0x0,0x10014a8 5815 SUBWFB 0x15,0x0,0x00014aa 6e03 MOVWF 0x3,0x00014ac 80d8 BSF 0xd8,0x0,0x00014ae 0e64 MOVLW 0x640014b0 5400 SUBFWB 0x0,0x0,0x00014b2 0e00 MOVLW 0x00014b4 5401 SUBFWB 0x1,0x0,0x00014b6 0e00 MOVLW 0x00014b8 5402 SUBFWB 0x2,0x0,0x00014ba 0e00 MOVLW 0x00014bc 5403 SUBFWB 0x3,0x0,0x00014be e20b BC 0x14d6{ F:\MCP\projects\CAN\canBase\Source\Main.c0014c0 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c0014c2 ec9b CALL 0x1736,0x0 t = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c0014c4 f00b0014c6 c012 MOVFF 0x12,0x6e0014c8 f06e0014ca c013 MOVFF 0x13,0x6f0014cc f06f0014ce c014 MOVFF 0x14,0x700014d0 f0700014d2 c015 MOVFF 0x15,0x710014d4 f071} F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c0014d8 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c0014da 5ce1 SUBWF 0xe1,0x0,0x00014dc e202 BC 0x14e20014de 6ae1 CLRF 0xe1,0x00014e0 52e5 MOVF 0xe5,0x1,0x00014e2 6ee1 MOVWF 0xe1,0x00014e4 52e5 MOVF 0xe5,0x1,0x00014e6 cfe7 MOVFF 0xfe7,0xfd90014e8 ffd90014ea 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canBase\Source\Main.c0014ec cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0014ee ffe40014f0 cfe2 MOVFF 0xfe2,0xfda0014f2 ffda0014f4 cfe9 MOVFF 0xfe9,0xfe40014f6 ffe40014f8 cfea MOVFF 0xfea,0xfe40014fa ffe40014fc cff6 MOVFF 0xff6,0xfe40014fe ffe4001500 cff7 MOVFF 0xff7,0xfe4001502 ffe4001504 cff5 MOVFF 0xff5,0xfe4001506 ffe4001508 cff3 MOVFF 0xff3,0xfe400150a ffe400150c cff4 MOVFF 0xff4,0xfe400150e ffe4001510 cffa MOVFF 0xffa,0xfe4001512 ffe4001514 ee00 LFSR 0x0,0xe001516 f00e001518 0e0b MOVLW 0xb00151a 04e8 DECF 0xe8,0x0,0x000151c e303 BNC 0x152400151e cfee MOVFF 0xfee,0xfe4001520 ffe4001522 d7fb BRA 0x151a001524 ee00 LFSR 0x0,0x0001526 f000001528 0e0e MOVLW 0xe00152a 04e8 DECF 0xe8,0x0,0x000152c e303 BNC 0x153400152e cfee MOVFF 0xfee,0xfe4001530 ffe4001532 d7fb BRA 0x152a001534 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.c001536 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c001538 ec4d CALL 0x109a,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c00153a f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00153c eca5 CALL 0x174a,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c00153e f00bF:\MCP\projects\CAN\canBase\Source\Main.c001540 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c001542 ee00 LFSR 0x0,0xd001544 f00d001546 0e0e MOVLW 0xe001548 04e8 DECF 0xe8,0x0,0x000154a e303 BNC 0x155200154c cfe5 MOVFF 0xfe5,0xfed00154e ffed001550 d7fb BRA 0x1548001552 ee00 LFSR 0x0,0x18001554 f018001556 0e0b MOVLW 0xb001558 04e8 DECF 0xe8,0x0,0x000155a e303 BNC 0x156200155c cfe5 MOVFF 0xfe5,0xfed00155e ffed001560 d7fb BRA 0x1558001562 cfe5 MOVFF 0xfe5,0xffa001564 fffa001566 cfe5 MOVFF 0xfe5,0xff4001568 fff400156a cfe5 MOVFF 0xfe5,0xff300156c fff300156e cfe5 MOVFF 0xfe5,0xff5001570 fff5001572 cfe5 MOVFF 0xfe5,0xff7001574 fff7001576 cfe5 MOVFF 0xfe5,0xff6001578 fff600157a cfe5 MOVFF 0xfe5,0xfea00157c ffea00157e cfe5 MOVFF 0xfe5,0xfe9001580 ffe9001582 cfe5 MOVFF 0xfe5,0xfda001584 ffda001586 0011 RETFIE 0x1F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canBase\Source\Main.c001588 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c00158a ffe400158c cfe2 MOVFF 0xfe2,0xfda00158e ffda001590 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001592 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c001594 cfe5 MOVFF 0xfe5,0xfda001596 ffda001598 0011 RETFIE 0x1F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c/* F:\MCP\projects\CAN\canBase\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c* Input: none F:\MCP\projects\CAN\canBase\Source\Main.c* Output: none F:\MCP\projects\CAN\canBase\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canBase\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canBase\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\Main.c*/ F:\MCP\projects\CAN\canBase\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c00159a 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canBase\Source\Main.c00159c 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c00159e 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canBase\Source\Main.c0015a0 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015a2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c/* F:\MCP\projects\CAN\canBase\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canBase\Source\Main.c* Output: none F:\MCP\projects\CAN\canBase\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canBase\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canBase\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\Main.c*/ F:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c0015a4 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c0015a6 ffe60015a8 cfe1 MOVFF 0xfe1,0xfd90015aa ffd9{ F:\MCP\projects\CAN\canBase\Source\Main.c0015ac 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015ae 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canBase\Source\Main.c0015b0 50db MOVF 0xdb,0x0,0x00015b2 e001 BZ 0x15b60015b4 d00d BRA 0x15d0{ F:\MCP\projects\CAN\canBase\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canBase\Source\Main.c0015b6 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) { Reset(); } F:\MCP\projects\CAN\canBase\Source\Main.c0015b8 0ff1 ADDLW 0xf10015ba 6ee9 MOVWF 0xe9,0x00015bc 0eff MOVLW 0xff0015be 20da ADDWFC 0xda,0x0,0x00015c0 6eea MOVWF 0xea,0x00015c2 0e01 MOVLW 0x10015c4 18ee XORWF 0xee,0x0,0x00015c6 e101 BNZ 0x15ca0015c8 50ed MOVF 0xed,0x0,0x00015ca e101 BNZ 0x15ce0015cc 00ff RESET0015ce d000 BRA 0x15d0 break; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c0015d0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0015d2 cfe7 MOVFF 0xfe7,0xfd90015d4 ffd90015d6 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canBase\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canBase\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001000 efb3 GOTO 0x1766 _asm goto _startup _endasm F:\MCP\projects\CAN\canBase\Source\Main.c001002 f00b001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001008 ef76 GOTO 0x14ec _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00100a f00a00100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001018 efc4 GOTO 0x1588 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00101a f00a00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\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.c0015d8 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c0015da ffe60015dc cfe1 MOVFF 0xfe1,0xfd90015de ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c0015e0 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c0015e2 cfdb MOVFF 0xfdb,0x00015e4 f0000015e6 0efe MOVLW 0xfe0015e8 cfdb MOVFF 0xfdb,0x10015ea f0010015ec c001 MOVFF 0x1,0x00015ee f0000015f0 6a01 CLRF 0x1,0x00015f2 5000 MOVF 0x0,0x0,0x00015f4 6eaa MOVWF 0xaa,0x00015f6 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c0015f8 6ee7 MOVWF 0xe7,0x00015fa 0efd MOVLW 0xfd0015fc cfdb MOVFF 0xfdb,0x00015fe f000001600 0efe MOVLW 0xfe001602 cfdb MOVFF 0xfdb,0x1001604 f001001606 50e7 MOVF 0xe7,0x0,0x0001608 1600 ANDWF 0x0,0x1,0x000160a 6a01 CLRF 0x1,0x000160c 5000 MOVF 0x0,0x0,0x000160e 6ea9 MOVWF 0xa9,0x0001610 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001612 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001614 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001616 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001618 d000 BRA 0x161a00161a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00161c cfe7 MOVFF 0xfe7,0xfd900161e ffd9001620 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c001622 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001624 ffe6001626 cfe1 MOVFF 0xfe1,0xfd9001628 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c00162a 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c00162c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c00162e cfdb MOVFF 0xfdb,0x0001630 f000001632 0efe MOVLW 0xfe001634 cfdb MOVFF 0xfdb,0x1001636 f001001638 c001 MOVFF 0x1,0x000163a f00000163c 6a01 CLRF 0x1,0x000163e 5000 MOVF 0x0,0x0,0x0001640 6eaa MOVWF 0xaa,0x0001642 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001644 6ee7 MOVWF 0xe7,0x0001646 0efd MOVLW 0xfd001648 cfdb MOVFF 0xfdb,0x000164a f00000164c 0efe MOVLW 0xfe00164e cfdb MOVFF 0xfdb,0x1001650 f001001652 50e7 MOVF 0xe7,0x0,0x0001654 1600 ANDWF 0x0,0x1,0x0001656 6a01 CLRF 0x1,0x0001658 5000 MOVF 0x0,0x0,0x000165a 6ea9 MOVWF 0xa9,0x000165c 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c00165e 50db MOVF 0xdb,0x0,0x0001660 6ea8 MOVWF 0xa8,0x0001662 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001664 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001666 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001668 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c00166a 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c00166c 6ea7 MOVWF 0xa7,0x000166e 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001670 6ea7 MOVWF 0xa7,0x0001672 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001674 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001676 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001678 d7fe BRA 0x167600167a 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c00167c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00167e cfe7 MOVFF 0xfe7,0xfd9001680 ffd9001682 0012 RETURN 0x0