Rev 103 | 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 17:30:42 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.c001942 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001944 6ed6 MOVWF 0xd6,0x0001946 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001948 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.c00194a 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c00194c 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c00194e 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001950 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001952 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001954 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.c001956 c079 MOVFF 0x79,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001958 f01200195a c07a MOVFF 0x7a,0x1300195c f01300195e c07b MOVFF 0x7b,0x14001960 f014001962 c07c MOVFF 0x7c,0x15001964 f015001966 d000 BRA 0x1968001968 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.c00196a a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c00196c d00b BRA 0x1984{ F:\MCP\projects\CAN\canBase\Source\Tick.c00196e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001970 6ed7 MOVWF 0xd7,0x0001972 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001974 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001976 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001978 2b79 INCF 0x79,0x1,0x100197a 0e00 MOVLW 0x000197c 237a ADDWFC 0x7a,0x1,0x100197e 237b ADDWFC 0x7b,0x1,0x1001980 237c ADDWFC 0x7c,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001982 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001984 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.c00142c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00142e 6e6f MOVWF 0x6f,0x0001430 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001432 146e ANDWF 0x6e,0x0,0x0001434 0880 SUBLW 0x80001436 e001 BZ 0x143a001438 d7fb BRA 0x1430F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00143a 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.c00143c 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c00143e 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.c001440 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c001442 1070 IORWF 0x70,0x0,0x0001444 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c001446 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.c001448 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00144a 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00144c 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.c00144e 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001450 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001452 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.c001454 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.c001456 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.c001458 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00145a 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00145c 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00145e 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001460 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001462 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.c001464 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c001466 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.c001468 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00146a 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00146c 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00146e 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001470 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001472 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.c001474 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.c001476 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001478 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c00147a 146e ANDWF 0x6e,0x0,0x000147c e001 BZ 0x148000147e d7fc BRA 0x1478#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001480 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.c001482 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001484 0b02 ANDLW 0x2001486 e106 BNZ 0x1494001488 50a4 MOVF 0xa4,0x0,0x000148a 0b02 ANDLW 0x200148c e103 BNZ 0x149400148e 50a4 MOVF 0xa4,0x0,0x0001490 0b01 ANDLW 0x1001492 e016 BZ 0x14c0{ F:\MCP\projects\CAN\canBase\Source\CAN.c001494 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001496 146f ANDWF 0x6f,0x0,0x0001498 0910 IORLW 0x1000149a 6e00 MOVWF 0x0,0x000149c 0e00 MOVLW 0x000149e 1477 ANDWF 0x77,0x0,0x00014a0 1000 IORWF 0x0,0x0,0x00014a2 6e77 MOVWF 0x77,0x00014a4 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c0014a6 d80d RCALL 0x14c2F:\MCP\projects\CAN\canBase\Source\CAN.c0014a8 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0014aa d002 BRA 0x14b00014ac 92a4 BCF 0xa4,0x1,0x00014ae d008 BRA 0x14c00014b0 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0014b2 d002 BRA 0x14b80014b4 92a4 BCF 0xa4,0x1,0x00014b6 d004 BRA 0x14c00014b8 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c0014ba d002 BRA 0x14c00014bc 90a4 BCF 0xa4,0x0,0x00014be d000 BRA 0x14c0} F:\MCP\projects\CAN\canBase\Source\CAN.c0014c0 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.c0014c2 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c0014c4 ffe60014c6 cfe1 MOVFF 0xfe1,0xfd90014c8 ffd90014ca 0e0f MOVLW 0xf0014cc 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.c0014ce 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c0014d0 1461 ANDWF 0x61,0x0,0x00014d2 38e8 SWAPF 0xe8,0x0,0x00014d4 0b0f ANDLW 0xf0014d6 6edf MOVWF 0xdf,0x00014d8 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.c0014da 1461 ANDWF 0x61,0x0,0x00014dc 6e06 MOVWF 0x6,0x00014de 6a07 CLRF 0x7,0x00014e0 0e06 MOVLW 0x60014e2 90d8 BCF 0xd8,0x0,0x00014e4 3606 RLCF 0x6,0x1,0x00014e6 3607 RLCF 0x7,0x1,0x00014e8 04e8 DECF 0xe8,0x0,0x00014ea e1fb BNZ 0x14e20014ec 0ee0 MOVLW 0xe00014ee 1462 ANDWF 0x62,0x0,0x00014f0 6e08 MOVWF 0x8,0x00014f2 6a09 CLRF 0x9,0x00014f4 90d8 BCF 0xd8,0x0,0x00014f6 3209 RRCF 0x9,0x1,0x00014f8 3208 RRCF 0x8,0x1,0x00014fa 90d8 BCF 0xd8,0x0,0x00014fc 3209 RRCF 0x9,0x1,0x00014fe 3208 RRCF 0x8,0x1,0x0001500 5006 MOVF 0x6,0x0,0x0001502 2408 ADDWF 0x8,0x0,0x0001504 6e04 MOVWF 0x4,0x0001506 5007 MOVF 0x7,0x0,0x0001508 2009 ADDWFC 0x9,0x0,0x000150a 6e05 MOVWF 0x5,0x000150c 0e03 MOVLW 0x300150e 1462 ANDWF 0x62,0x0,0x0001510 6e0a MOVWF 0xa,0x0001512 6a0b CLRF 0xb,0x0001514 90d8 BCF 0xd8,0x0,0x0001516 360a RLCF 0xa,0x1,0x0001518 360b RLCF 0xb,0x1,0x000151a 5004 MOVF 0x4,0x0,0x000151c 240a ADDWF 0xa,0x0,0x000151e 6e02 MOVWF 0x2,0x0001520 5005 MOVF 0x5,0x0,0x0001522 200b ADDWFC 0xb,0x0,0x0001524 6e03 MOVWF 0x3,0x0001526 0e80 MOVLW 0x80001528 1463 ANDWF 0x63,0x0,0x000152a 6e0c MOVWF 0xc,0x000152c 6a0d CLRF 0xd,0x000152e 0e07 MOVLW 0x7001530 90d8 BCF 0xd8,0x0,0x0001532 320d RRCF 0xd,0x1,0x0001534 320c RRCF 0xc,0x1,0x0001536 04e8 DECF 0xe8,0x0,0x0001538 e1fb BNZ 0x153000153a 5002 MOVF 0x2,0x0,0x000153c 240c ADDWF 0xc,0x0,0x000153e 6e00 MOVWF 0x0,0x0001540 5003 MOVF 0x3,0x0,0x0001542 200d ADDWFC 0xd,0x0,0x0001544 6e01 MOVWF 0x1,0x0001546 0e01 MOVLW 0x1001548 c000 MOVFF 0x0,0xfdb00154a ffdb00154c 0e02 MOVLW 0x200154e c001 MOVFF 0x1,0xfdb001550 ffdb001552 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001554 1463 ANDWF 0x63,0x0,0x0001556 40e8 RRNCF 0xe8,0x0,0x0001558 0b7f ANDLW 0x7f00155a 6ee7 MOVWF 0xe7,0x000155c 0e03 MOVLW 0x300155e cfe7 MOVFF 0xfe7,0xfdb001560 ffdb001562 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c001564 1463 ANDWF 0x63,0x0,0x0001566 6e02 MOVWF 0x2,0x0001568 c002 MOVFF 0x2,0x300156a f00300156c 6a02 CLRF 0x2,0x000156e 5064 MOVF 0x64,0x0,0x0001570 0100 MOVLB 0x0001572 2402 ADDWF 0x2,0x0,0x0001574 6e00 MOVWF 0x0,0x0001576 0e00 MOVLW 0x0001578 2003 ADDWFC 0x3,0x0,0x000157a 6e01 MOVWF 0x1,0x000157c 0e04 MOVLW 0x400157e c000 MOVFF 0x0,0xfdb001580 ffdb001582 0e05 MOVLW 0x5001584 c001 MOVFF 0x1,0xfdb001586 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001588 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.c00158a 0b01 ANDLW 0x100158c 6e02 MOVWF 0x2,0x000158e 5065 MOVF 0x65,0x0,0x0001590 0b02 ANDLW 0x2001592 e001 BZ 0x1596001594 0e01 MOVLW 0x1001596 24e8 ADDWF 0xe8,0x0,0x0001598 6e01 MOVWF 0x1,0x000159a 5065 MOVF 0x65,0x0,0x000159c 0b04 ANDLW 0x400159e e001 BZ 0x15a20015a0 0e01 MOVLW 0x10015a2 0d04 MULLW 0x40015a4 cff3 MOVFF 0xff3,0x00015a6 f0000015a8 5065 MOVF 0x65,0x0,0x00015aa 0b08 ANDLW 0x80015ac e001 BZ 0x15b00015ae 0e01 MOVLW 0x10015b0 0d08 MULLW 0x80015b2 50f3 MOVF 0xf3,0x0,0x00015b4 2400 ADDWF 0x0,0x0,0x00015b6 2401 ADDWF 0x1,0x0,0x00015b8 2402 ADDWF 0x2,0x0,0x00015ba 6ee7 MOVWF 0xe7,0x00015bc 0e06 MOVLW 0x60015be cfe7 MOVFF 0xfe7,0xfdb0015c0 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c0015c2 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c0015c4 cf66 MOVFF 0xf66,0xfdb0015c6 ffdb0015c8 0e08 MOVLW 0x80015ca cf67 MOVFF 0xf67,0xfdb0015cc ffdb0015ce 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c0015d0 cf68 MOVFF 0xf68,0xfdb0015d2 ffdb0015d4 0e0a MOVLW 0xa0015d6 cf69 MOVFF 0xf69,0xfdb0015d8 ffdb0015da 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c0015dc cf6a MOVFF 0xf6a,0xfdb0015de ffdb0015e0 0e0c MOVLW 0xc0015e2 cf6b MOVFF 0xf6b,0xfdb0015e4 ffdb0015e6 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c0015e8 cf6c MOVFF 0xf6c,0xfdb0015ea ffdb0015ec 0e0e MOVLW 0xe0015ee cf6d MOVFF 0xf6d,0xfdb0015f0 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c0015f2 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.c0015f4 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0015f6 ffe90015f8 cfda MOVFF 0xfda,0xfea0015fa ffea0015fc cfee MOVFF 0xfee,0xfe60015fe ffe6001600 cfee MOVFF 0xfee,0xfe6001602 ffe6001604 cfee MOVFF 0xfee,0xfe6001606 ffe6001608 cfee MOVFF 0xfee,0xfe600160a ffe600160c cfee MOVFF 0xfee,0xfe600160e ffe6001610 cfee MOVFF 0xfee,0xfe6001612 ffe6001614 cfee MOVFF 0xfee,0xfe6001616 ffe6001618 cfee MOVFF 0xfee,0xfe600161a ffe600161c cfee MOVFF 0xfee,0xfe600161e ffe6001620 cfee MOVFF 0xfee,0xfe6001622 ffe6001624 cfee MOVFF 0xfee,0xfe6001626 ffe6001628 cfee MOVFF 0xfee,0xfe600162a ffe600162c cfee MOVFF 0xfee,0xfe600162e ffe6001630 cfee MOVFF 0xfee,0xfe6001632 ffe6001634 cfee MOVFF 0xfee,0xfe6001636 ffe6001638 ec4f CALL 0x129e,0x000163a f00900163c 6e00 MOVWF 0x0,0x000163e 0e0f MOVLW 0xf001640 5ee1 SUBWF 0xe1,0x1,0x0001642 5000 MOVF 0x0,0x0,0x0001644 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c001646 5ce1 SUBWF 0xe1,0x0,0x0001648 e202 BC 0x164e00164a 6ae1 CLRF 0xe1,0x000164c 52e5 MOVF 0xe5,0x1,0x000164e 6ee1 MOVWF 0xe1,0x0001650 52e5 MOVF 0xe5,0x1,0x0001652 cfe7 MOVFF 0xfe7,0xfd9001654 ffd9001656 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.c001658 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c00165a ffe600165c cfe1 MOVFF 0xfe1,0xfd900165e ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001660 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001662 b740 BTFSC 0x40,0x3,0x1001664 d004 BRA 0x166e001666 0e00 MOVLW 0x0001668 1477 ANDWF 0x77,0x0,0x000166a 0903 IORLW 0x300166c 6e77 MOVWF 0x77,0x000166e 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001670 b730 BTFSC 0x30,0x3,0x1001672 d004 BRA 0x167c001674 0e00 MOVLW 0x0001676 1477 ANDWF 0x77,0x0,0x0001678 0904 IORLW 0x400167a 6e77 MOVWF 0x77,0x000167c 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c00167e b720 BTFSC 0x20,0x3,0x1001680 d005 BRA 0x168c001682 0e00 MOVLW 0x0001684 1477 ANDWF 0x77,0x0,0x0001686 0905 IORLW 0x5001688 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c00168a d002 BRA 0x1690 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c00168c 0e00 MOVLW 0x000168e d0b0 BRA 0x17f0F:\MCP\projects\CAN\canBase\Source\CAN.c001690 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001692 cfdb MOVFF 0xfdb,0x0001694 f000001696 3400 RLCF 0x0,0x0,0x0001698 e20e BC 0x16b600169a 0eef MOVLW 0xef00169c cfdb MOVFF 0xfdb,0x100169e f0010016a0 0e03 MOVLW 0x30016a2 6ee7 MOVWF 0xe7,0x00016a4 1801 XORWF 0x1,0x0,0x00016a6 aee8 BTFSS 0xe8,0x7,0x00016a8 d002 BRA 0x16ae0016aa 3401 RLCF 0x1,0x0,0x00016ac d003 BRA 0x16b40016ae 50e7 MOVF 0xe7,0x0,0x00016b0 80d8 BSF 0xd8,0x0,0x00016b2 5401 SUBFWB 0x1,0x0,0x00016b4 e202 BC 0x16ba0016b6 0eef MOVLW 0xef0016b8 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.c0016ba 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0016bc cfdb MOVFF 0xfdb,0x00016be f0000016c0 0ef2 MOVLW 0xf20016c2 cfdb MOVFF 0xfdb,0x10016c4 f0010016c6 0ec0 MOVLW 0xc00016c8 1600 ANDWF 0x0,0x1,0x00016ca 0e03 MOVLW 0x30016cc 1601 ANDWF 0x1,0x1,0x00016ce 0e06 MOVLW 0x60016d0 90d8 BCF 0xd8,0x0,0x00016d2 3201 RRCF 0x1,0x1,0x00016d4 3200 RRCF 0x0,0x1,0x00016d6 04e8 DECF 0xe8,0x0,0x00016d8 e1fb BNZ 0x16d00016da 0ef0 MOVLW 0xf00016dc 50db MOVF 0xdb,0x0,0x00016de 0b0f ANDLW 0xf0016e0 0d10 MULLW 0x100016e2 50f3 MOVF 0xf3,0x0,0x00016e4 2400 ADDWF 0x0,0x0,0x00016e6 6e61 MOVWF 0x61,0x00016e8 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0016ea 6ee7 MOVWF 0xe7,0x00016ec 0ef1 MOVLW 0xf10016ee cfdb MOVFF 0xfdb,0x20016f0 f0020016f2 0ef2 MOVLW 0xf20016f4 cfdb MOVFF 0xfdb,0x30016f6 f0030016f8 50e7 MOVF 0xe7,0x0,0x00016fa 1602 ANDWF 0x2,0x1,0x00016fc 6a03 CLRF 0x3,0x00016fe 90d8 BCF 0xd8,0x0,0x0001700 3203 RRCF 0x3,0x1,0x0001702 3202 RRCF 0x2,0x1,0x0001704 0e3f MOVLW 0x3f001706 6ee7 MOVWF 0xe7,0x0001708 0ef1 MOVLW 0xf100170a cfdb MOVFF 0xfdb,0x000170c f00000170e 0ef2 MOVLW 0xf2001710 cfdb MOVFF 0xfdb,0x1001712 f001001714 50e7 MOVF 0xe7,0x0,0x0001716 1600 ANDWF 0x0,0x1,0x0001718 6a01 CLRF 0x1,0x000171a 90d8 BCF 0xd8,0x0,0x000171c 3600 RLCF 0x0,0x1,0x000171e 3601 RLCF 0x1,0x1,0x0001720 90d8 BCF 0xd8,0x0,0x0001722 3600 RLCF 0x0,0x1,0x0001724 3601 RLCF 0x1,0x1,0x0001726 5000 MOVF 0x0,0x0,0x0001728 2402 ADDWF 0x2,0x0,0x000172a 6e62 MOVWF 0x62,0x000172c 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.c00172e cfdb MOVFF 0xfdb,0x2001730 f002001732 0ef5 MOVLW 0xf5001734 cfdb MOVFF 0xfdb,0x3001736 f003001738 0e00 MOVLW 0x000173a 1602 ANDWF 0x2,0x1,0x000173c 0e01 MOVLW 0x100173e 1603 ANDWF 0x3,0x1,0x0001740 c003 MOVFF 0x3,0x2001742 f002001744 6a03 CLRF 0x3,0x0001746 0e01 MOVLW 0x1001748 6ee7 MOVWF 0xe7,0x000174a 0ef1 MOVLW 0xf100174c cfdb MOVFF 0xfdb,0x000174e f000001750 0ef2 MOVLW 0xf2001752 cfdb MOVFF 0xfdb,0x1001754 f001001756 50e7 MOVF 0xe7,0x0,0x0001758 1600 ANDWF 0x0,0x1,0x000175a 6a01 CLRF 0x1,0x000175c 0e07 MOVLW 0x700175e 90d8 BCF 0xd8,0x0,0x0001760 3600 RLCF 0x0,0x1,0x0001762 3601 RLCF 0x1,0x1,0x0001764 04e8 DECF 0xe8,0x0,0x0001766 e1fb BNZ 0x175e001768 0ef3 MOVLW 0xf300176a 50db MOVF 0xdb,0x0,0x000176c 0b3f ANDLW 0x3f00176e 24e8 ADDWF 0xe8,0x0,0x0001770 2400 ADDWF 0x0,0x0,0x0001772 2402 ADDWF 0x2,0x0,0x0001774 6e63 MOVWF 0x63,0x0001776 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001778 6ee7 MOVWF 0xe7,0x000177a 0ef4 MOVLW 0xf400177c cfdb MOVFF 0xfdb,0x000177e f000001780 0ef5 MOVLW 0xf5001782 cfdb MOVFF 0xfdb,0x1001784 f001001786 50e7 MOVF 0xe7,0x0,0x0001788 1600 ANDWF 0x0,0x1,0x000178a 6a01 CLRF 0x1,0x000178c 5000 MOVF 0x0,0x0,0x000178e 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001790 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001792 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001794 50db MOVF 0xdb,0x0,0x0001796 0808 SUBLW 0x8001798 e203 BC 0x17a000179a 0e08 MOVLW 0x800179c 6e65 MOVWF 0x65,0x000179e d003 BRA 0x17a60017a0 0ef6 MOVLW 0xf60017a2 50db MOVF 0xdb,0x0,0x00017a4 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.c0017a6 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.c0017a8 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c0017aa 50db MOVF 0xdb,0x0,0x00017ac 6e66 MOVWF 0x66,0x00017ae 0ef8 MOVLW 0xf80017b0 50db MOVF 0xdb,0x0,0x00017b2 6e67 MOVWF 0x67,0x00017b4 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0017b6 50db MOVF 0xdb,0x0,0x00017b8 6e68 MOVWF 0x68,0x00017ba 0efa MOVLW 0xfa0017bc 50db MOVF 0xdb,0x0,0x00017be 6e69 MOVWF 0x69,0x00017c0 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0017c2 50db MOVF 0xdb,0x0,0x00017c4 6e6a MOVWF 0x6a,0x00017c6 0efc MOVLW 0xfc0017c8 50db MOVF 0xdb,0x0,0x00017ca 6e6b MOVWF 0x6b,0x00017cc 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0017ce 50db MOVF 0xdb,0x0,0x00017d0 6e6c MOVWF 0x6c,0x00017d2 0efe MOVLW 0xfe0017d4 50db MOVF 0xdb,0x0,0x00017d6 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0017d8 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.c0017da 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0017dc cfdb MOVFF 0xfdb,0xfe60017de ffe60017e0 0efc MOVLW 0xfc0017e2 1460 ANDWF 0x60,0x0,0x00017e4 52e5 MOVF 0xe5,0x1,0x00017e6 10e7 IORWF 0xe7,0x0,0x00017e8 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.c0017ea 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.c0017ec 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0017ee d000 BRA 0x17f0F:\MCP\projects\CAN\canBase\Source\CAN.c0017f0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0017f2 cfe7 MOVFF 0xfe7,0xfd90017f4 ffd90017f6 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-15 10:04:20 +0100 (on, 15 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Main.c* Revision: $Revision: 103 $ 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.c001044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBase\Source\Main.c001046 ffe6001048 cfe1 MOVFF 0xfe1,0xfd900104a ffd900104c 0e0f MOVLW 0xf00104e 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 outCm; 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.c001050 d921 RCALL 0x1294 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.c001052 ec16 CALL 0x142c,0x0 canInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001054 f00a#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001056 eca1 CALL 0x1942,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001058 f00cF:\MCP\projects\CAN\canBase\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBase\Source\Main.c00105a 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\Main.c00105c 6ee6 MOVWF 0xe6,0x000105e 6ae6 CLRF 0xe6,0x0001060 ecfc CALL 0x17f8,0x0001062 f00b001064 52e5 MOVF 0xe5,0x1,0x0001066 52e5 MOVF 0xe5,0x1,0x0001068 082a SUBLW 0x2a00106a e12b BNZ 0x10c2{ F:\MCP\projects\CAN\canBase\Source\Main.c00106c 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\Main.c00106e 6ee6 MOVWF 0xe6,0x0001070 6ae6 CLRF 0xe6,0x0001072 ecfc CALL 0x17f8,0x0001074 f00b001076 52e5 MOVF 0xe5,0x1,0x0001078 52e5 MOVF 0xe5,0x1,0x000107a 6e00 MOVWF 0x0,0x000107c c000 MOVFF 0x0,0x100107e f001001080 6a00 CLRF 0x0,0x0001082 c000 MOVFF 0x0,0xfe6001084 ffe6001086 c001 MOVFF 0x1,0xfe6001088 ffe600108a 0e02 MOVLW 0x200108c 6ee6 MOVWF 0xe6,0x000108e 6ae6 CLRF 0xe6,0x0001090 ecfc CALL 0x17f8,0x0001092 f00b001094 52e5 MOVF 0xe5,0x1,0x0001096 52e5 MOVF 0xe5,0x1,0x0001098 52e5 MOVF 0xe5,0x1,0x000109a cfe7 MOVFF 0xfe7,0x100109c f00100109e 52e5 MOVF 0xe5,0x1,0x00010a0 cfe7 MOVFF 0xfe7,0x00010a2 f0000010a4 0100 MOVLB 0x00010a6 2400 ADDWF 0x0,0x0,0x00010a8 6f60 MOVWF 0x60,0x10010aa 0e00 MOVLW 0x00010ac 2001 ADDWFC 0x1,0x0,0x00010ae 6f61 MOVWF 0x61,0x10010b0 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\Main.c0010b2 6ee6 MOVWF 0xe6,0x00010b4 6ae6 CLRF 0xe6,0x00010b6 ecfc CALL 0x17f8,0x00010b8 f00b0010ba 52e5 MOVF 0xe5,0x1,0x00010bc 52e5 MOVF 0xe5,0x1,0x00010be 0100 MOVLB 0x00010c0 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0011d0 d778 BRA 0x10c2 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.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0010c2 ecab CALL 0x1956,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\Main.c0010c4 f00c0010c6 0100 MOVLB 0x00010c8 516b MOVF 0x6b,0x0,0x10010ca 5c12 SUBWF 0x12,0x0,0x00010cc 6e00 MOVWF 0x0,0x00010ce 516c MOVF 0x6c,0x0,0x10010d0 5813 SUBWFB 0x13,0x0,0x00010d2 6e01 MOVWF 0x1,0x00010d4 516d MOVF 0x6d,0x0,0x10010d6 5814 SUBWFB 0x14,0x0,0x00010d8 6e02 MOVWF 0x2,0x00010da 516e MOVF 0x6e,0x0,0x10010dc 5815 SUBWFB 0x15,0x0,0x00010de 6e03 MOVWF 0x3,0x00010e0 80d8 BSF 0xd8,0x0,0x00010e2 0ef4 MOVLW 0xf40010e4 5400 SUBFWB 0x0,0x0,0x00010e6 0e01 MOVLW 0x10010e8 5401 SUBFWB 0x1,0x0,0x00010ea 0e00 MOVLW 0x00010ec 5402 SUBFWB 0x2,0x0,0x00010ee 0e00 MOVLW 0x00010f0 5403 SUBFWB 0x3,0x0,0x00010f2 e24a BC 0x1188{ F:\MCP\projects\CAN\canBase\Source\Main.c0010f4 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\Main.c0010f6 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\Main.c0010f8 6ef3 MOVWF 0xf3,0x00010fa 0e01 MOVLW 0x10010fc cff3 MOVFF 0xff3,0xfdb0010fe ffdb001100 0e02 MOVLW 0x2001102 6adb CLRF 0xdb,0x0001104 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\Main.c001106 c062 MOVFF 0x62,0xfdb001108 ffdb00110a 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\Main.c00110c c060 MOVFF 0x60,0xfdb00110e ffdb001110 0e05 MOVLW 0x5001112 c061 MOVFF 0x61,0xfdb001114 ffdb001116 0e06 MOVLW 0x6 outCm.data_length = 0; F:\MCP\projects\CAN\canBase\Source\Main.c001118 6adb CLRF 0xdb,0x000111a 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\Main.c00111c 6ee6 MOVWF 0xe6,0x000111e cfd9 MOVFF 0xfd9,0xfe9001120 ffe9001122 cfda MOVFF 0xfda,0xfea001124 ffea001126 cfee MOVFF 0xfee,0xfe6001128 ffe600112a cfee MOVFF 0xfee,0xfe600112c ffe600112e cfee MOVFF 0xfee,0xfe6001130 ffe6001132 cfee MOVFF 0xfee,0xfe6001134 ffe6001136 cfee MOVFF 0xfee,0xfe6001138 ffe600113a cfee MOVFF 0xfee,0xfe600113c ffe600113e cfee MOVFF 0xfee,0xfe6001140 ffe6001142 cfee MOVFF 0xfee,0xfe6001144 ffe6001146 cfee MOVFF 0xfee,0xfe6001148 ffe600114a cfee MOVFF 0xfee,0xfe600114c ffe600114e cfee MOVFF 0xfee,0xfe6001150 ffe6001152 cfee MOVFF 0xfee,0xfe6001154 ffe6001156 cfee MOVFF 0xfee,0xfe6001158 ffe600115a cfee MOVFF 0xfee,0xfe600115c ffe600115e cfee MOVFF 0xfee,0xfe6001160 ffe6001162 ec2c CALL 0x1658,0x0001164 f00b001166 6e00 MOVWF 0x0,0x0001168 0e10 MOVLW 0x1000116a 5ee1 SUBWF 0xe1,0x1,0x000116c 5000 MOVF 0x0,0x0,0x000116e 0900 IORLW 0x0001170 e101 BNZ 0x1174001172 d7d3 BRA 0x111aF:\MCP\projects\CAN\canBase\Source\Main.c001174 ecab CALL 0x1956,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c001176 f00c001178 c012 MOVFF 0x12,0x6b00117a f06b00117c c013 MOVFF 0x13,0x6c00117e f06c001180 c014 MOVFF 0x14,0x6d001182 f06d001184 c015 MOVFF 0x15,0x6e001186 f06e} F:\MCP\projects\CAN\canBase\Source\Main.c001188 ecab CALL 0x1956,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canBase\Source\Main.c00118a f00c00118c 0100 MOVLB 0x000118e 5167 MOVF 0x67,0x0,0x1001190 5c12 SUBWF 0x12,0x0,0x0001192 6e00 MOVWF 0x0,0x0001194 5168 MOVF 0x68,0x0,0x1001196 5813 SUBWFB 0x13,0x0,0x0001198 6e01 MOVWF 0x1,0x000119a 5169 MOVF 0x69,0x0,0x100119c 5814 SUBWFB 0x14,0x0,0x000119e 6e02 MOVWF 0x2,0x00011a0 516a MOVF 0x6a,0x0,0x10011a2 5815 SUBWFB 0x15,0x0,0x00011a4 6e03 MOVWF 0x3,0x00011a6 80d8 BSF 0xd8,0x0,0x00011a8 0e64 MOVLW 0x640011aa 5400 SUBFWB 0x0,0x0,0x00011ac 0e00 MOVLW 0x00011ae 5401 SUBFWB 0x1,0x0,0x00011b0 0e00 MOVLW 0x00011b2 5402 SUBFWB 0x2,0x0,0x00011b4 0e00 MOVLW 0x00011b6 5403 SUBFWB 0x3,0x0,0x00011b8 e20b BC 0x11d0{ F:\MCP\projects\CAN\canBase\Source\Main.c0011ba 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c0011bc ecab CALL 0x1956,0x0 t = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c0011be f00c0011c0 c012 MOVFF 0x12,0x670011c2 f0670011c4 c013 MOVFF 0x13,0x680011c6 f0680011c8 c014 MOVFF 0x14,0x690011ca f0690011cc c015 MOVFF 0x15,0x6a0011ce f06a} F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c0011d2 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c0011d4 5ce1 SUBWF 0xe1,0x0,0x00011d6 e202 BC 0x11dc0011d8 6ae1 CLRF 0xe1,0x00011da 52e5 MOVF 0xe5,0x1,0x00011dc 6ee1 MOVWF 0xe1,0x00011de 52e5 MOVF 0xe5,0x1,0x00011e0 cfe7 MOVFF 0xfe7,0xfd90011e2 ffd90011e4 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.c0011e6 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0011e8 ffe40011ea cfe2 MOVFF 0xfe2,0xfda0011ec ffda0011ee cfe9 MOVFF 0xfe9,0xfe40011f0 ffe40011f2 cfea MOVFF 0xfea,0xfe40011f4 ffe40011f6 cff6 MOVFF 0xff6,0xfe40011f8 ffe40011fa cff7 MOVFF 0xff7,0xfe40011fc ffe40011fe cff5 MOVFF 0xff5,0xfe4001200 ffe4001202 cff3 MOVFF 0xff3,0xfe4001204 ffe4001206 cff4 MOVFF 0xff4,0xfe4001208 ffe400120a cffa MOVFF 0xffa,0xfe400120c ffe400120e ee00 LFSR 0x0,0xe001210 f00e001212 0e0b MOVLW 0xb001214 04e8 DECF 0xe8,0x0,0x0001216 e303 BNC 0x121e001218 cfee MOVFF 0xfee,0xfe400121a ffe400121c d7fb BRA 0x121400121e ee00 LFSR 0x0,0x0001220 f000001222 0e0e MOVLW 0xe001224 04e8 DECF 0xe8,0x0,0x0001226 e303 BNC 0x122e001228 cfee MOVFF 0xfee,0xfe400122a ffe400122c d7fb BRA 0x122400122e 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.c001230 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.c001232 ec41 CALL 0x1482,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c001234 f00a#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001236 ecb5 CALL 0x196a,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c001238 f00cF:\MCP\projects\CAN\canBase\Source\Main.c00123a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c00123c ee00 LFSR 0x0,0xd00123e f00d001240 0e0e MOVLW 0xe001242 04e8 DECF 0xe8,0x0,0x0001244 e303 BNC 0x124c001246 cfe5 MOVFF 0xfe5,0xfed001248 ffed00124a d7fb BRA 0x124200124c ee00 LFSR 0x0,0x1800124e f018001250 0e0b MOVLW 0xb001252 04e8 DECF 0xe8,0x0,0x0001254 e303 BNC 0x125c001256 cfe5 MOVFF 0xfe5,0xfed001258 ffed00125a d7fb BRA 0x125200125c cfe5 MOVFF 0xfe5,0xffa00125e fffa001260 cfe5 MOVFF 0xfe5,0xff4001262 fff4001264 cfe5 MOVFF 0xfe5,0xff3001266 fff3001268 cfe5 MOVFF 0xfe5,0xff500126a fff500126c cfe5 MOVFF 0xfe5,0xff700126e fff7001270 cfe5 MOVFF 0xfe5,0xff6001272 fff6001274 cfe5 MOVFF 0xfe5,0xfea001276 ffea001278 cfe5 MOVFF 0xfe5,0xfe900127a ffe900127c cfe5 MOVFF 0xfe5,0xfda00127e ffda001280 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.c001282 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c001284 ffe4001286 cfe2 MOVFF 0xfe2,0xfda001288 ffda00128a 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00128c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c00128e cfe5 MOVFF 0xfe5,0xfda001290 ffda001292 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.c001294 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.c001296 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c001298 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.c00129a 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.c00129c 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.c00129e cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c0012a0 ffe60012a2 cfe1 MOVFF 0xfe1,0xfd90012a4 ffd90012a6 0e0f MOVLW 0xf0012a8 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0012aa 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0012ac 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canBase\Source\Main.c0012ae 50db MOVF 0xdb,0x0,0x00012b0 e001 BZ 0x12b40012b2 d0b2 BRA 0x1418{ F:\MCP\projects\CAN\canBase\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canBase\Source\Main.c0012b4 0ef3 MOVLW 0xf3 if (cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) F:\MCP\projects\CAN\canBase\Source\Main.c0012b6 50db MOVF 0xdb,0x0,0x00012b8 0100 MOVLB 0x00012ba 5d62 SUBWF 0x62,0x0,0x10012bc e001 BZ 0x12c00012be d0ab BRA 0x14160012c0 0efc MOVLW 0xfc0012c2 cfdb MOVFF 0xfdb,0x20012c4 f0020012c6 c002 MOVFF 0x2,0x30012c8 f0030012ca 6a02 CLRF 0x2,0x00012cc 0efb MOVLW 0xfb0012ce 50db MOVF 0xdb,0x0,0x00012d0 0100 MOVLB 0x00012d2 2402 ADDWF 0x2,0x0,0x00012d4 6e00 MOVWF 0x0,0x00012d6 0e00 MOVLW 0x00012d8 2003 ADDWFC 0x3,0x0,0x00012da 6e01 MOVWF 0x1,0x00012dc 0100 MOVLB 0x00012de 5160 MOVF 0x60,0x0,0x10012e0 1800 XORWF 0x0,0x0,0x00012e2 e102 BNZ 0x12e80012e4 5161 MOVF 0x61,0x0,0x10012e6 1801 XORWF 0x1,0x0,0x00012e8 e001 BZ 0x12ec0012ea d095 BRA 0x1416{ F:\MCP\projects\CAN\canBase\Source\Main.c0012ec 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canBase\Source\Main.c0012ee cfdb MOVFF 0xfdb,0x140012f0 f0140012f2 0ef2 MOVLW 0xf20012f4 cfdb MOVFF 0xfdb,0x150012f6 f0150012f8 0e06 MOVLW 0x60012fa 1814 XORWF 0x14,0x0,0x00012fc e101 BNZ 0x13000012fe 5015 MOVF 0x15,0x0,0x0001300 e008 BZ 0x1312001302 0e01 MOVLW 0x1001304 1814 XORWF 0x14,0x0,0x0001306 e101 BNZ 0x130a001308 5015 MOVF 0x15,0x0,0x000130a e001 BZ 0x130e00130c d084 BRA 0x1416{ F:\MCP\projects\CAN\canBase\Source\Main.c00130e 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canBase\Source\Main.c001310 d082 BRA 0x1416case FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canBase\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\Main.c001312 0ef8 MOVLW 0xf8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW]; F:\MCP\projects\CAN\canBase\Source\Main.c001314 cfdb MOVFF 0xfdb,0x0001316 f000001318 c000 MOVFF 0x0,0x100131a f00100131c 6a00 CLRF 0x0,0x000131e 0ef7 MOVLW 0xf7001320 50db MOVF 0xdb,0x0,0x0001322 0100 MOVLB 0x0001324 2400 ADDWF 0x0,0x0,0x0001326 6f60 MOVWF 0x60,0x1001328 0e00 MOVLW 0x000132a 2001 ADDWFC 0x1,0x0,0x000132c 6f61 MOVWF 0x61,0x100132e 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID]; F:\MCP\projects\CAN\canBase\Source\Main.c001330 cfdb MOVFF 0xfdb,0x62001332 f062001334 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH]); F:\MCP\projects\CAN\canBase\Source\Main.c001336 cfdb MOVFF 0xfdb,0xfe6001338 ffe600133a 0e01 MOVLW 0x100133c 6ee6 MOVWF 0xe6,0x000133e 6ae6 CLRF 0xe6,0x0001340 ec21 CALL 0x1842,0x0001342 f00c001344 52e5 MOVF 0xe5,0x1,0x0001346 52e5 MOVF 0xe5,0x1,0x0001348 52e5 MOVF 0xe5,0x1,0x000134a 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW]); F:\MCP\projects\CAN\canBase\Source\Main.c00134c cfdb MOVFF 0xfdb,0xfe600134e ffe6001350 0e02 MOVLW 0x2001352 6ee6 MOVWF 0xe6,0x0001354 6ae6 CLRF 0xe6,0x0001356 ec21 CALL 0x1842,0x0001358 f00c00135a 52e5 MOVF 0xe5,0x1,0x000135c 52e5 MOVF 0xe5,0x1,0x000135e 52e5 MOVF 0xe5,0x1,0x0001360 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID]); F:\MCP\projects\CAN\canBase\Source\Main.c001362 cfdb MOVFF 0xfdb,0xfe6001364 ffe6001366 0e03 MOVLW 0x3001368 6ee6 MOVWF 0xe6,0x000136a 6ae6 CLRF 0xe6,0x000136c ec21 CALL 0x1842,0x000136e f00c001370 52e5 MOVF 0xe5,0x1,0x0001372 52e5 MOVF 0xe5,0x1,0x0001374 52e5 MOVF 0xe5,0x1,0x0001376 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\Main.c001378 6ee6 MOVWF 0xe6,0x000137a 0e00 MOVLW 0x000137c 6ee6 MOVWF 0xe6,0x000137e 6ae6 CLRF 0xe6,0x0001380 ec21 CALL 0x1842,0x0001382 f00c001384 52e5 MOVF 0xe5,0x1,0x0001386 52e5 MOVF 0xe5,0x1,0x0001388 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\Main.c00138a 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\Main.c00138c 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\Main.c00138e 6ef3 MOVWF 0xf3,0x0001390 0e01 MOVLW 0x1001392 cff3 MOVFF 0xff3,0xfdb001394 ffdb001396 0e02 MOVLW 0x2001398 6adb CLRF 0xdb,0x000139a 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\Main.c00139c c062 MOVFF 0x62,0xfdb00139e ffdb0013a0 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\Main.c0013a2 c060 MOVFF 0x60,0xfdb0013a4 ffdb0013a6 0e05 MOVLW 0x50013a8 c061 MOVFF 0x61,0xfdb0013aa ffdb0013ac 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\Main.c0013ae 6ef3 MOVWF 0xf3,0x00013b0 0e06 MOVLW 0x60013b2 cff3 MOVFF 0xff3,0xfdb0013b4 ffdb0013b6 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\Main.c0013b8 6adb CLRF 0xdb,0x00013ba 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\Main.c0013bc 6ee6 MOVWF 0xe6,0x00013be cfd9 MOVFF 0xfd9,0xfe90013c0 ffe90013c2 cfda MOVFF 0xfda,0xfea0013c4 ffea0013c6 cfee MOVFF 0xfee,0xfe60013c8 ffe60013ca cfee MOVFF 0xfee,0xfe60013cc ffe60013ce cfee MOVFF 0xfee,0xfe60013d0 ffe60013d2 cfee MOVFF 0xfee,0xfe60013d4 ffe60013d6 cfee MOVFF 0xfee,0xfe60013d8 ffe60013da cfee MOVFF 0xfee,0xfe60013dc ffe60013de cfee MOVFF 0xfee,0xfe60013e0 ffe60013e2 cfee MOVFF 0xfee,0xfe60013e4 ffe60013e6 cfee MOVFF 0xfee,0xfe60013e8 ffe60013ea cfee MOVFF 0xfee,0xfe60013ec ffe60013ee cfee MOVFF 0xfee,0xfe60013f0 ffe60013f2 cfee MOVFF 0xfee,0xfe60013f4 ffe60013f6 cfee MOVFF 0xfee,0xfe60013f8 ffe60013fa cfee MOVFF 0xfee,0xfe60013fc ffe60013fe cfee MOVFF 0xfee,0xfe6001400 ffe6001402 ec2c CALL 0x1658,0x0001404 f00b001406 6e00 MOVWF 0x0,0x0001408 0e10 MOVLW 0x1000140a 5ee1 SUBWF 0xe1,0x1,0x000140c 5000 MOVF 0x0,0x0,0x000140e 0900 IORLW 0x0001410 e101 BNZ 0x1414001412 d7d3 BRA 0x13ba001414 d000 BRA 0x1416 break; F:\MCP\projects\CAN\canBase\Source\Main.c} 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.c001416 d000 BRA 0x1418 break; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c001418 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c00141a 5ce1 SUBWF 0xe1,0x0,0x000141c e202 BC 0x142200141e 6ae1 CLRF 0xe1,0x0001420 52e5 MOVF 0xe5,0x1,0x0001422 6ee1 MOVWF 0xe1,0x0001424 52e5 MOVF 0xe5,0x1,0x0001426 cfe7 MOVFF 0xfe7,0xfd9001428 ffd900142a 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 efc3 GOTO 0x1986 _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 eff3 GOTO 0x11e6 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00100a f00800100c 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 ef41 GOTO 0x1282 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00101a f00900101c 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.c0017f8 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c0017fa ffe60017fc cfe1 MOVFF 0xfe1,0xfd90017fe ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001800 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001802 cfdb MOVFF 0xfdb,0x0001804 f000001806 0efe MOVLW 0xfe001808 cfdb MOVFF 0xfdb,0x100180a f00100180c c001 MOVFF 0x1,0x000180e f000001810 6a01 CLRF 0x1,0x0001812 5000 MOVF 0x0,0x0,0x0001814 6eaa MOVWF 0xaa,0x0001816 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001818 6ee7 MOVWF 0xe7,0x000181a 0efd MOVLW 0xfd00181c cfdb MOVFF 0xfdb,0x000181e f000001820 0efe MOVLW 0xfe001822 cfdb MOVFF 0xfdb,0x1001824 f001001826 50e7 MOVF 0xe7,0x0,0x0001828 1600 ANDWF 0x0,0x1,0x000182a 6a01 CLRF 0x1,0x000182c 5000 MOVF 0x0,0x0,0x000182e 6ea9 MOVWF 0xa9,0x0001830 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001832 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001834 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001836 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001838 d000 BRA 0x183a00183a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00183c cfe7 MOVFF 0xfe7,0xfd900183e ffd9001840 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c001842 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001844 ffe6001846 cfe1 MOVFF 0xfe1,0xfd9001848 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c00184a 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c00184c 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c00184e cfdb MOVFF 0xfdb,0x0001850 f000001852 0efe MOVLW 0xfe001854 cfdb MOVFF 0xfdb,0x1001856 f001001858 c001 MOVFF 0x1,0x000185a f00000185c 6a01 CLRF 0x1,0x000185e 5000 MOVF 0x0,0x0,0x0001860 6eaa MOVWF 0xaa,0x0001862 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001864 6ee7 MOVWF 0xe7,0x0001866 0efd MOVLW 0xfd001868 cfdb MOVFF 0xfdb,0x000186a f00000186c 0efe MOVLW 0xfe00186e cfdb MOVFF 0xfdb,0x1001870 f001001872 50e7 MOVF 0xe7,0x0,0x0001874 1600 ANDWF 0x0,0x1,0x0001876 6a01 CLRF 0x1,0x0001878 5000 MOVF 0x0,0x0,0x000187a 6ea9 MOVWF 0xa9,0x000187c 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c00187e 50db MOVF 0xdb,0x0,0x0001880 6ea8 MOVWF 0xa8,0x0001882 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001884 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001886 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001888 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c00188a 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c00188c 6ea7 MOVWF 0xa7,0x000188e 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001890 6ea7 MOVWF 0xa7,0x0001892 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001894 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001896 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001898 d7fe BRA 0x189600189a 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c00189c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c00189e cfe7 MOVFF 0xfe7,0xfd90018a0 ffd90018a2 0012 RETURN 0x0