Rev 95 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Wed Nov 15 09:38:23 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.c0017be 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c0017c0 6ed6 MOVWF 0xd6,0x00017c2 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c0017c4 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.c0017c6 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c0017c8 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0017ca 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c0017cc 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0017ce 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0017d0 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.c0017d2 c075 MOVFF 0x75,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c0017d4 f0120017d6 c076 MOVFF 0x76,0x130017d8 f0130017da c077 MOVFF 0x77,0x140017dc f0140017de c078 MOVFF 0x78,0x150017e0 f0150017e2 d000 BRA 0x17e40017e4 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.c0017e6 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c0017e8 d00b BRA 0x1800{ F:\MCP\projects\CAN\canBase\Source\Tick.c0017ea 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c0017ec 6ed7 MOVWF 0xd7,0x00017ee 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c0017f0 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c0017f2 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c0017f4 2b75 INCF 0x75,0x1,0x10017f6 0e00 MOVLW 0x00017f8 2376 ADDWFC 0x76,0x1,0x10017fa 2377 ADDWFC 0x77,0x1,0x10017fc 2378 ADDWFC 0x78,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c0017fe 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001800 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 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.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 ec06 CALL 0x160c,0x0001252 f00b001254 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 21:11:28 +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: 95 $ 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.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBase\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\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 d8f2 RCALL 0x1602 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 ecdf CALL 0x17be,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001424 f00bF:\MCP\projects\CAN\canBase\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBase\Source\Main.c001426 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\Main.c001428 6ee6 MOVWF 0xe6,0x000142a 6ae6 CLRF 0xe6,0x000142c ec3a CALL 0x1674,0x000142e f00b001430 52e5 MOVF 0xe5,0x1,0x0001432 52e5 MOVF 0xe5,0x1,0x0001434 082a SUBLW 0x2a001436 e12b BNZ 0x148e{ F:\MCP\projects\CAN\canBase\Source\Main.c001438 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\Main.c00143a 6ee6 MOVWF 0xe6,0x000143c 6ae6 CLRF 0xe6,0x000143e ec3a CALL 0x1674,0x0001440 f00b001442 52e5 MOVF 0xe5,0x1,0x0001444 52e5 MOVF 0xe5,0x1,0x0001446 6e00 MOVWF 0x0,0x0001448 c000 MOVFF 0x0,0x100144a f00100144c 6a00 CLRF 0x0,0x000144e c000 MOVFF 0x0,0xfe6001450 ffe6001452 c001 MOVFF 0x1,0xfe6001454 ffe6001456 0e02 MOVLW 0x2001458 6ee6 MOVWF 0xe6,0x000145a 6ae6 CLRF 0xe6,0x000145c ec3a CALL 0x1674,0x000145e f00b001460 52e5 MOVF 0xe5,0x1,0x0001462 52e5 MOVF 0xe5,0x1,0x0001464 52e5 MOVF 0xe5,0x1,0x0001466 cfe7 MOVFF 0xfe7,0x1001468 f00100146a 52e5 MOVF 0xe5,0x1,0x000146c cfe7 MOVFF 0xfe7,0x000146e f000001470 0100 MOVLB 0x0001472 2400 ADDWF 0x0,0x0,0x0001474 6f60 MOVWF 0x60,0x1001476 0e00 MOVLW 0x0001478 2001 ADDWFC 0x1,0x0,0x000147a 6f61 MOVWF 0x61,0x100147c 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\Main.c00147e 6ee6 MOVWF 0xe6,0x0001480 6ae6 CLRF 0xe6,0x0001482 ec3a CALL 0x1674,0x0001484 f00b001486 52e5 MOVF 0xe5,0x1,0x0001488 52e5 MOVF 0xe5,0x1,0x000148a 0100 MOVLB 0x000148c 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Dummy bootmessage F:\MCP\projects\CAN\canBase\Source\Main.c00148e 0e91 MOVLW 0x91 cm2.data[0]=0x91; F:\MCP\projects\CAN\canBase\Source\Main.c001490 6ef3 MOVWF 0xf3,0x0001492 0e07 MOVLW 0x7001494 cff3 MOVFF 0xff3,0xfdb001496 ffdb001498 0e01 MOVLW 0x1 cm2.data_length=1; F:\MCP\projects\CAN\canBase\Source\Main.c00149a 6ef3 MOVWF 0xf3,0x000149c 0e06 MOVLW 0x600149e cff3 MOVFF 0xff3,0xfdb0014a0 ffdb0014a2 0e02 MOVLW 0x2 canSendMessage(cm2,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\Main.c0014a4 6ee6 MOVWF 0xe6,0x00014a6 cfd9 MOVFF 0xfd9,0xfe90014a8 ffe90014aa cfda MOVFF 0xfda,0xfea0014ac ffea0014ae cfee MOVFF 0xfee,0xfe60014b0 ffe60014b2 cfee MOVFF 0xfee,0xfe60014b4 ffe60014b6 cfee MOVFF 0xfee,0xfe60014b8 ffe60014ba cfee MOVFF 0xfee,0xfe60014bc ffe60014be cfee MOVFF 0xfee,0xfe60014c0 ffe60014c2 cfee MOVFF 0xfee,0xfe60014c4 ffe60014c6 cfee MOVFF 0xfee,0xfe60014c8 ffe60014ca cfee MOVFF 0xfee,0xfe60014cc ffe60014ce cfee MOVFF 0xfee,0xfe60014d0 ffe60014d2 cfee MOVFF 0xfee,0xfe60014d4 ffe60014d6 cfee MOVFF 0xfee,0xfe60014d8 ffe60014da cfee MOVFF 0xfee,0xfe60014dc ffe60014de cfee MOVFF 0xfee,0xfe60014e0 ffe60014e2 cfee MOVFF 0xfee,0xfe60014e4 ffe60014e6 cfee MOVFF 0xfee,0xfe60014e8 ffe60014ea ec38 CALL 0x1270,0x00014ec f0090014ee 6e00 MOVWF 0x0,0x00014f0 0e10 MOVLW 0x100014f2 5ee1 SUBWF 0xe1,0x1,0x00014f4 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00153e d7db BRA 0x14f6 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.c0014f6 ece9 CALL 0x17d2,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canBase\Source\Main.c0014f8 f00b0014fa 0100 MOVLB 0x00014fc 5167 MOVF 0x67,0x0,0x10014fe 5c12 SUBWF 0x12,0x0,0x0001500 6e00 MOVWF 0x0,0x0001502 5168 MOVF 0x68,0x0,0x1001504 5813 SUBWFB 0x13,0x0,0x0001506 6e01 MOVWF 0x1,0x0001508 5169 MOVF 0x69,0x0,0x100150a 5814 SUBWFB 0x14,0x0,0x000150c 6e02 MOVWF 0x2,0x000150e 516a MOVF 0x6a,0x0,0x1001510 5815 SUBWFB 0x15,0x0,0x0001512 6e03 MOVWF 0x3,0x0001514 80d8 BSF 0xd8,0x0,0x0001516 0e64 MOVLW 0x64001518 5400 SUBFWB 0x0,0x0,0x000151a 0e00 MOVLW 0x000151c 5401 SUBFWB 0x1,0x0,0x000151e 0e00 MOVLW 0x0001520 5402 SUBFWB 0x2,0x0,0x0001522 0e00 MOVLW 0x0001524 5403 SUBFWB 0x3,0x0,0x0001526 e20b BC 0x153e{ F:\MCP\projects\CAN\canBase\Source\Main.c001528 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c00152a ece9 CALL 0x17d2,0x0 t = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c00152c f00b00152e c012 MOVFF 0x12,0x67001530 f067001532 c013 MOVFF 0x13,0x68001534 f068001536 c014 MOVFF 0x14,0x69001538 f06900153a c015 MOVFF 0x15,0x6a00153c f06a} F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c001540 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c001542 5ce1 SUBWF 0xe1,0x0,0x0001544 e202 BC 0x154a001546 6ae1 CLRF 0xe1,0x0001548 52e5 MOVF 0xe5,0x1,0x000154a 6ee1 MOVWF 0xe1,0x000154c 52e5 MOVF 0xe5,0x1,0x000154e cfe7 MOVFF 0xfe7,0xfd9001550 ffd9001552 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.c001554 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c001556 ffe4001558 cfe2 MOVFF 0xfe2,0xfda00155a ffda00155c cfe9 MOVFF 0xfe9,0xfe400155e ffe4001560 cfea MOVFF 0xfea,0xfe4001562 ffe4001564 cff6 MOVFF 0xff6,0xfe4001566 ffe4001568 cff7 MOVFF 0xff7,0xfe400156a ffe400156c cff5 MOVFF 0xff5,0xfe400156e ffe4001570 cff3 MOVFF 0xff3,0xfe4001572 ffe4001574 cff4 MOVFF 0xff4,0xfe4001576 ffe4001578 cffa MOVFF 0xffa,0xfe400157a ffe400157c ee00 LFSR 0x0,0xe00157e f00e001580 0e0b MOVLW 0xb001582 04e8 DECF 0xe8,0x0,0x0001584 e303 BNC 0x158c001586 cfee MOVFF 0xfee,0xfe4001588 ffe400158a d7fb BRA 0x158200158c ee00 LFSR 0x0,0x000158e f000001590 0e0e MOVLW 0xe001592 04e8 DECF 0xe8,0x0,0x0001594 e303 BNC 0x159c001596 cfee MOVFF 0xfee,0xfe4001598 ffe400159a d7fb BRA 0x159200159c 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.c00159e 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.c0015a0 ec4d CALL 0x109a,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c0015a2 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015a4 ecf3 CALL 0x17e6,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c0015a6 f00bF:\MCP\projects\CAN\canBase\Source\Main.c0015a8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0015aa ee00 LFSR 0x0,0xd0015ac f00d0015ae 0e0e MOVLW 0xe0015b0 04e8 DECF 0xe8,0x0,0x00015b2 e303 BNC 0x15ba0015b4 cfe5 MOVFF 0xfe5,0xfed0015b6 ffed0015b8 d7fb BRA 0x15b00015ba ee00 LFSR 0x0,0x180015bc f0180015be 0e0b MOVLW 0xb0015c0 04e8 DECF 0xe8,0x0,0x00015c2 e303 BNC 0x15ca0015c4 cfe5 MOVFF 0xfe5,0xfed0015c6 ffed0015c8 d7fb BRA 0x15c00015ca cfe5 MOVFF 0xfe5,0xffa0015cc fffa0015ce cfe5 MOVFF 0xfe5,0xff40015d0 fff40015d2 cfe5 MOVFF 0xfe5,0xff30015d4 fff30015d6 cfe5 MOVFF 0xfe5,0xff50015d8 fff50015da cfe5 MOVFF 0xfe5,0xff70015dc fff70015de cfe5 MOVFF 0xfe5,0xff60015e0 fff60015e2 cfe5 MOVFF 0xfe5,0xfea0015e4 ffea0015e6 cfe5 MOVFF 0xfe5,0xfe90015e8 ffe90015ea cfe5 MOVFF 0xfe5,0xfda0015ec ffda0015ee 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.c0015f0 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0015f2 ffe40015f4 cfe2 MOVFF 0xfe2,0xfda0015f6 ffda0015f8 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015fa 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0015fc cfe5 MOVFF 0xfe5,0xfda0015fe ffda001600 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.c001602 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.c001604 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c001606 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.c001608 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.c00160a 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.c00160c cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c00160e ffe6001610 cfe1 MOVFF 0xfe1,0xfd9001612 ffd9{ F:\MCP\projects\CAN\canBase\Source\Main.c001614 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001616 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canBase\Source\Main.c001618 50db MOVF 0xdb,0x0,0x000161a e001 BZ 0x161e00161c d027 BRA 0x166c{ F:\MCP\projects\CAN\canBase\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canBase\Source\Main.c00161e 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT && cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) { Reset(); } F:\MCP\projects\CAN\canBase\Source\Main.c001620 0ff1 ADDLW 0xf1001622 6ee9 MOVWF 0xe9,0x0001624 0eff MOVLW 0xff001626 20da ADDWFC 0xda,0x0,0x0001628 6eea MOVWF 0xea,0x000162a 0e01 MOVLW 0x100162c 18ee XORWF 0xee,0x0,0x000162e e101 BNZ 0x1632001630 50ed MOVF 0xed,0x0,0x0001632 e11b BNZ 0x166a001634 0ef3 MOVLW 0xf3001636 50db MOVF 0xdb,0x0,0x0001638 0100 MOVLB 0x000163a 5d62 SUBWF 0x62,0x0,0x100163c e116 BNZ 0x166a00163e 0efc MOVLW 0xfc001640 cfdb MOVFF 0xfdb,0x2001642 f002001644 c002 MOVFF 0x2,0x3001646 f003001648 6a02 CLRF 0x2,0x000164a 0efb MOVLW 0xfb00164c 50db MOVF 0xdb,0x0,0x000164e 0100 MOVLB 0x0001650 2402 ADDWF 0x2,0x0,0x0001652 6e00 MOVWF 0x0,0x0001654 0e00 MOVLW 0x0001656 2003 ADDWFC 0x3,0x0,0x0001658 6e01 MOVWF 0x1,0x000165a 0100 MOVLB 0x000165c 5160 MOVF 0x60,0x0,0x100165e 1800 XORWF 0x0,0x0,0x0001660 e102 BNZ 0x1666001662 5161 MOVF 0x61,0x0,0x1001664 1801 XORWF 0x1,0x0,0x0001666 e101 BNZ 0x166a001668 00ff RESET00166a d000 BRA 0x166c break; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c00166c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c00166e cfe7 MOVFF 0xfe7,0xfd9001670 ffd9001672 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 ef01 GOTO 0x1802 _asm goto _startup _endasm F:\MCP\projects\CAN\canBase\Source\Main.c001002 f00c001004 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 efaa GOTO 0x1554 _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 eff8 GOTO 0x15f0 _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.c001674 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001676 ffe6001678 cfe1 MOVFF 0xfe1,0xfd900167a ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c00167c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c00167e cfdb MOVFF 0xfdb,0x0001680 f000001682 0efe MOVLW 0xfe001684 cfdb MOVFF 0xfdb,0x1001686 f001001688 c001 MOVFF 0x1,0x000168a f00000168c 6a01 CLRF 0x1,0x000168e 5000 MOVF 0x0,0x0,0x0001690 6eaa MOVWF 0xaa,0x0001692 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001694 6ee7 MOVWF 0xe7,0x0001696 0efd MOVLW 0xfd001698 cfdb MOVFF 0xfdb,0x000169a f00000169c 0efe MOVLW 0xfe00169e cfdb MOVFF 0xfdb,0x10016a0 f0010016a2 50e7 MOVF 0xe7,0x0,0x00016a4 1600 ANDWF 0x0,0x1,0x00016a6 6a01 CLRF 0x1,0x00016a8 5000 MOVF 0x0,0x0,0x00016aa 6ea9 MOVWF 0xa9,0x00016ac 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c0016ae 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c0016b0 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c0016b2 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c0016b4 d000 BRA 0x16b60016b6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c0016b8 cfe7 MOVFF 0xfe7,0xfd90016ba ffd90016bc 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c0016be cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c0016c0 ffe60016c2 cfe1 MOVFF 0xfe1,0xfd90016c4 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c0016c6 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c0016c8 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c0016ca cfdb MOVFF 0xfdb,0x00016cc f0000016ce 0efe MOVLW 0xfe0016d0 cfdb MOVFF 0xfdb,0x10016d2 f0010016d4 c001 MOVFF 0x1,0x00016d6 f0000016d8 6a01 CLRF 0x1,0x00016da 5000 MOVF 0x0,0x0,0x00016dc 6eaa MOVWF 0xaa,0x00016de 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c0016e0 6ee7 MOVWF 0xe7,0x00016e2 0efd MOVLW 0xfd0016e4 cfdb MOVFF 0xfdb,0x00016e6 f0000016e8 0efe MOVLW 0xfe0016ea cfdb MOVFF 0xfdb,0x10016ec f0010016ee 50e7 MOVF 0xe7,0x0,0x00016f0 1600 ANDWF 0x0,0x1,0x00016f2 6a01 CLRF 0x1,0x00016f4 5000 MOVF 0x0,0x0,0x00016f6 6ea9 MOVWF 0xa9,0x00016f8 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c0016fa 50db MOVF 0xdb,0x0,0x00016fc 6ea8 MOVWF 0xa8,0x00016fe 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001700 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001702 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001704 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001706 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001708 6ea7 MOVWF 0xa7,0x000170a 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c00170c 6ea7 MOVWF 0xa7,0x000170e 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001710 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001712 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001714 d7fe BRA 0x1712001716 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001718 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00171a cfe7 MOVFF 0xfe7,0xfd900171c ffd900171e 0012 RETURN 0x0