Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Nov 13 21:58:09 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Ticker 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: Tick.c F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canBase\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBase\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) 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.c001a7a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001a7c 6ed6 MOVWF 0xd6,0x0001a7e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001a80 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.c001a82 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001a84 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001a86 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001a88 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001a8a 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001a8c 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.c001a8e c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001a90 f018001a92 c075 MOVFF 0x75,0x19001a94 f019001a96 c076 MOVFF 0x76,0x1a001a98 f01a001a9a c077 MOVFF 0x77,0x1b001a9c f01b001a9e d000 BRA 0x1aa0001aa0 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.c001aa2 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001aa4 d00b BRA 0x1abc{ F:\MCP\projects\CAN\canBase\Source\Tick.c001aa6 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001aa8 6ed7 MOVWF 0xd7,0x0001aaa 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001aac 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001aae 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001ab0 2b74 INCF 0x74,0x1,0x1001ab2 0e00 MOVLW 0x0001ab4 2375 ADDWFC 0x75,0x1,0x1001ab6 2376 ADDWFC 0x76,0x1,0x1001ab8 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001aba 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001abc 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 driver 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: CAN.c F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\canBase\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBase\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) 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// Set extended mode or not. F:\MCP\projects\CAN\canBase\Source\CAN.c001148 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canBase\Source\CAN.c00114a 0b08 ANDLW 0x800114c e102 BNZ 0x115200114e 0e00 MOVLW 0x0001150 d001 BRA 0x1154001152 0e01 MOVLW 0x1001154 6ee7 MOVWF 0xe7,0x0001156 0e04 MOVLW 0x4001158 cfe7 MOVFF 0xfe7,0xfdb00115a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear F:\MCP\projects\CAN\canBase\Source\CAN.c00115c 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canBase\Source\CAN.c00115e 6ade CLRF 0xde,0x0001160 6ade CLRF 0xde,0x0001162 6add CLRF 0xdd,0x0001164 52dd MOVF 0xdd,0x1,0x0001166 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001168 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canBase\Source\CAN.c00116a e16f BNZ 0x124a{ F:\MCP\projects\CAN\canBase\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 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.cF:\MCP\projects\CAN\canBase\Source\CAN.c00116c 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<21) + (((DWORD)(RXB0SIDL & 0xE0))<<13) + (((DWORD)(RXB0SIDL & 0x03))<<16) + (((DWORD)RXB0EIDH)<<8) + (BYTE)RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00116e 6e00 MOVWF 0x0,0x0001170 6a01 CLRF 0x1,0x0001172 6a02 CLRF 0x2,0x0001174 6a03 CLRF 0x3,0x0001176 0e15 MOVLW 0x15001178 0b1f ANDLW 0x1f00117a e007 BZ 0x118a00117c 90d8 BCF 0xd8,0x0,0x000117e 3600 RLCF 0x0,0x1,0x0001180 3601 RLCF 0x1,0x1,0x0001182 3602 RLCF 0x2,0x1,0x0001184 3603 RLCF 0x3,0x1,0x0001186 06e8 DECF 0xe8,0x1,0x0001188 e1f9 BNZ 0x117c00118a 0ee0 MOVLW 0xe000118c 1462 ANDWF 0x62,0x0,0x000118e 6e04 MOVWF 0x4,0x0001190 6a05 CLRF 0x5,0x0001192 6a06 CLRF 0x6,0x0001194 6a07 CLRF 0x7,0x0001196 0e0d MOVLW 0xd001198 0b1f ANDLW 0x1f00119a e007 BZ 0x11aa00119c 90d8 BCF 0xd8,0x0,0x000119e 3604 RLCF 0x4,0x1,0x00011a0 3605 RLCF 0x5,0x1,0x00011a2 3606 RLCF 0x6,0x1,0x00011a4 3607 RLCF 0x7,0x1,0x00011a6 06e8 DECF 0xe8,0x1,0x00011a8 e1f9 BNZ 0x119c0011aa 5004 MOVF 0x4,0x0,0x00011ac 2600 ADDWF 0x0,0x1,0x00011ae 5005 MOVF 0x5,0x0,0x00011b0 2201 ADDWFC 0x1,0x1,0x00011b2 5006 MOVF 0x6,0x0,0x00011b4 2202 ADDWFC 0x2,0x1,0x00011b6 5007 MOVF 0x7,0x0,0x00011b8 2203 ADDWFC 0x3,0x1,0x00011ba 0e03 MOVLW 0x30011bc 1462 ANDWF 0x62,0x0,0x00011be 6e08 MOVWF 0x8,0x00011c0 6a09 CLRF 0x9,0x00011c2 6a0a CLRF 0xa,0x00011c4 6a0b CLRF 0xb,0x00011c6 0e10 MOVLW 0x100011c8 0b1f ANDLW 0x1f0011ca e007 BZ 0x11da0011cc 90d8 BCF 0xd8,0x0,0x00011ce 3608 RLCF 0x8,0x1,0x00011d0 3609 RLCF 0x9,0x1,0x00011d2 360a RLCF 0xa,0x1,0x00011d4 360b RLCF 0xb,0x1,0x00011d6 06e8 DECF 0xe8,0x1,0x00011d8 e1f9 BNZ 0x11cc0011da 5008 MOVF 0x8,0x0,0x00011dc 2600 ADDWF 0x0,0x1,0x00011de 5009 MOVF 0x9,0x0,0x00011e0 2201 ADDWFC 0x1,0x1,0x00011e2 500a MOVF 0xa,0x0,0x00011e4 2202 ADDWFC 0x2,0x1,0x00011e6 500b MOVF 0xb,0x0,0x00011e8 2203 ADDWFC 0x3,0x1,0x00011ea 5063 MOVF 0x63,0x0,0x00011ec 6e0c MOVWF 0xc,0x00011ee 6a0d CLRF 0xd,0x00011f0 6a0e CLRF 0xe,0x00011f2 6a0f CLRF 0xf,0x00011f4 0e08 MOVLW 0x80011f6 0b1f ANDLW 0x1f0011f8 e007 BZ 0x12080011fa 90d8 BCF 0xd8,0x0,0x00011fc 360c RLCF 0xc,0x1,0x00011fe 360d RLCF 0xd,0x1,0x0001200 360e RLCF 0xe,0x1,0x0001202 360f RLCF 0xf,0x1,0x0001204 06e8 DECF 0xe8,0x1,0x0001206 e1f9 BNZ 0x11fa001208 500c MOVF 0xc,0x0,0x000120a 2600 ADDWF 0x0,0x1,0x000120c 500d MOVF 0xd,0x0,0x000120e 2201 ADDWFC 0x1,0x1,0x0001210 500e MOVF 0xe,0x0,0x0001212 2202 ADDWFC 0x2,0x1,0x0001214 500f MOVF 0xf,0x0,0x0001216 2203 ADDWFC 0x3,0x1,0x0001218 5064 MOVF 0x64,0x0,0x000121a 6e10 MOVWF 0x10,0x000121c 6a11 CLRF 0x11,0x000121e 6a12 CLRF 0x12,0x0001220 6a13 CLRF 0x13,0x0001222 5010 MOVF 0x10,0x0,0x0001224 2600 ADDWF 0x0,0x1,0x0001226 5011 MOVF 0x11,0x0,0x0001228 2201 ADDWFC 0x1,0x1,0x000122a 5012 MOVF 0x12,0x0,0x000122c 2202 ADDWFC 0x2,0x1,0x000122e 5013 MOVF 0x13,0x0,0x0001230 2203 ADDWFC 0x3,0x1,0x0001232 c000 MOVFF 0x0,0xfdf001234 ffdf001236 0e01 MOVLW 0x1001238 c001 MOVFF 0x1,0xfdb00123a ffdb00123c 0e02 MOVLW 0x200123e c002 MOVFF 0x2,0xfdb001240 ffdb001242 0e03 MOVLW 0x3001244 c003 MOVFF 0x3,0xfdb001246 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c001248 d02f BRA 0x12a8 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00124a 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canBase\Source\CAN.c00124c 6e00 MOVWF 0x0,0x000124e 6a01 CLRF 0x1,0x0001250 6a02 CLRF 0x2,0x0001252 6a03 CLRF 0x3,0x0001254 0e03 MOVLW 0x3001256 0b1f ANDLW 0x1f001258 e007 BZ 0x126800125a 90d8 BCF 0xd8,0x0,0x000125c 3600 RLCF 0x0,0x1,0x000125e 3601 RLCF 0x1,0x1,0x0001260 3602 RLCF 0x2,0x1,0x0001262 3603 RLCF 0x3,0x1,0x0001264 06e8 DECF 0xe8,0x1,0x0001266 e1f9 BNZ 0x125a001268 5062 MOVF 0x62,0x0,0x000126a 6e04 MOVWF 0x4,0x000126c 6a05 CLRF 0x5,0x000126e 6a06 CLRF 0x6,0x0001270 6a07 CLRF 0x7,0x0001272 0e05 MOVLW 0x5001274 90d8 BCF 0xd8,0x0,0x0001276 3207 RRCF 0x7,0x1,0x0001278 3206 RRCF 0x6,0x1,0x000127a 3205 RRCF 0x5,0x1,0x000127c 3204 RRCF 0x4,0x1,0x000127e 06e8 DECF 0xe8,0x1,0x0001280 e1f9 BNZ 0x1274001282 5004 MOVF 0x4,0x0,0x0001284 2600 ADDWF 0x0,0x1,0x0001286 5005 MOVF 0x5,0x0,0x0001288 2201 ADDWFC 0x1,0x1,0x000128a 5006 MOVF 0x6,0x0,0x000128c 2202 ADDWFC 0x2,0x1,0x000128e 5007 MOVF 0x7,0x0,0x0001290 2203 ADDWFC 0x3,0x1,0x0001292 c000 MOVFF 0x0,0xfdf001294 ffdf001296 0e01 MOVLW 0x1001298 c001 MOVFF 0x1,0xfdb00129a ffdb00129c 0e02 MOVLW 0x200129e c002 MOVFF 0x2,0xfdb0012a0 ffdb0012a2 0e03 MOVLW 0x30012a4 c003 MOVFF 0x3,0xfdb0012a6 ffdb} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c0012a8 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.c0012aa 0b01 ANDLW 0x10012ac 6e02 MOVWF 0x2,0x00012ae 5065 MOVF 0x65,0x0,0x00012b0 0b02 ANDLW 0x20012b2 e001 BZ 0x12b60012b4 0e01 MOVLW 0x10012b6 24e8 ADDWF 0xe8,0x0,0x00012b8 6e01 MOVWF 0x1,0x00012ba 5065 MOVF 0x65,0x0,0x00012bc 0b04 ANDLW 0x40012be e001 BZ 0x12c20012c0 0e01 MOVLW 0x10012c2 0d04 MULLW 0x40012c4 cff3 MOVFF 0xff3,0x00012c6 f0000012c8 5065 MOVF 0x65,0x0,0x00012ca 0b08 ANDLW 0x80012cc e001 BZ 0x12d00012ce 0e01 MOVLW 0x10012d0 0d08 MULLW 0x80012d2 50f3 MOVF 0xf3,0x0,0x00012d4 2400 ADDWF 0x0,0x0,0x00012d6 2401 ADDWF 0x1,0x0,0x00012d8 2402 ADDWF 0x2,0x0,0x00012da 6ee7 MOVWF 0xe7,0x00012dc 0e06 MOVLW 0x60012de cfe7 MOVFF 0xfe7,0xfdb0012e0 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c0012e2 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canBase\Source\CAN.c0012e4 0b40 ANDLW 0x400012e6 e102 BNZ 0x12ec0012e8 0e00 MOVLW 0x00012ea d001 BRA 0x12ee0012ec 0e01 MOVLW 0x10012ee 6ee7 MOVWF 0xe7,0x00012f0 0e05 MOVLW 0x50012f2 cfe7 MOVFF 0xfe7,0xfdb0012f4 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c0012f6 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c0012f8 cf66 MOVFF 0xf66,0xfdb0012fa ffdb0012fc 0e08 MOVLW 0x80012fe cf67 MOVFF 0xf67,0xfdb001300 ffdb001302 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001304 cf68 MOVFF 0xf68,0xfdb001306 ffdb001308 0e0a MOVLW 0xa00130a cf69 MOVFF 0xf69,0xfdb00130c ffdb00130e 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001310 cf6a MOVFF 0xf6a,0xfdb001312 ffdb001314 0e0c MOVLW 0xc001316 cf6b MOVFF 0xf6b,0xfdb001318 ffdb00131a 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c00131c cf6c MOVFF 0xf6c,0xfdb00131e ffdb001320 0e0e MOVLW 0xe001322 cf6d MOVFF 0xf6d,0xfdb001324 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001326 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.c001328 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c00132a ffe900132c cfda MOVFF 0xfda,0xfea00132e ffea001330 cfee MOVFF 0xfee,0xfe6001332 ffe6001334 cfee MOVFF 0xfee,0xfe6001336 ffe6001338 cfee MOVFF 0xfee,0xfe600133a ffe600133c cfee MOVFF 0xfee,0xfe600133e ffe6001340 cfee MOVFF 0xfee,0xfe6001342 ffe6001344 cfee MOVFF 0xfee,0xfe6001346 ffe6001348 cfee MOVFF 0xfee,0xfe600134a ffe600134c cfee MOVFF 0xfee,0xfe600134e ffe6001350 cfee MOVFF 0xfee,0xfe6001352 ffe6001354 cfee MOVFF 0xfee,0xfe6001356 ffe6001358 cfee MOVFF 0xfee,0xfe600135a ffe600135c cfee MOVFF 0xfee,0xfe600135e ffe6001360 cfee MOVFF 0xfee,0xfe6001362 ffe6001364 cfee MOVFF 0xfee,0xfe6001366 ffe6001368 cfee MOVFF 0xfee,0xfe600136a ffe600136c ec7c CALL 0x18f8,0x000136e f00c001370 6e00 MOVWF 0x0,0x0001372 0e0f MOVLW 0xf001374 5ee1 SUBWF 0xe1,0x1,0x0001376 5000 MOVF 0x0,0x0,0x0001378 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00137a 5ce1 SUBWF 0xe1,0x0,0x000137c e202 BC 0x138200137e 6ae1 CLRF 0xe1,0x0001380 52e5 MOVF 0xe5,0x1,0x0001382 6ee1 MOVWF 0xe1,0x0001384 52e5 MOVF 0xe5,0x1,0x0001386 cfe7 MOVFF 0xfe7,0xfd9001388 ffd900138a 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.c00138c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c00138e ffe6001390 cfe1 MOVFF 0xfe1,0xfd9001392 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001394 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c001396 b740 BTFSC 0x40,0x3,0x1001398 d004 BRA 0x13a200139a 0e00 MOVLW 0x000139c 1477 ANDWF 0x77,0x0,0x000139e 0903 IORLW 0x30013a0 6e77 MOVWF 0x77,0x00013a2 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0013a4 b730 BTFSC 0x30,0x3,0x10013a6 d004 BRA 0x13b00013a8 0e00 MOVLW 0x00013aa 1477 ANDWF 0x77,0x0,0x00013ac 0904 IORLW 0x40013ae 6e77 MOVWF 0x77,0x00013b0 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0013b2 b720 BTFSC 0x20,0x3,0x10013b4 d005 BRA 0x13c00013b6 0e00 MOVLW 0x00013b8 1477 ANDWF 0x77,0x0,0x00013ba 0905 IORLW 0x50013bc 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c0013be d002 BRA 0x13c4 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c0013c0 0e00 MOVLW 0x00013c2 d0e4 BRA 0x158cF:\MCP\projects\CAN\canBase\Source\CAN.c0013c4 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c0013c6 cfdb MOVFF 0xfdb,0x00013c8 f0000013ca 3400 RLCF 0x0,0x0,0x00013cc e20e BC 0x13ea0013ce 0eef MOVLW 0xef0013d0 cfdb MOVFF 0xfdb,0x10013d2 f0010013d4 0e03 MOVLW 0x30013d6 6ee7 MOVWF 0xe7,0x00013d8 1801 XORWF 0x1,0x0,0x00013da aee8 BTFSS 0xe8,0x7,0x00013dc d002 BRA 0x13e20013de 3401 RLCF 0x1,0x0,0x00013e0 d003 BRA 0x13e80013e2 50e7 MOVF 0xe7,0x0,0x00013e4 80d8 BSF 0xd8,0x0,0x00013e6 5401 SUBFWB 0x1,0x0,0x00013e8 e202 BC 0x13ee0013ea 0eef MOVLW 0xef0013ec 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0013ee 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canBase\Source\CAN.c0013f0 04db DECF 0xdb,0x0,0x00013f2 e15f BNZ 0x14b2{ F:\MCP\projects\CAN\canBase\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 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.cF:\MCP\projects\CAN\canBase\Source\CAN.c0013f4 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canBase\Source\CAN.c0013f6 cfdb MOVFF 0xfdb,0x00013f8 f0000013fa 0ef1 MOVLW 0xf10013fc cfdb MOVFF 0xfdb,0x10013fe f001001400 0ef2 MOVLW 0xf2001402 cfdb MOVFF 0xfdb,0x2001404 f002001406 0ef3 MOVLW 0xf3001408 cfdb MOVFF 0xfdb,0x300140a f00300140c 0e15 MOVLW 0x1500140e 90d8 BCF 0xd8,0x0,0x0001410 3203 RRCF 0x3,0x1,0x0001412 3202 RRCF 0x2,0x1,0x0001414 3201 RRCF 0x1,0x1,0x0001416 3200 RRCF 0x0,0x1,0x0001418 06e8 DECF 0xe8,0x1,0x000141a e1f9 BNZ 0x140e00141c 5000 MOVF 0x0,0x0,0x000141e 6e61 MOVWF 0x61,0x0001420 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canBase\Source\CAN.c001422 cfdb MOVFF 0xfdb,0x5001424 f005001426 0ef1 MOVLW 0xf1001428 cfdb MOVFF 0xfdb,0x600142a f00600142c 0ef2 MOVLW 0xf200142e cfdb MOVFF 0xfdb,0x7001430 f007001432 0ef3 MOVLW 0xf3001434 cfdb MOVFF 0xfdb,0x8001436 f008001438 0e0d MOVLW 0xd00143a 90d8 BCF 0xd8,0x0,0x000143c 3208 RRCF 0x8,0x1,0x000143e 3207 RRCF 0x7,0x1,0x0001440 3206 RRCF 0x6,0x1,0x0001442 3205 RRCF 0x5,0x1,0x0001444 06e8 DECF 0xe8,0x1,0x0001446 e1f9 BNZ 0x143a001448 0ee0 MOVLW 0xe000144a 1405 ANDWF 0x5,0x0,0x000144c 6e04 MOVWF 0x4,0x000144e 0ef0 MOVLW 0xf0001450 cfdb MOVFF 0xfdb,0x0001452 f000001454 0ef1 MOVLW 0xf1001456 cfdb MOVFF 0xfdb,0x1001458 f00100145a 0ef2 MOVLW 0xf200145c cfdb MOVFF 0xfdb,0x200145e f002001460 0ef3 MOVLW 0xf3001462 cfdb MOVFF 0xfdb,0x3001464 f003001466 0e10 MOVLW 0x10001468 90d8 BCF 0xd8,0x0,0x000146a 3203 RRCF 0x3,0x1,0x000146c 3202 RRCF 0x2,0x1,0x000146e 3201 RRCF 0x1,0x1,0x0001470 3200 RRCF 0x0,0x1,0x0001472 06e8 DECF 0xe8,0x1,0x0001474 e1f9 BNZ 0x1468001476 0e03 MOVLW 0x3001478 1400 ANDWF 0x0,0x0,0x000147a 2404 ADDWF 0x4,0x0,0x000147c 6e62 MOVWF 0x62,0x000147e 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c001480 cfdb MOVFF 0xfdb,0x0001482 f000001484 0ef1 MOVLW 0xf1001486 cfdb MOVFF 0xfdb,0x1001488 f00100148a 0ef2 MOVLW 0xf200148c cfdb MOVFF 0xfdb,0x200148e f002001490 0ef3 MOVLW 0xf3001492 cfdb MOVFF 0xfdb,0x3001494 f003001496 0e08 MOVLW 0x8001498 90d8 BCF 0xd8,0x0,0x000149a 3203 RRCF 0x3,0x1,0x000149c 3202 RRCF 0x2,0x1,0x000149e 3201 RRCF 0x1,0x1,0x00014a0 3200 RRCF 0x0,0x1,0x00014a2 06e8 DECF 0xe8,0x1,0x00014a4 e1f9 BNZ 0x14980014a6 5000 MOVF 0x0,0x0,0x00014a8 6e63 MOVWF 0x63,0x00014aa 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canBase\Source\CAN.c0014ac 50db MOVF 0xdb,0x0,0x00014ae 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c0014b0 d02f BRA 0x1510 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0014b2 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canBase\Source\CAN.c0014b4 cfdb MOVFF 0xfdb,0x00014b6 f0000014b8 0ef1 MOVLW 0xf10014ba cfdb MOVFF 0xfdb,0x10014bc f0010014be 0ef2 MOVLW 0xf20014c0 cfdb MOVFF 0xfdb,0x20014c2 f0020014c4 0ef3 MOVLW 0xf30014c6 cfdb MOVFF 0xfdb,0x30014c8 f0030014ca 0e03 MOVLW 0x30014cc 90d8 BCF 0xd8,0x0,0x00014ce 3203 RRCF 0x3,0x1,0x00014d0 3202 RRCF 0x2,0x1,0x00014d2 3201 RRCF 0x1,0x1,0x00014d4 3200 RRCF 0x0,0x1,0x00014d6 06e8 DECF 0xe8,0x1,0x00014d8 e1f9 BNZ 0x14cc0014da 5000 MOVF 0x0,0x0,0x00014dc 6e61 MOVWF 0x61,0x00014de 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canBase\Source\CAN.c0014e0 cfdb MOVFF 0xfdb,0x00014e2 f0000014e4 0ef1 MOVLW 0xf10014e6 cfdb MOVFF 0xfdb,0x10014e8 f0010014ea 0ef2 MOVLW 0xf20014ec cfdb MOVFF 0xfdb,0x20014ee f0020014f0 0ef3 MOVLW 0xf30014f2 cfdb MOVFF 0xfdb,0x30014f4 f0030014f6 0e05 MOVLW 0x50014f8 0b1f ANDLW 0x1f0014fa e007 BZ 0x150a0014fc 90d8 BCF 0xd8,0x0,0x00014fe 3600 RLCF 0x0,0x1,0x0001500 3601 RLCF 0x1,0x1,0x0001502 3602 RLCF 0x2,0x1,0x0001504 3603 RLCF 0x3,0x1,0x0001506 06e8 DECF 0xe8,0x1,0x0001508 e1f9 BNZ 0x14fc00150a 0ee0 MOVLW 0xe000150c 1400 ANDWF 0x0,0x0,0x000150e 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001510 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001512 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c001514 50db MOVF 0xdb,0x0,0x0001516 0808 SUBLW 0x8001518 e203 BC 0x152000151a 0e08 MOVLW 0x800151c 6e65 MOVWF 0x65,0x000151e d003 BRA 0x1526001520 0ef6 MOVLW 0xf6001522 50db MOVF 0xdb,0x0,0x0001524 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c001526 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canBase\Source\CAN.c001528 04db DECF 0xdb,0x0,0x000152a e102 BNZ 0x1530{ F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c00152c 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c00152e d001 BRA 0x1532 else F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c001530 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.c} F:\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.c001532 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001534 50db MOVF 0xdb,0x0,0x0001536 6e66 MOVWF 0x66,0x0001538 0ef8 MOVLW 0xf800153a 50db MOVF 0xdb,0x0,0x000153c 6e67 MOVWF 0x67,0x000153e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001540 50db MOVF 0xdb,0x0,0x0001542 6e68 MOVWF 0x68,0x0001544 0efa MOVLW 0xfa001546 50db MOVF 0xdb,0x0,0x0001548 6e69 MOVWF 0x69,0x000154a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c00154c 50db MOVF 0xdb,0x0,0x000154e 6e6a MOVWF 0x6a,0x0001550 0efc MOVLW 0xfc001552 50db MOVF 0xdb,0x0,0x0001554 6e6b MOVWF 0x6b,0x0001556 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001558 50db MOVF 0xdb,0x0,0x000155a 6e6c MOVWF 0x6c,0x000155c 0efe MOVLW 0xfe00155e 50db MOVF 0xdb,0x0,0x0001560 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canBase\Source\CAN.c001562 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canBase\Source\CAN.c001564 04db DECF 0xdb,0x0,0x0001566 e102 BNZ 0x156c001568 0e01 MOVLW 0x100156a d001 BRA 0x156e00156c 0e00 MOVLW 0x000156e b0e8 BTFSC 0xe8,0x0,0x0001570 8662 BSF 0x62,0x3,0x0001572 a0e8 BTFSS 0xe8,0x0,0x0001574 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Priority F:\MCP\projects\CAN\canBase\Source\CAN.c001576 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001578 cfdb MOVFF 0xfdb,0xfe600157a ffe600157c 0efc MOVLW 0xfc00157e 1460 ANDWF 0x60,0x0,0x0001580 52e5 MOVF 0xe5,0x1,0x0001582 10e7 IORWF 0xe7,0x0,0x0001584 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.c001586 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.c001588 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c00158a d000 BRA 0x158cF:\MCP\projects\CAN\canBase\Source\CAN.c00158c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c00158e cfe7 MOVFF 0xfe7,0xfd9001590 ffd9001592 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: Main.c F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canBase\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canBase\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) 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.cunsigned int heartcnt=0; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001594 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBase\Source\Main.c001596 ffe6001598 cfe1 MOVFF 0xfe1,0xfd900159a ffd900159c 0e0f MOVLW 0xf00159e 26e1 ADDWF 0xe1,0x1,0x0{ 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.c0015a0 d9a3 RCALL 0x18e8 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.c0015a2 ec22 CALL 0x1044,0x0 canInit(); F:\MCP\projects\CAN\canBase\Source\Main.c0015a4 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015a6 ec3d CALL 0x1a7a,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c0015a8 f00dF:\MCP\projects\CAN\canBase\Source\Main.c0016f8 d758 BRA 0x15aa while(1) 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.c0015aa ec47 CALL 0x1a8e,0x0 if ((tickGet()-t)>=5*TICK_SECOND) F:\MCP\projects\CAN\canBase\Source\Main.c0015ac f00d0015ae 0100 MOVLB 0x00015b0 516c MOVF 0x6c,0x0,0x10015b2 5c18 SUBWF 0x18,0x0,0x00015b4 6e00 MOVWF 0x0,0x00015b6 516d MOVF 0x6d,0x0,0x10015b8 5819 SUBWFB 0x19,0x0,0x00015ba 6e01 MOVWF 0x1,0x00015bc 516e MOVF 0x6e,0x0,0x10015be 581a SUBWFB 0x1a,0x0,0x00015c0 6e02 MOVWF 0x2,0x00015c2 516f MOVF 0x6f,0x0,0x10015c4 581b SUBWFB 0x1b,0x0,0x00015c6 6e03 MOVWF 0x3,0x00015c8 0ef4 MOVLW 0xf40015ca 5c00 SUBWF 0x0,0x0,0x00015cc 0e01 MOVLW 0x10015ce 5801 SUBWFB 0x1,0x0,0x00015d0 0e00 MOVLW 0x00015d2 5802 SUBWFB 0x2,0x0,0x00015d4 0e00 MOVLW 0x00015d6 5803 SUBWFB 0x3,0x0,0x00015d8 e201 BC 0x15dc0015da d08e BRA 0x16f8{ F:\MCP\projects\CAN\canBase\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015dc ec47 CALL 0x1a8e,0x0 t = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c0015de f00d0015e0 c018 MOVFF 0x18,0x6c0015e2 f06c0015e4 c019 MOVFF 0x19,0x6d0015e6 f06d0015e8 c01a MOVFF 0x1a,0x6e0015ea f06e0015ec c01b MOVFF 0x1b,0x6f0015ee f06fF:\MCP\projects\CAN\canBase\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canBase\Source\Main.c0015f0 0e66 MOVLW 0x66 cm.ident=0x00000666; F:\MCP\projects\CAN\canBase\Source\Main.c0015f2 6ede MOVWF 0xde,0x00015f4 0e06 MOVLW 0x60015f6 6ede MOVWF 0xde,0x00015f8 6ade CLRF 0xde,0x00015fa 6add CLRF 0xdd,0x00015fc 52dd MOVF 0xdd,0x1,0x00015fe 52dd MOVF 0xdd,0x1,0x0001600 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canBase\Source\Main.c001602 6adb CLRF 0xdb,0x0001604 0e05 MOVLW 0x5 cm.data_length=5; F:\MCP\projects\CAN\canBase\Source\Main.c001606 6ef3 MOVWF 0xf3,0x0001608 0e06 MOVLW 0x600160a cff3 MOVFF 0xff3,0xfdb00160c ffdb00160e 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canBase\Source\Main.c001610 6ef3 MOVWF 0xf3,0x0001612 0e07 MOVLW 0x7001614 cff3 MOVFF 0xff3,0xfdb001616 ffdb001618 0100 MOVLB 0x0 cm.data[1]=(BYTE)((heartcnt & 0x000000FF)); F:\MCP\projects\CAN\canBase\Source\Main.c00161a 516a MOVF 0x6a,0x0,0x100161c 6ee7 MOVWF 0xe7,0x000161e 0e08 MOVLW 0x8001620 cfe7 MOVFF 0xfe7,0xfdb001622 ffdb001624 0e00 MOVLW 0x0 cm.data[2]=(BYTE)((heartcnt & 0x0000FF00)>>1); F:\MCP\projects\CAN\canBase\Source\Main.c001626 156a ANDWF 0x6a,0x0,0x1001628 6e00 MOVWF 0x0,0x000162a 0eff MOVLW 0xff00162c 156b ANDWF 0x6b,0x0,0x100162e 6e01 MOVWF 0x1,0x0001630 90d8 BCF 0xd8,0x0,0x0001632 3201 RRCF 0x1,0x1,0x0001634 3200 RRCF 0x0,0x1,0x0001636 0e09 MOVLW 0x9001638 c000 MOVFF 0x0,0xfdb00163a ffdb00163c c06a MOVFF 0x6a,0x3 cm.data[3]=(BYTE)((heartcnt & 0x00FF0000)>>2); F:\MCP\projects\CAN\canBase\Source\Main.c00163e f003001640 c06b MOVFF 0x6b,0x4001642 f004001644 6a05 CLRF 0x5,0x0001646 6a03 CLRF 0x3,0x0001648 6a04 CLRF 0x4,0x000164a 0e02 MOVLW 0x200164c 0b1f ANDLW 0x1f00164e c003 MOVFF 0x3,0x0001650 f000001652 c004 MOVFF 0x4,0x1001654 f001001656 c005 MOVFF 0x5,0x2001658 f00200165a e006 BZ 0x166800165c 90d8 BCF 0xd8,0x0,0x000165e 3202 RRCF 0x2,0x1,0x0001660 3201 RRCF 0x1,0x1,0x0001662 3200 RRCF 0x0,0x1,0x0001664 06e8 DECF 0xe8,0x1,0x0001666 e1fa BNZ 0x165c001668 0e0a MOVLW 0xa00166a c000 MOVFF 0x0,0xfdb00166c ffdb00166e c06a MOVFF 0x6a,0x0 cm.data[4]=(BYTE)((heartcnt & 0xFF000000)>>3); F:\MCP\projects\CAN\canBase\Source\Main.c001670 f000001672 c06b MOVFF 0x6b,0x1001674 f001001676 6a02 CLRF 0x2,0x0001678 6a03 CLRF 0x3,0x000167a 6a00 CLRF 0x0,0x000167c 6a01 CLRF 0x1,0x000167e 6a02 CLRF 0x2,0x0001680 0e03 MOVLW 0x3001682 90d8 BCF 0xd8,0x0,0x0001684 3203 RRCF 0x3,0x1,0x0001686 3202 RRCF 0x2,0x1,0x0001688 3201 RRCF 0x1,0x1,0x000168a 3200 RRCF 0x0,0x1,0x000168c 06e8 DECF 0xe8,0x1,0x000168e e1f9 BNZ 0x1682001690 0e0b MOVLW 0xb001692 c000 MOVFF 0x0,0xfdb001694 ffdbF:\MCP\projects\CAN\canBase\Source\Main.c001696 0100 MOVLB 0x0 heartcnt++; F:\MCP\projects\CAN\canBase\Source\Main.c001698 2b6a INCF 0x6a,0x1,0x100169a 0e00 MOVLW 0x000169c 236b ADDWFC 0x6b,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Main.c00169e 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canBase\Source\Main.c0016a0 6ee6 MOVWF 0xe6,0x00016a2 cfd9 MOVFF 0xfd9,0xfe90016a4 ffe90016a6 cfda MOVFF 0xfda,0xfea0016a8 ffea0016aa cfee MOVFF 0xfee,0xfe60016ac ffe60016ae cfee MOVFF 0xfee,0xfe60016b0 ffe60016b2 cfee MOVFF 0xfee,0xfe60016b4 ffe60016b6 cfee MOVFF 0xfee,0xfe60016b8 ffe60016ba cfee MOVFF 0xfee,0xfe60016bc ffe60016be cfee MOVFF 0xfee,0xfe60016c0 ffe60016c2 cfee MOVFF 0xfee,0xfe60016c4 ffe60016c6 cfee MOVFF 0xfee,0xfe60016c8 ffe60016ca cfee MOVFF 0xfee,0xfe60016cc ffe60016ce cfee MOVFF 0xfee,0xfe60016d0 ffe60016d2 cfee MOVFF 0xfee,0xfe60016d4 ffe60016d6 cfee MOVFF 0xfee,0xfe60016d8 ffe60016da cfee MOVFF 0xfee,0xfe60016dc ffe60016de cfee MOVFF 0xfee,0xfe60016e0 ffe60016e2 cfee MOVFF 0xfee,0xfe60016e4 ffe60016e6 ecc6 CALL 0x138c,0x00016e8 f0090016ea 6e00 MOVWF 0x0,0x00016ec 0e10 MOVLW 0x100016ee 5ee1 SUBWF 0xe1,0x1,0x00016f0 5000 MOVF 0x0,0x0,0x00016f2 0900 IORLW 0x00016f4 e101 BNZ 0x16f80016f6 d7d3 BRA 0x169e} F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c0016fa 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c0016fc 5ce1 SUBWF 0xe1,0x0,0x00016fe e202 BC 0x1704001700 6ae1 CLRF 0xe1,0x0001702 52e5 MOVF 0xe5,0x1,0x0001704 6ee1 MOVWF 0xe1,0x0001706 52e5 MOVF 0xe5,0x1,0x0001708 cfe7 MOVFF 0xfe7,0xfd900170a ffd900170c 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.c00170e cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c001710 ffe4001712 cfe2 MOVFF 0xfe2,0xfda001714 ffda001716 cfe9 MOVFF 0xfe9,0xfe4001718 ffe400171a cfea MOVFF 0xfea,0xfe400171c ffe400171e cff6 MOVFF 0xff6,0xfe4001720 ffe4001722 cff7 MOVFF 0xff7,0xfe4001724 ffe4001726 cff5 MOVFF 0xff5,0xfe4001728 ffe400172a cff3 MOVFF 0xff3,0xfe400172c ffe400172e cff4 MOVFF 0xff4,0xfe4001730 ffe4001732 cffa MOVFF 0xffa,0xfe4001734 ffe4001736 ee00 LFSR 0x0,0x14001738 f01400173a 0e0b MOVLW 0xb00173c 04e8 DECF 0xe8,0x0,0x000173e e303 BNC 0x1746001740 cfee MOVFF 0xfee,0xfe4001742 ffe4001744 d7fb BRA 0x173c001746 ee00 LFSR 0x0,0x0001748 f00000174a 0e14 MOVLW 0x1400174c 04e8 DECF 0xe8,0x0,0x000174e e303 BNC 0x1756001750 cfee MOVFF 0xfee,0xfe4001752 ffe4001754 d7fb BRA 0x174c001756 52e6 MOVF 0xe6,0x1,0x0001758 cfd9 MOVFF 0xfd9,0xfe600175a ffe600175c cfe1 MOVFF 0xfe1,0xfd900175e ffd9001760 0e0f MOVLW 0xf001762 26e1 ADDWF 0xe1,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.c001764 ec4d CALL 0x109a,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c001766 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001768 50f2 MOVF 0xf2,0x0,0x0 if (INTCONbits.INT0IE && INTCONbits.INT0IF) F:\MCP\projects\CAN\canBase\Source\Main.c00176a 0b10 ANDLW 0x1000176c e101 BNZ 0x177000176e d084 BRA 0x1878001770 50f2 MOVF 0xf2,0x0,0x0001772 0b02 ANDLW 0x2001774 e101 BNZ 0x1778001776 d080 BRA 0x1878{ F:\MCP\projects\CAN\canBase\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canBase\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001778 ec47 CALL 0x1a8e,0x0 if ((tickGet()-t)>TICK_SECOND/2) F:\MCP\projects\CAN\canBase\Source\Main.c00177a f00d00177c 0100 MOVLB 0x000177e 5170 MOVF 0x70,0x0,0x1001780 5c18 SUBWF 0x18,0x0,0x0001782 6e1f MOVWF 0x1f,0x0001784 5171 MOVF 0x71,0x0,0x1001786 5819 SUBWFB 0x19,0x0,0x0001788 6e20 MOVWF 0x20,0x000178a 5172 MOVF 0x72,0x0,0x100178c 581a SUBWFB 0x1a,0x0,0x000178e 6e21 MOVWF 0x21,0x0001790 5173 MOVF 0x73,0x0,0x1001792 581b SUBWFB 0x1b,0x0,0x0001794 6e22 MOVWF 0x22,0x0001796 80d8 BSF 0xd8,0x0,0x0001798 0e32 MOVLW 0x3200179a 541f SUBFWB 0x1f,0x0,0x000179c 0e00 MOVLW 0x000179e 5420 SUBFWB 0x20,0x0,0x00017a0 0e00 MOVLW 0x00017a2 5421 SUBFWB 0x21,0x0,0x00017a4 0e00 MOVLW 0x00017a6 5422 SUBFWB 0x22,0x0,0x00017a8 e266 BC 0x1876{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0017aa 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canBase\Source\Main.c0017ac 0e91 MOVLW 0x91 cm.ident=0x1F910091; F:\MCP\projects\CAN\canBase\Source\Main.c0017ae 6ede MOVWF 0xde,0x00017b0 6ade CLRF 0xde,0x00017b2 6ede MOVWF 0xde,0x00017b4 0e1f MOVLW 0x1f0017b6 6edd MOVWF 0xdd,0x00017b8 52dd MOVF 0xdd,0x1,0x00017ba 52dd MOVF 0xdd,0x1,0x00017bc 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canBase\Source\Main.c0017be 6ef3 MOVWF 0xf3,0x00017c0 0e04 MOVLW 0x40017c2 cff3 MOVFF 0xff3,0xfdb0017c4 ffdb0017c6 0e01 MOVLW 0x1 cm.remote_request=TRUE; F:\MCP\projects\CAN\canBase\Source\Main.c0017c8 6ef3 MOVWF 0xf3,0x00017ca 0e05 MOVLW 0x50017cc cff3 MOVFF 0xff3,0xfdb0017ce ffdb0017d0 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canBase\Source\Main.c0017d2 6ef3 MOVWF 0xf3,0x00017d4 0e06 MOVLW 0x60017d6 cff3 MOVFF 0xff3,0xfdb0017d8 ffdb0017da 0e01 MOVLW 0x1 cm.data[0]=0x01; F:\MCP\projects\CAN\canBase\Source\Main.c0017dc 6ef3 MOVWF 0xf3,0x00017de 0e07 MOVLW 0x70017e0 cff3 MOVFF 0xff3,0xfdb0017e2 ffdb0017e4 6ef3 MOVWF 0xf3,0x0 cm.data[1]=0x07; F:\MCP\projects\CAN\canBase\Source\Main.c0017e6 0e08 MOVLW 0x80017e8 cff3 MOVFF 0xff3,0xfdb0017ea ffdb0017ec 0e09 MOVLW 0x9 cm.data[2]=0x09; F:\MCP\projects\CAN\canBase\Source\Main.c0017ee 6ef3 MOVWF 0xf3,0x00017f0 cff3 MOVFF 0xff3,0xfdb0017f2 ffdb0017f4 0e08 MOVLW 0x8 cm.data[3]=0x08; F:\MCP\projects\CAN\canBase\Source\Main.c0017f6 6ef3 MOVWF 0xf3,0x00017f8 0e0a MOVLW 0xa0017fa cff3 MOVFF 0xff3,0xfdb0017fc ffdb0017fe 0e03 MOVLW 0x3 cm.data[4]=0x03; F:\MCP\projects\CAN\canBase\Source\Main.c001800 6ef3 MOVWF 0xf3,0x0001802 0e0b MOVLW 0xb001804 cff3 MOVFF 0xff3,0xfdb001806 ffdbF:\MCP\projects\CAN\canBase\Source\Main.c001808 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canBase\Source\Main.c00180a 6ee6 MOVWF 0xe6,0x000180c cfd9 MOVFF 0xfd9,0xfe900180e ffe9001810 cfda MOVFF 0xfda,0xfea001812 ffea001814 cfee MOVFF 0xfee,0xfe6001816 ffe6001818 cfee MOVFF 0xfee,0xfe600181a ffe600181c cfee MOVFF 0xfee,0xfe600181e ffe6001820 cfee MOVFF 0xfee,0xfe6001822 ffe6001824 cfee MOVFF 0xfee,0xfe6001826 ffe6001828 cfee MOVFF 0xfee,0xfe600182a ffe600182c cfee MOVFF 0xfee,0xfe600182e ffe6001830 cfee MOVFF 0xfee,0xfe6001832 ffe6001834 cfee MOVFF 0xfee,0xfe6001836 ffe6001838 cfee MOVFF 0xfee,0xfe600183a ffe600183c cfee MOVFF 0xfee,0xfe600183e ffe6001840 cfee MOVFF 0xfee,0xfe6001842 ffe6001844 cfee MOVFF 0xfee,0xfe6001846 ffe6001848 cfee MOVFF 0xfee,0xfe600184a ffe600184c cfee MOVFF 0xfee,0xfe600184e ffe6001850 ecc6 CALL 0x138c,0x0001852 f009001854 6e1f MOVWF 0x1f,0x0001856 0e10 MOVLW 0x10001858 5ee1 SUBWF 0xe1,0x1,0x000185a 501f MOVF 0x1f,0x0,0x000185c 0900 IORLW 0x000185e e101 BNZ 0x1862001860 d7d3 BRA 0x1808F:\MCP\projects\CAN\canBase\Source\Main.c001862 ec47 CALL 0x1a8e,0x0 t=tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c001864 f00d001866 c018 MOVFF 0x18,0x70001868 f07000186a c019 MOVFF 0x19,0x7100186c f07100186e c01a MOVFF 0x1a,0x72001870 f072001872 c01b MOVFF 0x1b,0x73001874 f073} F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001876 92f2 BCF 0xf2,0x1,0x0 INTCONbits.INT0IF=0; 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.c001878 ec51 CALL 0x1aa2,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c00187a f00d00187c 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c00187e 5ce1 SUBWF 0xe1,0x0,0x0001880 e202 BC 0x1886001882 6ae1 CLRF 0xe1,0x0001884 52e5 MOVF 0xe5,0x1,0x0001886 6ee1 MOVWF 0xe1,0x0001888 52e5 MOVF 0xe5,0x1,0x000188a cfe7 MOVFF 0xfe7,0xfd900188c ffd900188e 52e5 MOVF 0xe5,0x1,0x0001890 ee00 LFSR 0x0,0x13001892 f013001894 0e14 MOVLW 0x14001896 04e8 DECF 0xe8,0x0,0x0001898 e303 BNC 0x18a000189a cfe5 MOVFF 0xfe5,0xfed00189c ffed00189e d7fb BRA 0x18960018a0 ee00 LFSR 0x0,0x1e0018a2 f01e0018a4 0e0b MOVLW 0xb0018a6 04e8 DECF 0xe8,0x0,0x00018a8 e303 BNC 0x18b00018aa cfe5 MOVFF 0xfe5,0xfed0018ac ffed0018ae d7fb BRA 0x18a60018b0 cfe5 MOVFF 0xfe5,0xffa0018b2 fffa0018b4 cfe5 MOVFF 0xfe5,0xff40018b6 fff40018b8 cfe5 MOVFF 0xfe5,0xff30018ba fff30018bc cfe5 MOVFF 0xfe5,0xff50018be fff50018c0 cfe5 MOVFF 0xfe5,0xff70018c2 fff70018c4 cfe5 MOVFF 0xfe5,0xff60018c6 fff60018c8 cfe5 MOVFF 0xfe5,0xfea0018ca ffea0018cc cfe5 MOVFF 0xfe5,0xfe90018ce ffe90018d0 cfe5 MOVFF 0xfe5,0xfda0018d2 ffda0018d4 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.c0018d6 cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0018d8 ffe40018da cfe2 MOVFF 0xfe2,0xfda0018dc ffda0018de 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0018e0 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0018e2 cfe5 MOVFF 0xfe5,0xfda0018e4 ffda0018e6 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.c0018e8 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canBase\Source\Main.c0018ea 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 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.c0018ec 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c0018ee 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// RB0 interrupt F:\MCP\projects\CAN\canBase\Source\Main.c0018f0 8cf1 BSF 0xf1,0x6,0x0 INTCON2bits.INTEDG0 = 1; //rising edge F:\MCP\projects\CAN\canBase\Source\Main.c0018f2 88f2 BSF 0xf2,0x4,0x0 INTCONbits.INT0IE = 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.c0018f4 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.c0018f6 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.c0018f8 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c0018fa ffe60018fc cfe1 MOVFF 0xfe1,0xfd90018fe ffd9{ F:\MCP\projects\CAN\canBase\Source\Main.c001900 50d9 MOVF 0xd9,0x0,0x0 if (cm.ident==0x00000304) F:\MCP\projects\CAN\canBase\Source\Main.c001902 0ff0 ADDLW 0xf0001904 6ee9 MOVWF 0xe9,0x0001906 0eff MOVLW 0xff001908 20da ADDWFC 0xda,0x0,0x000190a 6eea MOVWF 0xea,0x000190c 0e04 MOVLW 0x400190e 18ee XORWF 0xee,0x0,0x0001910 e106 BNZ 0x191e001912 0e03 MOVLW 0x3001914 18ee XORWF 0xee,0x0,0x0001916 e103 BNZ 0x191e001918 50ee MOVF 0xee,0x0,0x000191a e101 BNZ 0x191e00191c 50ee MOVF 0xee,0x0,0x000191e e15a BNZ 0x19d4{ F:\MCP\projects\CAN\canBase\Source\Main.c001920 0ef7 MOVLW 0xf7 if (cm.data[0]==0x20) LED0_IO=1; F:\MCP\projects\CAN\canBase\Source\Main.c001922 50db MOVF 0xdb,0x0,0x0001924 0820 SUBLW 0x20001926 e101 BNZ 0x192a001928 8282 BSF 0x82,0x1,0x000192a 0ef7 MOVLW 0xf7 if (cm.data[0]==0x40) LED0_IO=0; F:\MCP\projects\CAN\canBase\Source\Main.c00192c 50db MOVF 0xdb,0x0,0x000192e 0840 SUBLW 0x40001930 e101 BNZ 0x1934001932 9282 BCF 0x82,0x1,0x0001934 0ef7 MOVLW 0xf7 if (cm.data[0]==0x80) F:\MCP\projects\CAN\canBase\Source\Main.c001936 50db MOVF 0xdb,0x0,0x0001938 0880 SUBLW 0x8000193a e14c BNZ 0x19d4{ F:\MCP\projects\CAN\canBase\Source\Main.c00193c 0e03 MOVLW 0x3 cm.ident=0x00000303; F:\MCP\projects\CAN\canBase\Source\Main.c00193e 6ef3 MOVWF 0xf3,0x0001940 0ef0 MOVLW 0xf0001942 cff3 MOVFF 0xff3,0xfdb001944 ffdb001946 0e03 MOVLW 0x3001948 6ef3 MOVWF 0xf3,0x000194a 0ef1 MOVLW 0xf100194c cff3 MOVFF 0xff3,0xfdb00194e ffdb001950 0ef2 MOVLW 0xf2001952 6adb CLRF 0xdb,0x0001954 0ef3 MOVLW 0xf3001956 6adb CLRF 0xdb,0x0001958 0ef4 MOVLW 0xf4 cm.extended=FALSE; F:\MCP\projects\CAN\canBase\Source\Main.c00195a 6adb CLRF 0xdb,0x000195c 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canBase\Source\Main.c00195e 6ef3 MOVWF 0xf3,0x0001960 0ef6 MOVLW 0xf6001962 cff3 MOVFF 0xff3,0xfdb001964 ffdb001966 5082 MOVF 0x82,0x0,0x0 cm.data[0]=LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c001968 0b02 ANDLW 0x200196a e001 BZ 0x196e00196c 0e01 MOVLW 0x100196e 6ee7 MOVWF 0xe7,0x0001970 0ef7 MOVLW 0xf7001972 cfe7 MOVFF 0xfe7,0xfdb001974 ffdb001976 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canBase\Source\Main.c001978 6ee6 MOVWF 0xe6,0x000197a 50d9 MOVF 0xd9,0x0,0x000197c 0ff0 ADDLW 0xf000197e 6ee9 MOVWF 0xe9,0x0001980 0eff MOVLW 0xff001982 20da ADDWFC 0xda,0x0,0x0001984 6eea MOVWF 0xea,0x0001986 cfee MOVFF 0xfee,0xfe6001988 ffe600198a cfee MOVFF 0xfee,0xfe600198c ffe600198e cfee MOVFF 0xfee,0xfe6001990 ffe6001992 cfee MOVFF 0xfee,0xfe6001994 ffe6001996 cfee MOVFF 0xfee,0xfe6001998 ffe600199a cfee MOVFF 0xfee,0xfe600199c ffe600199e cfee MOVFF 0xfee,0xfe60019a0 ffe60019a2 cfee MOVFF 0xfee,0xfe60019a4 ffe60019a6 cfee MOVFF 0xfee,0xfe60019a8 ffe60019aa cfee MOVFF 0xfee,0xfe60019ac ffe60019ae cfee MOVFF 0xfee,0xfe60019b0 ffe60019b2 cfee MOVFF 0xfee,0xfe60019b4 ffe60019b6 cfee MOVFF 0xfee,0xfe60019b8 ffe60019ba cfee MOVFF 0xfee,0xfe60019bc ffe60019be cfee MOVFF 0xfee,0xfe60019c0 ffe60019c2 ecc6 CALL 0x138c,0x00019c4 f0090019c6 6e00 MOVWF 0x0,0x00019c8 0e10 MOVLW 0x100019ca 5ee1 SUBWF 0xe1,0x1,0x00019cc 5000 MOVF 0x0,0x0,0x00019ce 0900 IORLW 0x00019d0 e101 BNZ 0x19d40019d2 d7d1 BRA 0x1976F:\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.c0019d4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0019d6 cfe7 MOVFF 0xfe7,0xfd90019d8 ffd90019da 0012 RETURN 0x0#endif 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 ef5f GOTO 0x1abe _asm goto _startup _endasm F:\MCP\projects\CAN\canBase\Source\Main.c001002 f00d001004 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 ef87 GOTO 0x170e _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00100a f00b00100c 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 ef6b GOTO 0x18d6 _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00101a f00c00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.c