Rev 85 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Nov 14 10:50:27 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$ F:\MCP\projects\CAN\canBase\Source\Tick.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canBase\Source\Tick.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canBase\Source\Tick.c* Revision: $Revision$ 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.c00163c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00163e 6ed6 MOVWF 0xd6,0x0001640 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001642 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.c001644 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001646 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001648 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c00164a 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c00164c 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c00164e 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.c001650 c072 MOVFF 0x72,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001652 f012001654 c073 MOVFF 0x73,0x13001656 f013001658 c074 MOVFF 0x74,0x1400165a f01400165c c075 MOVFF 0x75,0x1500165e f015001660 d000 BRA 0x1662001662 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.c001664 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001666 d00b BRA 0x167e{ F:\MCP\projects\CAN\canBase\Source\Tick.c001668 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c00166a 6ed7 MOVWF 0xd7,0x000166c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00166e 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001670 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001672 2b72 INCF 0x72,0x1,0x1001674 0e00 MOVLW 0x0001676 2373 ADDWFC 0x73,0x1,0x1001678 2374 ADDWFC 0x74,0x1,0x100167a 2375 ADDWFC 0x75,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c00167c 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c00167e 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$ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision$ 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 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 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.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\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 e047 BZ 0x113a{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canBase\Source\CAN.c0010ac ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae d006 BRA 0x10bc0010b0 0e00 MOVLW 0x00010b2 1477 ANDWF 0x77,0x0,0x00010b4 0910 IORLW 0x100010b6 6e77 MOVWF 0x77,0x00010b8 d841 RCALL 0x113c0010ba d039 BRA 0x112e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010bc 010f MOVLB 0xf0010be af50 BTFSS 0x50,0x7,0x10010c0 d006 BRA 0x10ce0010c2 0e00 MOVLW 0x00010c4 1477 ANDWF 0x77,0x0,0x00010c6 0911 IORLW 0x110010c8 6e77 MOVWF 0x77,0x00010ca d838 RCALL 0x113c0010cc d030 BRA 0x112e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010ce 010e MOVLB 0xe0010d0 af20 BTFSS 0x20,0x7,0x10010d2 d006 BRA 0x10e00010d4 0e00 MOVLW 0x00010d6 1477 ANDWF 0x77,0x0,0x00010d8 0912 IORLW 0x120010da 6e77 MOVWF 0x77,0x00010dc d82f RCALL 0x113c0010de d027 BRA 0x112e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010e0 af30 BTFSS 0x30,0x7,0x10010e2 d006 BRA 0x10f00010e4 0e00 MOVLW 0x00010e6 1477 ANDWF 0x77,0x0,0x00010e8 0913 IORLW 0x130010ea 6e77 MOVWF 0x77,0x00010ec d827 RCALL 0x113c0010ee d01f BRA 0x112e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010f0 af40 BTFSS 0x40,0x7,0x10010f2 d006 BRA 0x11000010f4 0e00 MOVLW 0x00010f6 1477 ANDWF 0x77,0x0,0x00010f8 0914 IORLW 0x140010fa 6e77 MOVWF 0x77,0x00010fc d81f RCALL 0x113c0010fe d017 BRA 0x112e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001100 af50 BTFSS 0x50,0x7,0x1001102 d006 BRA 0x1110001104 0e00 MOVLW 0x0001106 1477 ANDWF 0x77,0x0,0x0001108 0915 IORLW 0x1500110a 6e77 MOVWF 0x77,0x000110c d817 RCALL 0x113c00110e d00f BRA 0x112e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001110 af60 BTFSS 0x60,0x7,0x1001112 d006 BRA 0x1120001114 0e00 MOVLW 0x0001116 1477 ANDWF 0x77,0x0,0x0001118 0916 IORLW 0x1600111a 6e77 MOVWF 0x77,0x000111c d80f RCALL 0x113c00111e d007 BRA 0x112e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001120 af70 BTFSS 0x70,0x7,0x1001122 d005 BRA 0x112e001124 0e00 MOVLW 0x0001126 1477 ANDWF 0x77,0x0,0x0001128 0917 IORLW 0x1700112a 6e77 MOVWF 0x77,0x000112c d807 RCALL 0x113cF:\MCP\projects\CAN\canBase\Source\CAN.c00112e b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001130 92a4 BCF 0xa4,0x1,0x0001132 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001134 92a4 BCF 0xa4,0x1,0x0001136 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001138 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c00113a 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.c00113c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00113e ffe6001140 cfe1 MOVFF 0xfe1,0xfd9001142 ffd9001144 0e0f MOVLW 0xf001146 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.c001148 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00114a 1461 ANDWF 0x61,0x0,0x000114c 38e8 SWAPF 0xe8,0x0,0x000114e 0b0f ANDLW 0xf001150 6edf MOVWF 0xdf,0x0001152 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.c001154 1461 ANDWF 0x61,0x0,0x0001156 6e06 MOVWF 0x6,0x0001158 6a07 CLRF 0x7,0x000115a 0e06 MOVLW 0x600115c 90d8 BCF 0xd8,0x0,0x000115e 3606 RLCF 0x6,0x1,0x0001160 3607 RLCF 0x7,0x1,0x0001162 04e8 DECF 0xe8,0x0,0x0001164 e1fb BNZ 0x115c001166 0ee0 MOVLW 0xe0001168 1462 ANDWF 0x62,0x0,0x000116a 6e08 MOVWF 0x8,0x000116c 6a09 CLRF 0x9,0x000116e 90d8 BCF 0xd8,0x0,0x0001170 3209 RRCF 0x9,0x1,0x0001172 3208 RRCF 0x8,0x1,0x0001174 90d8 BCF 0xd8,0x0,0x0001176 3209 RRCF 0x9,0x1,0x0001178 3208 RRCF 0x8,0x1,0x000117a 5006 MOVF 0x6,0x0,0x000117c 2408 ADDWF 0x8,0x0,0x000117e 6e04 MOVWF 0x4,0x0001180 5007 MOVF 0x7,0x0,0x0001182 2009 ADDWFC 0x9,0x0,0x0001184 6e05 MOVWF 0x5,0x0001186 0e03 MOVLW 0x3001188 1462 ANDWF 0x62,0x0,0x000118a 6e0a MOVWF 0xa,0x000118c 6a0b CLRF 0xb,0x000118e 90d8 BCF 0xd8,0x0,0x0001190 360a RLCF 0xa,0x1,0x0001192 360b RLCF 0xb,0x1,0x0001194 5004 MOVF 0x4,0x0,0x0001196 240a ADDWF 0xa,0x0,0x0001198 6e02 MOVWF 0x2,0x000119a 5005 MOVF 0x5,0x0,0x000119c 200b ADDWFC 0xb,0x0,0x000119e 6e03 MOVWF 0x3,0x00011a0 0e80 MOVLW 0x800011a2 1463 ANDWF 0x63,0x0,0x00011a4 6e0c MOVWF 0xc,0x00011a6 6a0d CLRF 0xd,0x00011a8 0e07 MOVLW 0x70011aa 90d8 BCF 0xd8,0x0,0x00011ac 320d RRCF 0xd,0x1,0x00011ae 320c RRCF 0xc,0x1,0x00011b0 04e8 DECF 0xe8,0x0,0x00011b2 e1fb BNZ 0x11aa0011b4 5002 MOVF 0x2,0x0,0x00011b6 240c ADDWF 0xc,0x0,0x00011b8 6e00 MOVWF 0x0,0x00011ba 5003 MOVF 0x3,0x0,0x00011bc 200d ADDWFC 0xd,0x0,0x00011be 6e01 MOVWF 0x1,0x00011c0 0e01 MOVLW 0x10011c2 c000 MOVFF 0x0,0xfdb0011c4 ffdb0011c6 0e02 MOVLW 0x20011c8 c001 MOVFF 0x1,0xfdb0011ca ffdb0011cc 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0011ce 1463 ANDWF 0x63,0x0,0x00011d0 40e8 RRNCF 0xe8,0x0,0x00011d2 0b7f ANDLW 0x7f0011d4 6ee7 MOVWF 0xe7,0x00011d6 0e03 MOVLW 0x30011d8 cfe7 MOVFF 0xfe7,0xfdb0011da ffdb0011dc 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c0011de 1463 ANDWF 0x63,0x0,0x00011e0 6e02 MOVWF 0x2,0x00011e2 c002 MOVFF 0x2,0x30011e4 f0030011e6 6a02 CLRF 0x2,0x00011e8 5064 MOVF 0x64,0x0,0x00011ea 0100 MOVLB 0x00011ec 2402 ADDWF 0x2,0x0,0x00011ee 6e00 MOVWF 0x0,0x00011f0 0e00 MOVLW 0x00011f2 2003 ADDWFC 0x3,0x0,0x00011f4 6e01 MOVWF 0x1,0x00011f6 0e04 MOVLW 0x40011f8 c000 MOVFF 0x0,0xfdb0011fa ffdb0011fc 0e05 MOVLW 0x50011fe c001 MOVFF 0x1,0xfdb001200 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001202 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.c001204 0b01 ANDLW 0x1001206 6e02 MOVWF 0x2,0x0001208 5065 MOVF 0x65,0x0,0x000120a 0b02 ANDLW 0x200120c e001 BZ 0x121000120e 0e01 MOVLW 0x1001210 24e8 ADDWF 0xe8,0x0,0x0001212 6e01 MOVWF 0x1,0x0001214 5065 MOVF 0x65,0x0,0x0001216 0b04 ANDLW 0x4001218 e001 BZ 0x121c00121a 0e01 MOVLW 0x100121c 0d04 MULLW 0x400121e cff3 MOVFF 0xff3,0x0001220 f000001222 5065 MOVF 0x65,0x0,0x0001224 0b08 ANDLW 0x8001226 e001 BZ 0x122a001228 0e01 MOVLW 0x100122a 0d08 MULLW 0x800122c 50f3 MOVF 0xf3,0x0,0x000122e 2400 ADDWF 0x0,0x0,0x0001230 2401 ADDWF 0x1,0x0,0x0001232 2402 ADDWF 0x2,0x0,0x0001234 6ee7 MOVWF 0xe7,0x0001236 0e06 MOVLW 0x6001238 cfe7 MOVFF 0xfe7,0xfdb00123a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00123c 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00123e cf66 MOVFF 0xf66,0xfdb001240 ffdb001242 0e08 MOVLW 0x8001244 cf67 MOVFF 0xf67,0xfdb001246 ffdb001248 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00124a cf68 MOVFF 0xf68,0xfdb00124c ffdb00124e 0e0a MOVLW 0xa001250 cf69 MOVFF 0xf69,0xfdb001252 ffdb001254 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001256 cf6a MOVFF 0xf6a,0xfdb001258 ffdb00125a 0e0c MOVLW 0xc00125c cf6b MOVFF 0xf6b,0xfdb00125e ffdb001260 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001262 cf6c MOVFF 0xf6c,0xfdb001264 ffdb001266 0e0e MOVLW 0xe001268 cf6d MOVFF 0xf6d,0xfdb00126a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00126c 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.c00126e cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c001270 ffe9001272 cfda MOVFF 0xfda,0xfea001274 ffea001276 cfee MOVFF 0xfee,0xfe6001278 ffe600127a cfee MOVFF 0xfee,0xfe600127c ffe600127e cfee MOVFF 0xfee,0xfe6001280 ffe6001282 cfee MOVFF 0xfee,0xfe6001284 ffe6001286 cfee MOVFF 0xfee,0xfe6001288 ffe600128a cfee MOVFF 0xfee,0xfe600128c ffe600128e cfee MOVFF 0xfee,0xfe6001290 ffe6001292 cfee MOVFF 0xfee,0xfe6001294 ffe6001296 cfee MOVFF 0xfee,0xfe6001298 ffe600129a cfee MOVFF 0xfee,0xfe600129c ffe600129e cfee MOVFF 0xfee,0xfe60012a0 ffe60012a2 cfee MOVFF 0xfee,0xfe60012a4 ffe60012a6 cfee MOVFF 0xfee,0xfe60012a8 ffe60012aa cfee MOVFF 0xfee,0xfe60012ac ffe60012ae cfee MOVFF 0xfee,0xfe60012b0 ffe60012b2 ecb5 CALL 0x156a,0x00012b4 f00a0012b6 6e00 MOVWF 0x0,0x00012b8 0e0f MOVLW 0xf0012ba 5ee1 SUBWF 0xe1,0x1,0x00012bc 5000 MOVF 0x0,0x0,0x00012be 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c0012c0 5ce1 SUBWF 0xe1,0x0,0x00012c2 e202 BC 0x12c80012c4 6ae1 CLRF 0xe1,0x00012c6 52e5 MOVF 0xe5,0x1,0x00012c8 6ee1 MOVWF 0xe1,0x00012ca 52e5 MOVF 0xe5,0x1,0x00012cc cfe7 MOVFF 0xfe7,0xfd90012ce ffd90012d0 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.c0012d2 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0012d4 ffe60012d6 cfe1 MOVFF 0xfe1,0xfd90012d8 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0012da 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012dc b740 BTFSC 0x40,0x3,0x10012de d004 BRA 0x12e80012e0 0e00 MOVLW 0x00012e2 1477 ANDWF 0x77,0x0,0x00012e4 0903 IORLW 0x30012e6 6e77 MOVWF 0x77,0x00012e8 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012ea b730 BTFSC 0x30,0x3,0x10012ec d004 BRA 0x12f60012ee 0e00 MOVLW 0x00012f0 1477 ANDWF 0x77,0x0,0x00012f2 0904 IORLW 0x40012f4 6e77 MOVWF 0x77,0x00012f6 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012f8 b720 BTFSC 0x20,0x3,0x10012fa d005 BRA 0x13060012fc 0e00 MOVLW 0x00012fe 1477 ANDWF 0x77,0x0,0x0001300 0905 IORLW 0x5001302 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001304 d002 BRA 0x130a else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001306 0e00 MOVLW 0x0001308 d0b0 BRA 0x146aF:\MCP\projects\CAN\canBase\Source\CAN.c00130a 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00130c cfdb MOVFF 0xfdb,0x000130e f000001310 3400 RLCF 0x0,0x0,0x0001312 e20e BC 0x1330001314 0eef MOVLW 0xef001316 cfdb MOVFF 0xfdb,0x1001318 f00100131a 0e03 MOVLW 0x300131c 6ee7 MOVWF 0xe7,0x000131e 1801 XORWF 0x1,0x0,0x0001320 aee8 BTFSS 0xe8,0x7,0x0001322 d002 BRA 0x1328001324 3401 RLCF 0x1,0x0,0x0001326 d003 BRA 0x132e001328 50e7 MOVF 0xe7,0x0,0x000132a 80d8 BSF 0xd8,0x0,0x000132c 5401 SUBFWB 0x1,0x0,0x000132e e202 BC 0x1334001330 0eef MOVLW 0xef001332 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.c001334 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c001336 cfdb MOVFF 0xfdb,0x0001338 f00000133a 0ef2 MOVLW 0xf200133c cfdb MOVFF 0xfdb,0x100133e f001001340 0ec0 MOVLW 0xc0001342 1600 ANDWF 0x0,0x1,0x0001344 0e03 MOVLW 0x3001346 1601 ANDWF 0x1,0x1,0x0001348 0e06 MOVLW 0x600134a 90d8 BCF 0xd8,0x0,0x000134c 3201 RRCF 0x1,0x1,0x000134e 3200 RRCF 0x0,0x1,0x0001350 04e8 DECF 0xe8,0x0,0x0001352 e1fb BNZ 0x134a001354 0ef0 MOVLW 0xf0001356 50db MOVF 0xdb,0x0,0x0001358 0b0f ANDLW 0xf00135a 0d10 MULLW 0x1000135c 50f3 MOVF 0xf3,0x0,0x000135e 2400 ADDWF 0x0,0x0,0x0001360 6e61 MOVWF 0x61,0x0001362 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001364 6ee7 MOVWF 0xe7,0x0001366 0ef1 MOVLW 0xf1001368 cfdb MOVFF 0xfdb,0x200136a f00200136c 0ef2 MOVLW 0xf200136e cfdb MOVFF 0xfdb,0x3001370 f003001372 50e7 MOVF 0xe7,0x0,0x0001374 1602 ANDWF 0x2,0x1,0x0001376 6a03 CLRF 0x3,0x0001378 90d8 BCF 0xd8,0x0,0x000137a 3203 RRCF 0x3,0x1,0x000137c 3202 RRCF 0x2,0x1,0x000137e 0e3f MOVLW 0x3f001380 6ee7 MOVWF 0xe7,0x0001382 0ef1 MOVLW 0xf1001384 cfdb MOVFF 0xfdb,0x0001386 f000001388 0ef2 MOVLW 0xf200138a cfdb MOVFF 0xfdb,0x100138c f00100138e 50e7 MOVF 0xe7,0x0,0x0001390 1600 ANDWF 0x0,0x1,0x0001392 6a01 CLRF 0x1,0x0001394 90d8 BCF 0xd8,0x0,0x0001396 3600 RLCF 0x0,0x1,0x0001398 3601 RLCF 0x1,0x1,0x000139a 90d8 BCF 0xd8,0x0,0x000139c 3600 RLCF 0x0,0x1,0x000139e 3601 RLCF 0x1,0x1,0x00013a0 5000 MOVF 0x0,0x0,0x00013a2 2402 ADDWF 0x2,0x0,0x00013a4 6e62 MOVWF 0x62,0x00013a6 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.c0013a8 cfdb MOVFF 0xfdb,0x20013aa f0020013ac 0ef5 MOVLW 0xf50013ae cfdb MOVFF 0xfdb,0x30013b0 f0030013b2 0e00 MOVLW 0x00013b4 1602 ANDWF 0x2,0x1,0x00013b6 0e01 MOVLW 0x10013b8 1603 ANDWF 0x3,0x1,0x00013ba c003 MOVFF 0x3,0x20013bc f0020013be 6a03 CLRF 0x3,0x00013c0 0e01 MOVLW 0x10013c2 6ee7 MOVWF 0xe7,0x00013c4 0ef1 MOVLW 0xf10013c6 cfdb MOVFF 0xfdb,0x00013c8 f0000013ca 0ef2 MOVLW 0xf20013cc cfdb MOVFF 0xfdb,0x10013ce f0010013d0 50e7 MOVF 0xe7,0x0,0x00013d2 1600 ANDWF 0x0,0x1,0x00013d4 6a01 CLRF 0x1,0x00013d6 0e07 MOVLW 0x70013d8 90d8 BCF 0xd8,0x0,0x00013da 3600 RLCF 0x0,0x1,0x00013dc 3601 RLCF 0x1,0x1,0x00013de 04e8 DECF 0xe8,0x0,0x00013e0 e1fb BNZ 0x13d80013e2 0ef3 MOVLW 0xf30013e4 50db MOVF 0xdb,0x0,0x00013e6 0b3f ANDLW 0x3f0013e8 24e8 ADDWF 0xe8,0x0,0x00013ea 2400 ADDWF 0x0,0x0,0x00013ec 2402 ADDWF 0x2,0x0,0x00013ee 6e63 MOVWF 0x63,0x00013f0 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c0013f2 6ee7 MOVWF 0xe7,0x00013f4 0ef4 MOVLW 0xf40013f6 cfdb MOVFF 0xfdb,0x00013f8 f0000013fa 0ef5 MOVLW 0xf50013fc cfdb MOVFF 0xfdb,0x10013fe f001001400 50e7 MOVF 0xe7,0x0,0x0001402 1600 ANDWF 0x0,0x1,0x0001404 6a01 CLRF 0x1,0x0001406 5000 MOVF 0x0,0x0,0x0001408 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00140a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00140c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00140e 50db MOVF 0xdb,0x0,0x0001410 0808 SUBLW 0x8001412 e203 BC 0x141a001414 0e08 MOVLW 0x8001416 6e65 MOVWF 0x65,0x0001418 d003 BRA 0x142000141a 0ef6 MOVLW 0xf600141c 50db MOVF 0xdb,0x0,0x000141e 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.c001420 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.c001422 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001424 50db MOVF 0xdb,0x0,0x0001426 6e66 MOVWF 0x66,0x0001428 0ef8 MOVLW 0xf800142a 50db MOVF 0xdb,0x0,0x000142c 6e67 MOVWF 0x67,0x000142e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001430 50db MOVF 0xdb,0x0,0x0001432 6e68 MOVWF 0x68,0x0001434 0efa MOVLW 0xfa001436 50db MOVF 0xdb,0x0,0x0001438 6e69 MOVWF 0x69,0x000143a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c00143c 50db MOVF 0xdb,0x0,0x000143e 6e6a MOVWF 0x6a,0x0001440 0efc MOVLW 0xfc001442 50db MOVF 0xdb,0x0,0x0001444 6e6b MOVWF 0x6b,0x0001446 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001448 50db MOVF 0xdb,0x0,0x000144a 6e6c MOVWF 0x6c,0x000144c 0efe MOVLW 0xfe00144e 50db MOVF 0xdb,0x0,0x0001450 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001452 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.c001454 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001456 cfdb MOVFF 0xfdb,0xfe6001458 ffe600145a 0efc MOVLW 0xfc00145c 1460 ANDWF 0x60,0x0,0x000145e 52e5 MOVF 0xe5,0x1,0x0001460 10e7 IORWF 0xe7,0x0,0x0001462 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.c001464 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.c001466 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c001468 d000 BRA 0x146aF:\MCP\projects\CAN\canBase\Source\CAN.c00146a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c00146c cfe7 MOVFF 0xfe7,0xfd900146e ffd9001470 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$ F:\MCP\projects\CAN\canBase\Source\Main.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canBase\Source\Main.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canBase\Source\Main.c* Revision: $Revision$ 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.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.cvoid main() 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.cF:\MCP\projects\CAN\canBase\Source\Main.c// Inits F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001472 d876 RCALL 0x1560 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.c001474 ec22 CALL 0x1044,0x0 canInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001476 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001478 ec1e CALL 0x163c,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c00147a f00bF:\MCP\projects\CAN\canBase\Source\Main.c0014b0 d7e5 BRA 0x147c 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.c00147c ec28 CALL 0x1650,0x0 if ((tickGet()-t)>TICK_SECOND/2) F:\MCP\projects\CAN\canBase\Source\Main.c00147e f00b001480 0100 MOVLB 0x0001482 516e MOVF 0x6e,0x0,0x1001484 5c12 SUBWF 0x12,0x0,0x0001486 6e00 MOVWF 0x0,0x0001488 516f MOVF 0x6f,0x0,0x100148a 5813 SUBWFB 0x13,0x0,0x000148c 6e01 MOVWF 0x1,0x000148e 5170 MOVF 0x70,0x0,0x1001490 5814 SUBWFB 0x14,0x0,0x0001492 6e02 MOVWF 0x2,0x0001494 5171 MOVF 0x71,0x0,0x1001496 5815 SUBWFB 0x15,0x0,0x0001498 6e03 MOVWF 0x3,0x000149a 80d8 BSF 0xd8,0x0,0x000149c 0e32 MOVLW 0x3200149e 5400 SUBFWB 0x0,0x0,0x00014a0 0e00 MOVLW 0x00014a2 5401 SUBFWB 0x1,0x0,0x00014a4 0e00 MOVLW 0x00014a6 5402 SUBFWB 0x2,0x0,0x00014a8 0e00 MOVLW 0x00014aa 5403 SUBFWB 0x3,0x0,0x00014ac e201 BC 0x14b0{ F:\MCP\projects\CAN\canBase\Source\Main.c0014ae 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c0014b2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.cF:\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.c0014b4 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0014b6 ffe40014b8 cfe2 MOVFF 0xfe2,0xfda0014ba ffda0014bc cfe9 MOVFF 0xfe9,0xfe40014be ffe40014c0 cfea MOVFF 0xfea,0xfe40014c2 ffe40014c4 cff6 MOVFF 0xff6,0xfe40014c6 ffe40014c8 cff7 MOVFF 0xff7,0xfe40014ca ffe40014cc cff5 MOVFF 0xff5,0xfe40014ce ffe40014d0 cff3 MOVFF 0xff3,0xfe40014d2 ffe40014d4 cff4 MOVFF 0xff4,0xfe40014d6 ffe40014d8 cffa MOVFF 0xffa,0xfe40014da ffe40014dc ee00 LFSR 0x0,0xe0014de f00e0014e0 0e0b MOVLW 0xb0014e2 04e8 DECF 0xe8,0x0,0x00014e4 e303 BNC 0x14ec0014e6 cfee MOVFF 0xfee,0xfe40014e8 ffe40014ea d7fb BRA 0x14e20014ec ee00 LFSR 0x0,0x00014ee f0000014f0 0e0e MOVLW 0xe0014f2 04e8 DECF 0xe8,0x0,0x00014f4 e303 BNC 0x14fc0014f6 cfee MOVFF 0xfee,0xfe40014f8 ffe40014fa d7fb BRA 0x14f20014fc 52e6 MOVF 0xe6,0x1,0x0{ 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.c0014fe ec4d CALL 0x109a,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c001500 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001502 ec32 CALL 0x1664,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c001504 f00b001506 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c001508 ee00 LFSR 0x0,0xd00150a f00d00150c 0e0e MOVLW 0xe00150e 04e8 DECF 0xe8,0x0,0x0001510 e303 BNC 0x1518001512 cfe5 MOVFF 0xfe5,0xfed001514 ffed001516 d7fb BRA 0x150e001518 ee00 LFSR 0x0,0x1800151a f01800151c 0e0b MOVLW 0xb00151e 04e8 DECF 0xe8,0x0,0x0001520 e303 BNC 0x1528001522 cfe5 MOVFF 0xfe5,0xfed001524 ffed001526 d7fb BRA 0x151e001528 cfe5 MOVFF 0xfe5,0xffa00152a fffa00152c cfe5 MOVFF 0xfe5,0xff400152e fff4001530 cfe5 MOVFF 0xfe5,0xff3001532 fff3001534 cfe5 MOVFF 0xfe5,0xff5001536 fff5001538 cfe5 MOVFF 0xfe5,0xff700153a fff700153c cfe5 MOVFF 0xfe5,0xff600153e fff6001540 cfe5 MOVFF 0xfe5,0xfea001542 ffea001544 cfe5 MOVFF 0xfe5,0xfe9001546 ffe9001548 cfe5 MOVFF 0xfe5,0xfda00154a ffda00154c 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.c00154e cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c001550 ffe4001552 cfe2 MOVFF 0xfe2,0xfda001554 ffda001556 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001558 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c00155a cfe5 MOVFF 0xfe5,0xfda00155c ffda00155e 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.c001560 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.c001562 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c001564 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.c001566 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.c001568 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.c00156a cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c00156c ffe600156e cfe1 MOVFF 0xfe1,0xfd9001570 ffd9{ F:\MCP\projects\CAN\canBase\Source\Main.c001572 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canBase\Source\Main.c001574 50db MOVF 0xdb,0x0,0x0001576 e001 BZ 0x157a001578 d00e BRA 0x1596{ F:\MCP\projects\CAN\canBase\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canBase\Source\Main.c00157a 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) { _asm goto 0x0 _endasm } F:\MCP\projects\CAN\canBase\Source\Main.c00157c 0ff1 ADDLW 0xf100157e 6ee9 MOVWF 0xe9,0x0001580 0eff MOVLW 0xff001582 20da ADDWFC 0xda,0x0,0x0001584 6eea MOVWF 0xea,0x0001586 0e01 MOVLW 0x1001588 18ee XORWF 0xee,0x0,0x000158a e101 BNZ 0x158e00158c 50ed MOVF 0xed,0x0,0x000158e e102 BNZ 0x1594001590 ef00 GOTO 0x0001592 f000001594 d000 BRA 0x1596 break; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c001596 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c001598 cfe7 MOVFF 0xfe7,0xfd900159a ffd900159c 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 ef40 GOTO 0x1680 _asm goto _startup _endasm F:\MCP\projects\CAN\canBase\Source\Main.c001002 f00b001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001008 ef5a GOTO 0x14b4 _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 efa7 GOTO 0x154e _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