Rev 87 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Tue Nov 14 11:41:55 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Ticker module service F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Tick.c $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Last changed: $LastChangedDate: 2006-11-14 10:55:38 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Tick.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Revision: $Revision: 86 $ F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBase\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBase\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBase\Source\Tick.c#else F:\MCP\projects\CAN\canBase\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0016d8 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c0016da 6ed6 MOVWF 0xd6,0x00016dc 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c0016de 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.c0016e0 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c0016e2 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c0016e4 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c0016e6 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0016e8 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c0016ea 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.c0016ec c072 MOVFF 0x72,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c0016ee f0120016f0 c073 MOVFF 0x73,0x130016f2 f0130016f4 c074 MOVFF 0x74,0x140016f6 f0140016f8 c075 MOVFF 0x75,0x150016fa f0150016fc d000 BRA 0x16fe0016fe 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.c001700 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001702 d00b BRA 0x171a{ F:\MCP\projects\CAN\canBase\Source\Tick.c001704 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001706 6ed7 MOVWF 0xd7,0x0001708 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c00170a 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c00170c 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c00170e 2b72 INCF 0x72,0x1,0x1001710 0e00 MOVLW 0x0001712 2373 ADDWFC 0x73,0x1,0x1001714 2374 ADDWFC 0x74,0x1,0x1001716 2375 ADDWFC 0x75,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001718 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c00171a 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* CAN module F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/CAN.c $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate: 2006-11-14 11:20:48 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 87 $ 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.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canBase\Source\CAN.c0010ac ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae d006 BRA 0x10bc0010b0 0e00 MOVLW 0x00010b2 1477 ANDWF 0x77,0x0,0x00010b4 0910 IORLW 0x100010b6 6e77 MOVWF 0x77,0x00010b8 d841 RCALL 0x113c0010ba d039 BRA 0x112e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010bc 010f MOVLB 0xf0010be af50 BTFSS 0x50,0x7,0x10010c0 d006 BRA 0x10ce0010c2 0e00 MOVLW 0x00010c4 1477 ANDWF 0x77,0x0,0x00010c6 0911 IORLW 0x110010c8 6e77 MOVWF 0x77,0x00010ca d838 RCALL 0x113c0010cc d030 BRA 0x112e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010ce 010e MOVLB 0xe0010d0 af20 BTFSS 0x20,0x7,0x10010d2 d006 BRA 0x10e00010d4 0e00 MOVLW 0x00010d6 1477 ANDWF 0x77,0x0,0x00010d8 0912 IORLW 0x120010da 6e77 MOVWF 0x77,0x00010dc d82f RCALL 0x113c0010de d027 BRA 0x112e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010e0 af30 BTFSS 0x30,0x7,0x10010e2 d006 BRA 0x10f00010e4 0e00 MOVLW 0x00010e6 1477 ANDWF 0x77,0x0,0x00010e8 0913 IORLW 0x130010ea 6e77 MOVWF 0x77,0x00010ec d827 RCALL 0x113c0010ee d01f BRA 0x112e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c0010f0 af40 BTFSS 0x40,0x7,0x10010f2 d006 BRA 0x11000010f4 0e00 MOVLW 0x00010f6 1477 ANDWF 0x77,0x0,0x00010f8 0914 IORLW 0x140010fa 6e77 MOVWF 0x77,0x00010fc d81f RCALL 0x113c0010fe d017 BRA 0x112e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001100 af50 BTFSS 0x50,0x7,0x1001102 d006 BRA 0x1110001104 0e00 MOVLW 0x0001106 1477 ANDWF 0x77,0x0,0x0001108 0915 IORLW 0x1500110a 6e77 MOVWF 0x77,0x000110c d817 RCALL 0x113c00110e d00f BRA 0x112e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001110 af60 BTFSS 0x60,0x7,0x1001112 d006 BRA 0x1120001114 0e00 MOVLW 0x0001116 1477 ANDWF 0x77,0x0,0x0001118 0916 IORLW 0x1600111a 6e77 MOVWF 0x77,0x000111c d80f RCALL 0x113c00111e d007 BRA 0x112e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canBase\Source\CAN.c001120 af70 BTFSS 0x70,0x7,0x1001122 d005 BRA 0x112e001124 0e00 MOVLW 0x0001126 1477 ANDWF 0x77,0x0,0x0001128 0917 IORLW 0x1700112a 6e77 MOVWF 0x77,0x000112c d807 RCALL 0x113cF:\MCP\projects\CAN\canBase\Source\CAN.c00112e b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001130 92a4 BCF 0xa4,0x1,0x0001132 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001134 92a4 BCF 0xa4,0x1,0x0001136 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canBase\Source\CAN.c001138 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c00113a 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c00113c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00113e ffe6001140 cfe1 MOVFF 0xfe1,0xfd9001142 ffd9001144 0e0f MOVLW 0xf001146 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001148 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c00114a 1461 ANDWF 0x61,0x0,0x000114c 38e8 SWAPF 0xe8,0x0,0x000114e 0b0f ANDLW 0xf001150 6edf MOVWF 0xdf,0x0001152 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBase\Source\CAN.c001154 1461 ANDWF 0x61,0x0,0x0001156 6e06 MOVWF 0x6,0x0001158 6a07 CLRF 0x7,0x000115a 0e06 MOVLW 0x600115c 90d8 BCF 0xd8,0x0,0x000115e 3606 RLCF 0x6,0x1,0x0001160 3607 RLCF 0x7,0x1,0x0001162 04e8 DECF 0xe8,0x0,0x0001164 e1fb BNZ 0x115c001166 0ee0 MOVLW 0xe0001168 1462 ANDWF 0x62,0x0,0x000116a 6e08 MOVWF 0x8,0x000116c 6a09 CLRF 0x9,0x000116e 90d8 BCF 0xd8,0x0,0x0001170 3209 RRCF 0x9,0x1,0x0001172 3208 RRCF 0x8,0x1,0x0001174 90d8 BCF 0xd8,0x0,0x0001176 3209 RRCF 0x9,0x1,0x0001178 3208 RRCF 0x8,0x1,0x000117a 5006 MOVF 0x6,0x0,0x000117c 2408 ADDWF 0x8,0x0,0x000117e 6e04 MOVWF 0x4,0x0001180 5007 MOVF 0x7,0x0,0x0001182 2009 ADDWFC 0x9,0x0,0x0001184 6e05 MOVWF 0x5,0x0001186 0e03 MOVLW 0x3001188 1462 ANDWF 0x62,0x0,0x000118a 6e0a MOVWF 0xa,0x000118c 6a0b CLRF 0xb,0x000118e 90d8 BCF 0xd8,0x0,0x0001190 360a RLCF 0xa,0x1,0x0001192 360b RLCF 0xb,0x1,0x0001194 5004 MOVF 0x4,0x0,0x0001196 240a ADDWF 0xa,0x0,0x0001198 6e02 MOVWF 0x2,0x000119a 5005 MOVF 0x5,0x0,0x000119c 200b ADDWFC 0xb,0x0,0x000119e 6e03 MOVWF 0x3,0x00011a0 0e80 MOVLW 0x800011a2 1463 ANDWF 0x63,0x0,0x00011a4 6e0c MOVWF 0xc,0x00011a6 6a0d CLRF 0xd,0x00011a8 0e07 MOVLW 0x70011aa 90d8 BCF 0xd8,0x0,0x00011ac 320d RRCF 0xd,0x1,0x00011ae 320c RRCF 0xc,0x1,0x00011b0 04e8 DECF 0xe8,0x0,0x00011b2 e1fb BNZ 0x11aa0011b4 5002 MOVF 0x2,0x0,0x00011b6 240c ADDWF 0xc,0x0,0x00011b8 6e00 MOVWF 0x0,0x00011ba 5003 MOVF 0x3,0x0,0x00011bc 200d ADDWFC 0xd,0x0,0x00011be 6e01 MOVWF 0x1,0x00011c0 0e01 MOVLW 0x10011c2 c000 MOVFF 0x0,0xfdb0011c4 ffdb0011c6 0e02 MOVLW 0x20011c8 c001 MOVFF 0x1,0xfdb0011ca ffdb0011cc 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0011ce 1463 ANDWF 0x63,0x0,0x00011d0 40e8 RRNCF 0xe8,0x0,0x00011d2 0b7f ANDLW 0x7f0011d4 6ee7 MOVWF 0xe7,0x00011d6 0e03 MOVLW 0x30011d8 cfe7 MOVFF 0xfe7,0xfdb0011da ffdb0011dc 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c0011de 1463 ANDWF 0x63,0x0,0x00011e0 6e02 MOVWF 0x2,0x00011e2 c002 MOVFF 0x2,0x30011e4 f0030011e6 6a02 CLRF 0x2,0x00011e8 5064 MOVF 0x64,0x0,0x00011ea 0100 MOVLB 0x00011ec 2402 ADDWF 0x2,0x0,0x00011ee 6e00 MOVWF 0x0,0x00011f0 0e00 MOVLW 0x00011f2 2003 ADDWFC 0x3,0x0,0x00011f4 6e01 MOVWF 0x1,0x00011f6 0e04 MOVLW 0x40011f8 c000 MOVFF 0x0,0xfdb0011fa ffdb0011fc 0e05 MOVLW 0x50011fe c001 MOVFF 0x1,0xfdb001200 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001202 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c001204 0b01 ANDLW 0x1001206 6e02 MOVWF 0x2,0x0001208 5065 MOVF 0x65,0x0,0x000120a 0b02 ANDLW 0x200120c e001 BZ 0x121000120e 0e01 MOVLW 0x1001210 24e8 ADDWF 0xe8,0x0,0x0001212 6e01 MOVWF 0x1,0x0001214 5065 MOVF 0x65,0x0,0x0001216 0b04 ANDLW 0x4001218 e001 BZ 0x121c00121a 0e01 MOVLW 0x100121c 0d04 MULLW 0x400121e cff3 MOVFF 0xff3,0x0001220 f000001222 5065 MOVF 0x65,0x0,0x0001224 0b08 ANDLW 0x8001226 e001 BZ 0x122a001228 0e01 MOVLW 0x100122a 0d08 MULLW 0x800122c 50f3 MOVF 0xf3,0x0,0x000122e 2400 ADDWF 0x0,0x0,0x0001230 2401 ADDWF 0x1,0x0,0x0001232 2402 ADDWF 0x2,0x0,0x0001234 6ee7 MOVWF 0xe7,0x0001236 0e06 MOVLW 0x6001238 cfe7 MOVFF 0xfe7,0xfdb00123a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00123c 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00123e cf66 MOVFF 0xf66,0xfdb001240 ffdb001242 0e08 MOVLW 0x8001244 cf67 MOVFF 0xf67,0xfdb001246 ffdb001248 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c00124a cf68 MOVFF 0xf68,0xfdb00124c ffdb00124e 0e0a MOVLW 0xa001250 cf69 MOVFF 0xf69,0xfdb001252 ffdb001254 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001256 cf6a MOVFF 0xf6a,0xfdb001258 ffdb00125a 0e0c MOVLW 0xc00125c cf6b MOVFF 0xf6b,0xfdb00125e ffdb001260 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c001262 cf6c MOVFF 0xf6c,0xfdb001264 ffdb001266 0e0e MOVLW 0xe001268 cf6d MOVFF 0xf6d,0xfdb00126a ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c00126c 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c00126e cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c001270 ffe9001272 cfda MOVFF 0xfda,0xfea001274 ffea001276 cfee MOVFF 0xfee,0xfe6001278 ffe600127a cfee MOVFF 0xfee,0xfe600127c ffe600127e cfee MOVFF 0xfee,0xfe6001280 ffe6001282 cfee MOVFF 0xfee,0xfe6001284 ffe6001286 cfee MOVFF 0xfee,0xfe6001288 ffe600128a cfee MOVFF 0xfee,0xfe600128c ffe600128e cfee MOVFF 0xfee,0xfe6001290 ffe6001292 cfee MOVFF 0xfee,0xfe6001294 ffe6001296 cfee MOVFF 0xfee,0xfe6001298 ffe600129a cfee MOVFF 0xfee,0xfe600129c ffe600129e cfee MOVFF 0xfee,0xfe60012a0 ffe60012a2 cfee MOVFF 0xfee,0xfe60012a4 ffe60012a6 cfee MOVFF 0xfee,0xfe60012a8 ffe60012aa cfee MOVFF 0xfee,0xfe60012ac ffe60012ae cfee MOVFF 0xfee,0xfe60012b0 ffe60012b2 ec03 CALL 0x1606,0x00012b4 f00b0012b6 6e00 MOVWF 0x0,0x00012b8 0e0f MOVLW 0xf0012ba 5ee1 SUBWF 0xe1,0x1,0x00012bc 5000 MOVF 0x0,0x0,0x00012be 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c0012c0 5ce1 SUBWF 0xe1,0x0,0x00012c2 e202 BC 0x12c80012c4 6ae1 CLRF 0xe1,0x00012c6 52e5 MOVF 0xe5,0x1,0x00012c8 6ee1 MOVWF 0xe1,0x00012ca 52e5 MOVF 0xe5,0x1,0x00012cc cfe7 MOVFF 0xfe7,0xfd90012ce ffd90012d0 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c0012d2 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c0012d4 ffe60012d6 cfe1 MOVFF 0xfe1,0xfd90012d8 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0012da 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012dc b740 BTFSC 0x40,0x3,0x10012de d004 BRA 0x12e80012e0 0e00 MOVLW 0x00012e2 1477 ANDWF 0x77,0x0,0x00012e4 0903 IORLW 0x30012e6 6e77 MOVWF 0x77,0x00012e8 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012ea b730 BTFSC 0x30,0x3,0x10012ec d004 BRA 0x12f60012ee 0e00 MOVLW 0x00012f0 1477 ANDWF 0x77,0x0,0x00012f2 0904 IORLW 0x40012f4 6e77 MOVWF 0x77,0x00012f6 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c0012f8 b720 BTFSC 0x20,0x3,0x10012fa d005 BRA 0x13060012fc 0e00 MOVLW 0x00012fe 1477 ANDWF 0x77,0x0,0x0001300 0905 IORLW 0x5001302 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001304 d002 BRA 0x130a else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001306 0e00 MOVLW 0x0001308 d0b0 BRA 0x146aF:\MCP\projects\CAN\canBase\Source\CAN.c00130a 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00130c cfdb MOVFF 0xfdb,0x000130e f000001310 3400 RLCF 0x0,0x0,0x0001312 e20e BC 0x1330001314 0eef MOVLW 0xef001316 cfdb MOVFF 0xfdb,0x1001318 f00100131a 0e03 MOVLW 0x300131c 6ee7 MOVWF 0xe7,0x000131e 1801 XORWF 0x1,0x0,0x0001320 aee8 BTFSS 0xe8,0x7,0x0001322 d002 BRA 0x1328001324 3401 RLCF 0x1,0x0,0x0001326 d003 BRA 0x132e001328 50e7 MOVF 0xe7,0x0,0x000132a 80d8 BSF 0xd8,0x0,0x000132c 5401 SUBFWB 0x1,0x0,0x000132e e202 BC 0x1334001330 0eef MOVLW 0xef001332 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001334 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c001336 cfdb MOVFF 0xfdb,0x0001338 f00000133a 0ef2 MOVLW 0xf200133c cfdb MOVFF 0xfdb,0x100133e f001001340 0ec0 MOVLW 0xc0001342 1600 ANDWF 0x0,0x1,0x0001344 0e03 MOVLW 0x3001346 1601 ANDWF 0x1,0x1,0x0001348 0e06 MOVLW 0x600134a 90d8 BCF 0xd8,0x0,0x000134c 3201 RRCF 0x1,0x1,0x000134e 3200 RRCF 0x0,0x1,0x0001350 04e8 DECF 0xe8,0x0,0x0001352 e1fb BNZ 0x134a001354 0ef0 MOVLW 0xf0001356 50db MOVF 0xdb,0x0,0x0001358 0b0f ANDLW 0xf00135a 0d10 MULLW 0x1000135c 50f3 MOVF 0xf3,0x0,0x000135e 2400 ADDWF 0x0,0x0,0x0001360 6e61 MOVWF 0x61,0x0001362 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c001364 6ee7 MOVWF 0xe7,0x0001366 0ef1 MOVLW 0xf1001368 cfdb MOVFF 0xfdb,0x200136a f00200136c 0ef2 MOVLW 0xf200136e cfdb MOVFF 0xfdb,0x3001370 f003001372 50e7 MOVF 0xe7,0x0,0x0001374 1602 ANDWF 0x2,0x1,0x0001376 6a03 CLRF 0x3,0x0001378 90d8 BCF 0xd8,0x0,0x000137a 3203 RRCF 0x3,0x1,0x000137c 3202 RRCF 0x2,0x1,0x000137e 0e3f MOVLW 0x3f001380 6ee7 MOVWF 0xe7,0x0001382 0ef1 MOVLW 0xf1001384 cfdb MOVFF 0xfdb,0x0001386 f000001388 0ef2 MOVLW 0xf200138a cfdb MOVFF 0xfdb,0x100138c f00100138e 50e7 MOVF 0xe7,0x0,0x0001390 1600 ANDWF 0x0,0x1,0x0001392 6a01 CLRF 0x1,0x0001394 90d8 BCF 0xd8,0x0,0x0001396 3600 RLCF 0x0,0x1,0x0001398 3601 RLCF 0x1,0x1,0x000139a 90d8 BCF 0xd8,0x0,0x000139c 3600 RLCF 0x0,0x1,0x000139e 3601 RLCF 0x1,0x1,0x00013a0 5000 MOVF 0x0,0x0,0x00013a2 2402 ADDWF 0x2,0x0,0x00013a4 6e62 MOVWF 0x62,0x00013a6 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0013a8 cfdb MOVFF 0xfdb,0x20013aa f0020013ac 0ef5 MOVLW 0xf50013ae cfdb MOVFF 0xfdb,0x30013b0 f0030013b2 0e00 MOVLW 0x00013b4 1602 ANDWF 0x2,0x1,0x00013b6 0e01 MOVLW 0x10013b8 1603 ANDWF 0x3,0x1,0x00013ba c003 MOVFF 0x3,0x20013bc f0020013be 6a03 CLRF 0x3,0x00013c0 0e01 MOVLW 0x10013c2 6ee7 MOVWF 0xe7,0x00013c4 0ef1 MOVLW 0xf10013c6 cfdb MOVFF 0xfdb,0x00013c8 f0000013ca 0ef2 MOVLW 0xf20013cc cfdb MOVFF 0xfdb,0x10013ce f0010013d0 50e7 MOVF 0xe7,0x0,0x00013d2 1600 ANDWF 0x0,0x1,0x00013d4 6a01 CLRF 0x1,0x00013d6 0e07 MOVLW 0x70013d8 90d8 BCF 0xd8,0x0,0x00013da 3600 RLCF 0x0,0x1,0x00013dc 3601 RLCF 0x1,0x1,0x00013de 04e8 DECF 0xe8,0x0,0x00013e0 e1fb BNZ 0x13d80013e2 0ef3 MOVLW 0xf30013e4 50db MOVF 0xdb,0x0,0x00013e6 0b3f ANDLW 0x3f0013e8 24e8 ADDWF 0xe8,0x0,0x00013ea 2400 ADDWF 0x0,0x0,0x00013ec 2402 ADDWF 0x2,0x0,0x00013ee 6e63 MOVWF 0x63,0x00013f0 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c0013f2 6ee7 MOVWF 0xe7,0x00013f4 0ef4 MOVLW 0xf40013f6 cfdb MOVFF 0xfdb,0x00013f8 f0000013fa 0ef5 MOVLW 0xf50013fc cfdb MOVFF 0xfdb,0x10013fe f001001400 50e7 MOVF 0xe7,0x0,0x0001402 1600 ANDWF 0x0,0x1,0x0001404 6a01 CLRF 0x1,0x0001406 5000 MOVF 0x0,0x0,0x0001408 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00140a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00140c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00140e 50db MOVF 0xdb,0x0,0x0001410 0808 SUBLW 0x8001412 e203 BC 0x141a001414 0e08 MOVLW 0x8001416 6e65 MOVWF 0x65,0x0001418 d003 BRA 0x142000141a 0ef6 MOVLW 0xf600141c 50db MOVF 0xdb,0x0,0x000141e 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// NOT Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c001420 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001422 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001424 50db MOVF 0xdb,0x0,0x0001426 6e66 MOVWF 0x66,0x0001428 0ef8 MOVLW 0xf800142a 50db MOVF 0xdb,0x0,0x000142c 6e67 MOVWF 0x67,0x000142e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c001430 50db MOVF 0xdb,0x0,0x0001432 6e68 MOVWF 0x68,0x0001434 0efa MOVLW 0xfa001436 50db MOVF 0xdb,0x0,0x0001438 6e69 MOVWF 0x69,0x000143a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c00143c 50db MOVF 0xdb,0x0,0x000143e 6e6a MOVWF 0x6a,0x0001440 0efc MOVLW 0xfc001442 50db MOVF 0xdb,0x0,0x0001444 6e6b MOVWF 0x6b,0x0001446 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001448 50db MOVF 0xdb,0x0,0x000144a 6e6c MOVWF 0x6c,0x000144c 0efe MOVLW 0xfe00144e 50db MOVF 0xdb,0x0,0x0001450 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001452 8662 BSF 0x62,0x3,0x0 RXB0SIDLbits.EXID=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Priority F:\MCP\projects\CAN\canBase\Source\CAN.c001454 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001456 cfdb MOVFF 0xfdb,0xfe6001458 ffe600145a 0efc MOVLW 0xfc00145c 1460 ANDWF 0x60,0x0,0x000145e 52e5 MOVF 0xe5,0x1,0x0001460 10e7 IORWF 0xe7,0x0,0x0001462 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c001464 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001466 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c001468 d000 BRA 0x146aF:\MCP\projects\CAN\canBase\Source\CAN.c00146a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c00146c cfe7 MOVFF 0xfe7,0xfd900146e ffd9001470 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canBase\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c* Main application F:\MCP\projects\CAN\canBase\Source\Main.c* F:\MCP\projects\CAN\canBase\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Main.c $ F:\MCP\projects\CAN\canBase\Source\Main.c* Last changed: $LastChangedDate: 2006-11-14 11:20:48 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Main.c* Revision: $Revision: 87 $ F:\MCP\projects\CAN\canBase\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001472 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canBase\Source\Main.c001474 ffe6001476 cfe1 MOVFF 0xfe1,0xfd9001478 ffd900147a 0e0f MOVLW 0xf00147c 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canBase\Source\Main.cCAN_MESSAGE cm2; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Inits F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00147e d8be RCALL 0x15fc 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.c001480 ec22 CALL 0x1044,0x0 canInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001482 f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001484 ec6c CALL 0x16d8,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\Main.c001486 f00bF:\MCP\projects\CAN\canBase\Source\Main.c// Dummy bootmessage F:\MCP\projects\CAN\canBase\Source\Main.c001488 0e91 MOVLW 0x91 cm2.data[0]=0x91; F:\MCP\projects\CAN\canBase\Source\Main.c00148a 6ef3 MOVWF 0xf3,0x000148c 0e07 MOVLW 0x700148e cff3 MOVFF 0xff3,0xfdb001490 ffdb001492 0e01 MOVLW 0x1 cm2.data_length=1; F:\MCP\projects\CAN\canBase\Source\Main.c001494 6ef3 MOVWF 0xf3,0x0001496 0e06 MOVLW 0x6001498 cff3 MOVFF 0xff3,0xfdb00149a ffdb00149c 0e02 MOVLW 0x2 canSendMessage(cm2,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\Main.c00149e 6ee6 MOVWF 0xe6,0x00014a0 cfd9 MOVFF 0xfd9,0xfe90014a2 ffe90014a4 cfda MOVFF 0xfda,0xfea0014a6 ffea0014a8 cfee MOVFF 0xfee,0xfe60014aa ffe60014ac cfee MOVFF 0xfee,0xfe60014ae ffe60014b0 cfee MOVFF 0xfee,0xfe60014b2 ffe60014b4 cfee MOVFF 0xfee,0xfe60014b6 ffe60014b8 cfee MOVFF 0xfee,0xfe60014ba ffe60014bc cfee MOVFF 0xfee,0xfe60014be ffe60014c0 cfee MOVFF 0xfee,0xfe60014c2 ffe60014c4 cfee MOVFF 0xfee,0xfe60014c6 ffe60014c8 cfee MOVFF 0xfee,0xfe60014ca ffe60014cc cfee MOVFF 0xfee,0xfe60014ce ffe60014d0 cfee MOVFF 0xfee,0xfe60014d2 ffe60014d4 cfee MOVFF 0xfee,0xfe60014d6 ffe60014d8 cfee MOVFF 0xfee,0xfe60014da ffe60014dc cfee MOVFF 0xfee,0xfe60014de ffe60014e0 cfee MOVFF 0xfee,0xfe60014e2 ffe60014e4 ec69 CALL 0x12d2,0x00014e6 f0090014e8 6e00 MOVWF 0x0,0x00014ea 0e10 MOVLW 0x100014ec 5ee1 SUBWF 0xe1,0x1,0x00014ee 5000 MOVF 0x0,0x0,0x0F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001538 d7db BRA 0x14f0 while(1) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canBase\Source\Main.c0014f0 ec76 CALL 0x16ec,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canBase\Source\Main.c0014f2 f00b0014f4 0100 MOVLB 0x00014f6 516e MOVF 0x6e,0x0,0x10014f8 5c12 SUBWF 0x12,0x0,0x00014fa 6e00 MOVWF 0x0,0x00014fc 516f MOVF 0x6f,0x0,0x10014fe 5813 SUBWFB 0x13,0x0,0x0001500 6e01 MOVWF 0x1,0x0001502 5170 MOVF 0x70,0x0,0x1001504 5814 SUBWFB 0x14,0x0,0x0001506 6e02 MOVWF 0x2,0x0001508 5171 MOVF 0x71,0x0,0x100150a 5815 SUBWFB 0x15,0x0,0x000150c 6e03 MOVWF 0x3,0x000150e 80d8 BSF 0xd8,0x0,0x0001510 0e64 MOVLW 0x64001512 5400 SUBFWB 0x0,0x0,0x0001514 0e00 MOVLW 0x0001516 5401 SUBFWB 0x1,0x0,0x0001518 0e00 MOVLW 0x000151a 5402 SUBFWB 0x2,0x0,0x000151c 0e00 MOVLW 0x000151e 5403 SUBFWB 0x3,0x0,0x0001520 e20b BC 0x1538{ F:\MCP\projects\CAN\canBase\Source\Main.c001522 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canBase\Source\Main.c001524 ec76 CALL 0x16ec,0x0 t = tickGet(); F:\MCP\projects\CAN\canBase\Source\Main.c001526 f00b001528 c012 MOVFF 0x12,0x6e00152a f06e00152c c013 MOVFF 0x13,0x6f00152e f06f001530 c014 MOVFF 0x14,0x70001532 f070001534 c015 MOVFF 0x15,0x71001536 f071} F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c00153a 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\Main.c00153c 5ce1 SUBWF 0xe1,0x0,0x000153e e202 BC 0x1544001540 6ae1 CLRF 0xe1,0x0001542 52e5 MOVF 0xe5,0x1,0x0001544 6ee1 MOVWF 0xe1,0x0001546 52e5 MOVF 0xe5,0x1,0x0001548 cfe7 MOVFF 0xfe7,0xfd900154a ffd900154c 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.c00154e cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c001550 ffe4001552 cfe2 MOVFF 0xfe2,0xfda001554 ffda001556 cfe9 MOVFF 0xfe9,0xfe4001558 ffe400155a cfea MOVFF 0xfea,0xfe400155c ffe400155e cff6 MOVFF 0xff6,0xfe4001560 ffe4001562 cff7 MOVFF 0xff7,0xfe4001564 ffe4001566 cff5 MOVFF 0xff5,0xfe4001568 ffe400156a cff3 MOVFF 0xff3,0xfe400156c ffe400156e cff4 MOVFF 0xff4,0xfe4001570 ffe4001572 cffa MOVFF 0xffa,0xfe4001574 ffe4001576 ee00 LFSR 0x0,0xe001578 f00e00157a 0e0b MOVLW 0xb00157c 04e8 DECF 0xe8,0x0,0x000157e e303 BNC 0x1586001580 cfee MOVFF 0xfee,0xfe4001582 ffe4001584 d7fb BRA 0x157c001586 ee00 LFSR 0x0,0x0001588 f00000158a 0e0e MOVLW 0xe00158c 04e8 DECF 0xe8,0x0,0x000158e e303 BNC 0x1596001590 cfee MOVFF 0xfee,0xfe4001592 ffe4001594 d7fb BRA 0x158c001596 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.c001598 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\Main.c00159a ec4d CALL 0x109a,0x0 canISR(); F:\MCP\projects\CAN\canBase\Source\Main.c00159c f008#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c00159e ec80 CALL 0x1700,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\Main.c0015a0 f00bF:\MCP\projects\CAN\canBase\Source\Main.c0015a2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0015a4 ee00 LFSR 0x0,0xd0015a6 f00d0015a8 0e0e MOVLW 0xe0015aa 04e8 DECF 0xe8,0x0,0x00015ac e303 BNC 0x15b40015ae cfe5 MOVFF 0xfe5,0xfed0015b0 ffed0015b2 d7fb BRA 0x15aa0015b4 ee00 LFSR 0x0,0x180015b6 f0180015b8 0e0b MOVLW 0xb0015ba 04e8 DECF 0xe8,0x0,0x00015bc e303 BNC 0x15c40015be cfe5 MOVFF 0xfe5,0xfed0015c0 ffed0015c2 d7fb BRA 0x15ba0015c4 cfe5 MOVFF 0xfe5,0xffa0015c6 fffa0015c8 cfe5 MOVFF 0xfe5,0xff40015ca fff40015cc cfe5 MOVFF 0xfe5,0xff30015ce fff30015d0 cfe5 MOVFF 0xfe5,0xff50015d2 fff50015d4 cfe5 MOVFF 0xfe5,0xff70015d6 fff70015d8 cfe5 MOVFF 0xfe5,0xff60015da fff60015dc cfe5 MOVFF 0xfe5,0xfea0015de ffea0015e0 cfe5 MOVFF 0xfe5,0xfe90015e2 ffe90015e4 cfe5 MOVFF 0xfe5,0xfda0015e6 ffda0015e8 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.c0015ea cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canBase\Source\Main.c0015ec ffe40015ee cfe2 MOVFF 0xfe2,0xfda0015f0 ffda0015f2 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c0015f4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c0015f6 cfe5 MOVFF 0xfe5,0xfda0015f8 ffda0015fa 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.c0015fc 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canBase\Source\Main.c0015fe 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canBase\Source\Main.c001600 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canBase\Source\Main.c001602 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.c001604 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.c001606 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canBase\Source\Main.c001608 ffe600160a cfe1 MOVFF 0xfe1,0xfd900160c ffd9{ F:\MCP\projects\CAN\canBase\Source\Main.c00160e 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c001610 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canBase\Source\Main.c001612 50db MOVF 0xdb,0x0,0x0001614 e001 BZ 0x1618001616 d00d BRA 0x1632{ F:\MCP\projects\CAN\canBase\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canBase\Source\Main.c001618 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) { Reset(); } F:\MCP\projects\CAN\canBase\Source\Main.c00161a 0ff1 ADDLW 0xf100161c 6ee9 MOVWF 0xe9,0x000161e 0eff MOVLW 0xff001620 20da ADDWFC 0xda,0x0,0x0001622 6eea MOVWF 0xea,0x0001624 0e01 MOVLW 0x1001626 18ee XORWF 0xee,0x0,0x0001628 e101 BNZ 0x162c00162a 50ed MOVF 0xed,0x0,0x000162c e101 BNZ 0x163000162e 00ff RESET001630 d000 BRA 0x1632 break; F:\MCP\projects\CAN\canBase\Source\Main.c} F:\MCP\projects\CAN\canBase\Source\Main.c001632 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c001634 cfe7 MOVFF 0xfe7,0xfd9001636 ffd9001638 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canBase\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canBase\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001000 ef8e GOTO 0x171c _asm goto _startup _endasm F:\MCP\projects\CAN\canBase\Source\Main.c001002 f00b001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.c#endif F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001008 efa7 GOTO 0x154e _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00100a f00a00100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.cF:\MCP\projects\CAN\canBase\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canBase\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canBase\Source\Main.c{ F:\MCP\projects\CAN\canBase\Source\Main.c001018 eff5 GOTO 0x15ea _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canBase\Source\Main.c00101a f00a00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Main.c#pragma code F:\MCP\projects\CAN\canBase\Source\Main.c