Rev 56 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Oct 29 21:11:04 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Ticker service F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canNode\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canNode\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canNode\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canNode\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canNode\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canNode\Source\Tick.c#else F:\MCP\projects\CAN\canNode\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canNode\Source\Tick.c#endif F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canNode\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c002a4c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c002a4e 6ed6 MOVWF 0xd6,0x0002a50 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c002a52 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canNode\Source\Tick.c002a54 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canNode\Source\Tick.c002a56 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canNode\Source\Tick.c002a58 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c002a5a 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c002a5c 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canNode\Source\Tick.c002a5e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c002a60 c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\canNode\Source\Tick.c002a62 f018002a64 c075 MOVFF 0x75,0x19002a66 f019002a68 c076 MOVFF 0x76,0x1a002a6a f01a002a6c c077 MOVFF 0x77,0x1b002a6e f01b002a70 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.cF:\MCP\projects\CAN\canNode\Source\Tick.c/* F:\MCP\projects\CAN\canNode\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canNode\Source\Tick.c* F:\MCP\projects\CAN\canNode\Source\Tick.c* Input: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Output: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canNode\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canNode\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canNode\Source\Tick.c*/ F:\MCP\projects\CAN\canNode\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canNode\Source\Tick.c{ F:\MCP\projects\CAN\canNode\Source\Tick.c002a72 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canNode\Source\Tick.c002a74 d00b BRA 0x2a8c{ F:\MCP\projects\CAN\canNode\Source\Tick.c002a76 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canNode\Source\Tick.c002a78 6ed7 MOVWF 0xd7,0x0002a7a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canNode\Source\Tick.c002a7c 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canNode\Source\Tick.c002a7e 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canNode\Source\Tick.c002a80 2b74 INCF 0x74,0x1,0x1002a82 0e00 MOVLW 0x0002a84 2375 ADDWFC 0x75,0x1,0x1002a86 2376 ADDWFC 0x76,0x1,0x1002a88 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Tick.c002a8a 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canNode\Source\Tick.c} F:\MCP\projects\CAN\canNode\Source\Tick.c002a8c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* CAN driver F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\CAN.c* FileName: CAN.c F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canNode\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canNode\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c002044 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canNode\Source\CAN.c002046 6e6f MOVWF 0x6f,0x0002048 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canNode\Source\CAN.c00204a 146e ANDWF 0x6e,0x0,0x000204c 0880 SUBLW 0x8000204e e1fc BNZ 0x2048F:\MCP\projects\CAN\canNode\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002050 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c002052 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canNode\Source\CAN.c002054 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canNode\Source\CAN.c002056 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canNode\Source\CAN.c002058 1070 IORWF 0x70,0x0,0x000205a 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canNode\Source\CAN.c00205c 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c00205e 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002060 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002062 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c002064 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002066 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002068 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canNode\Source\CAN.c00206a 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canNode\Source\CAN.c00206c 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canNode\Source\CAN.c00206e 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002070 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002072 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002074 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canNode\Source\CAN.c002076 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002078 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canNode\Source\CAN.c00207a 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canNode\Source\CAN.c00207c 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c00207e 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002080 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canNode\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c002082 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002084 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.c002086 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c002088 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canNode\Source\CAN.c00208a 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canNode\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canNode\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canNode\Source\CAN.c#else F:\MCP\projects\CAN\canNode\Source\CAN.c00208c 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canNode\Source\CAN.c00208e 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canNode\Source\CAN.c002090 146e ANDWF 0x6e,0x0,0x0002092 e1fd BNZ 0x208e#endif F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002094 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002096 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canNode\Source\CAN.c002098 0b02 ANDLW 0x200209a e106 BNZ 0x20a800209c 50a4 MOVF 0xa4,0x0,0x000209e 0b02 ANDLW 0x20020a0 e103 BNZ 0x20a80020a2 50a4 MOVF 0xa4,0x0,0x00020a4 0b01 ANDLW 0x10020a6 e03a BZ 0x211c{ F:\MCP\projects\CAN\canNode\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canNode\Source\CAN.c0020a8 ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020aa d004 BRA 0x20b40020ac 0e00 MOVLW 0x00020ae 1477 ANDWF 0x77,0x0,0x00020b0 0910 IORLW 0x100020b2 d02b BRA 0x210a else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020b4 010f MOVLB 0xf0020b6 af50 BTFSS 0x50,0x7,0x10020b8 d004 BRA 0x20c20020ba 0e00 MOVLW 0x00020bc 1477 ANDWF 0x77,0x0,0x00020be 0911 IORLW 0x110020c0 d024 BRA 0x210a else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020c2 010e MOVLB 0xe0020c4 af20 BTFSS 0x20,0x7,0x10020c6 d004 BRA 0x20d00020c8 0e00 MOVLW 0x00020ca 1477 ANDWF 0x77,0x0,0x00020cc 0912 IORLW 0x120020ce d01d BRA 0x210a else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020d0 af30 BTFSS 0x30,0x7,0x10020d2 d004 BRA 0x20dc0020d4 0e00 MOVLW 0x00020d6 1477 ANDWF 0x77,0x0,0x00020d8 0913 IORLW 0x130020da d017 BRA 0x210a else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020dc af40 BTFSS 0x40,0x7,0x10020de d004 BRA 0x20e80020e0 0e00 MOVLW 0x00020e2 1477 ANDWF 0x77,0x0,0x00020e4 0914 IORLW 0x140020e6 d011 BRA 0x210a else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020e8 af50 BTFSS 0x50,0x7,0x10020ea d004 BRA 0x20f40020ec 0e00 MOVLW 0x00020ee 1477 ANDWF 0x77,0x0,0x00020f0 0915 IORLW 0x150020f2 d00b BRA 0x210a else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c0020f4 af60 BTFSS 0x60,0x7,0x10020f6 d004 BRA 0x21000020f8 0e00 MOVLW 0x00020fa 1477 ANDWF 0x77,0x0,0x00020fc 0916 IORLW 0x160020fe d005 BRA 0x210a else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canNode\Source\CAN.c002100 af70 BTFSS 0x70,0x7,0x1002102 d005 BRA 0x210e002104 0e00 MOVLW 0x0002106 1477 ANDWF 0x77,0x0,0x0002108 0917 IORLW 0x1700210a 6e77 MOVWF 0x77,0x000210c d808 RCALL 0x211eF:\MCP\projects\CAN\canNode\Source\CAN.c00210e a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c002110 d003 BRA 0x2118002112 92a4 BCF 0xa4,0x1,0x0002114 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c002116 92a4 BCF 0xa4,0x1,0x0002118 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canNode\Source\CAN.c00211a 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c00211c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: none F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.c00211e cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canNode\Source\CAN.c002120 ffe6002122 cfe1 MOVFF 0xfe1,0xfd9002124 ffd9002126 0e0f MOVLW 0xf002128 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Set extended mode or not. F:\MCP\projects\CAN\canNode\Source\CAN.c00212a 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c00212c 0b08 ANDLW 0x800212e e102 BNZ 0x2134002130 0e00 MOVLW 0x0002132 d001 BRA 0x2136002134 0e01 MOVLW 0x1002136 6ee7 MOVWF 0xe7,0x0002138 0e04 MOVLW 0x400213a cfe7 MOVFF 0xfe7,0xfdb00213c ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear F:\MCP\projects\CAN\canNode\Source\CAN.c00213e 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canNode\Source\CAN.c002140 6ade CLRF 0xde,0x0002142 6ade CLRF 0xde,0x0002144 6add CLRF 0xdd,0x0002146 52dd MOVF 0xdd,0x1,0x0002148 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00214a 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c00214c e163 BNZ 0x2214{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\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\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00214e 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\canNode\Source\CAN.c002150 6e00 MOVWF 0x0,0x0002152 6a01 CLRF 0x1,0x0002154 6a02 CLRF 0x2,0x0002156 6a03 CLRF 0x3,0x0002158 0e15 MOVLW 0x1500215a 0b1f ANDLW 0x1f00215c e007 BZ 0x216c00215e 90d8 BCF 0xd8,0x0,0x0002160 3600 RLCF 0x0,0x1,0x0002162 3601 RLCF 0x1,0x1,0x0002164 3602 RLCF 0x2,0x1,0x0002166 3603 RLCF 0x3,0x1,0x0002168 06e8 DECF 0xe8,0x1,0x000216a e1f9 BNZ 0x215e00216c 0ee0 MOVLW 0xe000216e 1462 ANDWF 0x62,0x0,0x0002170 6e04 MOVWF 0x4,0x0002172 6a05 CLRF 0x5,0x0002174 6a06 CLRF 0x6,0x0002176 6a07 CLRF 0x7,0x0002178 0e0d MOVLW 0xd00217a 0b1f ANDLW 0x1f00217c e007 BZ 0x218c00217e 90d8 BCF 0xd8,0x0,0x0002180 3604 RLCF 0x4,0x1,0x0002182 3605 RLCF 0x5,0x1,0x0002184 3606 RLCF 0x6,0x1,0x0002186 3607 RLCF 0x7,0x1,0x0002188 06e8 DECF 0xe8,0x1,0x000218a e1f9 BNZ 0x217e00218c 5004 MOVF 0x4,0x0,0x000218e 2600 ADDWF 0x0,0x1,0x0002190 5005 MOVF 0x5,0x0,0x0002192 2201 ADDWFC 0x1,0x1,0x0002194 5006 MOVF 0x6,0x0,0x0002196 2202 ADDWFC 0x2,0x1,0x0002198 5007 MOVF 0x7,0x0,0x000219a 2203 ADDWFC 0x3,0x1,0x000219c 0e03 MOVLW 0x300219e 1462 ANDWF 0x62,0x0,0x00021a0 6e08 MOVWF 0x8,0x00021a2 6a09 CLRF 0x9,0x00021a4 6a0a CLRF 0xa,0x00021a6 6a0b CLRF 0xb,0x00021a8 0e10 MOVLW 0x100021aa 0b1f ANDLW 0x1f0021ac e007 BZ 0x21bc0021ae 90d8 BCF 0xd8,0x0,0x00021b0 3608 RLCF 0x8,0x1,0x00021b2 3609 RLCF 0x9,0x1,0x00021b4 360a RLCF 0xa,0x1,0x00021b6 360b RLCF 0xb,0x1,0x00021b8 06e8 DECF 0xe8,0x1,0x00021ba e1f9 BNZ 0x21ae0021bc 5008 MOVF 0x8,0x0,0x00021be 2600 ADDWF 0x0,0x1,0x00021c0 5009 MOVF 0x9,0x0,0x00021c2 2201 ADDWFC 0x1,0x1,0x00021c4 500a MOVF 0xa,0x0,0x00021c6 2202 ADDWFC 0x2,0x1,0x00021c8 500b MOVF 0xb,0x0,0x00021ca 2203 ADDWFC 0x3,0x1,0x00021cc 5063 MOVF 0x63,0x0,0x00021ce 6e0c MOVWF 0xc,0x00021d0 6a0d CLRF 0xd,0x00021d2 6a0e CLRF 0xe,0x00021d4 6a0f CLRF 0xf,0x00021d6 0e08 MOVLW 0x80021d8 0b1f ANDLW 0x1f0021da e007 BZ 0x21ea0021dc 90d8 BCF 0xd8,0x0,0x00021de 360c RLCF 0xc,0x1,0x00021e0 360d RLCF 0xd,0x1,0x00021e2 360e RLCF 0xe,0x1,0x00021e4 360f RLCF 0xf,0x1,0x00021e6 06e8 DECF 0xe8,0x1,0x00021e8 e1f9 BNZ 0x21dc0021ea 500c MOVF 0xc,0x0,0x00021ec 2600 ADDWF 0x0,0x1,0x00021ee 500d MOVF 0xd,0x0,0x00021f0 2201 ADDWFC 0x1,0x1,0x00021f2 500e MOVF 0xe,0x0,0x00021f4 2202 ADDWFC 0x2,0x1,0x00021f6 500f MOVF 0xf,0x0,0x00021f8 2203 ADDWFC 0x3,0x1,0x00021fa 5064 MOVF 0x64,0x0,0x00021fc 6e10 MOVWF 0x10,0x00021fe 6a11 CLRF 0x11,0x0002200 6a12 CLRF 0x12,0x0002202 6a13 CLRF 0x13,0x0002204 50e8 MOVF 0xe8,0x0,0x0002206 2600 ADDWF 0x0,0x1,0x0002208 5011 MOVF 0x11,0x0,0x000220a 2201 ADDWFC 0x1,0x1,0x000220c 5012 MOVF 0x12,0x0,0x000220e 2202 ADDWFC 0x2,0x1,0x0002210 5013 MOVF 0x13,0x0,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c002212 d023 BRA 0x225a else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002214 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canNode\Source\CAN.c002216 6e00 MOVWF 0x0,0x0002218 6a01 CLRF 0x1,0x000221a 6a02 CLRF 0x2,0x000221c 6a03 CLRF 0x3,0x000221e 0e03 MOVLW 0x3002220 0b1f ANDLW 0x1f002222 e007 BZ 0x2232002224 90d8 BCF 0xd8,0x0,0x0002226 3600 RLCF 0x0,0x1,0x0002228 3601 RLCF 0x1,0x1,0x000222a 3602 RLCF 0x2,0x1,0x000222c 3603 RLCF 0x3,0x1,0x000222e 06e8 DECF 0xe8,0x1,0x0002230 e1f9 BNZ 0x2224002232 5062 MOVF 0x62,0x0,0x0002234 6e04 MOVWF 0x4,0x0002236 6a05 CLRF 0x5,0x0002238 6a06 CLRF 0x6,0x000223a 6a07 CLRF 0x7,0x000223c 0e05 MOVLW 0x500223e 90d8 BCF 0xd8,0x0,0x0002240 3207 RRCF 0x7,0x1,0x0002242 3206 RRCF 0x6,0x1,0x0002244 3205 RRCF 0x5,0x1,0x0002246 3204 RRCF 0x4,0x1,0x0002248 06e8 DECF 0xe8,0x1,0x000224a e1f9 BNZ 0x223e00224c 5004 MOVF 0x4,0x0,0x000224e 2600 ADDWF 0x0,0x1,0x0002250 5005 MOVF 0x5,0x0,0x0002252 2201 ADDWFC 0x1,0x1,0x0002254 5006 MOVF 0x6,0x0,0x0002256 2202 ADDWFC 0x2,0x1,0x0002258 5007 MOVF 0x7,0x0,0x000225a 2203 ADDWFC 0x3,0x1,0x000225c c000 MOVFF 0x0,0xfdf00225e ffdf002260 0e01 MOVLW 0x1002262 c001 MOVFF 0x1,0xfdb002264 ffdb002266 0e02 MOVLW 0x2002268 c002 MOVFF 0x2,0xfdb00226a ffdb00226c 0e03 MOVLW 0x300226e c003 MOVFF 0x3,0xfdb002270 ffdb} F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Data length F:\MCP\projects\CAN\canNode\Source\CAN.c002272 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canNode\Source\CAN.c002274 0b01 ANDLW 0x1002276 6e02 MOVWF 0x2,0x0002278 5065 MOVF 0x65,0x0,0x000227a 0b02 ANDLW 0x200227c e001 BZ 0x228000227e 0e01 MOVLW 0x1002280 24e8 ADDWF 0xe8,0x0,0x0002282 6e01 MOVWF 0x1,0x0002284 5065 MOVF 0x65,0x0,0x0002286 0b04 ANDLW 0x4002288 e001 BZ 0x228c00228a 0e01 MOVLW 0x100228c 0d04 MULLW 0x400228e cff3 MOVFF 0xff3,0x0002290 f000002292 5065 MOVF 0x65,0x0,0x0002294 0b08 ANDLW 0x8002296 e001 BZ 0x229a002298 0e01 MOVLW 0x100229a 0d08 MULLW 0x800229c 50f3 MOVF 0xf3,0x0,0x000229e 2400 ADDWF 0x0,0x0,0x00022a0 2401 ADDWF 0x1,0x0,0x00022a2 2402 ADDWF 0x2,0x0,0x00022a4 6ee7 MOVWF 0xe7,0x00022a6 0e06 MOVLW 0x60022a8 cfe7 MOVFF 0xfe7,0xfdb0022aa ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Remote request F:\MCP\projects\CAN\canNode\Source\CAN.c0022ac 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canNode\Source\CAN.c0022ae 0b40 ANDLW 0x400022b0 e102 BNZ 0x22b60022b2 0e00 MOVLW 0x00022b4 d001 BRA 0x22b80022b6 0e01 MOVLW 0x10022b8 6ee7 MOVWF 0xe7,0x00022ba 0e05 MOVLW 0x50022bc cfe7 MOVFF 0xfe7,0xfdb0022be ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c0022c0 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canNode\Source\CAN.c0022c2 cf66 MOVFF 0xf66,0xfdb0022c4 ffdb0022c6 0e08 MOVLW 0x80022c8 cf67 MOVFF 0xf67,0xfdb0022ca ffdb0022cc 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canNode\Source\CAN.c0022ce cf68 MOVFF 0xf68,0xfdb0022d0 ffdb0022d2 0e0a MOVLW 0xa0022d4 cf69 MOVFF 0xf69,0xfdb0022d6 ffdb0022d8 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canNode\Source\CAN.c0022da cf6a MOVFF 0xf6a,0xfdb0022dc ffdb0022de 0e0c MOVLW 0xc0022e0 cf6b MOVFF 0xf6b,0xfdb0022e2 ffdb0022e4 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canNode\Source\CAN.c0022e6 cf6c MOVFF 0xf6c,0xfdb0022e8 ffdb0022ea 0e0e MOVLW 0xe0022ec cf6d MOVFF 0xf6d,0xfdb0022ee ffdbF:\MCP\projects\CAN\canNode\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canNode\Source\CAN.c0022f0 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canNode\Source\CAN.c0022f2 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canNode\Source\CAN.c0022f4 ffe90022f6 cfda MOVFF 0xfda,0xfea0022f8 ffea0022fa cfee MOVFF 0xfee,0xfe60022fc ffe60022fe cfee MOVFF 0xfee,0xfe6002300 ffe6002302 cfee MOVFF 0xfee,0xfe6002304 ffe6002306 cfee MOVFF 0xfee,0xfe6002308 ffe600230a cfee MOVFF 0xfee,0xfe600230c ffe600230e cfee MOVFF 0xfee,0xfe6002310 ffe6002312 cfee MOVFF 0xfee,0xfe6002314 ffe6002316 cfee MOVFF 0xfee,0xfe6002318 ffe600231a cfee MOVFF 0xfee,0xfe600231c ffe600231e cfee MOVFF 0xfee,0xfe6002320 ffe6002322 cfee MOVFF 0xfee,0xfe6002324 ffe6002326 cfee MOVFF 0xfee,0xfe6002328 ffe600232a cfee MOVFF 0xfee,0xfe600232c ffe600232e cfee MOVFF 0xfee,0xfe6002330 ffe6002332 cfee MOVFF 0xfee,0xfe6002334 ffe6002336 ec66 CALL 0x28cc,0x0002338 f01400233a 6e00 MOVWF 0x0,0x000233c 0e0f MOVLW 0xf00233e 5ee1 SUBWF 0xe1,0x1,0x0002340 5000 MOVF 0x0,0x0,0x0002342 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canNode\Source\CAN.c002344 5ce1 SUBWF 0xe1,0x0,0x0002346 e202 BC 0x234c002348 6ae1 CLRF 0xe1,0x000234a 52e5 MOVF 0xe5,0x1,0x000234c 6ee1 MOVWF 0xe1,0x000234e 52e5 MOVF 0xe5,0x1,0x0002350 cfe7 MOVFF 0xfe7,0xfd9002352 ffd9002354 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c/* F:\MCP\projects\CAN\canNode\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canNode\Source\CAN.c* F:\MCP\projects\CAN\canNode\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canNode\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canNode\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canNode\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canNode\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canNode\Source\CAN.c*/ F:\MCP\projects\CAN\canNode\Source\CAN.c002356 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canNode\Source\CAN.c002358 ffe600235a cfe1 MOVFF 0xfe1,0xfd900235c ffd9{ F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00235e 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canNode\Source\CAN.c002360 b740 BTFSC 0x40,0x3,0x1002362 d004 BRA 0x236c002364 0e00 MOVLW 0x0002366 1477 ANDWF 0x77,0x0,0x0002368 0903 IORLW 0x300236a 6e77 MOVWF 0x77,0x000236c 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canNode\Source\CAN.c00236e b730 BTFSC 0x30,0x3,0x1002370 d004 BRA 0x237a002372 0e00 MOVLW 0x0002374 1477 ANDWF 0x77,0x0,0x0002376 0904 IORLW 0x4002378 6e77 MOVWF 0x77,0x000237a 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canNode\Source\CAN.c00237c b720 BTFSC 0x20,0x3,0x100237e d005 BRA 0x238a002380 0e00 MOVLW 0x0002382 1477 ANDWF 0x77,0x0,0x0002384 0905 IORLW 0x5002386 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canNode\Source\CAN.c002388 d002 BRA 0x238e else { return FALSE;} F:\MCP\projects\CAN\canNode\Source\CAN.c00238a 0e00 MOVLW 0x000238c d0e4 BRA 0x2556F:\MCP\projects\CAN\canNode\Source\CAN.c00238e 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c002390 cfdb MOVFF 0xfdb,0x0002392 f000002394 3400 RLCF 0x0,0x0,0x0002396 e20e BC 0x23b4002398 0eef MOVLW 0xef00239a cfdb MOVFF 0xfdb,0x100239c f00100239e 0e03 MOVLW 0x30023a0 6ee7 MOVWF 0xe7,0x00023a2 1801 XORWF 0x1,0x0,0x00023a4 aee8 BTFSS 0xe8,0x7,0x00023a6 d002 BRA 0x23ac0023a8 3401 RLCF 0x1,0x0,0x00023aa d003 BRA 0x23b20023ac 50e7 MOVF 0xe7,0x0,0x00023ae 80d8 BSF 0xd8,0x0,0x00023b0 5401 SUBFWB 0x1,0x0,0x00023b2 e202 BC 0x23b80023b4 0eef MOVLW 0xef0023b6 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0023b8 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0023ba 04db DECF 0xdb,0x0,0x00023bc e15f BNZ 0x247c{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\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\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c0023be 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canNode\Source\CAN.c0023c0 cfdb MOVFF 0xfdb,0x00023c2 f0000023c4 0ef1 MOVLW 0xf10023c6 cfdb MOVFF 0xfdb,0x10023c8 f0010023ca 0ef2 MOVLW 0xf20023cc cfdb MOVFF 0xfdb,0x20023ce f0020023d0 0ef3 MOVLW 0xf30023d2 cfdb MOVFF 0xfdb,0x30023d4 f0030023d6 0e15 MOVLW 0x150023d8 90d8 BCF 0xd8,0x0,0x00023da 3203 RRCF 0x3,0x1,0x00023dc 3202 RRCF 0x2,0x1,0x00023de 3201 RRCF 0x1,0x1,0x00023e0 3200 RRCF 0x0,0x1,0x00023e2 06e8 DECF 0xe8,0x1,0x00023e4 e1f9 BNZ 0x23d80023e6 5000 MOVF 0x0,0x0,0x00023e8 6e61 MOVWF 0x61,0x00023ea 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c0023ec cfdb MOVFF 0xfdb,0x50023ee f0050023f0 0ef1 MOVLW 0xf10023f2 cfdb MOVFF 0xfdb,0x60023f4 f0060023f6 0ef2 MOVLW 0xf20023f8 cfdb MOVFF 0xfdb,0x70023fa f0070023fc 0ef3 MOVLW 0xf30023fe cfdb MOVFF 0xfdb,0x8002400 f008002402 0e0d MOVLW 0xd002404 90d8 BCF 0xd8,0x0,0x0002406 3208 RRCF 0x8,0x1,0x0002408 3207 RRCF 0x7,0x1,0x000240a 3206 RRCF 0x6,0x1,0x000240c 3205 RRCF 0x5,0x1,0x000240e 06e8 DECF 0xe8,0x1,0x0002410 e1f9 BNZ 0x2404002412 0ee0 MOVLW 0xe0002414 1405 ANDWF 0x5,0x0,0x0002416 6e04 MOVWF 0x4,0x0002418 0ef0 MOVLW 0xf000241a cfdb MOVFF 0xfdb,0x000241c f00000241e 0ef1 MOVLW 0xf1002420 cfdb MOVFF 0xfdb,0x1002422 f001002424 0ef2 MOVLW 0xf2002426 cfdb MOVFF 0xfdb,0x2002428 f00200242a 0ef3 MOVLW 0xf300242c cfdb MOVFF 0xfdb,0x300242e f003002430 0e10 MOVLW 0x10002432 90d8 BCF 0xd8,0x0,0x0002434 3203 RRCF 0x3,0x1,0x0002436 3202 RRCF 0x2,0x1,0x0002438 3201 RRCF 0x1,0x1,0x000243a 3200 RRCF 0x0,0x1,0x000243c 06e8 DECF 0xe8,0x1,0x000243e e1f9 BNZ 0x2432002440 0e03 MOVLW 0x3002442 1400 ANDWF 0x0,0x0,0x0002444 2404 ADDWF 0x4,0x0,0x0002446 6e62 MOVWF 0x62,0x0002448 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canNode\Source\CAN.c00244a cfdb MOVFF 0xfdb,0x000244c f00000244e 0ef1 MOVLW 0xf1002450 cfdb MOVFF 0xfdb,0x1002452 f001002454 0ef2 MOVLW 0xf2002456 cfdb MOVFF 0xfdb,0x2002458 f00200245a 0ef3 MOVLW 0xf300245c cfdb MOVFF 0xfdb,0x300245e f003002460 0e08 MOVLW 0x8002462 90d8 BCF 0xd8,0x0,0x0002464 3203 RRCF 0x3,0x1,0x0002466 3202 RRCF 0x2,0x1,0x0002468 3201 RRCF 0x1,0x1,0x000246a 3200 RRCF 0x0,0x1,0x000246c 06e8 DECF 0xe8,0x1,0x000246e e1f9 BNZ 0x2462002470 5000 MOVF 0x0,0x0,0x0002472 6e63 MOVWF 0x63,0x0002474 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canNode\Source\CAN.c002476 50db MOVF 0xdb,0x0,0x0002478 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c00247a d02f BRA 0x24da else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canNode\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c00247c 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canNode\Source\CAN.c00247e cfdb MOVFF 0xfdb,0x0002480 f000002482 0ef1 MOVLW 0xf1002484 cfdb MOVFF 0xfdb,0x1002486 f001002488 0ef2 MOVLW 0xf200248a cfdb MOVFF 0xfdb,0x200248c f00200248e 0ef3 MOVLW 0xf3002490 cfdb MOVFF 0xfdb,0x3002492 f003002494 0e03 MOVLW 0x3002496 90d8 BCF 0xd8,0x0,0x0002498 3203 RRCF 0x3,0x1,0x000249a 3202 RRCF 0x2,0x1,0x000249c 3201 RRCF 0x1,0x1,0x000249e 3200 RRCF 0x0,0x1,0x00024a0 06e8 DECF 0xe8,0x1,0x00024a2 e1f9 BNZ 0x24960024a4 5000 MOVF 0x0,0x0,0x00024a6 6e61 MOVWF 0x61,0x00024a8 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canNode\Source\CAN.c0024aa cfdb MOVFF 0xfdb,0x00024ac f0000024ae 0ef1 MOVLW 0xf10024b0 cfdb MOVFF 0xfdb,0x10024b2 f0010024b4 0ef2 MOVLW 0xf20024b6 cfdb MOVFF 0xfdb,0x20024b8 f0020024ba 0ef3 MOVLW 0xf30024bc cfdb MOVFF 0xfdb,0x30024be f0030024c0 0e05 MOVLW 0x50024c2 0b1f ANDLW 0x1f0024c4 e007 BZ 0x24d40024c6 90d8 BCF 0xd8,0x0,0x00024c8 3600 RLCF 0x0,0x1,0x00024ca 3601 RLCF 0x1,0x1,0x00024cc 3602 RLCF 0x2,0x1,0x00024ce 3603 RLCF 0x3,0x1,0x00024d0 06e8 DECF 0xe8,0x1,0x00024d2 e1f9 BNZ 0x24c60024d4 0ee0 MOVLW 0xe00024d6 1400 ANDWF 0x0,0x0,0x00024d8 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Data length F:\MCP\projects\CAN\canNode\Source\CAN.c0024da 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canNode\Source\CAN.c0024dc 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canNode\Source\CAN.c0024de 50db MOVF 0xdb,0x0,0x00024e0 0808 SUBLW 0x80024e2 e203 BC 0x24ea0024e4 0e08 MOVLW 0x80024e6 6e65 MOVWF 0x65,0x00024e8 d003 BRA 0x24f00024ea 0ef6 MOVLW 0xf60024ec 50db MOVF 0xdb,0x0,0x00024ee 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Remote request F:\MCP\projects\CAN\canNode\Source\CAN.c0024f0 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canNode\Source\CAN.c0024f2 04db DECF 0xdb,0x0,0x00024f4 e102 BNZ 0x24fa{ F:\MCP\projects\CAN\canNode\Source\CAN.c_asm F:\MCP\projects\CAN\canNode\Source\CAN.c0024f6 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c_endasm F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.c0024f8 d001 BRA 0x24fc else F:\MCP\projects\CAN\canNode\Source\CAN.c{ F:\MCP\projects\CAN\canNode\Source\CAN.c_asm F:\MCP\projects\CAN\canNode\Source\CAN.c0024fa 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c_endasm F:\MCP\projects\CAN\canNode\Source\CAN.c} F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canNode\Source\CAN.c0024fc 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canNode\Source\CAN.c0024fe 50db MOVF 0xdb,0x0,0x0002500 6e66 MOVWF 0x66,0x0002502 0ef8 MOVLW 0xf8002504 50db MOVF 0xdb,0x0,0x0002506 6e67 MOVWF 0x67,0x0002508 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canNode\Source\CAN.c00250a 50db MOVF 0xdb,0x0,0x000250c 6e68 MOVWF 0x68,0x000250e 0efa MOVLW 0xfa002510 50db MOVF 0xdb,0x0,0x0002512 6e69 MOVWF 0x69,0x0002514 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canNode\Source\CAN.c002516 50db MOVF 0xdb,0x0,0x0002518 6e6a MOVWF 0x6a,0x000251a 0efc MOVLW 0xfc00251c 50db MOVF 0xdb,0x0,0x000251e 6e6b MOVWF 0x6b,0x0002520 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canNode\Source\CAN.c002522 50db MOVF 0xdb,0x0,0x0002524 6e6c MOVWF 0x6c,0x0002526 0efe MOVLW 0xfe002528 50db MOVF 0xdb,0x0,0x000252a 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canNode\Source\CAN.c00252c 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canNode\Source\CAN.c00252e 04db DECF 0xdb,0x0,0x0002530 e102 BNZ 0x2536002532 0e01 MOVLW 0x1002534 d001 BRA 0x2538002536 0e00 MOVLW 0x0002538 b0e8 BTFSC 0xe8,0x0,0x000253a 8662 BSF 0x62,0x3,0x000253c a0e8 BTFSS 0xe8,0x0,0x000253e 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// Priority F:\MCP\projects\CAN\canNode\Source\CAN.c002540 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canNode\Source\CAN.c002542 cfdb MOVFF 0xfdb,0xfe6002544 ffe6002546 0efc MOVLW 0xfc002548 1460 ANDWF 0x60,0x0,0x000254a 52e5 MOVF 0xe5,0x1,0x000254c 10e7 IORWF 0xe7,0x0,0x000254e 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canNode\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canNode\Source\CAN.c_asm F:\MCP\projects\CAN\canNode\Source\CAN.c002550 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canNode\Source\CAN.c_endasm F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c002552 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canNode\Source\CAN.c002554 d000 BRA 0x2556F:\MCP\projects\CAN\canNode\Source\CAN.c002556 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\CAN.c002558 cfe7 MOVFF 0xfe7,0xfd900255a ffd900255c 0012 RETURN 0x0F:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.cF:\MCP\projects\CAN\canNode\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canNode\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Main application F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canNode\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canNode\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canNode\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canNode\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canNode\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cunsigned int heartcnt=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00255e cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canNode\Source\Main.c002560 ffe6002562 cfe1 MOVFF 0xfe1,0xfd9002564 ffd9002566 0e0f MOVLW 0xf002568 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Inits F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c00256a d9a8 RCALL 0x28bc mainInit(); F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c00256c ec22 CALL 0x2044,0x0 canInit(); F:\MCP\projects\CAN\canNode\Source\Main.c00256e f010#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002570 ec26 CALL 0x2a4c,0x0 tickInit(); F:\MCP\projects\CAN\canNode\Source\Main.c002572 f015F:\MCP\projects\CAN\canNode\Source\Main.cwhile(1) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c002574 ec30 CALL 0x2a60,0x0 if ((tickGet()-t)>=5*TICK_SECOND) F:\MCP\projects\CAN\canNode\Source\Main.c002576 f015002578 0100 MOVLB 0x000257a 516c MOVF 0x6c,0x0,0x100257c 5c18 SUBWF 0x18,0x0,0x000257e 6e00 MOVWF 0x0,0x0002580 516d MOVF 0x6d,0x0,0x1002582 5819 SUBWFB 0x19,0x0,0x0002584 6e01 MOVWF 0x1,0x0002586 516e MOVF 0x6e,0x0,0x1002588 581a SUBWFB 0x1a,0x0,0x000258a 6e02 MOVWF 0x2,0x000258c 516f MOVF 0x6f,0x0,0x100258e 581b SUBWFB 0x1b,0x0,0x0002590 6e03 MOVWF 0x3,0x0002592 0ef4 MOVLW 0xf4002594 5c00 SUBWF 0x0,0x0,0x0002596 0e01 MOVLW 0x1002598 5801 SUBWFB 0x1,0x0,0x000259a 0e00 MOVLW 0x000259c 5802 SUBWFB 0x2,0x0,0x000259e 0e00 MOVLW 0x00025a0 5803 SUBWFB 0x3,0x0,0x00025a2 e3e8 BNC 0x2574{ F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0025a4 ec30 CALL 0x2a60,0x0 t = tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c0025a6 f0150025a8 c018 MOVFF 0x18,0x6c0025aa f06c0025ac c019 MOVFF 0x19,0x6d0025ae f06d0025b0 c01a MOVFF 0x1a,0x6e0025b2 f06e0025b4 c01b MOVFF 0x1b,0x6f0025b6 f06fF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c0025b8 0e66 MOVLW 0x66 cm.ident=0x00000666; F:\MCP\projects\CAN\canNode\Source\Main.c0025ba 6ede MOVWF 0xde,0x00025bc 0e06 MOVLW 0x60025be 6ede MOVWF 0xde,0x00025c0 6ade CLRF 0xde,0x00025c2 6add CLRF 0xdd,0x00025c4 52dd MOVF 0xdd,0x1,0x00025c6 52dd MOVF 0xdd,0x1,0x00025c8 0e04 MOVLW 0x4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c0025ca 6adb CLRF 0xdb,0x00025cc 0e05 MOVLW 0x5 cm.data_length=5; F:\MCP\projects\CAN\canNode\Source\Main.c0025ce 6ef3 MOVWF 0xf3,0x00025d0 0e06 MOVLW 0x60025d2 cff3 MOVFF 0xff3,0xfdb0025d4 ffdb0025d6 0e48 MOVLW 0x48 cm.data[0]='H'; F:\MCP\projects\CAN\canNode\Source\Main.c0025d8 6ef3 MOVWF 0xf3,0x00025da 0e07 MOVLW 0x70025dc cff3 MOVFF 0xff3,0xfdb0025de ffdb0025e0 0100 MOVLB 0x0 cm.data[1]=(BYTE)((heartcnt & 0x000000FF)); F:\MCP\projects\CAN\canNode\Source\Main.c0025e2 516a MOVF 0x6a,0x0,0x10025e4 6ee7 MOVWF 0xe7,0x00025e6 0e08 MOVLW 0x80025e8 cfe7 MOVFF 0xfe7,0xfdb0025ea ffdb0025ec 0e00 MOVLW 0x0 cm.data[2]=(BYTE)((heartcnt & 0x0000FF00)>>1); F:\MCP\projects\CAN\canNode\Source\Main.c0025ee 156a ANDWF 0x6a,0x0,0x10025f0 6e00 MOVWF 0x0,0x00025f2 0eff MOVLW 0xff0025f4 156b ANDWF 0x6b,0x0,0x10025f6 6e01 MOVWF 0x1,0x00025f8 90d8 BCF 0xd8,0x0,0x00025fa 3201 RRCF 0x1,0x1,0x00025fc 3200 RRCF 0x0,0x1,0x00025fe 0e09 MOVLW 0x9002600 c000 MOVFF 0x0,0xfdb002602 ffdb002604 c06a MOVFF 0x6a,0x3 cm.data[3]=(BYTE)((heartcnt & 0x00FF0000)>>2); F:\MCP\projects\CAN\canNode\Source\Main.c002606 f003002608 c06b MOVFF 0x6b,0x400260a f00400260c 6a05 CLRF 0x5,0x000260e 6a03 CLRF 0x3,0x0002610 6a04 CLRF 0x4,0x0002612 0e02 MOVLW 0x2002614 0b1f ANDLW 0x1f002616 c003 MOVFF 0x3,0x0002618 f00000261a c004 MOVFF 0x4,0x100261c f00100261e c005 MOVFF 0x5,0x2002620 f002002622 e006 BZ 0x2630002624 90d8 BCF 0xd8,0x0,0x0002626 3202 RRCF 0x2,0x1,0x0002628 3201 RRCF 0x1,0x1,0x000262a 3200 RRCF 0x0,0x1,0x000262c 06e8 DECF 0xe8,0x1,0x000262e e1fa BNZ 0x2624002630 0e0a MOVLW 0xa002632 c000 MOVFF 0x0,0xfdb002634 ffdb002636 c06a MOVFF 0x6a,0x0 cm.data[4]=(BYTE)((heartcnt & 0xFF000000)>>3); F:\MCP\projects\CAN\canNode\Source\Main.c002638 f00000263a c06b MOVFF 0x6b,0x100263c f00100263e 6a02 CLRF 0x2,0x0002640 6a03 CLRF 0x3,0x0002642 6a00 CLRF 0x0,0x0002644 6a01 CLRF 0x1,0x0002646 6a02 CLRF 0x2,0x0002648 0e03 MOVLW 0x300264a 90d8 BCF 0xd8,0x0,0x000264c 3203 RRCF 0x3,0x1,0x000264e 3202 RRCF 0x2,0x1,0x0002650 3201 RRCF 0x1,0x1,0x0002652 3200 RRCF 0x0,0x1,0x0002654 06e8 DECF 0xe8,0x1,0x0002656 e1f9 BNZ 0x264a002658 0e0b MOVLW 0xb00265a c000 MOVFF 0x0,0xfdb00265c ffdbF:\MCP\projects\CAN\canNode\Source\Main.c00265e 0100 MOVLB 0x0 heartcnt++; F:\MCP\projects\CAN\canNode\Source\Main.c002660 2b6a INCF 0x6a,0x1,0x1002662 0e00 MOVLW 0x0002664 236b ADDWFC 0x6b,0x1,0x1F:\MCP\projects\CAN\canNode\Source\Main.c002666 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canNode\Source\Main.c002668 6ee6 MOVWF 0xe6,0x000266a cfd9 MOVFF 0xfd9,0xfe900266c ffe900266e cfda MOVFF 0xfda,0xfea002670 ffea002672 cfee MOVFF 0xfee,0xfe6002674 ffe6002676 cfee MOVFF 0xfee,0xfe6002678 ffe600267a cfee MOVFF 0xfee,0xfe600267c ffe600267e cfee MOVFF 0xfee,0xfe6002680 ffe6002682 cfee MOVFF 0xfee,0xfe6002684 ffe6002686 cfee MOVFF 0xfee,0xfe6002688 ffe600268a cfee MOVFF 0xfee,0xfe600268c ffe600268e cfee MOVFF 0xfee,0xfe6002690 ffe6002692 cfee MOVFF 0xfee,0xfe6002694 ffe6002696 cfee MOVFF 0xfee,0xfe6002698 ffe600269a cfee MOVFF 0xfee,0xfe600269c ffe600269e cfee MOVFF 0xfee,0xfe60026a0 ffe60026a2 cfee MOVFF 0xfee,0xfe60026a4 ffe60026a6 cfee MOVFF 0xfee,0xfe60026a8 ffe60026aa cfee MOVFF 0xfee,0xfe60026ac ffe60026ae ecab CALL 0x2356,0x00026b0 f0110026b2 6e00 MOVWF 0x0,0x00026b4 0e10 MOVLW 0x100026b6 5ee1 SUBWF 0xe1,0x1,0x00026b8 5000 MOVF 0x0,0x0,0x00026ba 0900 IORLW 0x00026bc e001 BZ 0x26c00026be d75a BRA 0x25740026c0 d7d2 BRA 0x2666} F:\MCP\projects\CAN\canNode\Source\Main.c#endif F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canNode\Source\Main.c0026c2 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c0026c4 ffe40026c6 cfe0 MOVFF 0xfe0,0xfe40026c8 ffe40026ca 6ee4 MOVWF 0xe4,0x00026cc cfda MOVFF 0xfda,0xfe40026ce ffe40026d0 cfe2 MOVFF 0xfe2,0xfda0026d2 ffda0026d4 cfe9 MOVFF 0xfe9,0xfe40026d6 ffe40026d8 cfea MOVFF 0xfea,0xfe40026da ffe40026dc cff6 MOVFF 0xff6,0xfe40026de ffe40026e0 cff7 MOVFF 0xff7,0xfe40026e2 ffe40026e4 cff5 MOVFF 0xff5,0xfe40026e6 ffe40026e8 cff3 MOVFF 0xff3,0xfe40026ea ffe40026ec cff4 MOVFF 0xff4,0xfe40026ee ffe40026f0 cffa MOVFF 0xffa,0xfe40026f2 ffe40026f4 ee00 LFSR 0x0,0x140026f6 f0140026f8 0e0b MOVLW 0xb0026fa 04e8 DECF 0xe8,0x0,0x00026fc e303 BNC 0x27040026fe cfee MOVFF 0xfee,0xfe4002700 ffe4002702 d7fb BRA 0x26fa002704 ee00 LFSR 0x0,0x0002706 f000002708 0e14 MOVLW 0x1400270a 04e8 DECF 0xe8,0x0,0x000270c e303 BNC 0x271400270e cfee MOVFF 0xfee,0xfe4002710 ffe4002712 d7fb BRA 0x270a002714 52e6 MOVF 0xe6,0x1,0x0002716 cfd9 MOVFF 0xfd9,0xfe6002718 ffe600271a cfe1 MOVFF 0xfe1,0xfd900271c ffd900271e 0e0f MOVLW 0xf002720 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c002722 ec4b CALL 0x2096,0x0 canISR(); F:\MCP\projects\CAN\canNode\Source\Main.c002724 f010#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002726 50f2 MOVF 0xf2,0x0,0x0 if (INTCONbits.INT0IE && INTCONbits.INT0IF) F:\MCP\projects\CAN\canNode\Source\Main.c002728 0b10 ANDLW 0x1000272a e101 BNZ 0x272e00272c d082 BRA 0x283200272e 50f2 MOVF 0xf2,0x0,0x0002730 0b02 ANDLW 0x2002732 e101 BNZ 0x2736002734 d07e BRA 0x2832{ F:\MCP\projects\CAN\canNode\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canNode\Source\Main.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002736 ec30 CALL 0x2a60,0x0 if ((tickGet()-t)>TICK_SECOND/2) F:\MCP\projects\CAN\canNode\Source\Main.c002738 f01500273a 0100 MOVLB 0x000273c 5170 MOVF 0x70,0x0,0x100273e 5c18 SUBWF 0x18,0x0,0x0002740 6e1f MOVWF 0x1f,0x0002742 5171 MOVF 0x71,0x0,0x1002744 5819 SUBWFB 0x19,0x0,0x0002746 6e20 MOVWF 0x20,0x0002748 5172 MOVF 0x72,0x0,0x100274a 581a SUBWFB 0x1a,0x0,0x000274c 6e21 MOVWF 0x21,0x000274e 5173 MOVF 0x73,0x0,0x1002750 581b SUBWFB 0x1b,0x0,0x0002752 6e22 MOVWF 0x22,0x0002754 80d8 BSF 0xd8,0x0,0x0002756 0e32 MOVLW 0x32002758 541f SUBFWB 0x1f,0x0,0x000275a 0e00 MOVLW 0x000275c 5420 SUBFWB 0x20,0x0,0x000275e 0e00 MOVLW 0x0002760 5421 SUBFWB 0x21,0x0,0x0002762 0e00 MOVLW 0x0002764 5422 SUBFWB 0x22,0x0,0x0002766 e264 BC 0x2830{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002768 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Send heartbeat F:\MCP\projects\CAN\canNode\Source\Main.c00276a 0e91 MOVLW 0x91 cm.ident=0x1F910091; F:\MCP\projects\CAN\canNode\Source\Main.c00276c 6ede MOVWF 0xde,0x000276e 6ade CLRF 0xde,0x0002770 6ede MOVWF 0xde,0x0002772 0e1f MOVLW 0x1f002774 6edd MOVWF 0xdd,0x0002776 52dd MOVF 0xdd,0x1,0x0002778 52dd MOVF 0xdd,0x1,0x000277a 0e01 MOVLW 0x1 cm.extended=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c00277c 6ef3 MOVWF 0xf3,0x000277e 0e04 MOVLW 0x4002780 cff3 MOVFF 0xff3,0xfdb002782 ffdb002784 0e01 MOVLW 0x1 cm.remote_request=TRUE; F:\MCP\projects\CAN\canNode\Source\Main.c002786 6ef3 MOVWF 0xf3,0x0002788 0e05 MOVLW 0x500278a cff3 MOVFF 0xff3,0xfdb00278c ffdb00278e 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c002790 6ef3 MOVWF 0xf3,0x0002792 0e06 MOVLW 0x6002794 cff3 MOVFF 0xff3,0xfdb002796 ffdb002798 0e01 MOVLW 0x1 cm.data[0]=0x01; F:\MCP\projects\CAN\canNode\Source\Main.c00279a 6ef3 MOVWF 0xf3,0x000279c 0e07 MOVLW 0x700279e cff3 MOVFF 0xff3,0xfdb0027a0 ffdb0027a2 6ef3 MOVWF 0xf3,0x0 cm.data[1]=0x07; F:\MCP\projects\CAN\canNode\Source\Main.c0027a4 0e08 MOVLW 0x80027a6 cff3 MOVFF 0xff3,0xfdb0027a8 ffdb0027aa 0e09 MOVLW 0x9 cm.data[2]=0x09; F:\MCP\projects\CAN\canNode\Source\Main.c0027ac 6ef3 MOVWF 0xf3,0x00027ae 6edb MOVWF 0xdb,0x00027b0 0e08 MOVLW 0x8 cm.data[3]=0x08; F:\MCP\projects\CAN\canNode\Source\Main.c0027b2 6ef3 MOVWF 0xf3,0x00027b4 0e0a MOVLW 0xa0027b6 cff3 MOVFF 0xff3,0xfdb0027b8 ffdb0027ba 0e03 MOVLW 0x3 cm.data[4]=0x03; F:\MCP\projects\CAN\canNode\Source\Main.c0027bc 6ef3 MOVWF 0xf3,0x00027be 0e0b MOVLW 0xb0027c0 cff3 MOVFF 0xff3,0xfdb0027c2 ffdbF:\MCP\projects\CAN\canNode\Source\Main.c0027c4 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canNode\Source\Main.c0027c6 6ee6 MOVWF 0xe6,0x00027c8 cfd9 MOVFF 0xfd9,0xfe90027ca ffe90027cc cfda MOVFF 0xfda,0xfea0027ce ffea0027d0 cfee MOVFF 0xfee,0xfe60027d2 ffe60027d4 cfee MOVFF 0xfee,0xfe60027d6 ffe60027d8 cfee MOVFF 0xfee,0xfe60027da ffe60027dc cfee MOVFF 0xfee,0xfe60027de ffe60027e0 cfee MOVFF 0xfee,0xfe60027e2 ffe60027e4 cfee MOVFF 0xfee,0xfe60027e6 ffe60027e8 cfee MOVFF 0xfee,0xfe60027ea ffe60027ec cfee MOVFF 0xfee,0xfe60027ee ffe60027f0 cfee MOVFF 0xfee,0xfe60027f2 ffe60027f4 cfee MOVFF 0xfee,0xfe60027f6 ffe60027f8 cfee MOVFF 0xfee,0xfe60027fa ffe60027fc cfee MOVFF 0xfee,0xfe60027fe ffe6002800 cfee MOVFF 0xfee,0xfe6002802 ffe6002804 cfee MOVFF 0xfee,0xfe6002806 ffe6002808 cfee MOVFF 0xfee,0xfe600280a ffe600280c ecab CALL 0x2356,0x000280e f011002810 6e1f MOVWF 0x1f,0x0002812 0e10 MOVLW 0x10002814 5ee1 SUBWF 0xe1,0x1,0x0002816 501f MOVF 0x1f,0x0,0x0002818 0900 IORLW 0x000281a e0d4 BZ 0x27c4F:\MCP\projects\CAN\canNode\Source\Main.c00281c ec30 CALL 0x2a60,0x0 t=tickGet(); F:\MCP\projects\CAN\canNode\Source\Main.c00281e f015002820 c018 MOVFF 0x18,0x70002822 f070002824 c019 MOVFF 0x19,0x71002826 f071002828 c01a MOVFF 0x1a,0x7200282a f07200282c c01b MOVFF 0x1b,0x7300282e f073} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002830 92f2 BCF 0xf2,0x1,0x0 INTCONbits.INT0IF=0; F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c002832 ec39 CALL 0x2a72,0x0 tickUpdate(); F:\MCP\projects\CAN\canNode\Source\Main.c002834 f015002836 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canNode\Source\Main.c002838 5ce1 SUBWF 0xe1,0x0,0x000283a e202 BC 0x284000283c 6ae1 CLRF 0xe1,0x000283e 52e5 MOVF 0xe5,0x1,0x0002840 6ee1 MOVWF 0xe1,0x0002842 52e5 MOVF 0xe5,0x1,0x0002844 cfe7 MOVFF 0xfe7,0xfd9002846 ffd9002848 52e5 MOVF 0xe5,0x1,0x000284a ee00 LFSR 0x0,0x1300284c f01300284e 0e14 MOVLW 0x14002850 04e8 DECF 0xe8,0x0,0x0002852 e303 BNC 0x285a002854 cfe5 MOVFF 0xfe5,0xfed002856 ffed002858 d7fb BRA 0x285000285a ee00 LFSR 0x0,0x1e00285c f01e00285e 0e0b MOVLW 0xb002860 04e8 DECF 0xe8,0x0,0x0002862 e303 BNC 0x286a002864 cfe5 MOVFF 0xfe5,0xfed002866 ffed002868 d7fb BRA 0x286000286a cfe5 MOVFF 0xfe5,0xffa00286c fffa00286e cfe5 MOVFF 0xfe5,0xff4002870 fff4002872 cfe5 MOVFF 0xfe5,0xff3002874 fff3002876 cfe5 MOVFF 0xfe5,0xff5002878 fff500287a cfe5 MOVFF 0xfe5,0xff700287c fff700287e cfe5 MOVFF 0xfe5,0xff6002880 fff6002882 cfe5 MOVFF 0xfe5,0xfea002884 ffea002886 cfe5 MOVFF 0xfe5,0xfe9002888 ffe900288a cfe5 MOVFF 0xfe5,0xfda00288c ffda00288e 50e5 MOVF 0xe5,0x0,0x0002890 cfe5 MOVFF 0xfe5,0xfe0002892 ffe0002894 cfe5 MOVFF 0xfe5,0xfd8002896 ffd8002898 0010 RETFIE 0x0#pragma code highVector=0x2008 F:\MCP\projects\CAN\canNode\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c002008 ef61 GOTO 0x26c2 _asm goto HighISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00200a f01300200c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c#pragma interruptlow LowISR F:\MCP\projects\CAN\canNode\Source\Main.c00289a cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canNode\Source\Main.c00289c ffe400289e cfe0 MOVFF 0xfe0,0xfe40028a0 ffe40028a2 6ee4 MOVWF 0xe4,0x00028a4 cfda MOVFF 0xfda,0xfe40028a6 ffe40028a8 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0028aa 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0028ac cfe5 MOVFF 0xfe5,0xfda0028ae ffda0028b0 50e5 MOVF 0xe5,0x0,0x00028b2 cfe5 MOVFF 0xfe5,0xfe00028b4 ffe00028b6 cfe5 MOVFF 0xfe5,0xfd80028b8 ffd80028ba 0010 RETFIE 0x0#pragma code lowVector=0x2018 F:\MCP\projects\CAN\canNode\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c002018 ef4d GOTO 0x289a _asm goto LowISR _endasm F:\MCP\projects\CAN\canNode\Source\Main.c00201a f01400201c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: none F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canNode\Source\Main.c{ F:\MCP\projects\CAN\canNode\Source\Main.c0028bc 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canNode\Source\Main.c0028be 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canNode\Source\Main.c0028c0 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canNode\Source\Main.c0028c2 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// RB0 interrupt F:\MCP\projects\CAN\canNode\Source\Main.c0028c4 8cf1 BSF 0xf1,0x6,0x0 INTCON2bits.INTEDG0 = 1; //rising edge F:\MCP\projects\CAN\canNode\Source\Main.c0028c6 88f2 BSF 0xf2,0x4,0x0 INTCONbits.INT0IE = 1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canNode\Source\Main.c0028c8 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0028ca 0012 RETURN 0x0 } F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c/* F:\MCP\projects\CAN\canNode\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canNode\Source\Main.c* F:\MCP\projects\CAN\canNode\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canNode\Source\Main.c* Output: none F:\MCP\projects\CAN\canNode\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canNode\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canNode\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canNode\Source\Main.c*/ F:\MCP\projects\CAN\canNode\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canNode\Source\Main.c0028cc cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canNode\Source\Main.c0028ce ffe60028d0 cfe1 MOVFF 0xfe1,0xfd90028d2 ffd9{ F:\MCP\projects\CAN\canNode\Source\Main.c0028d4 50e1 MOVF 0xe1,0x0,0x0 if (cm.ident==0x00000304) F:\MCP\projects\CAN\canNode\Source\Main.c0028d6 0ff0 ADDLW 0xf00028d8 6ee9 MOVWF 0xe9,0x00028da 0eff MOVLW 0xff0028dc 20da ADDWFC 0xda,0x0,0x00028de 6eea MOVWF 0xea,0x00028e0 0e04 MOVLW 0x40028e2 18ee XORWF 0xee,0x0,0x00028e4 e160 BNZ 0x29a60028e6 0e03 MOVLW 0x30028e8 18ee XORWF 0xee,0x0,0x00028ea e15d BNZ 0x29a60028ec 50ee MOVF 0xee,0x0,0x00028ee e15b BNZ 0x29a60028f0 50ee MOVF 0xee,0x0,0x00028f2 e159 BNZ 0x29a6{ F:\MCP\projects\CAN\canNode\Source\Main.c0028f4 0ef7 MOVLW 0xf7 if (cm.data[0]==0x20) LED0_IO=1; F:\MCP\projects\CAN\canNode\Source\Main.c0028f6 50db MOVF 0xdb,0x0,0x00028f8 0820 SUBLW 0x200028fa e101 BNZ 0x28fe0028fc 8282 BSF 0x82,0x1,0x00028fe 0ef7 MOVLW 0xf7 if (cm.data[0]==0x40) LED0_IO=0; F:\MCP\projects\CAN\canNode\Source\Main.c002900 50db MOVF 0xdb,0x0,0x0002902 0840 SUBLW 0x40002904 e101 BNZ 0x2908002906 9282 BCF 0x82,0x1,0x0002908 0ef7 MOVLW 0xf7 if (cm.data[0]==0x80) F:\MCP\projects\CAN\canNode\Source\Main.c00290a 50db MOVF 0xdb,0x0,0x000290c 0880 SUBLW 0x8000290e e14b BNZ 0x29a6{ F:\MCP\projects\CAN\canNode\Source\Main.c002910 0e03 MOVLW 0x3 cm.ident=0x00000303; F:\MCP\projects\CAN\canNode\Source\Main.c002912 6ef3 MOVWF 0xf3,0x0002914 0ef0 MOVLW 0xf0002916 cff3 MOVFF 0xff3,0xfdb002918 ffdb00291a 0e03 MOVLW 0x300291c 6ef3 MOVWF 0xf3,0x000291e 0ef1 MOVLW 0xf1002920 cff3 MOVFF 0xff3,0xfdb002922 ffdb002924 0ef2 MOVLW 0xf2002926 6adb CLRF 0xdb,0x0002928 0ef3 MOVLW 0xf300292a 6adb CLRF 0xdb,0x000292c 0ef4 MOVLW 0xf4 cm.extended=FALSE; F:\MCP\projects\CAN\canNode\Source\Main.c00292e 6adb CLRF 0xdb,0x0002930 0e01 MOVLW 0x1 cm.data_length=1; F:\MCP\projects\CAN\canNode\Source\Main.c002932 6ef3 MOVWF 0xf3,0x0002934 0ef6 MOVLW 0xf6002936 cff3 MOVFF 0xff3,0xfdb002938 ffdb00293a 5082 MOVF 0x82,0x0,0x0 cm.data[0]=LED0_IO; F:\MCP\projects\CAN\canNode\Source\Main.c00293c 0b02 ANDLW 0x200293e e001 BZ 0x2942002940 0e01 MOVLW 0x1002942 6ee7 MOVWF 0xe7,0x0002944 0ef7 MOVLW 0xf7002946 cfe7 MOVFF 0xfe7,0xfdb002948 ffdb00294a 0e01 MOVLW 0x1 while(!canSendMessage(cm,PRIO_LOW)); F:\MCP\projects\CAN\canNode\Source\Main.c00294c 6ee6 MOVWF 0xe6,0x000294e 50d9 MOVF 0xd9,0x0,0x0002950 0ff0 ADDLW 0xf0002952 6ee9 MOVWF 0xe9,0x0002954 0eff MOVLW 0xff002956 20da ADDWFC 0xda,0x0,0x0002958 6eea MOVWF 0xea,0x000295a cfee MOVFF 0xfee,0xfe600295c ffe600295e cfee MOVFF 0xfee,0xfe6002960 ffe6002962 cfee MOVFF 0xfee,0xfe6002964 ffe6002966 cfee MOVFF 0xfee,0xfe6002968 ffe600296a cfee MOVFF 0xfee,0xfe600296c ffe600296e cfee MOVFF 0xfee,0xfe6002970 ffe6002972 cfee MOVFF 0xfee,0xfe6002974 ffe6002976 cfee MOVFF 0xfee,0xfe6002978 ffe600297a cfee MOVFF 0xfee,0xfe600297c ffe600297e cfee MOVFF 0xfee,0xfe6002980 ffe6002982 cfee MOVFF 0xfee,0xfe6002984 ffe6002986 cfee MOVFF 0xfee,0xfe6002988 ffe600298a cfee MOVFF 0xfee,0xfe600298c ffe600298e cfee MOVFF 0xfee,0xfe6002990 ffe6002992 cfee MOVFF 0xfee,0xfe6002994 ffe6002996 ecab CALL 0x2356,0x0002998 f01100299a 6e00 MOVWF 0x0,0x000299c 0e10 MOVLW 0x1000299e 5ee1 SUBWF 0xe1,0x1,0x00029a0 5000 MOVF 0x0,0x0,0x00029a2 0900 IORLW 0x00029a4 e0d2 BZ 0x294aF:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.c} F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c0029a6 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canNode\Source\Main.c0029a8 cfe7 MOVFF 0xfe7,0xfd90029aa ffd90029ac 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canNode\Source\Main.cF:\MCP\projects\CAN\canNode\Source\Main.c