gplink-0.13.7 beta Copyright (c) 1998-2005 gputils project Listing File Generated: 1-16-2011 16:43:00 Address Value Disassembly Source ------- ----- ----------- ------ ;-------------------------------------------------------- ; File Created by SDCC : free open source ANSI-C Compiler ; Version 3.0.1 #6101 (Jan 12 2011) (Linux) ; This file was generated Sun Jan 16 16:43:00 2011 ;-------------------------------------------------------- ; PIC16 port for the Microchip 16-bit core micros ;-------------------------------------------------------- list p=18f2680 __config 0x300001, 0xf2 __config 0x300003, 0xfe __config 0x300006, 0xbb radix dec ;-------------------------------------------------------- ; public variables in this module ;-------------------------------------------------------- global _CAN_status_ptr global _pt global _ui global _TIMER_setup global _TIMER_set_T0 global _TIMER_set_T1 global _TIMER_set_T2 global _TIMER_get global _CAN_init global _CAN_recv global _CAN_send global _CAN_setFilters global _HAL_read_eeprom_byte global _HAL_write_eeprom_byte global _SERIAL_initialize global _SERIAL_putc global _SERIAL_getc global _SERIAL_write global _SERIAL_readable global _SERIAL_writable global _HAL_INT_TIMER0_FUNC global _CAN_status1 global _rxdata global _CAN_runOnce global _INTERRUPTS_init global _INTERRUPTS_runOnce global _main ;-------------------------------------------------------- ; extern variables in this module ;-------------------------------------------------------- extern __gptrget1 extern __gptrput2 extern __gptrget2 extern __gptrput1 extern _RXF6SIDHbits extern _RXF6SIDLbits extern _RXF6EIDHbits extern _RXF6EIDLbits extern _RXF7SIDHbits extern _RXF7SIDLbits extern _RXF7EIDHbits extern _RXF7EIDLbits extern _RXF8SIDHbits extern _RXF8SIDLbits extern _RXF8EIDHbits extern _RXF8EIDLbits extern _RXF9SIDHbits extern _RXF9SIDLbits extern _RXF9EIDHbits extern _RXF9EIDLbits extern _RXF10SIDHbits extern _RXF10SIDLbits extern _RXF10EIDHbits extern _RXF10EIDLbits extern _RXF11SIDHbits extern _RXF11SIDLbits extern _RXF11EIDHbits extern _RXF11EIDLbits extern _RXF12SIDHbits extern _RXF12SIDLbits extern _RXF12EIDHbits extern _RXF12EIDLbits extern _RXF13SIDHbits extern _RXF13SIDLbits extern _RXF13EIDHbits extern _RXF13EIDLbits extern _RXF14SIDHbits extern _RXF14SIDLbits extern _RXF14EIDHbits extern _RXF14EIDLbits extern _RXF15SIDHbits extern _RXF15SIDLbits extern _RXF15EIDHbits extern _RXF15EIDLbits extern _RXFCON0bits extern _RXFCON1bits extern _SDFLCbits extern _RXFBCON0bits extern _RXFBCON1bits extern _RXFBCON2bits extern _RXFBCON3bits extern _RXFBCON4bits extern _RXFBCON5bits extern _RXFBCON6bits extern _RXFBCON7bits extern _MSEL0bits extern _MSEL1bits extern _MSEL2bits extern _MSEL3bits extern _BSEL0bits extern _BIE0bits extern _TXBIEbits extern _B0CONbits extern _B0SIDHbits extern _B0SIDLbits extern _B0EIDHbits extern _B0EIDLbits extern _B0DLCbits extern _B0D0bits extern _B0D1bits extern _B0D2bits extern _B0D3bits extern _B0D4bits extern _B0D5bits extern _B0D6bits extern _B0D7bits extern _CANSTAT_RO9bits extern _CANCON_RO9bits extern _B1CONbits extern _B1SIDHbits extern _B1SIDLbits extern _B1EIDHbits extern _B1EIDLbits extern _B1DLCbits extern _B1D0bits extern _B1D1bits extern _B1D2bits extern _B1D3bits extern _B1D4bits extern _B1D5bits extern _B1D6bits extern _B1D7bits extern _CANSTAT_RO8bits extern _CANCON_RO8bits extern _B2CONbits extern _B2SIDHbits extern _B2SIDLbits extern _B2EIDHbits extern _B2EIDLbits extern _B2DLCbits extern _B2D0bits extern _B2D1bits extern _B2D2bits extern _B2D3bits extern _B2D4bits extern _B2D5bits extern _B2D6bits extern _B2D7bits extern _CANSTAT_RO7bits extern _CANCON_RO7bits extern _B3CONbits extern _B3SIDHbits extern _B3SIDLbits extern _B3EIDHbits extern _B3EIDLbits extern _B3DLCbits extern _B3D0bits extern _B3D1bits extern _B3D2bits extern _B3D3bits extern _B3D4bits extern _B3D5bits extern _B3D6bits extern _B3D7bits extern _CANSTAT_RO6bits extern _CANCON_RO6bits extern _B4CONbits extern _B4SIDHbits extern _B4SIDLbits extern _B4EIDHbits extern _B4EIDLbits extern _B4DLCbits extern _B4D0bits extern _B4D1bits extern _B4D2bits extern _B4D3bits extern _B4D4bits extern _B4D5bits extern _B4D6bits extern _B4D7bits extern _CANSTAT_RO5bits extern _CANCON_RO5bits extern _B5CONbits extern _B5SIDHbits extern _B5SIDLbits extern _B5EIDHbits extern _B5EIDLbits extern _B5DLCbits extern _B5D0bits extern _B5D1bits extern _B5D2bits extern _B5D3bits extern _B5D4bits extern _B5D5bits extern _B5D6bits extern _B5D7bits extern _CANSTAT_RO4bits extern _CANCON_RO4bits extern _RXF0SIDHbits extern _RXF0SIDLbits extern _RXF0EIDHbits extern _RXF0EIDLbits extern _RXF1SIDHbits extern _RXF1SIDLbits extern _RXF1EIDHbits extern _RXF1EIDLbits extern _RXF2SIDHbits extern _RXF2SIDLbits extern _RXF2EIDHbits extern _RXF2EIDLbits extern _RXF3SIDHbits extern _RXF3SIDLbits extern _RXF3EIDHbits extern _RXF3EIDLbits extern _RXF4SIDHbits extern _RXF4SIDLbits extern _RXF4EIDHbits extern _RXF4EIDLbits extern _RXF5SIDHbits extern _RXF5SIDLbits extern _RXF5EIDHbits extern _RXF5EIDLbits extern _RXM0SIDHbits extern _RXM0SIDLbits extern _RXM0EIDHbits extern _RXM0EIDLbits extern _RXM1SIDHbits extern _RXM1SIDLbits extern _RXM1EIDHbits extern _RXM1EIDLbits extern _TXB2CONbits extern _TXB2SIDHbits extern _TXB2SIDLbits extern _TXB2EIDHbits extern _TXB2EIDLbits extern _TXB2DLCbits extern _TXB2D0bits extern _TXB2D1bits extern _TXB2D2bits extern _TXB2D3bits extern _TXB2D4bits extern _TXB2D5bits extern _TXB2D6bits extern _TXB2D7bits extern _CANSTAT_RO3bits extern _CANCON_RO3bits extern _TXB1CONbits extern _TXB1SIDHbits extern _TXB1SIDLbits extern _TXB1EIDHbits extern _TXB1EIDLbits extern _TXB1DLCbits extern _TXB1D0bits extern _TXB1D1bits extern _TXB1D2bits extern _TXB1D3bits extern _TXB1D4bits extern _TXB1D5bits extern _TXB1D6bits extern _TXB1D7bits extern _CANSTAT_RO2bits extern _CANCON_RO2bits extern _TXB0CONbits extern _TXB0SIDHbits extern _TXB0SIDLbits extern _TXB0EIDHbits extern _TXB0EIDLbits extern _TXB0DLCbits extern _TXB0D0bits extern _TXB0D1bits extern _TXB0D2bits extern _TXB0D3bits extern _TXB0D4bits extern _TXB0D5bits extern _TXB0D6bits extern _TXB0D7bits extern _CANSTAT_RO1bits extern _CANCON_RO1bits extern _RXB1CONbits extern _RXB1SIDHbits extern _RXB1SIDLbits extern _RXB1EIDHbits extern _RXB1EIDLbits extern _RXB1DLCbits extern _RXB1D0bits extern _RXB1D1bits extern _RXB1D2bits extern _RXB1D3bits extern _RXB1D4bits extern _RXB1D5bits extern _RXB1D6bits extern _RXB1D7bits extern _CANSTAT_RO0bits extern _CANCON_RO0bits extern _RXB0CONbits extern _RXB0SIDHbits extern _RXB0SIDLbits extern _RXB0EIDHbits extern _RXB0EIDLbits extern _RXB0DLCbits extern _RXB0D0bits extern _RXB0D1bits extern _RXB0D2bits extern _RXB0D3bits extern _RXB0D4bits extern _RXB0D5bits extern _RXB0D6bits extern _RXB0D7bits extern _CANSTATbits extern _CANCONbits extern _BRGCON1bits extern _BRGCON2bits extern _BRGCON3bits extern _CIOCONbits extern _COMSTATbits extern _RXERRCNTbits extern _TXERRCNTbits extern _ECANCONbits extern _PORTAbits extern _PORTBbits extern _PORTCbits extern _LATAbits extern _LATBbits extern _LATCbits extern _DDRAbits extern _TRISAbits extern _DDRBbits extern _TRISBbits extern _DDRCbits extern _TRISCbits extern _OSCTUNEbits extern _PIE1bits extern _PIR1bits extern _IPR1bits extern _PIE2bits extern _PIR2bits extern _IPR2bits extern _PIE3bits extern _PIR3bits extern _IPR3bits extern _EECON1bits extern _RCSTAbits extern _TXSTAbits extern _T3CONbits extern _BAUDCONbits extern _CCP1CONbits extern _ADCON2bits extern _ADCON1bits extern _ADCON0bits extern _SSPCON2bits extern _SSPCON1bits extern _SSPSTATbits extern _T2CONbits extern _T1CONbits extern _RCONbits extern _WDTCONbits extern _HLVDCONbits extern _LVDCONbits extern _OSCCONbits extern _T0CONbits extern _STATUSbits extern _INTCON3bits extern _INTCON2bits extern _INTCONbits extern _STKPTRbits extern __ECANRxFilterHitInfo extern _RXF6SIDH extern _RXF6SIDL extern _RXF6EIDH extern _RXF6EIDL extern _RXF7SIDH extern _RXF7SIDL extern _RXF7EIDH extern _RXF7EIDL extern _RXF8SIDH extern _RXF8SIDL extern _RXF8EIDH extern _RXF8EIDL extern _RXF9SIDH extern _RXF9SIDL extern _RXF9EIDH extern _RXF9EIDL extern _RXF10SIDH extern _RXF10SIDL extern _RXF10EIDH extern _RXF10EIDL extern _RXF11SIDH extern _RXF11SIDL extern _RXF11EIDH extern _RXF11EIDL extern _RXF12SIDH extern _RXF12SIDL extern _RXF12EIDH extern _RXF12EIDL extern _RXF13SIDH extern _RXF13SIDL extern _RXF13EIDH extern _RXF13EIDL extern _RXF14SIDH extern _RXF14SIDL extern _RXF14EIDH extern _RXF14EIDL extern _RXF15SIDH extern _RXF15SIDL extern _RXF15EIDH extern _RXF15EIDL extern _RXFCON0 extern _RXFCON1 extern _SDFLC extern _RXFBCON0 extern _RXFBCON1 extern _RXFBCON2 extern _RXFBCON3 extern _RXFBCON4 extern _RXFBCON5 extern _RXFBCON6 extern _RXFBCON7 extern _MSEL0 extern _MSEL1 extern _MSEL2 extern _MSEL3 extern _BSEL0 extern _BIE0 extern _TXBIE extern _B0CON extern _B0SIDH extern _B0SIDL extern _B0EIDH extern _B0EIDL extern _B0DLC extern _B0D0 extern _B0D1 extern _B0D2 extern _B0D3 extern _B0D4 extern _B0D5 extern _B0D6 extern _B0D7 extern _CANSTAT_RO9 extern _CANCON_RO9 extern _B1CON extern _B1SIDH extern _B1SIDL extern _B1EIDH extern _B1EIDL extern _B1DLC extern _B1D0 extern _B1D1 extern _B1D2 extern _B1D3 extern _B1D4 extern _B1D5 extern _B1D6 extern _B1D7 extern _CANSTAT_RO8 extern _CANCON_RO8 extern _B2CON extern _B2SIDH extern _B2SIDL extern _B2EIDH extern _B2EIDL extern _B2DLC extern _B2D0 extern _B2D1 extern _B2D2 extern _B2D3 extern _B2D4 extern _B2D5 extern _B2D6 extern _B2D7 extern _CANSTAT_RO7 extern _CANCON_RO7 extern _B3CON extern _B3SIDH extern _B3SIDL extern _B3EIDH extern _B3EIDL extern _B3DLC extern _B3D0 extern _B3D1 extern _B3D2 extern _B3D3 extern _B3D4 extern _B3D5 extern _B3D6 extern _B3D7 extern _CANSTAT_RO6 extern _CANCON_RO6 extern _B4CON extern _B4SIDH extern _B4SIDL extern _B4EIDH extern _B4EIDL extern _B4DLC extern _B4D0 extern _B4D1 extern _B4D2 extern _B4D3 extern _B4D4 extern _B4D5 extern _B4D6 extern _B4D7 extern _CANSTAT_RO5 extern _CANCON_RO5 extern _B5CON extern _B5SIDH extern _B5SIDL extern _B5EIDH extern _B5EIDL extern _B5DLC extern _B5D0 extern _B5D1 extern _B5D2 extern _B5D3 extern _B5D4 extern _B5D5 extern _B5D6 extern _B5D7 extern _CANSTAT_RO4 extern _CANCON_RO4 extern _RXF0SIDH extern _RXF0SIDL extern _RXF0EIDH extern _RXF0EIDL extern _RXF1SIDH extern _RXF1SIDL extern _RXF1EIDH extern _RXF1EIDL extern _RXF2SIDH extern _RXF2SIDL extern _RXF2EIDH extern _RXF2EIDL extern _RXF3SIDH extern _RXF3SIDL extern _RXF3EIDH extern _RXF3EIDL extern _RXF4SIDH extern _RXF4SIDL extern _RXF4EIDH extern _RXF4EIDL extern _RXF5SIDH extern _RXF5SIDL extern _RXF5EIDH extern _RXF5EIDL extern _RXM0SIDH extern _RXM0SIDL extern _RXM0EIDH extern _RXM0EIDL extern _RXM1SIDH extern _RXM1SIDL extern _RXM1EIDH extern _RXM1EIDL extern _TXB2CON extern _TXB2SIDH extern _TXB2SIDL extern _TXB2EIDH extern _TXB2EIDL extern _TXB2DLC extern _TXB2D0 extern _TXB2D1 extern _TXB2D2 extern _TXB2D3 extern _TXB2D4 extern _TXB2D5 extern _TXB2D6 extern _TXB2D7 extern _CANSTAT_RO3 extern _CANCON_RO3 extern _TXB1CON extern _TXB1SIDH extern _TXB1SIDL extern _TXB1EIDH extern _TXB1EIDL extern _TXB1DLC extern _TXB1D0 extern _TXB1D1 extern _TXB1D2 extern _TXB1D3 extern _TXB1D4 extern _TXB1D5 extern _TXB1D6 extern _TXB1D7 extern _CANSTAT_RO2 extern _CANCON_RO2 extern _TXB0CON extern _TXB0SIDH extern _TXB0SIDL extern _TXB0EIDH extern _TXB0EIDL extern _TXB0DLC extern _TXB0D0 extern _TXB0D1 extern _TXB0D2 extern _TXB0D3 extern _TXB0D4 extern _TXB0D5 extern _TXB0D6 extern _TXB0D7 extern _CANSTAT_RO1 extern _CANCON_RO1 extern _RXB1CON extern _RXB1SIDH extern _RXB1SIDL extern _RXB1EIDH extern _RXB1EIDL extern _RXB1DLC extern _RXB1D0 extern _RXB1D1 extern _RXB1D2 extern _RXB1D3 extern _RXB1D4 extern _RXB1D5 extern _RXB1D6 extern _RXB1D7 extern _CANSTAT_RO0 extern _CANCON_RO0 extern _RXB0CON extern _RXB0SIDH extern _RXB0SIDL extern _RXB0EIDH extern _RXB0EIDL extern _RXB0DLC extern _RXB0D0 extern _RXB0D1 extern _RXB0D2 extern _RXB0D3 extern _RXB0D4 extern _RXB0D5 extern _RXB0D6 extern _RXB0D7 extern _CANSTAT extern _CANCON extern _BRGCON1 extern _BRGCON2 extern _BRGCON3 extern _CIOCON extern _COMSTAT extern _RXERRCNT extern _TXERRCNT extern _ECANCON extern _PORTA extern _PORTB extern _PORTC extern _LATA extern _LATB extern _LATC extern _DDRA extern _TRISA extern _DDRB extern _TRISB extern _DDRC extern _TRISC extern _OSCTUNE extern _PIE1 extern _PIR1 extern _IPR1 extern _PIE2 extern _PIR2 extern _IPR2 extern _PIE3 extern _PIR3 extern _IPR3 extern _EECON1 extern _EECON2 extern _EEDATA extern _EEADR extern _EEADRH extern _RCSTA extern _TXSTA extern _TXREG extern _RCREG extern _SPBRG extern _SPBRGH extern _T3CON extern _TMR3L extern _TMR3H extern _BAUDCON extern _CCP1CON extern _CCPR1 extern _CCPR1L extern _CCPR1H extern _ADCON2 extern _ADCON1 extern _ADCON0 extern _ADRES extern _ADRESL extern _ADRESH extern _SSPCON2 extern _SSPCON1 extern _SSPSTAT extern _SSPADD extern _SSPBUF extern _T2CON extern _PR2 extern _TMR2 extern _T1CON extern _TMR1L extern _TMR1H extern _RCON extern _WDTCON extern _HLVDCON extern _LVDCON extern _OSCCON extern _T0CON extern _TMR0L extern _TMR0H extern _STATUS extern _FSR2L extern _FSR2H extern _PLUSW2 extern _PREINC2 extern _POSTDEC2 extern _POSTINC2 extern _INDF2 extern _BSR extern _FSR1L extern _FSR1H extern _PLUSW1 extern _PREINC1 extern _POSTDEC1 extern _POSTINC1 extern _INDF1 extern _WREG extern _FSR0L extern _FSR0H extern _PLUSW0 extern _PREINC0 extern _POSTDEC0 extern _POSTINC0 extern _INDF0 extern _INTCON3 extern _INTCON2 extern _INTCON extern _PROD extern _PRODL extern _PRODH extern _TABLAT extern _TBLPTR extern _TBLPTRL extern _TBLPTRH extern _TBLPTRU extern _PC extern _PCL extern _PCLATH extern _PCLATU extern _STKPTR extern _TOS extern _TOSL extern _TOSH extern _TOSU extern _usart_open extern _usart_busy extern _usart_getc extern _usart_putc extern _ECANInitialize extern _ECANSendMessage extern _ECANReceiveMessage extern _ECANSetOperationMode extern __CANIDToRegs extern __mulint extern __divslong ;-------------------------------------------------------- ; Equates to used internal registers ;-------------------------------------------------------- STATUS equ 0xfd8 PCL equ 0xff9 PCLATH equ 0xffa PCLATU equ 0xffb WREG equ 0xfe8 BSR equ 0xfe0 FSR0L equ 0xfe9 FSR0H equ 0xfea FSR1L equ 0xfe1 FSR2L equ 0xfd9 INDF0 equ 0xfef POSTDEC1 equ 0xfe5 PREINC1 equ 0xfe4 PLUSW2 equ 0xfdb PRODL equ 0xff3 PRODH equ 0xff4 idata _ui db 0x61 _pt db LOW(_ui), HIGH(_ui), 0x80 _CAN_status_ptr db LOW(_CAN_status1), HIGH(_CAN_status1), 0x80 _CAN_send_rr_1_1 db 0x00 _CAN_setFilters_fltId_1_1 db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 _rxdata db 0xaa ; Internal registers .registers udata_ovr 0x0000 r0x00 res 1 r0x01 res 1 r0x02 res 1 r0x03 res 1 r0x04 res 1 r0x05 res 1 r0x06 res 1 r0x07 res 1 r0x08 res 1 r0x09 res 1 r0x0a res 1 r0x0b res 1 r0x0c res 1 r0x0d res 1 r0x0e res 1 r0x0f res 1 r0x10 res 1 r0x11 res 1 udata_jgjh_0 udata _CAN_status1 res 5 udata_jgjh_1 udata _CAN_recv_temp_1_1 res 4 udata_jgjh_2 udata _CAN_recv_flags_1_1 res 1 udata_jgjh_3 udata _main_tcon_1_1 res 2 udata_jgjh_4 udata _main_serial_setting_1_1 res 6 udata_jgjh_5 udata _main_spi_setting_1_1 res 6 ;-------------------------------------------------------- ; interrupt vector ;-------------------------------------------------------- ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- ; ; Starting pCode block for absolute section ; ;----------------------------------------- S_jgjh_ivec_0x1_isr code 0X000008 ivec_0x1_isr: 000008 ef63 goto 0x1ec6 GOTO _isr 00000a f00f ; I code from now on! ; ; Starting pCode block S_jgjh__main code _main: 001614 0100 movlb 0 BANKSEL _main_tcon_1_1 ; .line 24; jgjh.c struct TIMER_config tcon = {0,6}; 001616 6ba4 clrf 0xa4, 0x1 CLRF _main_tcon_1_1, B 001618 0e06 movlw 0x6 MOVLW 0x06 00161a 0100 movlb 0 BANKSEL (_main_tcon_1_1 + 1) 00161c 6fa5 movwf 0xa5, 0x1 MOVWF (_main_tcon_1_1 + 1), B 00161e 0100 movlb 0 BANKSEL _main_serial_setting_1_1 ; .line 28; jgjh.c serial_setting.baud = 57600; 001620 6b8b clrf 0x8b, 0x1 CLRF _main_serial_setting_1_1, B 001622 0ee1 movlw 0xe1 MOVLW 0xe1 001624 0100 movlb 0 BANKSEL (_main_serial_setting_1_1 + 1) 001626 6f8c movwf 0x8c, 0x1 MOVWF (_main_serial_setting_1_1 + 1), B ; .line 29; jgjh.c serial_setting.stopbit = 1; 001628 0e01 movlw 0x1 MOVLW 0x01 00162a 0100 movlb 0 BANKSEL (_main_serial_setting_1_1 + 3) 00162c 6f8e movwf 0x8e, 0x1 MOVWF (_main_serial_setting_1_1 + 3), B ; .line 31; jgjh.c spi_setting.mstr_slv = 1; // set Master 00162e 0e01 movlw 0x1 MOVLW 0x01 001630 0100 movlb 0 BANKSEL (_main_spi_setting_1_1 + 4) 001632 6f95 movwf 0x95, 0x1 MOVWF (_main_spi_setting_1_1 + 4), B ; .line 34; jgjh.c SERIAL_initialize(uart, &serial_setting); 001634 0e00 movlw 0 MOVLW HIGH(_main_serial_setting_1_1) 001636 6e01 movwf 0x1, 0 MOVWF r0x01 001638 0e8b movlw 0x8b MOVLW LOW(_main_serial_setting_1_1) 00163a 6e00 movwf 0, 0 MOVWF r0x00 00163c 0e80 movlw 0x80 MOVLW 0x80 00163e 6e02 movwf 0x2, 0 MOVWF r0x02 001640 5002 movf 0x2, 0, 0 MOVF r0x02, W 001642 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001644 5001 movf 0x1, 0, 0 MOVF r0x01, W 001646 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001648 5000 movf 0, 0, 0 MOVF r0x00, W 00164a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00164c 0e00 movlw 0 MOVLW 0x00 00164e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001650 0e00 movlw 0 MOVLW 0x00 001652 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001654 ec4b call 0xa96, 0 CALL _SERIAL_initialize 001656 f005 001658 0e05 movlw 0x5 MOVLW 0x05 00165a 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 35; jgjh.c SERIAL_initialize(spi, &spi_setting); 00165c 0e00 movlw 0 MOVLW HIGH(_main_spi_setting_1_1) 00165e 6e01 movwf 0x1, 0 MOVWF r0x01 001660 0e91 movlw 0x91 MOVLW LOW(_main_spi_setting_1_1) 001662 6e00 movwf 0, 0 MOVWF r0x00 001664 0e80 movlw 0x80 MOVLW 0x80 001666 6e02 movwf 0x2, 0 MOVWF r0x02 001668 5002 movf 0x2, 0, 0 MOVF r0x02, W 00166a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00166c 5001 movf 0x1, 0, 0 MOVF r0x01, W 00166e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001670 5000 movf 0, 0, 0 MOVF r0x00, W 001672 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001674 0e00 movlw 0 MOVLW 0x00 001676 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001678 0e01 movlw 0x1 MOVLW 0x01 00167a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00167c ec4b call 0xa96, 0 CALL _SERIAL_initialize 00167e f005 001680 0e05 movlw 0x5 MOVLW 0x05 001682 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 38; jgjh.c TIMER_setup(tim,&tcon); 001684 0e00 movlw 0 MOVLW HIGH(_main_tcon_1_1) 001686 6e01 movwf 0x1, 0 MOVWF r0x01 001688 0ea4 movlw 0xa4 MOVLW LOW(_main_tcon_1_1) 00168a 6e00 movwf 0, 0 MOVWF r0x00 00168c 0e80 movlw 0x80 MOVLW 0x80 00168e 6e02 movwf 0x2, 0 MOVWF r0x02 001690 5002 movf 0x2, 0, 0 MOVF r0x02, W 001692 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001694 5001 movf 0x1, 0, 0 MOVF r0x01, W 001696 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001698 5000 movf 0, 0, 0 MOVF r0x00, W 00169a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00169c 0e00 movlw 0 MOVLW 0x00 00169e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016a0 ec42 call 0x1a84, 0 CALL _TIMER_setup 0016a2 f00d 0016a4 0e04 movlw 0x4 MOVLW 0x04 0016a6 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 41; jgjh.c INTERRUPTS_init(); 0016a8 ec70 call 0x22e0, 0 CALL _INTERRUPTS_init 0016aa f011 ; .line 43; jgjh.c TRISB = TRISB & 0xfc; // set pin B1 & B0 to output 0016ac 0efc movlw 0xfc MOVLW 0xfc 0016ae 1693 andwf 0x93, 0x1, 0 ANDWF _TRISB, F ; .line 44; jgjh.c LATBbits.LATB1 = 1; 0016b0 828a bsf 0x8a, 0x1, 0 BSF _LATBbits, 1 ; .line 45; jgjh.c LATBbits.LATB0 = 0; 0016b2 908a bcf 0x8a, 0, 0 BCF _LATBbits, 0 ; .line 57; jgjh.c while(1) 0016b4 6ae8 clrf 0xe8, 0 CLRF WREG 0016b6 6ae8 clrf 0xe8, 0 CLRF WREG 0016b8 0e01 movlw 0x1 MOVLW 0x01 0016ba 6e00 movwf 0, 0 MOVWF r0x00 0016bc 6a01 clrf 0x1, 0 CLRF r0x01 _00414_DS_: ; .line 62; jgjh.c if(SERIAL_readable(spi)) // check if data has been received 0016be 0e00 movlw 0 MOVLW 0x00 0016c0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016c2 0e01 movlw 0x1 MOVLW 0x01 0016c4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016c6 ec9a call 0x2134, 0 CALL _SERIAL_readable 0016c8 f010 0016ca 6e02 movwf 0x2, 0 MOVWF r0x02 0016cc 0e02 movlw 0x2 MOVLW 0x02 0016ce 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0016d0 5002 movf 0x2, 0, 0 MOVF r0x02, W 0016d2 e015 bz 0x16fe BZ _00407_DS_ ; .line 64; jgjh.c rxdata = SERIAL_getc(spi); 0016d4 0e00 movlw 0 MOVLW 0x00 0016d6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016d8 0e01 movlw 0x1 MOVLW 0x01 0016da 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016dc ec6d call 0x20da, 0 CALL _SERIAL_getc 0016de f010 0016e0 0100 movlb 0 BANKSEL _rxdata 0016e2 6f89 movwf 0x89, 0x1 MOVWF _rxdata, B 0016e4 0e02 movlw 0x2 MOVLW 0x02 0016e6 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0016e8 0100 movlb 0 BANKSEL _rxdata ; .line 65; jgjh.c SERIAL_putc(uart,rxdata); 0016ea 5189 movf 0x89, 0, 0x1 MOVF _rxdata, W, B 0016ec 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016ee 0e00 movlw 0 MOVLW 0x00 0016f0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016f2 0e00 movlw 0 MOVLW 0x00 0016f4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0016f6 ec3a call 0x2074, 0 CALL _SERIAL_putc 0016f8 f010 0016fa 0e03 movlw 0x3 MOVLW 0x03 0016fc 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F _00407_DS_: ; .line 72; jgjh.c if(SERIAL_readable(uart) == 1) 0016fe 0e00 movlw 0 MOVLW 0x00 001700 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001702 0e00 movlw 0 MOVLW 0x00 001704 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001706 ec9a call 0x2134, 0 CALL _SERIAL_readable 001708 f010 00170a 6e02 movwf 0x2, 0 MOVWF r0x02 00170c 0e02 movlw 0x2 MOVLW 0x02 00170e 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 001710 5002 movf 0x2, 0, 0 MOVF r0x02, W 001712 0a01 xorlw 0x1 XORLW 0x01 001714 e113 bnz 0x173c BNZ _00409_DS_ ; .line 75; jgjh.c temp = SERIAL_getc(uart); 001716 0e00 movlw 0 MOVLW 0x00 001718 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00171a 0e00 movlw 0 MOVLW 0x00 00171c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00171e ec6d call 0x20da, 0 CALL _SERIAL_getc 001720 f010 001722 6e02 movwf 0x2, 0 MOVWF r0x02 001724 0e02 movlw 0x2 MOVLW 0x02 001726 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 78; jgjh.c SERIAL_putc(spi,temp); 001728 5002 movf 0x2, 0, 0 MOVF r0x02, W 00172a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00172c 0e00 movlw 0 MOVLW 0x00 00172e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001730 0e01 movlw 0x1 MOVLW 0x01 001732 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001734 ec3a call 0x2074, 0 CALL _SERIAL_putc 001736 f010 001738 0e03 movlw 0x3 MOVLW 0x03 00173a 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F _00409_DS_: ; .line 83; jgjh.c ACK++; 00173c 2a00 incf 0, 0x1, 0 INCF r0x00, F 00173e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001740 2a01 incf 0x1, 0x1, 0 INCF r0x01, F ; .line 84; jgjh.c if(ACK>15000) 001742 5001 movf 0x1, 0, 0 MOVF r0x01, W 001744 0f80 addlw 0x80 ADDLW 0x80 001746 0f46 addlw 0x46 ADDLW 0x46 001748 e102 bnz 0x174e BNZ _00425_DS_ 00174a 0e99 movlw 0x99 MOVLW 0x99 00174c 5c00 subwf 0, 0, 0 SUBWF r0x00, W _00425_DS_: 00174e e302 bnc 0x1754 BNC _00411_DS_ ; .line 86; jgjh.c LATBbits.LATB0 = 1; 001750 808a bsf 0x8a, 0, 0 BSF _LATBbits, 0 001752 d7b5 bra 0x16be BRA _00414_DS_ _00411_DS_: ; .line 91; jgjh.c LATBbits.LATB0 = 0; 001754 908a bcf 0x8a, 0, 0 BCF _LATBbits, 0 001756 d7b3 bra 0x16be BRA _00414_DS_ 001758 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__HAL_INT_TIMER0_FUNC code _HAL_INT_TIMER0_FUNC: ; .line 100; jgjh.c void HAL_INT_TIMER0_FUNC() 00235c cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00235e ffe5 002360 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 002362 ffd9 ; .line 103; jgjh.c } 002364 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 002366 ffd9 002368 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__INTERRUPTS_runOnce code _INTERRUPTS_runOnce: ; .line 70; interrupts.c void INTERRUPTS_runOnce( void ){} 00236a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00236c ffe5 00236e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 002370 ffd9 002372 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 002374 ffd9 002376 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__INTERRUPTS_init code _INTERRUPTS_init: ; .line 40; interrupts.c int INTERRUPTS_init(void){ 0022e0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0022e2 ffe5 0022e4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0022e6 ffd9 ; .line 55; interrupts.c INTCONbits.TMR0IE = 1; // enable timer 0 interrupts 0022e8 8af2 bsf 0xf2, 0x5, 0 BSF _INTCONbits, 5 ; .line 56; interrupts.c INTCON2bits.TMR0IP = 1; // set high priority 0022ea 84f1 bsf 0xf1, 0x2, 0 BSF _INTCON2bits, 2 ; .line 66; interrupts.c INTCONbits.GIEH = 1; //enable global interrupts 0022ec 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 ; .line 67; interrupts.c return i; 0022ee 6af3 clrf 0xf3, 0 CLRF PRODL 0022f0 0e01 movlw 0x1 MOVLW 0x01 0022f2 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0022f4 ffd9 0022f6 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__isr code _isr: ; .line 18; interrupts.c static void isr(void) __interrupt 1 001ec6 cfe8 movff 0xfe8, 0xfe5 MOVFF WREG, POSTDEC1 001ec8 ffe5 001eca cfd8 movff 0xfd8, 0xfe5 MOVFF STATUS, POSTDEC1 001ecc ffe5 001ece cfe0 movff 0xfe0, 0xfe5 MOVFF BSR, POSTDEC1 001ed0 ffe5 001ed2 cff3 movff 0xff3, 0xfe5 MOVFF PRODL, POSTDEC1 001ed4 ffe5 001ed6 cff4 movff 0xff4, 0xfe5 MOVFF PRODH, POSTDEC1 001ed8 ffe5 001eda cfe9 movff 0xfe9, 0xfe5 MOVFF FSR0L, POSTDEC1 001edc ffe5 001ede cfea movff 0xfea, 0xfe5 MOVFF FSR0H, POSTDEC1 001ee0 ffe5 001ee2 cffa movff 0xffa, 0xfe5 MOVFF PCLATH, POSTDEC1 001ee4 ffe5 001ee6 cffb movff 0xffb, 0xfe5 MOVFF PCLATU, POSTDEC1 001ee8 ffe5 001eea cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001eec ffe5 001eee cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001ef0 ffd9 001ef2 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001ef4 ffe5 ; .line 31; interrupts.c if(INTCONbits.TMR0IF==1) 001ef6 6a00 clrf 0, 0 CLRF r0x00 001ef8 b4f2 btfsc 0xf2, 0x2, 0 BTFSC _INTCONbits, 2 001efa 2a00 incf 0, 0x1, 0 INCF r0x00, F 001efc 5000 movf 0, 0, 0 MOVF r0x00, W 001efe 0a01 xorlw 0x1 XORLW 0x01 001f00 e103 bnz 0x1f08 BNZ _00387_DS_ ; .line 33; interrupts.c HAL_INT_TIMER0_FUNC(); 001f02 ecae call 0x235c, 0 CALL _HAL_INT_TIMER0_FUNC 001f04 f011 ; .line 34; interrupts.c INTCONbits.TMR0IF = 0; // clear flag 001f06 94f2 bcf 0xf2, 0x2, 0 BCF _INTCONbits, 2 _00387_DS_: 001f08 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001f0a f000 001f0c cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001f0e ffd9 001f10 cfe4 movff 0xfe4, 0xffb MOVFF PREINC1, PCLATU 001f12 fffb 001f14 cfe4 movff 0xfe4, 0xffa MOVFF PREINC1, PCLATH 001f16 fffa 001f18 cfe4 movff 0xfe4, 0xfea MOVFF PREINC1, FSR0H 001f1a ffea 001f1c cfe4 movff 0xfe4, 0xfe9 MOVFF PREINC1, FSR0L 001f1e ffe9 001f20 cfe4 movff 0xfe4, 0xff4 MOVFF PREINC1, PRODH 001f22 fff4 001f24 cfe4 movff 0xfe4, 0xff3 MOVFF PREINC1, PRODL 001f26 fff3 001f28 cfe4 movff 0xfe4, 0xfe0 MOVFF PREINC1, BSR 001f2a ffe0 001f2c cfe4 movff 0xfe4, 0xfd8 MOVFF PREINC1, STATUS 001f2e ffd8 001f30 cfe4 movff 0xfe4, 0xfe8 MOVFF PREINC1, WREG 001f32 ffe8 001f34 0010 retfie 0 RETFIE ; ; Starting pCode block S_jgjh__SERIAL_writable code _SERIAL_writable: ; .line 143; serial.c bool SERIAL_writable(SERIAL_handle h) 0021d2 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0021d4 ffe5 0021d6 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0021d8 ffd9 0021da c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0021dc ffe5 0021de c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0021e0 ffe5 0021e2 0e02 movlw 0x2 MOVLW 0x02 0021e4 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0021e6 f000 0021e8 0e03 movlw 0x3 MOVLW 0x03 0021ea cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0021ec f001 ; .line 145; serial.c if(h==0) 0021ee 5000 movf 0, 0, 0 MOVF r0x00, W 0021f0 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 0021f2 e109 bnz 0x2206 BNZ _00379_DS_ ; .line 147; serial.c if(usart_busy()) 0021f4 ecd8 call 0x23b0, 0 CALL _usart_busy 0021f6 f011 0021f8 6e00 movwf 0, 0 MOVWF r0x00 0021fa 5000 movf 0, 0, 0 MOVF r0x00, W 0021fc e002 bz 0x2202 BZ _00376_DS_ ; .line 149; serial.c return 0; // not writable 0021fe 6ae8 clrf 0xe8, 0 CLRF WREG 002200 d003 bra 0x2208 BRA _00380_DS_ _00376_DS_: ; .line 153; serial.c return 1; // writable 002202 0e01 movlw 0x1 MOVLW 0x01 002204 d001 bra 0x2208 BRA _00380_DS_ _00379_DS_: ; .line 157; serial.c return 0; 002206 6ae8 clrf 0xe8, 0 CLRF WREG _00380_DS_: 002208 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00220a f001 00220c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00220e f000 002210 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 002212 ffd9 002214 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__SERIAL_readable code _SERIAL_readable: ; .line 125; serial.c bool SERIAL_readable(SERIAL_handle h) 002134 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 002136 ffe5 002138 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00213a ffd9 00213c c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00213e ffe5 002140 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 002142 ffe5 002144 0e02 movlw 0x2 MOVLW 0x02 002146 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 002148 f000 00214a 0e03 movlw 0x3 MOVLW 0x03 00214c cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 00214e f001 ; .line 127; serial.c if(h == 0) //uart 002150 5000 movf 0, 0, 0 MOVF r0x00, W 002152 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 002154 e106 bnz 0x2162 BNZ _00356_DS_ ; .line 129; serial.c if(PIR1bits.RCIF)return 1; 002156 aa9e btfss 0x9e, 0x5, 0 BTFSS _PIR1bits, 5 002158 d002 bra 0x215e BRA _00353_DS_ 00215a 0e01 movlw 0x1 MOVLW 0x01 00215c d00f bra 0x217c BRA _00362_DS_ _00353_DS_: ; .line 130; serial.c else return 0; 00215e 6ae8 clrf 0xe8, 0 CLRF WREG 002160 d00d bra 0x217c BRA _00362_DS_ _00356_DS_: ; .line 132; serial.c if(h==1) //SPI 002162 5000 movf 0, 0, 0 MOVF r0x00, W 002164 0a01 xorlw 0x1 XORLW 0x01 002166 e102 bnz 0x216c BNZ _00368_DS_ 002168 5001 movf 0x1, 0, 0 MOVF r0x01, W 00216a e001 bz 0x216e BZ _00369_DS_ _00368_DS_: 00216c d006 bra 0x217a BRA _00361_DS_ _00369_DS_: ; .line 134; serial.c if(SSPSTAT & 0x01) return 1; 00216e a0c7 btfss 0xc7, 0, 0 BTFSS _SSPSTAT, 0 002170 d002 bra 0x2176 BRA _00358_DS_ 002172 0e01 movlw 0x1 MOVLW 0x01 002174 d003 bra 0x217c BRA _00362_DS_ _00358_DS_: ; .line 135; serial.c else return 0; 002176 6ae8 clrf 0xe8, 0 CLRF WREG 002178 d001 bra 0x217c BRA _00362_DS_ _00361_DS_: ; .line 138; serial.c return 0; 00217a 6ae8 clrf 0xe8, 0 CLRF WREG _00362_DS_: 00217c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00217e f001 002180 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 002182 f000 002184 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 002186 ffd9 002188 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__SERIAL_write code _SERIAL_write: ; .line 112; serial.c void SERIAL_write(SERIAL_handle h,SERIAL_datatype *t, int n) 001980 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001982 ffe5 001984 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001986 ffd9 001988 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00198a ffe5 00198c c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00198e ffe5 001990 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001992 ffe5 001994 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001996 ffe5 001998 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 00199a ffe5 00199c c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 00199e ffe5 0019a0 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 0019a2 ffe5 0019a4 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0019a6 ffe5 0019a8 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 0019aa ffe5 0019ac c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 0019ae ffe5 0019b0 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 0019b2 ffe5 0019b4 c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 0019b6 ffe5 0019b8 0e02 movlw 0x2 MOVLW 0x02 0019ba cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0019bc f000 0019be 0e03 movlw 0x3 MOVLW 0x03 0019c0 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0019c2 f001 0019c4 0e04 movlw 0x4 MOVLW 0x04 0019c6 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 0019c8 f002 0019ca 0e05 movlw 0x5 MOVLW 0x05 0019cc cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 0019ce f003 0019d0 0e06 movlw 0x6 MOVLW 0x06 0019d2 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 0019d4 f004 0019d6 0e07 movlw 0x7 MOVLW 0x07 0019d8 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 0019da f005 0019dc 0e08 movlw 0x8 MOVLW 0x08 0019de cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 0019e0 f006 ; .line 116; serial.c if(h==0 || h==1) // will spi pose a problem by overwriting previous data?. 0019e2 5000 movf 0, 0, 0 MOVF r0x00, W 0019e4 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 0019e6 e006 bz 0x19f4 BZ _00343_DS_ 0019e8 5000 movf 0, 0, 0 MOVF r0x00, W 0019ea 0a01 xorlw 0x1 XORLW 0x01 0019ec e102 bnz 0x19f2 BNZ _00345_DS_ 0019ee 5001 movf 0x1, 0, 0 MOVF r0x01, W 0019f0 e001 bz 0x19f4 BZ _00343_DS_ _00345_DS_: 0019f2 d02d bra 0x1a4e BRA _00339_DS_ _00343_DS_: ; .line 118; serial.c for( i = 0; ibaud))/(ucon->baud)/4 - 1) <= 255) 000b00 c002 movff 0x2, 0xfe9 MOVFF r0x02, FSR0L 000b02 ffe9 000b04 c003 movff 0x3, 0xff3 MOVFF r0x03, PRODL 000b06 fff3 000b08 5004 movf 0x4, 0, 0 MOVF r0x04, W 000b0a ec27 call 0x224e, 0 CALL __gptrget2 000b0c f011 000b0e 6e05 movwf 0x5, 0 MOVWF r0x05 000b10 cff3 movff 0xff3, 0x6 MOVFF PRODL, r0x06 000b12 f006 000b14 5006 movf 0x6, 0, 0 MOVF r0x06, W 000b16 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b18 5005 movf 0x5, 0, 0 MOVF r0x05, W 000b1a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b1c 0e00 movlw 0 MOVLW 0x00 000b1e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b20 0e02 movlw 0x2 MOVLW 0x02 000b22 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b24 ecf6 call 0x1bec, 0 CALL __mulint 000b26 f00d 000b28 6e07 movwf 0x7, 0 MOVWF r0x07 000b2a cff3 movff 0xff3, 0x8 MOVFF PRODL, r0x08 000b2c f008 000b2e 0e04 movlw 0x4 MOVLW 0x04 000b30 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000b32 6a09 clrf 0x9, 0 CLRF r0x09 000b34 6a0a clrf 0xa, 0 CLRF r0x0a 000b36 0e40 movlw 0x40 MOVLW 0x40 000b38 2607 addwf 0x7, 0x1, 0 ADDWF r0x07, F 000b3a 0e4b movlw 0x4b MOVLW 0x4b 000b3c 2208 addwfc 0x8, 0x1, 0 ADDWFC r0x08, F 000b3e 0e4c movlw 0x4c MOVLW 0x4c 000b40 2209 addwfc 0x9, 0x1, 0 ADDWFC r0x09, F 000b42 0e00 movlw 0 MOVLW 0x00 000b44 220a addwfc 0xa, 0x1, 0 ADDWFC r0x0a, F 000b46 c005 movff 0x5, 0xb MOVFF r0x05, r0x0b 000b48 f00b 000b4a c006 movff 0x6, 0xc MOVFF r0x06, r0x0c 000b4c f00c 000b4e 6a0d clrf 0xd, 0 CLRF r0x0d 000b50 6a0e clrf 0xe, 0 CLRF r0x0e 000b52 500e movf 0xe, 0, 0 MOVF r0x0e, W 000b54 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b56 500d movf 0xd, 0, 0 MOVF r0x0d, W 000b58 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b5a 500c movf 0xc, 0, 0 MOVF r0x0c, W 000b5c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b5e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000b60 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b62 500a movf 0xa, 0, 0 MOVF r0x0a, W 000b64 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b66 5009 movf 0x9, 0, 0 MOVF r0x09, W 000b68 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b6a 5008 movf 0x8, 0, 0 MOVF r0x08, W 000b6c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b6e 5007 movf 0x7, 0, 0 MOVF r0x07, W 000b70 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b72 ec65 call 0x12ca, 0 CALL __divslong 000b74 f009 000b76 6e07 movwf 0x7, 0 MOVWF r0x07 000b78 cff3 movff 0xff3, 0x8 MOVFF PRODL, r0x08 000b7a f008 000b7c cff4 movff 0xff4, 0x9 MOVFF PRODH, r0x09 000b7e f009 000b80 cfe9 movff 0xfe9, 0xa MOVFF FSR0L, r0x0a 000b82 f00a 000b84 0e08 movlw 0x8 MOVLW 0x08 000b86 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000b88 0e00 movlw 0 MOVLW 0x00 000b8a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b8c 0e00 movlw 0 MOVLW 0x00 000b8e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b90 0e00 movlw 0 MOVLW 0x00 000b92 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b94 0e04 movlw 0x4 MOVLW 0x04 000b96 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b98 500a movf 0xa, 0, 0 MOVF r0x0a, W 000b9a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b9c 5009 movf 0x9, 0, 0 MOVF r0x09, W 000b9e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ba0 5008 movf 0x8, 0, 0 MOVF r0x08, W 000ba2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ba4 5007 movf 0x7, 0, 0 MOVF r0x07, W 000ba6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ba8 ec65 call 0x12ca, 0 CALL __divslong 000baa f009 000bac 6e07 movwf 0x7, 0 MOVWF r0x07 000bae cff3 movff 0xff3, 0x8 MOVFF PRODL, r0x08 000bb0 f008 000bb2 cff4 movff 0xff4, 0x9 MOVFF PRODH, r0x09 000bb4 f009 000bb6 cfe9 movff 0xfe9, 0xa MOVFF FSR0L, r0x0a 000bb8 f00a 000bba 0e08 movlw 0x8 MOVLW 0x08 000bbc 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000bbe 0eff movlw 0xff MOVLW 0xff 000bc0 2607 addwf 0x7, 0x1, 0 ADDWF r0x07, F 000bc2 0eff movlw 0xff MOVLW 0xff 000bc4 2208 addwfc 0x8, 0x1, 0 ADDWFC r0x08, F 000bc6 0eff movlw 0xff MOVLW 0xff 000bc8 2209 addwfc 0x9, 0x1, 0 ADDWFC r0x09, F 000bca 0eff movlw 0xff MOVLW 0xff 000bcc 220a addwfc 0xa, 0x1, 0 ADDWFC r0x0a, F 000bce 500a movf 0xa, 0, 0 MOVF r0x0a, W 000bd0 0f80 addlw 0x80 ADDLW 0x80 000bd2 0f80 addlw 0x80 ADDLW 0x80 000bd4 e108 bnz 0xbe6 BNZ _00289_DS_ 000bd6 0e00 movlw 0 MOVLW 0x00 000bd8 5c09 subwf 0x9, 0, 0 SUBWF r0x09, W 000bda e105 bnz 0xbe6 BNZ _00289_DS_ 000bdc 0e01 movlw 0x1 MOVLW 0x01 000bde 5c08 subwf 0x8, 0, 0 SUBWF r0x08, W 000be0 e102 bnz 0xbe6 BNZ _00289_DS_ 000be2 0e00 movlw 0 MOVLW 0x00 000be4 5c07 subwf 0x7, 0, 0 SUBWF r0x07, W _00289_DS_: 000be6 e20a bc 0xbfc BC _00274_DS_ ; .line 20; serial.c USART_BRGH_HIGH, BAUD_SPBRG); 000be8 5008 movf 0x8, 0, 0 MOVF r0x08, W 000bea 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000bec 5007 movf 0x7, 0, 0 MOVF r0x07, W 000bee 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000bf0 0e3c movlw 0x3c MOVLW 0x3c 000bf2 ec20 call 0x1e40, 0 CALL _usart_open 000bf4 f00f 000bf6 0e02 movlw 0x2 MOVLW 0x02 000bf8 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000bfa d064 bra 0xcc4 BRA _00275_DS_ _00274_DS_: ; .line 25; serial.c BAUD_SPBRG = (INSTR_FREQ+8*ucon->baud)/ucon->baud/16 - 1; 000bfc 5006 movf 0x6, 0, 0 MOVF r0x06, W 000bfe 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c00 5005 movf 0x5, 0, 0 MOVF r0x05, W 000c02 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c04 0e00 movlw 0 MOVLW 0x00 000c06 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c08 0e08 movlw 0x8 MOVLW 0x08 000c0a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c0c ecf6 call 0x1bec, 0 CALL __mulint 000c0e f00d 000c10 6e05 movwf 0x5, 0 MOVWF r0x05 000c12 cff3 movff 0xff3, 0x6 MOVFF PRODL, r0x06 000c14 f006 000c16 0e04 movlw 0x4 MOVLW 0x04 000c18 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000c1a 6a09 clrf 0x9, 0 CLRF r0x09 000c1c 6a0a clrf 0xa, 0 CLRF r0x0a 000c1e 0e40 movlw 0x40 MOVLW 0x40 000c20 2605 addwf 0x5, 0x1, 0 ADDWF r0x05, F 000c22 0e4b movlw 0x4b MOVLW 0x4b 000c24 2206 addwfc 0x6, 0x1, 0 ADDWFC r0x06, F 000c26 0e4c movlw 0x4c MOVLW 0x4c 000c28 2209 addwfc 0x9, 0x1, 0 ADDWFC r0x09, F 000c2a 0e00 movlw 0 MOVLW 0x00 000c2c 220a addwfc 0xa, 0x1, 0 ADDWFC r0x0a, F 000c2e 500e movf 0xe, 0, 0 MOVF r0x0e, W 000c30 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c32 500d movf 0xd, 0, 0 MOVF r0x0d, W 000c34 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c36 500c movf 0xc, 0, 0 MOVF r0x0c, W 000c38 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c3a 500b movf 0xb, 0, 0 MOVF r0x0b, W 000c3c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c3e 500a movf 0xa, 0, 0 MOVF r0x0a, W 000c40 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c42 5009 movf 0x9, 0, 0 MOVF r0x09, W 000c44 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c46 5006 movf 0x6, 0, 0 MOVF r0x06, W 000c48 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c4a 5005 movf 0x5, 0, 0 MOVF r0x05, W 000c4c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c4e ec65 call 0x12ca, 0 CALL __divslong 000c50 f009 000c52 6e05 movwf 0x5, 0 MOVWF r0x05 000c54 cff3 movff 0xff3, 0x6 MOVFF PRODL, r0x06 000c56 f006 000c58 cff4 movff 0xff4, 0x9 MOVFF PRODH, r0x09 000c5a f009 000c5c cfe9 movff 0xfe9, 0xa MOVFF FSR0L, r0x0a 000c5e f00a 000c60 0e08 movlw 0x8 MOVLW 0x08 000c62 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000c64 0e00 movlw 0 MOVLW 0x00 000c66 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c68 0e00 movlw 0 MOVLW 0x00 000c6a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c6c 0e00 movlw 0 MOVLW 0x00 000c6e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c70 0e10 movlw 0x10 MOVLW 0x10 000c72 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c74 500a movf 0xa, 0, 0 MOVF r0x0a, W 000c76 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c78 5009 movf 0x9, 0, 0 MOVF r0x09, W 000c7a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c7c 5006 movf 0x6, 0, 0 MOVF r0x06, W 000c7e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c80 5005 movf 0x5, 0, 0 MOVF r0x05, W 000c82 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c84 ec65 call 0x12ca, 0 CALL __divslong 000c86 f009 000c88 6e05 movwf 0x5, 0 MOVWF r0x05 000c8a cff3 movff 0xff3, 0x6 MOVFF PRODL, r0x06 000c8c f006 000c8e cff4 movff 0xff4, 0x9 MOVFF PRODH, r0x09 000c90 f009 000c92 cfe9 movff 0xfe9, 0xa MOVFF FSR0L, r0x0a 000c94 f00a 000c96 0e08 movlw 0x8 MOVLW 0x08 000c98 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000c9a 0eff movlw 0xff MOVLW 0xff 000c9c 2605 addwf 0x5, 0x1, 0 ADDWF r0x05, F 000c9e 0eff movlw 0xff MOVLW 0xff 000ca0 2206 addwfc 0x6, 0x1, 0 ADDWFC r0x06, F 000ca2 0eff movlw 0xff MOVLW 0xff 000ca4 2209 addwfc 0x9, 0x1, 0 ADDWFC r0x09, F 000ca6 0eff movlw 0xff MOVLW 0xff 000ca8 220a addwfc 0xa, 0x1, 0 ADDWFC r0x0a, F 000caa 5005 movf 0x5, 0, 0 MOVF r0x05, W 000cac 6e07 movwf 0x7, 0 MOVWF r0x07 000cae 5006 movf 0x6, 0, 0 MOVF r0x06, W 000cb0 6e08 movwf 0x8, 0 MOVWF r0x08 ; .line 31; serial.c USART_BRGH_LOW, BAUD_SPBRG); 000cb2 5008 movf 0x8, 0, 0 MOVF r0x08, W 000cb4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cb6 5007 movf 0x7, 0, 0 MOVF r0x07, W 000cb8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cba 0e2c movlw 0x2c MOVLW 0x2c 000cbc ec20 call 0x1e40, 0 CALL _usart_open 000cbe f00f 000cc0 0e02 movlw 0x2 MOVLW 0x02 000cc2 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F _00275_DS_: ; .line 34; serial.c usart_putc(13); 000cc4 0e0d movlw 0xd MOVLW 0x0d 000cc6 eca6 call 0x234c, 0 CALL _usart_putc 000cc8 f011 ; .line 35; serial.c RCSTAbits.SPEN = 1; //enable uart 000cca 8eab bsf 0xab, 0x7, 0 BSF _RCSTAbits, 7 ; .line 36; serial.c RCSTAbits.CREN = 1; // continous receive enable 000ccc 88ab bsf 0xab, 0x4, 0 BSF _RCSTAbits, 4 ; .line 37; serial.c return 1; 000cce 6af3 clrf 0xf3, 0 CLRF PRODL 000cd0 0e01 movlw 0x1 MOVLW 0x01 000cd2 d028 bra 0xd24 BRA _00283_DS_ _00277_DS_: ; .line 42; serial.c if(h==1) // SPI 000cd4 5000 movf 0, 0, 0 MOVF r0x00, W 000cd6 0a01 xorlw 0x1 XORLW 0x01 000cd8 e102 bnz 0xcde BNZ _00290_DS_ 000cda 5001 movf 0x1, 0, 0 MOVF r0x01, W 000cdc e001 bz 0xce0 BZ _00291_DS_ _00290_DS_: 000cde d020 bra 0xd20 BRA _00282_DS_ _00291_DS_: ; .line 45; serial.c if(ucon->mstr_slv) 000ce0 0e04 movlw 0x4 MOVLW 0x04 000ce2 2602 addwf 0x2, 0x1, 0 ADDWF r0x02, F 000ce4 0e00 movlw 0 MOVLW 0x00 000ce6 2203 addwfc 0x3, 0x1, 0 ADDWFC r0x03, F 000ce8 0e00 movlw 0 MOVLW 0x00 000cea 2204 addwfc 0x4, 0x1, 0 ADDWFC r0x04, F 000cec c002 movff 0x2, 0xfe9 MOVFF r0x02, FSR0L 000cee ffe9 000cf0 c003 movff 0x3, 0xff3 MOVFF r0x03, PRODL 000cf2 fff3 000cf4 5004 movf 0x4, 0, 0 MOVF r0x04, W 000cf6 ec51 call 0x22a2, 0 CALL __gptrget1 000cf8 f011 000cfa 6e02 movwf 0x2, 0 MOVWF r0x02 000cfc 5002 movf 0x2, 0, 0 MOVF r0x02, W 000cfe e007 bz 0xd0e BZ _00279_DS_ ; .line 48; serial.c TRISCbits.TRISC5 = 0; // serial data out SDO 000d00 9a94 bcf 0x94, 0x5, 0 BCF _TRISCbits, 5 ; .line 49; serial.c TRISCbits.TRISC4 = 1; //SDI 000d02 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 50; serial.c TRISCbits.TRISC3 = 0; // SCK 000d04 9694 bcf 0x94, 0x3, 0 BCF _TRISCbits, 3 ; .line 52; serial.c SSPSTAT = 0; // set data sampled at middle & CKE = 0 000d06 6ac7 clrf 0xc7, 0 CLRF _SSPSTAT ; .line 53; serial.c SSPCON1 = 0x21; // Master mode Fosc/16, enable SPI 000d08 0e21 movlw 0x21 MOVLW 0x21 000d0a 6ec6 movwf 0xc6, 0 MOVWF _SSPCON1 000d0c d006 bra 0xd1a BRA _00280_DS_ _00279_DS_: ; .line 58; serial.c TRISCbits.TRISC5 = 0; // serial data out SDO 000d0e 9a94 bcf 0x94, 0x5, 0 BCF _TRISCbits, 5 ; .line 59; serial.c TRISCbits.TRISC4 = 1; //SDI 000d10 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 60; serial.c TRISCbits.TRISC3 = 1; // SCK set as input for slave 000d12 8694 bsf 0x94, 0x3, 0 BSF _TRISCbits, 3 ; .line 62; serial.c SSPSTAT = 0; // set data sampled at middle & CKE = 0 000d14 6ac7 clrf 0xc7, 0 CLRF _SSPSTAT ; .line 63; serial.c SSPCON1 = 0x25; // Slave mode,SS disabled enable SPI 000d16 0e25 movlw 0x25 MOVLW 0x25 000d18 6ec6 movwf 0xc6, 0 MOVWF _SSPCON1 _00280_DS_: ; .line 66; serial.c return 1; 000d1a 6af3 clrf 0xf3, 0 CLRF PRODL 000d1c 0e01 movlw 0x1 MOVLW 0x01 000d1e d002 bra 0xd24 BRA _00283_DS_ _00282_DS_: ; .line 72; serial.c return 0; // not able to find the correct serial channel 000d20 6af3 clrf 0xf3, 0 CLRF PRODL 000d22 6ae8 clrf 0xe8, 0 CLRF WREG _00283_DS_: 000d24 cfe4 movff 0xfe4, 0xe MOVFF PREINC1, r0x0e 000d26 f00e 000d28 cfe4 movff 0xfe4, 0xd MOVFF PREINC1, r0x0d 000d2a f00d 000d2c cfe4 movff 0xfe4, 0xc MOVFF PREINC1, r0x0c 000d2e f00c 000d30 cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 000d32 f00b 000d34 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 000d36 f00a 000d38 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 000d3a f009 000d3c cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 000d3e f008 000d40 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 000d42 f007 000d44 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000d46 f006 000d48 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000d4a f005 000d4c cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000d4e f004 000d50 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000d52 f003 000d54 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000d56 f002 000d58 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000d5a f001 000d5c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000d5e f000 000d60 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000d62 ffd9 000d64 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__HAL_write_eeprom_byte code _HAL_write_eeprom_byte: ; .line 14; eeprom.c void HAL_write_eeprom_byte(uint8_t addr, uint8_t dat) 001f36 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001f38 ffe5 001f3a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001f3c ffd9 001f3e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001f40 ffe5 001f42 0e02 movlw 0x2 MOVLW 0x02 001f44 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001f46 f000 001f48 0e03 movlw 0x3 MOVLW 0x03 001f4a cfdb movff 0xfdb, 0xfa8 MOVFF PLUSW2, _EEDATA 001f4c ffa8 ; .line 17; eeprom.c EEADR = addr; 001f4e c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 001f50 ffa9 ; .line 19; eeprom.c EECON1bits.EEPGD = 0; 001f52 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 20; eeprom.c EECON1bits.CFGS = 0; 001f54 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 21; eeprom.c EECON1bits.WREN = 1; // enable writes to data EEPROM 001f56 84a6 bsf 0xa6, 0x2, 0 BSF _EECON1bits, 2 ; .line 22; eeprom.c INTCONbits.GIE = 0; // disable interrupts 001f58 9ef2 bcf 0xf2, 0x7, 0 BCF _INTCONbits, 7 ; .line 23; eeprom.c EECON2 = 0x55; 001f5a 0e55 movlw 0x55 MOVLW 0x55 001f5c 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 24; eeprom.c EECON2 = 0x0AA; 001f5e 0eaa movlw 0xaa MOVLW 0xaa 001f60 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 25; eeprom.c EECON1bits.WR = 1; // start writing 001f62 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00257_DS_: ; .line 26; eeprom.c while(EECON1bits.WR){ 001f64 a2a6 btfss 0xa6, 0x1, 0 BTFSS _EECON1bits, 1 001f66 d002 bra 0x1f6c BRA _00259_DS_ 001f68 0000 nop nop 001f6a d7fc bra 0x1f64 BRA _00257_DS_ _00259_DS_: ; .line 28; eeprom.c if(EECON1bits.WRERR){ 001f6c a6a6 btfss 0xa6, 0x3, 0 BTFSS _EECON1bits, 3 001f6e d013 bra 0x1f96 BRA _00267_DS_ ; .line 29; eeprom.c usart_putc('E'); 001f70 0e45 movlw 0x45 MOVLW 0x45 001f72 eca6 call 0x234c, 0 CALL _usart_putc 001f74 f011 _00260_DS_: ; .line 30; eeprom.c while(usart_busy()); 001f76 ecd8 call 0x23b0, 0 CALL _usart_busy 001f78 f011 001f7a 6e00 movwf 0, 0 MOVWF r0x00 001f7c 5000 movf 0, 0, 0 MOVF r0x00, W 001f7e e1fb bnz 0x1f76 BNZ _00260_DS_ ; .line 31; eeprom.c usart_putc('R'); 001f80 0e52 movlw 0x52 MOVLW 0x52 001f82 eca6 call 0x234c, 0 CALL _usart_putc 001f84 f011 _00263_DS_: ; .line 32; eeprom.c while(usart_busy()); 001f86 ecd8 call 0x23b0, 0 CALL _usart_busy 001f88 f011 001f8a 6e00 movwf 0, 0 MOVWF r0x00 001f8c 5000 movf 0, 0, 0 MOVF r0x00, W 001f8e e1fb bnz 0x1f86 BNZ _00263_DS_ ; .line 33; eeprom.c usart_putc('R'); 001f90 0e52 movlw 0x52 MOVLW 0x52 001f92 eca6 call 0x234c, 0 CALL _usart_putc 001f94 f011 _00267_DS_: ; .line 36; eeprom.c EECON1bits.WREN = 0; 001f96 94a6 bcf 0xa6, 0x2, 0 BCF _EECON1bits, 2 ; .line 37; eeprom.c INTCONbits.GIE = 1; // enable interrupts 001f98 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 001f9a cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001f9c f000 001f9e cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001fa0 ffd9 001fa2 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__HAL_read_eeprom_byte code _HAL_read_eeprom_byte: ; .line 4; eeprom.c uint8_t HAL_read_eeprom_byte(uint8_t addr) 0022c4 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0022c6 ffe5 0022c8 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0022ca ffd9 0022cc 0e02 movlw 0x2 MOVLW 0x02 0022ce cfdb movff 0xfdb, 0xfa9 MOVFF PLUSW2, _EEADR 0022d0 ffa9 ; .line 7; eeprom.c EECON1bits.CFGS = 0; 0022d2 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 8; eeprom.c EECON1bits.EEPGD = 0; 0022d4 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 9; eeprom.c EECON1bits.RD = 1; 0022d6 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 10; eeprom.c return EEDATA; 0022d8 50a8 movf 0xa8, 0, 0 MOVF _EEDATA, W 0022da cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0022dc ffd9 0022de 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__EEPROM_memset code _EEPROM_memset: ; .line 29; eeprom.h static uint8_t EEPROM_memset( uint8_t addr, void *src, uint8_t len ) { 001b4c cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001b4e ffe5 001b50 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001b52 ffd9 001b54 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001b56 ffe5 001b58 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001b5a ffe5 001b5c c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001b5e ffe5 001b60 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001b62 ffe5 001b64 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 001b66 ffe5 001b68 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 001b6a ffe5 001b6c c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 001b6e ffe5 001b70 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 001b72 ffe5 001b74 0e02 movlw 0x2 MOVLW 0x02 001b76 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001b78 f000 001b7a 0e03 movlw 0x3 MOVLW 0x03 001b7c cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 001b7e f001 001b80 0e04 movlw 0x4 MOVLW 0x04 001b82 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 001b84 f002 001b86 0e05 movlw 0x5 MOVLW 0x05 001b88 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 001b8a f003 001b8c 0e06 movlw 0x6 MOVLW 0x06 001b8e cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 001b90 f004 ; .line 31; eeprom.h for (i=0; iID, msg->buf, msg->len, 0018b6 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0018b8 ffe9 0018ba c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0018bc fff3 0018be 5002 movf 0x2, 0, 0 MOVF r0x02, W 0018c0 ec27 call 0x224e, 0 CALL __gptrget2 0018c2 f011 0018c4 6e03 movwf 0x3, 0 MOVWF r0x03 0018c6 cff3 movff 0xff3, 0x4 MOVFF PRODL, r0x04 0018c8 f004 0018ca 6a05 clrf 0x5, 0 CLRF r0x05 0018cc 6a06 clrf 0x6, 0 CLRF r0x06 0018ce 5000 movf 0, 0, 0 MOVF r0x00, W 0018d0 0f03 addlw 0x3 ADDLW 0x03 0018d2 6e07 movwf 0x7, 0 MOVWF r0x07 0018d4 0e00 movlw 0 MOVLW 0x00 0018d6 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0018d8 6e08 movwf 0x8, 0 MOVWF r0x08 0018da 0e00 movlw 0 MOVLW 0x00 0018dc 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 0018de 6e09 movwf 0x9, 0 MOVWF r0x09 0018e0 0e02 movlw 0x2 MOVLW 0x02 0018e2 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 0018e4 0e00 movlw 0 MOVLW 0x00 0018e6 2201 addwfc 0x1, 0x1, 0 ADDWFC r0x01, F 0018e8 0e00 movlw 0 MOVLW 0x00 0018ea 2202 addwfc 0x2, 0x1, 0 ADDWFC r0x02, F 0018ec c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0018ee ffe9 0018f0 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0018f2 fff3 0018f4 5002 movf 0x2, 0, 0 MOVF r0x02, W 0018f6 ec51 call 0x22a2, 0 CALL __gptrget1 0018f8 f011 0018fa 6e00 movwf 0, 0 MOVWF r0x00 ; .line 78; can.c ECAN_TX_PRIORITY_0 & ECAN_TX_STD_FRAME & ECAN_TX_NO_RTR_FRAME); 0018fc 0e00 movlw 0 MOVLW 0x00 0018fe 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001900 5000 movf 0, 0, 0 MOVF r0x00, W 001902 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001904 5009 movf 0x9, 0, 0 MOVF r0x09, W 001906 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001908 5008 movf 0x8, 0, 0 MOVF r0x08, W 00190a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00190c 5007 movf 0x7, 0, 0 MOVF r0x07, W 00190e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001910 5006 movf 0x6, 0, 0 MOVF r0x06, W 001912 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001914 5005 movf 0x5, 0, 0 MOVF r0x05, W 001916 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001918 5004 movf 0x4, 0, 0 MOVF r0x04, W 00191a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00191c 5003 movf 0x3, 0, 0 MOVF r0x03, W 00191e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001920 ecd8 call 0x7b0, 0 CALL _ECANSendMessage 001922 f003 001924 6e00 movwf 0, 0 MOVWF r0x00 001926 0e09 movlw 0x9 MOVLW 0x09 001928 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 00192a 6a01 clrf 0x1, 0 CLRF r0x01 ; .line 80; can.c if (rc) 00192c 5000 movf 0, 0, 0 MOVF r0x00, W 00192e 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 001930 e007 bz 0x1940 BZ _00187_DS_ ; .line 81; can.c CAN_status1.tx++; 001932 c097 movff 0x97, 0x2 MOVFF _CAN_status1, r0x02 001934 f002 001936 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 001938 5002 movf 0x2, 0, 0 MOVF r0x02, W 00193a 0100 movlb 0 BANKSEL _CAN_status1 00193c 6f97 movwf 0x97, 0x1 MOVWF _CAN_status1, B 00193e d006 bra 0x194c BRA _00188_DS_ _00187_DS_: ; .line 83; can.c CAN_status1.txError++; 001940 c098 movff 0x98, 0x2 MOVFF (_CAN_status1 + 1), r0x02 001942 f002 001944 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 001946 5002 movf 0x2, 0, 0 MOVF r0x02, W 001948 0100 movlb 0 BANKSEL (_CAN_status1 + 1) 00194a 6f98 movwf 0x98, 0x1 MOVWF (_CAN_status1 + 1), B _00188_DS_: ; .line 85; can.c return rc; 00194c c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00194e fff3 001950 5000 movf 0, 0, 0 MOVF r0x00, W 001952 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 001954 f009 001956 cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 001958 f008 00195a cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 00195c f007 00195e cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 001960 f006 001962 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 001964 f005 001966 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 001968 f004 00196a cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 00196c f003 00196e cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001970 f002 001972 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001974 f001 001976 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001978 f000 00197a cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00197c ffd9 00197e 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__CAN_recv code _CAN_recv: ; .line 43; can.c int CAN_recv( struct CAN_msg *msg ) { 001478 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00147a ffe5 00147c cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00147e ffd9 001480 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001482 ffe5 001484 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001486 ffe5 001488 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00148a ffe5 00148c c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00148e ffe5 001490 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 001492 ffe5 001494 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 001496 ffe5 001498 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 00149a ffe5 00149c c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00149e ffe5 0014a0 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 0014a2 ffe5 0014a4 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 0014a6 ffe5 0014a8 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 0014aa ffe5 0014ac c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 0014ae ffe5 0014b0 c00c movff 0xc, 0xfe5 MOVFF r0x0c, POSTDEC1 0014b2 ffe5 0014b4 c00d movff 0xd, 0xfe5 MOVFF r0x0d, POSTDEC1 0014b6 ffe5 0014b8 c00e movff 0xe, 0xfe5 MOVFF r0x0e, POSTDEC1 0014ba ffe5 0014bc 0e02 movlw 0x2 MOVLW 0x02 0014be cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0014c0 f000 0014c2 0e03 movlw 0x3 MOVLW 0x03 0014c4 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0014c6 f001 0014c8 0e04 movlw 0x4 MOVLW 0x04 0014ca cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 0014cc f002 ; .line 55; can.c if (!ECANReceiveMessage ((unsigned long *)&temp, msg->buf, &msg->len, &flags)) 0014ce 0e00 movlw 0 MOVLW HIGH(_CAN_recv_temp_1_1) 0014d0 6e04 movwf 0x4, 0 MOVWF r0x04 0014d2 0e9c movlw 0x9c MOVLW LOW(_CAN_recv_temp_1_1) 0014d4 6e03 movwf 0x3, 0 MOVWF r0x03 0014d6 0e80 movlw 0x80 MOVLW 0x80 0014d8 6e05 movwf 0x5, 0 MOVWF r0x05 0014da 5000 movf 0, 0, 0 MOVF r0x00, W 0014dc 0f03 addlw 0x3 ADDLW 0x03 0014de 6e06 movwf 0x6, 0 MOVWF r0x06 0014e0 0e00 movlw 0 MOVLW 0x00 0014e2 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0014e4 6e07 movwf 0x7, 0 MOVWF r0x07 0014e6 0e00 movlw 0 MOVLW 0x00 0014e8 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 0014ea 6e08 movwf 0x8, 0 MOVWF r0x08 0014ec 5000 movf 0, 0, 0 MOVF r0x00, W 0014ee 0f02 addlw 0x2 ADDLW 0x02 0014f0 6e09 movwf 0x9, 0 MOVWF r0x09 0014f2 0e00 movlw 0 MOVLW 0x00 0014f4 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0014f6 6e0a movwf 0xa, 0 MOVWF r0x0a 0014f8 0e00 movlw 0 MOVLW 0x00 0014fa 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 0014fc 6e0b movwf 0xb, 0 MOVWF r0x0b 0014fe 0e00 movlw 0 MOVLW HIGH(_CAN_recv_flags_1_1) 001500 6e0d movwf 0xd, 0 MOVWF r0x0d 001502 0eac movlw 0xac MOVLW LOW(_CAN_recv_flags_1_1) 001504 6e0c movwf 0xc, 0 MOVWF r0x0c 001506 0e80 movlw 0x80 MOVLW 0x80 001508 6e0e movwf 0xe, 0 MOVWF r0x0e 00150a 500e movf 0xe, 0, 0 MOVF r0x0e, W 00150c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00150e 500d movf 0xd, 0, 0 MOVF r0x0d, W 001510 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001512 500c movf 0xc, 0, 0 MOVF r0x0c, W 001514 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001516 500b movf 0xb, 0, 0 MOVF r0x0b, W 001518 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00151a 500a movf 0xa, 0, 0 MOVF r0x0a, W 00151c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00151e 5009 movf 0x9, 0, 0 MOVF r0x09, W 001520 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001522 5008 movf 0x8, 0, 0 MOVF r0x08, W 001524 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001526 5007 movf 0x7, 0, 0 MOVF r0x07, W 001528 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00152a 5006 movf 0x6, 0, 0 MOVF r0x06, W 00152c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00152e 5005 movf 0x5, 0, 0 MOVF r0x05, W 001530 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001532 5004 movf 0x4, 0, 0 MOVF r0x04, W 001534 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001536 5003 movf 0x3, 0, 0 MOVF r0x03, W 001538 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00153a ec06 call 0xc, 0 CALL _ECANReceiveMessage 00153c f000 00153e 6e03 movwf 0x3, 0 MOVWF r0x03 001540 0e0c movlw 0xc MOVLW 0x0c 001542 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 001544 5003 movf 0x3, 0, 0 MOVF r0x03, W 001546 e103 bnz 0x154e BNZ _00170_DS_ ; .line 56; can.c return 0; 001548 6af3 clrf 0xf3, 0 CLRF PRODL 00154a 6ae8 clrf 0xe8, 0 CLRF WREG 00154c d042 bra 0x15d2 BRA _00175_DS_ _00170_DS_: 00154e 0100 movlb 0 BANKSEL _CAN_recv_temp_1_1 ; .line 57; can.c msg->ID = (uint16_t) temp; 001550 519c movf 0x9c, 0, 0x1 MOVF _CAN_recv_temp_1_1, W, B 001552 6e03 movwf 0x3, 0 MOVWF r0x03 001554 0100 movlb 0 BANKSEL (_CAN_recv_temp_1_1 + 1) 001556 519d movf 0x9d, 0, 0x1 MOVF (_CAN_recv_temp_1_1 + 1), W, B 001558 6e04 movwf 0x4, 0 MOVWF r0x04 00155a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00155c ffe5 00155e c004 movff 0x4, 0xff4 MOVFF r0x04, PRODH 001560 fff4 001562 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 001564 ffe9 001566 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001568 fff3 00156a 5002 movf 0x2, 0, 0 MOVF r0x02, W 00156c ec88 call 0x2310, 0 CALL __gptrput2 00156e f011 ; .line 58; can.c CAN_status1.rx ++; 001570 c099 movff 0x99, 0x3 MOVFF (_CAN_status1 + 2), r0x03 001572 f003 001574 2a03 incf 0x3, 0x1, 0 INCF r0x03, F 001576 5003 movf 0x3, 0, 0 MOVF r0x03, W 001578 0100 movlb 0 BANKSEL (_CAN_status1 + 2) 00157a 6f99 movwf 0x99, 0x1 MOVWF (_CAN_status1 + 2), B 00157c 0100 movlb 0 BANKSEL _CAN_recv_flags_1_1 ; .line 60; can.c if (flags & (ECAN_RX_XTD_FRAME | ECAN_RX_RTR_FRAME)) { // don't accept these strange things. 00157e 51ac movf 0xac, 0, 0x1 MOVF _CAN_recv_flags_1_1, W, B 001580 0b60 andlw 0x60 ANDLW 0x60 001582 e009 bz 0x1596 BZ _00172_DS_ ; .line 61; can.c CAN_status1.exotic++; 001584 c09b movff 0x9b, 0x3 MOVFF (_CAN_status1 + 4), r0x03 001586 f003 001588 2a03 incf 0x3, 0x1, 0 INCF r0x03, F 00158a 5003 movf 0x3, 0, 0 MOVF r0x03, W 00158c 0100 movlb 0 BANKSEL (_CAN_status1 + 4) 00158e 6f9b movwf 0x9b, 0x1 MOVWF (_CAN_status1 + 4), B ; .line 62; can.c return -1; 001590 68f3 setf 0xf3, 0 SETF PRODL 001592 68e8 setf 0xe8, 0 SETF WREG 001594 d01e bra 0x15d2 BRA _00175_DS_ _00172_DS_: 001596 0100 movlb 0 BANKSEL _CAN_recv_flags_1_1 ; .line 64; can.c if (flags & ECAN_RX_OVERFLOW) { // it's not clear what this flag means, but count it. 001598 a7ac btfss 0xac, 0x3, 0x1 BTFSS _CAN_recv_flags_1_1, 3, B 00159a d009 bra 0x15ae BRA _00174_DS_ ; .line 65; can.c CAN_status1.overflow++; 00159c c09a movff 0x9a, 0x3 MOVFF (_CAN_status1 + 3), r0x03 00159e f003 0015a0 2a03 incf 0x3, 0x1, 0 INCF r0x03, F 0015a2 5003 movf 0x3, 0, 0 MOVF r0x03, W 0015a4 0100 movlb 0 BANKSEL (_CAN_status1 + 3) 0015a6 6f9a movwf 0x9a, 0x1 MOVWF (_CAN_status1 + 3), B ; .line 66; can.c return -2; 0015a8 68f3 setf 0xf3, 0 SETF PRODL 0015aa 0efe movlw 0xfe MOVLW 0xfe 0015ac d012 bra 0x15d2 BRA _00175_DS_ _00174_DS_: ; .line 69; can.c return msg->len; 0015ae 0e02 movlw 0x2 MOVLW 0x02 0015b0 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 0015b2 0e00 movlw 0 MOVLW 0x00 0015b4 2201 addwfc 0x1, 0x1, 0 ADDWFC r0x01, F 0015b6 0e00 movlw 0 MOVLW 0x00 0015b8 2202 addwfc 0x2, 0x1, 0 ADDWFC r0x02, F 0015ba c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0015bc ffe9 0015be c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0015c0 fff3 0015c2 5002 movf 0x2, 0, 0 MOVF r0x02, W 0015c4 ec51 call 0x22a2, 0 CALL __gptrget1 0015c6 f011 0015c8 6e00 movwf 0, 0 MOVWF r0x00 0015ca 6a01 clrf 0x1, 0 CLRF r0x01 0015cc c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0015ce fff3 0015d0 5000 movf 0, 0, 0 MOVF r0x00, W _00175_DS_: 0015d2 cfe4 movff 0xfe4, 0xe MOVFF PREINC1, r0x0e 0015d4 f00e 0015d6 cfe4 movff 0xfe4, 0xd MOVFF PREINC1, r0x0d 0015d8 f00d 0015da cfe4 movff 0xfe4, 0xc MOVFF PREINC1, r0x0c 0015dc f00c 0015de cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 0015e0 f00b 0015e2 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 0015e4 f00a 0015e6 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 0015e8 f009 0015ea cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 0015ec f008 0015ee cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0015f0 f007 0015f2 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0015f4 f006 0015f6 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0015f8 f005 0015fa cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0015fc f004 0015fe cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001600 f003 001602 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001604 f002 001606 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001608 f001 00160a cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00160c f000 00160e cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001610 ffd9 001612 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__CAN_init code _CAN_init: ; .line 30; can.c int CAN_init( void ) { 001fa4 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001fa6 ffe5 001fa8 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001faa ffd9 001fac c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001fae ffe5 001fb0 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001fb2 ffe5 001fb4 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001fb6 ffe5 001fb8 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001fba ffe5 ; .line 35; can.c ECANInitialize(); 001fbc ecdd call 0x1dba, 0 CALL _ECANInitialize 001fbe f00e ; .line 37; can.c for (k = 0; k> 8); 0021ae 5001 movf 0x1, 0, 0 MOVF r0x01, W 0021b0 6e02 movwf 0x2, 0 MOVWF r0x02 0021b2 6a03 clrf 0x3, 0 CLRF r0x03 0021b4 5002 movf 0x2, 0, 0 MOVF r0x02, W 0021b6 6ed7 movwf 0xd7, 0 MOVWF _TMR0H ; .line 33; timer.c TMR0L = (unsigned char)(v); 0021b8 5000 movf 0, 0, 0 MOVF r0x00, W 0021ba 6ed6 movwf 0xd6, 0 MOVWF _TMR0L 0021bc cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0021be f003 0021c0 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0021c2 f002 0021c4 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0021c6 f001 0021c8 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0021ca f000 0021cc cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0021ce ffd9 0021d0 0012 return 0 RETURN ; ; Starting pCode block S_jgjh__TIMER_setup code _TIMER_setup: ; .line 3; timer.c bool TIMER_setup( TIMER_handle t, struct TIMER_config *cfg ) 001a84 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001a86 ffe5 001a88 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001a8a ffd9 001a8c c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001a8e ffe5 001a90 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001a92 ffe5 001a94 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001a96 ffe5 001a98 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001a9a ffe5 001a9c 0e02 movlw 0x2 MOVLW 0x02 001a9e cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001aa0 f000 001aa2 0e03 movlw 0x3 MOVLW 0x03 001aa4 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 001aa6 f001 001aa8 0e04 movlw 0x4 MOVLW 0x04 001aaa cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 001aac f002 001aae 0e05 movlw 0x5 MOVLW 0x05 001ab0 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 001ab2 f003 ; .line 5; timer.c switch (t) { 001ab4 0e03 movlw 0x3 MOVLW 0x03 001ab6 5c00 subwf 0, 0, 0 SUBWF r0x00, W 001ab8 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001aba d03c bra 0x1b34 BRA _00111_DS_ 001abc c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 001abe ffe5 001ac0 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 001ac2 ffe5 001ac4 6a05 clrf 0x5, 0 CLRF r0x05 001ac6 3400 rlcf 0, 0, 0 RLCF r0x00, W 001ac8 3605 rlcf 0x5, 0x1, 0 RLCF r0x05, F 001aca 34e8 rlcf 0xe8, 0, 0 RLCF WREG, W 001acc 3605 rlcf 0x5, 0x1, 0 RLCF r0x05, F 001ace 0bfc andlw 0xfc ANDLW 0xfc 001ad0 6e04 movwf 0x4, 0 MOVWF r0x04 001ad2 0e00 movlw 0 MOVLW UPPER(_00117_DS_) 001ad4 6efb movwf 0xfb, 0 MOVWF PCLATU 001ad6 0e1a movlw 0x1a MOVLW HIGH(_00117_DS_) 001ad8 6efa movwf 0xfa, 0 MOVWF PCLATH 001ada 0ef2 movlw 0xf2 MOVLW LOW(_00117_DS_) 001adc 2604 addwf 0x4, 0x1, 0 ADDWF r0x04, F 001ade 5005 movf 0x5, 0, 0 MOVF r0x05, W 001ae0 22fa addwfc 0xfa, 0x1, 0 ADDWFC PCLATH, F 001ae2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001ae4 2afb incf 0xfb, 0x1, 0 INCF PCLATU, F 001ae6 5004 movf 0x4, 0, 0 MOVF r0x04, W 001ae8 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 001aea f005 001aec cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 001aee f004 001af0 6ef9 movwf 0xf9, 0 MOVWF PCL _00117_DS_: 001af2 ef7f goto 0x1afe GOTO _00105_DS_ 001af4 f00d 001af6 ef9a goto 0x1b34 GOTO _00111_DS_ 001af8 f00d 001afa ef9a goto 0x1b34 GOTO _00111_DS_ 001afc f00d _00105_DS_: ; .line 7; timer.c if(cfg->scaler <=7) 001afe 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 001b00 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001b02 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 001b04 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001b06 2a03 incf 0x3, 0x1, 0 INCF r0x03, F 001b08 c001 movff 0x1, 0xfe9 MOVFF r0x01, FSR0L 001b0a ffe9 001b0c c002 movff 0x2, 0xff3 MOVFF r0x02, PRODL 001b0e fff3 001b10 5003 movf 0x3, 0, 0 MOVF r0x03, W 001b12 ec51 call 0x22a2, 0 CALL __gptrget1 001b14 f011 001b16 6e00 movwf 0, 0 MOVWF r0x00 001b18 0e08 movlw 0x8 MOVLW 0x08 001b1a 5c00 subwf 0, 0, 0 SUBWF r0x00, W 001b1c e209 bc 0x1b30 BC _00107_DS_ ; .line 9; timer.c T0CON= 0; /* clear all bits*/ 001b1e 6ad5 clrf 0xd5, 0 CLRF _T0CON ; .line 12; timer.c T0CON = T0CON | 0x80 | (cfg->scaler); 001b20 0e80 movlw 0x80 MOVLW 0x80 001b22 10d5 iorwf 0xd5, 0, 0 IORWF _T0CON, W 001b24 6e01 movwf 0x1, 0 MOVWF r0x01 001b26 5000 movf 0, 0, 0 MOVF r0x00, W 001b28 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 001b2a 6ed5 movwf 0xd5, 0 MOVWF _T0CON ; .line 13; timer.c return 1; 001b2c 0e01 movlw 0x1 MOVLW 0x01 001b2e d003 bra 0x1b36 BRA _00112_DS_ _00107_DS_: ; .line 16; timer.c return 0; 001b30 6ae8 clrf 0xe8, 0 CLRF WREG ; .line 20; timer.c break; 001b32 d001 bra 0x1b36 BRA _00112_DS_ _00111_DS_: ; .line 27; timer.c return 0; 001b34 6ae8 clrf 0xe8, 0 CLRF WREG _00112_DS_: 001b36 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001b38 f003 001b3a cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001b3c f002 001b3e cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001b40 f001 001b42 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001b44 f000 001b46 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001b48 ffd9 001b4a 0012 return 0 RETURN ; Statistics: ; code size: 4442 (0x115a) bytes ( 3.39%) ; 2221 (0x08ad) words ; udata size: 24 (0x0018) bytes ( 0.62%) ; access size: 18 (0x0012) bytes end ;-------------------------------------------------------- ; File Created by SDCC : free open source ANSI-C Compiler ; Version 3.0.1 #6101 (Jan 12 2011) (Linux) ; This file was generated Sun Jan 16 02:33:30 2011 ;-------------------------------------------------------- ; PIC16 port for the Microchip 16-bit core micros ;-------------------------------------------------------- list p=18f2680 radix dec ;-------------------------------------------------------- ; public variables in this module ;-------------------------------------------------------- global _ECANInitialize global _ECANSendMessage global _ECANReceiveMessage global _ECANSetOperationMode global __CANIDToRegs global __RegsToCANID global __ECANRxFilterHitInfo ;-------------------------------------------------------- ; extern variables in this module ;-------------------------------------------------------- extern __gptrget1 extern __gptrput1 extern _RXF6SIDHbits extern _RXF6SIDLbits extern _RXF6EIDHbits extern _RXF6EIDLbits extern _RXF7SIDHbits extern _RXF7SIDLbits extern _RXF7EIDHbits extern _RXF7EIDLbits extern _RXF8SIDHbits extern _RXF8SIDLbits extern _RXF8EIDHbits extern _RXF8EIDLbits extern _RXF9SIDHbits extern _RXF9SIDLbits extern _RXF9EIDHbits extern _RXF9EIDLbits extern _RXF10SIDHbits extern _RXF10SIDLbits extern _RXF10EIDHbits extern _RXF10EIDLbits extern _RXF11SIDHbits extern _RXF11SIDLbits extern _RXF11EIDHbits extern _RXF11EIDLbits extern _RXF12SIDHbits extern _RXF12SIDLbits extern _RXF12EIDHbits extern _RXF12EIDLbits extern _RXF13SIDHbits extern _RXF13SIDLbits extern _RXF13EIDHbits extern _RXF13EIDLbits extern _RXF14SIDHbits extern _RXF14SIDLbits extern _RXF14EIDHbits extern _RXF14EIDLbits extern _RXF15SIDHbits extern _RXF15SIDLbits extern _RXF15EIDHbits extern _RXF15EIDLbits extern _RXFCON0bits extern _RXFCON1bits extern _SDFLCbits extern _RXFBCON0bits extern _RXFBCON1bits extern _RXFBCON2bits extern _RXFBCON3bits extern _RXFBCON4bits extern _RXFBCON5bits extern _RXFBCON6bits extern _RXFBCON7bits extern _MSEL0bits extern _MSEL1bits extern _MSEL2bits extern _MSEL3bits extern _BSEL0bits extern _BIE0bits extern _TXBIEbits extern _B0CONbits extern _B0SIDHbits extern _B0SIDLbits extern _B0EIDHbits extern _B0EIDLbits extern _B0DLCbits extern _B0D0bits extern _B0D1bits extern _B0D2bits extern _B0D3bits extern _B0D4bits extern _B0D5bits extern _B0D6bits extern _B0D7bits extern _CANSTAT_RO9bits extern _CANCON_RO9bits extern _B1CONbits extern _B1SIDHbits extern _B1SIDLbits extern _B1EIDHbits extern _B1EIDLbits extern _B1DLCbits extern _B1D0bits extern _B1D1bits extern _B1D2bits extern _B1D3bits extern _B1D4bits extern _B1D5bits extern _B1D6bits extern _B1D7bits extern _CANSTAT_RO8bits extern _CANCON_RO8bits extern _B2CONbits extern _B2SIDHbits extern _B2SIDLbits extern _B2EIDHbits extern _B2EIDLbits extern _B2DLCbits extern _B2D0bits extern _B2D1bits extern _B2D2bits extern _B2D3bits extern _B2D4bits extern _B2D5bits extern _B2D6bits extern _B2D7bits extern _CANSTAT_RO7bits extern _CANCON_RO7bits extern _B3CONbits extern _B3SIDHbits extern _B3SIDLbits extern _B3EIDHbits extern _B3EIDLbits extern _B3DLCbits extern _B3D0bits extern _B3D1bits extern _B3D2bits extern _B3D3bits extern _B3D4bits extern _B3D5bits extern _B3D6bits extern _B3D7bits extern _CANSTAT_RO6bits extern _CANCON_RO6bits extern _B4CONbits extern _B4SIDHbits extern _B4SIDLbits extern _B4EIDHbits extern _B4EIDLbits extern _B4DLCbits extern _B4D0bits extern _B4D1bits extern _B4D2bits extern _B4D3bits extern _B4D4bits extern _B4D5bits extern _B4D6bits extern _B4D7bits extern _CANSTAT_RO5bits extern _CANCON_RO5bits extern _B5CONbits extern _B5SIDHbits extern _B5SIDLbits extern _B5EIDHbits extern _B5EIDLbits extern _B5DLCbits extern _B5D0bits extern _B5D1bits extern _B5D2bits extern _B5D3bits extern _B5D4bits extern _B5D5bits extern _B5D6bits extern _B5D7bits extern _CANSTAT_RO4bits extern _CANCON_RO4bits extern _RXF0SIDHbits extern _RXF0SIDLbits extern _RXF0EIDHbits extern _RXF0EIDLbits extern _RXF1SIDHbits extern _RXF1SIDLbits extern _RXF1EIDHbits extern _RXF1EIDLbits extern _RXF2SIDHbits extern _RXF2SIDLbits extern _RXF2EIDHbits extern _RXF2EIDLbits extern _RXF3SIDHbits extern _RXF3SIDLbits extern _RXF3EIDHbits extern _RXF3EIDLbits extern _RXF4SIDHbits extern _RXF4SIDLbits extern _RXF4EIDHbits extern _RXF4EIDLbits extern _RXF5SIDHbits extern _RXF5SIDLbits extern _RXF5EIDHbits extern _RXF5EIDLbits extern _RXM0SIDHbits extern _RXM0SIDLbits extern _RXM0EIDHbits extern _RXM0EIDLbits extern _RXM1SIDHbits extern _RXM1SIDLbits extern _RXM1EIDHbits extern _RXM1EIDLbits extern _TXB2CONbits extern _TXB2SIDHbits extern _TXB2SIDLbits extern _TXB2EIDHbits extern _TXB2EIDLbits extern _TXB2DLCbits extern _TXB2D0bits extern _TXB2D1bits extern _TXB2D2bits extern _TXB2D3bits extern _TXB2D4bits extern _TXB2D5bits extern _TXB2D6bits extern _TXB2D7bits extern _CANSTAT_RO3bits extern _CANCON_RO3bits extern _TXB1CONbits extern _TXB1SIDHbits extern _TXB1SIDLbits extern _TXB1EIDHbits extern _TXB1EIDLbits extern _TXB1DLCbits extern _TXB1D0bits extern _TXB1D1bits extern _TXB1D2bits extern _TXB1D3bits extern _TXB1D4bits extern _TXB1D5bits extern _TXB1D6bits extern _TXB1D7bits extern _CANSTAT_RO2bits extern _CANCON_RO2bits extern _TXB0CONbits extern _TXB0SIDHbits extern _TXB0SIDLbits extern _TXB0EIDHbits extern _TXB0EIDLbits extern _TXB0DLCbits extern _TXB0D0bits extern _TXB0D1bits extern _TXB0D2bits extern _TXB0D3bits extern _TXB0D4bits extern _TXB0D5bits extern _TXB0D6bits extern _TXB0D7bits extern _CANSTAT_RO1bits extern _CANCON_RO1bits extern _RXB1CONbits extern _RXB1SIDHbits extern _RXB1SIDLbits extern _RXB1EIDHbits extern _RXB1EIDLbits extern _RXB1DLCbits extern _RXB1D0bits extern _RXB1D1bits extern _RXB1D2bits extern _RXB1D3bits extern _RXB1D4bits extern _RXB1D5bits extern _RXB1D6bits extern _RXB1D7bits extern _CANSTAT_RO0bits extern _CANCON_RO0bits extern _RXB0CONbits extern _RXB0SIDHbits extern _RXB0SIDLbits extern _RXB0EIDHbits extern _RXB0EIDLbits extern _RXB0DLCbits extern _RXB0D0bits extern _RXB0D1bits extern _RXB0D2bits extern _RXB0D3bits extern _RXB0D4bits extern _RXB0D5bits extern _RXB0D6bits extern _RXB0D7bits extern _CANSTATbits extern _CANCONbits extern _BRGCON1bits extern _BRGCON2bits extern _BRGCON3bits extern _CIOCONbits extern _COMSTATbits extern _RXERRCNTbits extern _TXERRCNTbits extern _ECANCONbits extern _PORTAbits extern _PORTBbits extern _PORTCbits extern _LATAbits extern _LATBbits extern _LATCbits extern _DDRAbits extern _TRISAbits extern _DDRBbits extern _TRISBbits extern _DDRCbits extern _TRISCbits extern _OSCTUNEbits extern _PIE1bits extern _PIR1bits extern _IPR1bits extern _PIE2bits extern _PIR2bits extern _IPR2bits extern _PIE3bits extern _PIR3bits extern _IPR3bits extern _EECON1bits extern _RCSTAbits extern _TXSTAbits extern _T3CONbits extern _BAUDCONbits extern _CCP1CONbits extern _ADCON2bits extern _ADCON1bits extern _ADCON0bits extern _SSPCON2bits extern _SSPCON1bits extern _SSPSTATbits extern _T2CONbits extern _T1CONbits extern _RCONbits extern _WDTCONbits extern _HLVDCONbits extern _LVDCONbits extern _OSCCONbits extern _T0CONbits extern _STATUSbits extern _INTCON3bits extern _INTCON2bits extern _INTCONbits extern _STKPTRbits extern _RXF6SIDH extern _RXF6SIDL extern _RXF6EIDH extern _RXF6EIDL extern _RXF7SIDH extern _RXF7SIDL extern _RXF7EIDH extern _RXF7EIDL extern _RXF8SIDH extern _RXF8SIDL extern _RXF8EIDH extern _RXF8EIDL extern _RXF9SIDH extern _RXF9SIDL extern _RXF9EIDH extern _RXF9EIDL extern _RXF10SIDH extern _RXF10SIDL extern _RXF10EIDH extern _RXF10EIDL extern _RXF11SIDH extern _RXF11SIDL extern _RXF11EIDH extern _RXF11EIDL extern _RXF12SIDH extern _RXF12SIDL extern _RXF12EIDH extern _RXF12EIDL extern _RXF13SIDH extern _RXF13SIDL extern _RXF13EIDH extern _RXF13EIDL extern _RXF14SIDH extern _RXF14SIDL extern _RXF14EIDH extern _RXF14EIDL extern _RXF15SIDH extern _RXF15SIDL extern _RXF15EIDH extern _RXF15EIDL extern _RXFCON0 extern _RXFCON1 extern _SDFLC extern _RXFBCON0 extern _RXFBCON1 extern _RXFBCON2 extern _RXFBCON3 extern _RXFBCON4 extern _RXFBCON5 extern _RXFBCON6 extern _RXFBCON7 extern _MSEL0 extern _MSEL1 extern _MSEL2 extern _MSEL3 extern _BSEL0 extern _BIE0 extern _TXBIE extern _B0CON extern _B0SIDH extern _B0SIDL extern _B0EIDH extern _B0EIDL extern _B0DLC extern _B0D0 extern _B0D1 extern _B0D2 extern _B0D3 extern _B0D4 extern _B0D5 extern _B0D6 extern _B0D7 extern _CANSTAT_RO9 extern _CANCON_RO9 extern _B1CON extern _B1SIDH extern _B1SIDL extern _B1EIDH extern _B1EIDL extern _B1DLC extern _B1D0 extern _B1D1 extern _B1D2 extern _B1D3 extern _B1D4 extern _B1D5 extern _B1D6 extern _B1D7 extern _CANSTAT_RO8 extern _CANCON_RO8 extern _B2CON extern _B2SIDH extern _B2SIDL extern _B2EIDH extern _B2EIDL extern _B2DLC extern _B2D0 extern _B2D1 extern _B2D2 extern _B2D3 extern _B2D4 extern _B2D5 extern _B2D6 extern _B2D7 extern _CANSTAT_RO7 extern _CANCON_RO7 extern _B3CON extern _B3SIDH extern _B3SIDL extern _B3EIDH extern _B3EIDL extern _B3DLC extern _B3D0 extern _B3D1 extern _B3D2 extern _B3D3 extern _B3D4 extern _B3D5 extern _B3D6 extern _B3D7 extern _CANSTAT_RO6 extern _CANCON_RO6 extern _B4CON extern _B4SIDH extern _B4SIDL extern _B4EIDH extern _B4EIDL extern _B4DLC extern _B4D0 extern _B4D1 extern _B4D2 extern _B4D3 extern _B4D4 extern _B4D5 extern _B4D6 extern _B4D7 extern _CANSTAT_RO5 extern _CANCON_RO5 extern _B5CON extern _B5SIDH extern _B5SIDL extern _B5EIDH extern _B5EIDL extern _B5DLC extern _B5D0 extern _B5D1 extern _B5D2 extern _B5D3 extern _B5D4 extern _B5D5 extern _B5D6 extern _B5D7 extern _CANSTAT_RO4 extern _CANCON_RO4 extern _RXF0SIDH extern _RXF0SIDL extern _RXF0EIDH extern _RXF0EIDL extern _RXF1SIDH extern _RXF1SIDL extern _RXF1EIDH extern _RXF1EIDL extern _RXF2SIDH extern _RXF2SIDL extern _RXF2EIDH extern _RXF2EIDL extern _RXF3SIDH extern _RXF3SIDL extern _RXF3EIDH extern _RXF3EIDL extern _RXF4SIDH extern _RXF4SIDL extern _RXF4EIDH extern _RXF4EIDL extern _RXF5SIDH extern _RXF5SIDL extern _RXF5EIDH extern _RXF5EIDL extern _RXM0SIDH extern _RXM0SIDL extern _RXM0EIDH extern _RXM0EIDL extern _RXM1SIDH extern _RXM1SIDL extern _RXM1EIDH extern _RXM1EIDL extern _TXB2CON extern _TXB2SIDH extern _TXB2SIDL extern _TXB2EIDH extern _TXB2EIDL extern _TXB2DLC extern _TXB2D0 extern _TXB2D1 extern _TXB2D2 extern _TXB2D3 extern _TXB2D4 extern _TXB2D5 extern _TXB2D6 extern _TXB2D7 extern _CANSTAT_RO3 extern _CANCON_RO3 extern _TXB1CON extern _TXB1SIDH extern _TXB1SIDL extern _TXB1EIDH extern _TXB1EIDL extern _TXB1DLC extern _TXB1D0 extern _TXB1D1 extern _TXB1D2 extern _TXB1D3 extern _TXB1D4 extern _TXB1D5 extern _TXB1D6 extern _TXB1D7 extern _CANSTAT_RO2 extern _CANCON_RO2 extern _TXB0CON extern _TXB0SIDH extern _TXB0SIDL extern _TXB0EIDH extern _TXB0EIDL extern _TXB0DLC extern _TXB0D0 extern _TXB0D1 extern _TXB0D2 extern _TXB0D3 extern _TXB0D4 extern _TXB0D5 extern _TXB0D6 extern _TXB0D7 extern _CANSTAT_RO1 extern _CANCON_RO1 extern _RXB1CON extern _RXB1SIDH extern _RXB1SIDL extern _RXB1EIDH extern _RXB1EIDL extern _RXB1DLC extern _RXB1D0 extern _RXB1D1 extern _RXB1D2 extern _RXB1D3 extern _RXB1D4 extern _RXB1D5 extern _RXB1D6 extern _RXB1D7 extern _CANSTAT_RO0 extern _CANCON_RO0 extern _RXB0CON extern _RXB0SIDH extern _RXB0SIDL extern _RXB0EIDH extern _RXB0EIDL extern _RXB0DLC extern _RXB0D0 extern _RXB0D1 extern _RXB0D2 extern _RXB0D3 extern _RXB0D4 extern _RXB0D5 extern _RXB0D6 extern _RXB0D7 extern _CANSTAT extern _CANCON extern _BRGCON1 extern _BRGCON2 extern _BRGCON3 extern _CIOCON extern _COMSTAT extern _RXERRCNT extern _TXERRCNT extern _ECANCON extern _PORTA extern _PORTB extern _PORTC extern _LATA extern _LATB extern _LATC extern _DDRA extern _TRISA extern _DDRB extern _TRISB extern _DDRC extern _TRISC extern _OSCTUNE extern _PIE1 extern _PIR1 extern _IPR1 extern _PIE2 extern _PIR2 extern _IPR2 extern _PIE3 extern _PIR3 extern _IPR3 extern _EECON1 extern _EECON2 extern _EEDATA extern _EEADR extern _EEADRH extern _RCSTA extern _TXSTA extern _TXREG extern _RCREG extern _SPBRG extern _SPBRGH extern _T3CON extern _TMR3L extern _TMR3H extern _BAUDCON extern _CCP1CON extern _CCPR1 extern _CCPR1L extern _CCPR1H extern _ADCON2 extern _ADCON1 extern _ADCON0 extern _ADRES extern _ADRESL extern _ADRESH extern _SSPCON2 extern _SSPCON1 extern _SSPSTAT extern _SSPADD extern _SSPBUF extern _T2CON extern _PR2 extern _TMR2 extern _T1CON extern _TMR1L extern _TMR1H extern _RCON extern _WDTCON extern _HLVDCON extern _LVDCON extern _OSCCON extern _T0CON extern _TMR0L extern _TMR0H extern _STATUS extern _FSR2L extern _FSR2H extern _PLUSW2 extern _PREINC2 extern _POSTDEC2 extern _POSTINC2 extern _INDF2 extern _BSR extern _FSR1L extern _FSR1H extern _PLUSW1 extern _PREINC1 extern _POSTDEC1 extern _POSTINC1 extern _INDF1 extern _WREG extern _FSR0L extern _FSR0H extern _PLUSW0 extern _PREINC0 extern _POSTDEC0 extern _POSTINC0 extern _INDF0 extern _INTCON3 extern _INTCON2 extern _INTCON extern _PROD extern _PRODL extern _PRODH extern _TABLAT extern _TBLPTR extern _TBLPTRL extern _TBLPTRH extern _TBLPTRU extern _PC extern _PCL extern _PCLATH extern _PCLATU extern _STKPTR extern _TOS extern _TOSL extern _TOSH extern _TOSU ;-------------------------------------------------------- ; Equates to used internal registers ;-------------------------------------------------------- STATUS equ 0xfd8 WREG equ 0xfe8 FSR0L equ 0xfe9 FSR0H equ 0xfea FSR1L equ 0xfe1 FSR2L equ 0xfd9 INDF0 equ 0xfef POSTINC0 equ 0xfee POSTDEC1 equ 0xfe5 PREINC1 equ 0xfe4 PLUSW2 equ 0xfdb PRODL equ 0xff3 PRODH equ 0xff4 ; Internal registers .registers udata_ovr 0x0000 r0x00 res 1 r0x01 res 1 r0x02 res 1 r0x03 res 1 r0x04 res 1 r0x05 res 1 r0x06 res 1 r0x07 res 1 r0x08 res 1 r0x09 res 1 r0x0a res 1 r0x0b res 1 r0x0c res 1 r0x0d res 1 r0x0e res 1 r0x0f res 1 r0x10 res 1 r0x11 res 1 r0x12 res 1 r0x13 res 1 r0x14 res 1 r0x15 res 1 udata_ecan_0 udata _ECANSendMessage_pb_1_1 res 27 udata_ecan_1 udata __ECANRxFilterHitInfo res 1 udata_ecan_2 udata _ECANReceiveMessage_temp_1_1 res 1 udata_ecan_3 udata __CANIDToRegs_val_1_1 res 4 ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- ; I code from now on! ; ; Starting pCode block S_ecan___RegsToCANID code __RegsToCANID: ; .line 1149; ecan.c void _RegsToCANID( BYTE* ptr, 000d66 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000d68 ffe5 000d6a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000d6c ffd9 000d6e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000d70 ffe5 000d72 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000d74 ffe5 000d76 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000d78 ffe5 000d7a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000d7c ffe5 000d7e c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000d80 ffe5 000d82 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000d84 ffe5 000d86 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000d88 ffe5 000d8a c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000d8c ffe5 000d8e c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 000d90 ffe5 000d92 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000d94 ffe5 000d96 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000d98 ffe5 000d9a c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 000d9c ffe5 000d9e c00c movff 0xc, 0xfe5 MOVFF r0x0c, POSTDEC1 000da0 ffe5 000da2 c00d movff 0xd, 0xfe5 MOVFF r0x0d, POSTDEC1 000da4 ffe5 000da6 0e02 movlw 0x2 MOVLW 0x02 000da8 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000daa f000 000dac 0e03 movlw 0x3 MOVLW 0x03 000dae cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000db0 f001 000db2 0e04 movlw 0x4 MOVLW 0x04 000db4 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000db6 f002 000db8 0e05 movlw 0x5 MOVLW 0x05 000dba cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000dbc f003 000dbe 0e06 movlw 0x6 MOVLW 0x06 000dc0 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000dc2 f004 000dc4 0e07 movlw 0x7 MOVLW 0x07 000dc6 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 000dc8 f005 000dca 0e08 movlw 0x8 MOVLW 0x08 000dcc cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000dce f006 ; .line 1157; ecan.c if ( type == ECAN_MSG_STD ) 000dd0 5006 movf 0x6, 0, 0 MOVF r0x06, W 000dd2 a4d8 btfss 0xd8, 0x2, 0 BTFSS STATUS, 2 000dd4 d06c bra 0xeae BRA _00227_DS_ ; .line 1160; ecan.c Value->BYTES.BYTE_1 = (*ptr << 3); // Copy SIDH<4:0> to SID<7:3> 000dd6 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000dd8 ffe9 000dda c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000ddc fff3 000dde 5002 movf 0x2, 0, 0 MOVF r0x02, W 000de0 ec51 call 0x22a2, 0 CALL __gptrget1 000de2 f011 000de4 6e06 movwf 0x6, 0 MOVWF r0x06 000de6 3806 swapf 0x6, 0, 0 SWAPF r0x06, W 000de8 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 000dea 0bf8 andlw 0xf8 ANDLW 0xf8 000dec 6e07 movwf 0x7, 0 MOVWF r0x07 000dee c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000df0 ffe5 000df2 c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 000df4 ffe9 000df6 c004 movff 0x4, 0xff3 MOVFF r0x04, PRODL 000df8 fff3 000dfa 5005 movf 0x5, 0, 0 MOVF r0x05, W 000dfc ec94 call 0x2328, 0 CALL __gptrput1 000dfe f011 ; .line 1161; ecan.c Value->BYTES.BYTE_2 = *ptr >> 5; // Copy SIDH<7:5> to SID<10:8> 000e00 5003 movf 0x3, 0, 0 MOVF r0x03, W 000e02 0f01 addlw 0x1 ADDLW 0x01 000e04 6e08 movwf 0x8, 0 MOVWF r0x08 000e06 0e00 movlw 0 MOVLW 0x00 000e08 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000e0a 6e09 movwf 0x9, 0 MOVWF r0x09 000e0c 0e00 movlw 0 MOVLW 0x00 000e0e 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000e10 6e0a movwf 0xa, 0 MOVWF r0x0a 000e12 3806 swapf 0x6, 0, 0 SWAPF r0x06, W 000e14 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 000e16 0b07 andlw 0x7 ANDLW 0x07 000e18 6e06 movwf 0x6, 0 MOVWF r0x06 000e1a c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000e1c ffe5 000e1e c008 movff 0x8, 0xfe9 MOVFF r0x08, FSR0L 000e20 ffe9 000e22 c009 movff 0x9, 0xff3 MOVFF r0x09, PRODL 000e24 fff3 000e26 500a movf 0xa, 0, 0 MOVF r0x0a, W 000e28 ec94 call 0x2328, 0 CALL __gptrput1 000e2a f011 ; .line 1162; ecan.c ptr++; // Point to SIDL 000e2c 2a00 incf 0, 0x1, 0 INCF r0x00, F 000e2e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000e30 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000e32 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000e34 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1163; ecan.c Value->BYTES.BYTE_1 |= (*ptr >> 5); // Copy SIDL<7:6> to SID<2:0> 000e36 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000e38 ffe9 000e3a c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000e3c fff3 000e3e 5002 movf 0x2, 0, 0 MOVF r0x02, W 000e40 ec51 call 0x22a2, 0 CALL __gptrget1 000e42 f011 000e44 6e06 movwf 0x6, 0 MOVWF r0x06 000e46 3806 swapf 0x6, 0, 0 SWAPF r0x06, W 000e48 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 000e4a 0b07 andlw 0x7 ANDLW 0x07 000e4c 6e06 movwf 0x6, 0 MOVWF r0x06 000e4e 5006 movf 0x6, 0, 0 MOVF r0x06, W 000e50 1207 iorwf 0x7, 0x1, 0 IORWF r0x07, F 000e52 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000e54 ffe5 000e56 c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 000e58 ffe9 000e5a c004 movff 0x4, 0xff3 MOVFF r0x04, PRODL 000e5c fff3 000e5e 5005 movf 0x5, 0, 0 MOVF r0x05, W 000e60 ec94 call 0x2328, 0 CALL __gptrput1 000e62 f011 ; .line 1164; ecan.c Value->BYTES.BYTE_3 = 0x00; 000e64 5003 movf 0x3, 0, 0 MOVF r0x03, W 000e66 0f02 addlw 0x2 ADDLW 0x02 000e68 6e06 movwf 0x6, 0 MOVWF r0x06 000e6a 0e00 movlw 0 MOVLW 0x00 000e6c 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000e6e 6e07 movwf 0x7, 0 MOVWF r0x07 000e70 0e00 movlw 0 MOVLW 0x00 000e72 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000e74 6e08 movwf 0x8, 0 MOVWF r0x08 000e76 0e00 movlw 0 MOVLW 0x00 000e78 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e7a c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000e7c ffe9 000e7e c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000e80 fff3 000e82 5008 movf 0x8, 0, 0 MOVF r0x08, W 000e84 ec94 call 0x2328, 0 CALL __gptrput1 000e86 f011 ; .line 1165; ecan.c Value->BYTES.BYTE_4 = 0x00; 000e88 5003 movf 0x3, 0, 0 MOVF r0x03, W 000e8a 0f03 addlw 0x3 ADDLW 0x03 000e8c 6e06 movwf 0x6, 0 MOVWF r0x06 000e8e 0e00 movlw 0 MOVLW 0x00 000e90 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000e92 6e07 movwf 0x7, 0 MOVWF r0x07 000e94 0e00 movlw 0 MOVLW 0x00 000e96 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000e98 6e08 movwf 0x8, 0 MOVWF r0x08 000e9a 0e00 movlw 0 MOVLW 0x00 000e9c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e9e c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000ea0 ffe9 000ea2 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000ea4 fff3 000ea6 5008 movf 0x8, 0, 0 MOVF r0x08, W 000ea8 ec94 call 0x2328, 0 CALL __gptrput1 000eaa f011 000eac d0a5 bra 0xff8 BRA _00229_DS_ _00227_DS_: ; .line 1170; ecan.c Value->BYTES.BYTE_3 = (*ptr << 5); // Copy SIDH<2:0> to EID<23:21> 000eae 5003 movf 0x3, 0, 0 MOVF r0x03, W 000eb0 0f02 addlw 0x2 ADDLW 0x02 000eb2 6e06 movwf 0x6, 0 MOVWF r0x06 000eb4 0e00 movlw 0 MOVLW 0x00 000eb6 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000eb8 6e07 movwf 0x7, 0 MOVWF r0x07 000eba 0e00 movlw 0 MOVLW 0x00 000ebc 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000ebe 6e08 movwf 0x8, 0 MOVWF r0x08 000ec0 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000ec2 ffe9 000ec4 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000ec6 fff3 000ec8 5002 movf 0x2, 0, 0 MOVF r0x02, W 000eca ec51 call 0x22a2, 0 CALL __gptrget1 000ecc f011 000ece 6e09 movwf 0x9, 0 MOVWF r0x09 000ed0 3809 swapf 0x9, 0, 0 SWAPF r0x09, W 000ed2 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 000ed4 0be0 andlw 0xe0 ANDLW 0xe0 000ed6 6e0a movwf 0xa, 0 MOVWF r0x0a 000ed8 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000eda ffe5 000edc c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000ede ffe9 000ee0 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000ee2 fff3 000ee4 5008 movf 0x8, 0, 0 MOVF r0x08, W 000ee6 ec94 call 0x2328, 0 CALL __gptrput1 000ee8 f011 ; .line 1171; ecan.c Value->BYTES.BYTE_4 = (*ptr >> 3); // Copy SIDH<7:3> to EID<29:25> 000eea 5003 movf 0x3, 0, 0 MOVF r0x03, W 000eec 0f03 addlw 0x3 ADDLW 0x03 000eee 6e0b movwf 0xb, 0 MOVWF r0x0b 000ef0 0e00 movlw 0 MOVLW 0x00 000ef2 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000ef4 6e0c movwf 0xc, 0 MOVWF r0x0c 000ef6 0e00 movlw 0 MOVLW 0x00 000ef8 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000efa 6e0d movwf 0xd, 0 MOVWF r0x0d 000efc 3809 swapf 0x9, 0, 0 SWAPF r0x09, W 000efe 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 000f00 0b1f andlw 0x1f ANDLW 0x1f 000f02 6e09 movwf 0x9, 0 MOVWF r0x09 000f04 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000f06 ffe5 000f08 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 000f0a ffe9 000f0c c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 000f0e fff3 000f10 500d movf 0xd, 0, 0 MOVF r0x0d, W 000f12 ec94 call 0x2328, 0 CALL __gptrput1 000f14 f011 ; .line 1172; ecan.c ptr++; // Point to SIDL 000f16 2a00 incf 0, 0x1, 0 INCF r0x00, F 000f18 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000f1a 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000f1c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000f1e 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; ;;!!! pic16_aopOp:1071 called for a spillLocation -- assigning WREG instead --- CHECK ; .line 1173; ecan.c Value->BYTES.BYTE_3 |= (*ptr & 0x03); // Copy SIDH<1:0> to EID<17:16> 000f20 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000f22 ffe9 000f24 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000f26 fff3 000f28 5008 movf 0x8, 0, 0 MOVF r0x08, W 000f2a ec51 call 0x22a2, 0 CALL __gptrget1 000f2c f011 000f2e 6ee8 movwf 0xe8, 0 MOVWF WREG 000f30 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000f32 ffe9 000f34 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000f36 fff3 000f38 5002 movf 0x2, 0, 0 MOVF r0x02, W 000f3a ec51 call 0x22a2, 0 CALL __gptrget1 000f3c f011 000f3e 6e09 movwf 0x9, 0 MOVWF r0x09 000f40 0e03 movlw 0x3 MOVLW 0x03 000f42 1409 andwf 0x9, 0, 0 ANDWF r0x09, W 000f44 6e0b movwf 0xb, 0 MOVWF r0x0b 000f46 500b movf 0xb, 0, 0 MOVF r0x0b, W 000f48 120a iorwf 0xa, 0x1, 0 IORWF r0x0a, F 000f4a c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000f4c ffe5 000f4e c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000f50 ffe9 000f52 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000f54 fff3 000f56 5008 movf 0x8, 0, 0 MOVF r0x08, W 000f58 ec94 call 0x2328, 0 CALL __gptrput1 000f5a f011 ; ;;!!! pic16_aopOp:1071 called for a spillLocation -- assigning WREG instead --- CHECK ; .line 1175; ecan.c Value->BYTES.BYTE_3 |= ((*ptr & 0xe0) >> 3); // Copy SIDL<7:6> to EID<20:18> 000f5c c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000f5e ffe9 000f60 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000f62 fff3 000f64 5008 movf 0x8, 0, 0 MOVF r0x08, W 000f66 ec51 call 0x22a2, 0 CALL __gptrget1 000f68 f011 000f6a 6ee8 movwf 0xe8, 0 MOVWF WREG 000f6c 0ee0 movlw 0xe0 MOVLW 0xe0 000f6e 1609 andwf 0x9, 0x1, 0 ANDWF r0x09, F 000f70 3809 swapf 0x9, 0, 0 SWAPF r0x09, W 000f72 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 000f74 0b1f andlw 0x1f ANDLW 0x1f 000f76 6e09 movwf 0x9, 0 MOVWF r0x09 000f78 5009 movf 0x9, 0, 0 MOVF r0x09, W 000f7a 120a iorwf 0xa, 0x1, 0 IORWF r0x0a, F 000f7c c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000f7e ffe5 000f80 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000f82 ffe9 000f84 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000f86 fff3 000f88 5008 movf 0x8, 0, 0 MOVF r0x08, W 000f8a ec94 call 0x2328, 0 CALL __gptrput1 000f8c f011 ; .line 1176; ecan.c ptr++; // Point to EIDH 000f8e 2a00 incf 0, 0x1, 0 INCF r0x00, F 000f90 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000f92 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000f94 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000f96 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1177; ecan.c Value->BYTES.BYTE_2 = *ptr; // Copy EIDH<15:8> to EID<15:8> 000f98 5003 movf 0x3, 0, 0 MOVF r0x03, W 000f9a 0f01 addlw 0x1 ADDLW 0x01 000f9c 6e06 movwf 0x6, 0 MOVWF r0x06 000f9e 0e00 movlw 0 MOVLW 0x00 000fa0 2004 addwfc 0x4, 0, 0 ADDWFC r0x04, W 000fa2 6e07 movwf 0x7, 0 MOVWF r0x07 000fa4 0e00 movlw 0 MOVLW 0x00 000fa6 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 000fa8 6e08 movwf 0x8, 0 MOVWF r0x08 000faa c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000fac ffe9 000fae c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000fb0 fff3 000fb2 5002 movf 0x2, 0, 0 MOVF r0x02, W 000fb4 ec51 call 0x22a2, 0 CALL __gptrget1 000fb6 f011 000fb8 6e09 movwf 0x9, 0 MOVWF r0x09 000fba c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000fbc ffe5 000fbe c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000fc0 ffe9 000fc2 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000fc4 fff3 000fc6 5008 movf 0x8, 0, 0 MOVF r0x08, W 000fc8 ec94 call 0x2328, 0 CALL __gptrput1 000fca f011 ; .line 1178; ecan.c ptr++; // Point to EIDL 000fcc 2a00 incf 0, 0x1, 0 INCF r0x00, F 000fce b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000fd0 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000fd2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000fd4 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1179; ecan.c Value->BYTES.BYTE_1 = *ptr; // Copy EIDH<7:0> to EID<7:0> 000fd6 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000fd8 ffe9 000fda c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000fdc fff3 000fde 5002 movf 0x2, 0, 0 MOVF r0x02, W 000fe0 ec51 call 0x22a2, 0 CALL __gptrget1 000fe2 f011 000fe4 6e00 movwf 0, 0 MOVWF r0x00 000fe6 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000fe8 ffe5 000fea c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 000fec ffe9 000fee c004 movff 0x4, 0xff3 MOVFF r0x04, PRODL 000ff0 fff3 000ff2 5005 movf 0x5, 0, 0 MOVF r0x05, W 000ff4 ec94 call 0x2328, 0 CALL __gptrput1 000ff6 f011 _00229_DS_: 000ff8 cfe4 movff 0xfe4, 0xd MOVFF PREINC1, r0x0d 000ffa f00d 000ffc cfe4 movff 0xfe4, 0xc MOVFF PREINC1, r0x0c 000ffe f00c 001000 cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 001002 f00b 001004 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 001006 f00a 001008 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 00100a f009 00100c cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 00100e f008 001010 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 001012 f007 001014 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 001016 f006 001018 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 00101a f005 00101c cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 00101e f004 001020 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001022 f003 001024 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001026 f002 001028 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00102a f001 00102c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00102e f000 001030 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001032 ffd9 001034 0012 return 0 RETURN ; ; Starting pCode block S_ecan___CANIDToRegs code __CANIDToRegs: ; .line 1092; ecan.c void _CANIDToRegs(BYTE* ptr, 001036 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001038 ffe5 00103a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00103c ffd9 00103e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001040 ffe5 001042 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001044 ffe5 001046 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001048 ffe5 00104a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00104c ffe5 00104e c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 001050 ffe5 001052 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 001054 ffe5 001056 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 001058 ffe5 00105a c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00105c ffe5 00105e c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 001060 ffe5 001062 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 001064 ffe5 001066 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 001068 ffe5 00106a 0e02 movlw 0x2 MOVLW 0x02 00106c cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00106e f000 001070 0e03 movlw 0x3 MOVLW 0x03 001072 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 001074 f001 001076 0e04 movlw 0x4 MOVLW 0x04 001078 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 00107a f002 00107c 0e05 movlw 0x5 MOVLW 0x05 00107e cfdb movff 0xfdb, 0xa0 MOVFF PLUSW2, __CANIDToRegs_val_1_1 001080 f0a0 001082 0e06 movlw 0x6 MOVLW 0x06 001084 cfdb movff 0xfdb, 0xa1 MOVFF PLUSW2, (__CANIDToRegs_val_1_1 + 1) 001086 f0a1 001088 0e07 movlw 0x7 MOVLW 0x07 00108a cfdb movff 0xfdb, 0xa2 MOVFF PLUSW2, (__CANIDToRegs_val_1_1 + 2) 00108c f0a2 00108e 0e08 movlw 0x8 MOVLW 0x08 001090 cfdb movff 0xfdb, 0xa3 MOVFF PLUSW2, (__CANIDToRegs_val_1_1 + 3) 001092 f0a3 001094 0e09 movlw 0x9 MOVLW 0x09 001096 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 001098 f003 ; .line 1098; ecan.c Value = (CAN_MESSAGE_ID*)&val; 00109a 0e00 movlw 0 MOVLW HIGH(__CANIDToRegs_val_1_1) 00109c 6e05 movwf 0x5, 0 MOVWF r0x05 00109e 0ea0 movlw 0xa0 MOVLW LOW(__CANIDToRegs_val_1_1) 0010a0 6e04 movwf 0x4, 0 MOVWF r0x04 0010a2 0e80 movlw 0x80 MOVLW 0x80 0010a4 6e06 movwf 0x6, 0 MOVWF r0x06 ; .line 1100; ecan.c if ( type == ECAN_MSG_STD ) 0010a6 5003 movf 0x3, 0, 0 MOVF r0x03, W 0010a8 a4d8 btfss 0xd8, 0x2, 0 BTFSS STATUS, 2 0010aa d050 bra 0x114c BRA _00219_DS_ ; .line 1103; ecan.c *ptr = Value->BYTES.BYTE_1 >> 3; // Copy SID<7:3> to SIDH<4:0> 0010ac c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 0010ae ffe9 0010b0 c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 0010b2 fff3 0010b4 5006 movf 0x6, 0, 0 MOVF r0x06, W 0010b6 ec51 call 0x22a2, 0 CALL __gptrget1 0010b8 f011 0010ba 6e03 movwf 0x3, 0 MOVWF r0x03 0010bc 3803 swapf 0x3, 0, 0 SWAPF r0x03, W 0010be 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 0010c0 0b1f andlw 0x1f ANDLW 0x1f 0010c2 6e07 movwf 0x7, 0 MOVWF r0x07 0010c4 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0010c6 ffe5 0010c8 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0010ca ffe9 0010cc c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0010ce fff3 0010d0 5002 movf 0x2, 0, 0 MOVF r0x02, W 0010d2 ec94 call 0x2328, 0 CALL __gptrput1 0010d4 f011 ; .line 1104; ecan.c *ptr |= (Value->BYTES.BYTE_2 << 5); // Copy SID<10:8> to SIDH<7:5> 0010d6 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0010d8 ffe9 0010da c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0010dc fff3 0010de 5002 movf 0x2, 0, 0 MOVF r0x02, W 0010e0 ec51 call 0x22a2, 0 CALL __gptrget1 0010e2 f011 0010e4 6e07 movwf 0x7, 0 MOVWF r0x07 0010e6 5004 movf 0x4, 0, 0 MOVF r0x04, W 0010e8 0f01 addlw 0x1 ADDLW 0x01 0010ea 6e08 movwf 0x8, 0 MOVWF r0x08 0010ec 0e00 movlw 0 MOVLW 0x00 0010ee 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 0010f0 6e09 movwf 0x9, 0 MOVWF r0x09 0010f2 0e00 movlw 0 MOVLW 0x00 0010f4 2006 addwfc 0x6, 0, 0 ADDWFC r0x06, W 0010f6 6e0a movwf 0xa, 0 MOVWF r0x0a 0010f8 c008 movff 0x8, 0xfe9 MOVFF r0x08, FSR0L 0010fa ffe9 0010fc c009 movff 0x9, 0xff3 MOVFF r0x09, PRODL 0010fe fff3 001100 500a movf 0xa, 0, 0 MOVF r0x0a, W 001102 ec51 call 0x22a2, 0 CALL __gptrget1 001104 f011 001106 6e08 movwf 0x8, 0 MOVWF r0x08 001108 3808 swapf 0x8, 0, 0 SWAPF r0x08, W 00110a 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 00110c 0be0 andlw 0xe0 ANDLW 0xe0 00110e 6e09 movwf 0x9, 0 MOVWF r0x09 001110 5009 movf 0x9, 0, 0 MOVF r0x09, W 001112 1207 iorwf 0x7, 0x1, 0 IORWF r0x07, F 001114 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 001116 ffe5 001118 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00111a ffe9 00111c c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00111e fff3 001120 5002 movf 0x2, 0, 0 MOVF r0x02, W 001122 ec94 call 0x2328, 0 CALL __gptrput1 001124 f011 ; .line 1105; ecan.c ptr++; // Point to SIDL 001126 2a00 incf 0, 0x1, 0 INCF r0x00, F 001128 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00112a 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 00112c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00112e 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1106; ecan.c *ptr = Value->BYTES.BYTE_1 << 5; // Copy SID<2:0> to SIDL<7:5> 001130 3803 swapf 0x3, 0, 0 SWAPF r0x03, W 001132 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 001134 0be0 andlw 0xe0 ANDLW 0xe0 001136 6e07 movwf 0x7, 0 MOVWF r0x07 001138 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00113a ffe5 00113c c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00113e ffe9 001140 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001142 fff3 001144 5002 movf 0x2, 0, 0 MOVF r0x02, W 001146 ec94 call 0x2328, 0 CALL __gptrput1 001148 f011 00114a d0a6 bra 0x1298 BRA _00221_DS_ _00219_DS_: ; .line 1111; ecan.c *ptr = Value->BYTES.BYTE_3 >> 5; // Copy EID<23:21> to SIDH<2:0> 00114c 5004 movf 0x4, 0, 0 MOVF r0x04, W 00114e 0f02 addlw 0x2 ADDLW 0x02 001150 6e03 movwf 0x3, 0 MOVWF r0x03 001152 0e00 movlw 0 MOVLW 0x00 001154 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 001156 6e07 movwf 0x7, 0 MOVWF r0x07 001158 0e00 movlw 0 MOVLW 0x00 00115a 2006 addwfc 0x6, 0, 0 ADDWFC r0x06, W 00115c 6e08 movwf 0x8, 0 MOVWF r0x08 00115e c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 001160 ffe9 001162 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 001164 fff3 001166 5008 movf 0x8, 0, 0 MOVF r0x08, W 001168 ec51 call 0x22a2, 0 CALL __gptrget1 00116a f011 00116c 6e03 movwf 0x3, 0 MOVWF r0x03 00116e 3803 swapf 0x3, 0, 0 SWAPF r0x03, W 001170 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 001172 0b07 andlw 0x7 ANDLW 0x07 001174 6e07 movwf 0x7, 0 MOVWF r0x07 001176 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 001178 ffe5 00117a c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00117c ffe9 00117e c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001180 fff3 001182 5002 movf 0x2, 0, 0 MOVF r0x02, W 001184 ec94 call 0x2328, 0 CALL __gptrput1 001186 f011 ; .line 1112; ecan.c *ptr |= Value->BYTES.BYTE_4 << 3; // Copy EID<28:24> to SIDH<7:3> 001188 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00118a ffe9 00118c c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00118e fff3 001190 5002 movf 0x2, 0, 0 MOVF r0x02, W 001192 ec51 call 0x22a2, 0 CALL __gptrget1 001194 f011 001196 6e07 movwf 0x7, 0 MOVWF r0x07 001198 5004 movf 0x4, 0, 0 MOVF r0x04, W 00119a 0f03 addlw 0x3 ADDLW 0x03 00119c 6e08 movwf 0x8, 0 MOVWF r0x08 00119e 0e00 movlw 0 MOVLW 0x00 0011a0 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 0011a2 6e09 movwf 0x9, 0 MOVWF r0x09 0011a4 0e00 movlw 0 MOVLW 0x00 0011a6 2006 addwfc 0x6, 0, 0 ADDWFC r0x06, W 0011a8 6e0a movwf 0xa, 0 MOVWF r0x0a 0011aa c008 movff 0x8, 0xfe9 MOVFF r0x08, FSR0L 0011ac ffe9 0011ae c009 movff 0x9, 0xff3 MOVFF r0x09, PRODL 0011b0 fff3 0011b2 500a movf 0xa, 0, 0 MOVF r0x0a, W 0011b4 ec51 call 0x22a2, 0 CALL __gptrget1 0011b6 f011 0011b8 6e08 movwf 0x8, 0 MOVWF r0x08 0011ba 3808 swapf 0x8, 0, 0 SWAPF r0x08, W 0011bc 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 0011be 0bf8 andlw 0xf8 ANDLW 0xf8 0011c0 6e09 movwf 0x9, 0 MOVWF r0x09 0011c2 5009 movf 0x9, 0, 0 MOVF r0x09, W 0011c4 1207 iorwf 0x7, 0x1, 0 IORWF r0x07, F 0011c6 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0011c8 ffe5 0011ca c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0011cc ffe9 0011ce c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0011d0 fff3 0011d2 5002 movf 0x2, 0, 0 MOVF r0x02, W 0011d4 ec94 call 0x2328, 0 CALL __gptrput1 0011d6 f011 ; .line 1113; ecan.c ptr++; // Point to SIDL 0011d8 2a00 incf 0, 0x1, 0 INCF r0x00, F 0011da b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0011dc 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0011de b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0011e0 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1114; ecan.c *ptr = (Value->BYTES.BYTE_3 << 3) & 0xE0; // Copy EID<20:18> to SIDL<7:5> 0011e2 3803 swapf 0x3, 0, 0 SWAPF r0x03, W 0011e4 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 0011e6 0bf8 andlw 0xf8 ANDLW 0xf8 0011e8 6e07 movwf 0x7, 0 MOVWF r0x07 0011ea 0ee0 movlw 0xe0 MOVLW 0xe0 0011ec 1607 andwf 0x7, 0x1, 0 ANDWF r0x07, F 0011ee c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0011f0 ffe5 0011f2 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0011f4 ffe9 0011f6 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0011f8 fff3 0011fa 5002 movf 0x2, 0, 0 MOVF r0x02, W 0011fc ec94 call 0x2328, 0 CALL __gptrput1 0011fe f011 ; .line 1116; ecan.c *ptr |= 0b00001000; // Set EXIDEN bit to SIDL<3> 001200 8607 bsf 0x7, 0x3, 0 BSF r0x07, 3 001202 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 001204 ffe5 001206 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 001208 ffe9 00120a c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00120c fff3 00120e 5002 movf 0x2, 0, 0 MOVF r0x02, W 001210 ec94 call 0x2328, 0 CALL __gptrput1 001212 f011 ; .line 1117; ecan.c *ptr |= Value->BYTES.BYTE_3 & 0x03; // Copy EID<17:16> to SIDL<1:0> 001214 0e03 movlw 0x3 MOVLW 0x03 001216 1603 andwf 0x3, 0x1, 0 ANDWF r0x03, F 001218 5003 movf 0x3, 0, 0 MOVF r0x03, W 00121a 1207 iorwf 0x7, 0x1, 0 IORWF r0x07, F 00121c c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00121e ffe5 001220 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 001222 ffe9 001224 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001226 fff3 001228 5002 movf 0x2, 0, 0 MOVF r0x02, W 00122a ec94 call 0x2328, 0 CALL __gptrput1 00122c f011 ; .line 1118; ecan.c ptr++; // Point to EIDH 00122e 2a00 incf 0, 0x1, 0 INCF r0x00, F 001230 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001232 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 001234 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001236 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1119; ecan.c *ptr = Value->BYTES.BYTE_2; // Copy EID<15:8> to EIDH<7:0> 001238 5004 movf 0x4, 0, 0 MOVF r0x04, W 00123a 0f01 addlw 0x1 ADDLW 0x01 00123c 6e03 movwf 0x3, 0 MOVWF r0x03 00123e 0e00 movlw 0 MOVLW 0x00 001240 2005 addwfc 0x5, 0, 0 ADDWFC r0x05, W 001242 6e07 movwf 0x7, 0 MOVWF r0x07 001244 0e00 movlw 0 MOVLW 0x00 001246 2006 addwfc 0x6, 0, 0 ADDWFC r0x06, W 001248 6e08 movwf 0x8, 0 MOVWF r0x08 00124a c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 00124c ffe9 00124e c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 001250 fff3 001252 5008 movf 0x8, 0, 0 MOVF r0x08, W 001254 ec51 call 0x22a2, 0 CALL __gptrget1 001256 f011 001258 6e03 movwf 0x3, 0 MOVWF r0x03 00125a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00125c ffe5 00125e c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 001260 ffe9 001262 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001264 fff3 001266 5002 movf 0x2, 0, 0 MOVF r0x02, W 001268 ec94 call 0x2328, 0 CALL __gptrput1 00126a f011 ; .line 1120; ecan.c ptr++; // Point to EIDL 00126c 2a00 incf 0, 0x1, 0 INCF r0x00, F 00126e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001270 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 001272 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001274 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 1121; ecan.c *ptr = Value->BYTES.BYTE_1; // Copy EID<7:0> to EIDL<7:0> 001276 c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 001278 ffe9 00127a c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 00127c fff3 00127e 5006 movf 0x6, 0, 0 MOVF r0x06, W 001280 ec51 call 0x22a2, 0 CALL __gptrget1 001282 f011 001284 6e04 movwf 0x4, 0 MOVWF r0x04 001286 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 001288 ffe5 00128a c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00128c ffe9 00128e c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001290 fff3 001292 5002 movf 0x2, 0, 0 MOVF r0x02, W 001294 ec94 call 0x2328, 0 CALL __gptrput1 001296 f011 _00221_DS_: 001298 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 00129a f00a 00129c cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 00129e f009 0012a0 cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 0012a2 f008 0012a4 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0012a6 f007 0012a8 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0012aa f006 0012ac cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0012ae f005 0012b0 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0012b2 f004 0012b4 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0012b6 f003 0012b8 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0012ba f002 0012bc cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0012be f001 0012c0 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0012c2 f000 0012c4 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0012c6 ffd9 0012c8 0012 return 0 RETURN ; ; Starting pCode block S_ecan__ECANSetOperationMode code _ECANSetOperationMode: ; .line 1007; ecan.c void ECANSetOperationMode(ECAN_OP_MODE mode) 002216 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 002218 ffe5 00221a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00221c ffd9 00221e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 002220 ffe5 002222 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 002224 ffe5 002226 0e02 movlw 0x2 MOVLW 0x02 002228 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00222a f000 ; .line 1009; ecan.c CANCON &= 0x1F; // clear previous mode 00222c 0e1f movlw 0x1f MOVLW 0x1f 00222e 166f andwf 0x6f, 0x1, 0 ANDWF _CANCON, F ; .line 1010; ecan.c CANCON |= mode; // set new mode 002230 5000 movf 0, 0, 0 MOVF r0x00, W 002232 126f iorwf 0x6f, 0x1, 0 IORWF _CANCON, F _00203_DS_: ; .line 1012; ecan.c while( ECANGetOperationMode() != mode ); // Wait till desired mode is set. 002234 0ee0 movlw 0xe0 MOVLW 0xe0 002236 146f andwf 0x6f, 0, 0 ANDWF _CANCON, W 002238 6e01 movwf 0x1, 0 MOVWF r0x01 00223a 5001 movf 0x1, 0, 0 MOVF r0x01, W 00223c 1800 xorwf 0, 0, 0 XORWF r0x00, W 00223e e1fa bnz 0x2234 BNZ _00203_DS_ 002240 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 002242 f001 002244 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 002246 f000 002248 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00224a ffd9 00224c 0012 return 0 RETURN ; ; Starting pCode block S_ecan__ECANReceiveMessage code _ECANReceiveMessage: ; .line 795; ecan.c BOOL ECANReceiveMessage(unsigned long *id, 00000c cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00000e ffe5 000010 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000012 ffd9 000014 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000016 ffe5 000018 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00001a ffe5 00001c c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00001e ffe5 000020 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000022 ffe5 000024 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000026 ffe5 000028 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 00002a ffe5 00002c c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 00002e ffe5 000030 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000032 ffe5 000034 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 000036 ffe5 000038 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 00003a ffe5 00003c c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 00003e ffe5 000040 c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 000042 ffe5 000044 c00c movff 0xc, 0xfe5 MOVFF r0x0c, POSTDEC1 000046 ffe5 000048 c00d movff 0xd, 0xfe5 MOVFF r0x0d, POSTDEC1 00004a ffe5 00004c c00e movff 0xe, 0xfe5 MOVFF r0x0e, POSTDEC1 00004e ffe5 000050 c00f movff 0xf, 0xfe5 MOVFF r0x0f, POSTDEC1 000052 ffe5 000054 c010 movff 0x10, 0xfe5 MOVFF r0x10, POSTDEC1 000056 ffe5 000058 c011 movff 0x11, 0xfe5 MOVFF r0x11, POSTDEC1 00005a ffe5 00005c c012 movff 0x12, 0xfe5 MOVFF r0x12, POSTDEC1 00005e ffe5 000060 c013 movff 0x13, 0xfe5 MOVFF r0x13, POSTDEC1 000062 ffe5 000064 c014 movff 0x14, 0xfe5 MOVFF r0x14, POSTDEC1 000066 ffe5 000068 0e02 movlw 0x2 MOVLW 0x02 00006a cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00006c f000 00006e 0e03 movlw 0x3 MOVLW 0x03 000070 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000072 f001 000074 0e04 movlw 0x4 MOVLW 0x04 000076 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000078 f002 00007a 0e05 movlw 0x5 MOVLW 0x05 00007c cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 00007e f003 000080 0e06 movlw 0x6 MOVLW 0x06 000082 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000084 f004 000086 0e07 movlw 0x7 MOVLW 0x07 000088 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 00008a f005 00008c 0e08 movlw 0x8 MOVLW 0x08 00008e cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000090 f006 000092 0e09 movlw 0x9 MOVLW 0x09 000094 cfdb movff 0xfdb, 0x7 MOVFF PLUSW2, r0x07 000096 f007 000098 0e0a movlw 0xa MOVLW 0x0a 00009a cfdb movff 0xfdb, 0x8 MOVFF PLUSW2, r0x08 00009c f008 00009e 0e0b movlw 0xb MOVLW 0x0b 0000a0 cfdb movff 0xfdb, 0x9 MOVFF PLUSW2, r0x09 0000a2 f009 0000a4 0e0c movlw 0xc MOVLW 0x0c 0000a6 cfdb movff 0xfdb, 0xa MOVFF PLUSW2, r0x0a 0000a8 f00a 0000aa 0e0d movlw 0xd MOVLW 0x0d 0000ac cfdb movff 0xfdb, 0xb MOVFF PLUSW2, r0x0b 0000ae f00b 0000b0 0100 movlb 0 BANKSEL __ECANRxFilterHitInfo ; .line 808; ecan.c _ECANRxFilterHitInfo.Val = 0; 0000b2 6bad clrf 0xad, 0x1 CLRF __ECANRxFilterHitInfo, B ; .line 820; ecan.c if ( RXB0CON_RXFUL ) 0000b4 ae60 btfss 0x60, 0x7, 0 BTFSS _RXB0CONbits, 7 0000b6 d029 bra 0x10a BRA _00163_DS_ ; .line 823; ecan.c PIR3_RXB0IF = 0; 0000b8 90a4 bcf 0xa4, 0, 0 BCF _PIR3bits, 0 ; .line 826; ecan.c if ( COMSTAT_RXB0OVFL ) 0000ba ae74 btfss 0x74, 0x7, 0 BTFSS _COMSTATbits, 7 0000bc d013 bra 0xe4 BRA _00154_DS_ ; .line 828; ecan.c *msgFlags |= ECAN_RX_OVERFLOW; 0000be c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 0000c0 ffe9 0000c2 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 0000c4 fff3 0000c6 500b movf 0xb, 0, 0 MOVF r0x0b, W 0000c8 ec51 call 0x22a2, 0 CALL __gptrget1 0000ca f011 0000cc 6e0c movwf 0xc, 0 MOVWF r0x0c 0000ce 860c bsf 0xc, 0x3, 0 BSF r0x0c, 3 0000d0 c00c movff 0xc, 0xfe5 MOVFF r0x0c, POSTDEC1 0000d2 ffe5 0000d4 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 0000d6 ffe9 0000d8 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 0000da fff3 0000dc 500b movf 0xb, 0, 0 MOVF r0x0b, W 0000de ec94 call 0x2328, 0 CALL __gptrput1 0000e0 f011 ; .line 829; ecan.c COMSTAT_RXB0OVFL = 0; 0000e2 9e74 bcf 0x74, 0x7, 0 BCF _COMSTATbits, 7 _00154_DS_: ; .line 832; ecan.c _ECANRxFilterHitInfo.bits.b0 = RXB0CON_FILHIT0; 0000e4 6a0c clrf 0xc, 0 CLRF r0x0c 0000e6 b060 btfsc 0x60, 0, 0 BTFSC _RXB0CONbits, 0 0000e8 2a0c incf 0xc, 0x1, 0 INCF r0x0c, F 0000ea 500c movf 0xc, 0, 0 MOVF r0x0c, W 0000ec 0b01 andlw 0x1 ANDLW 0x01 0000ee 6ef4 movwf 0xf4, 0 MOVWF PRODH 0000f0 0100 movlb 0 BANKSEL __ECANRxFilterHitInfo 0000f2 51ad movf 0xad, 0, 0x1 MOVF __ECANRxFilterHitInfo, W, B 0000f4 0bfe andlw 0xfe ANDLW 0xfe 0000f6 10f4 iorwf 0xf4, 0, 0 IORWF PRODH, W 0000f8 0100 movlb 0 BANKSEL __ECANRxFilterHitInfo 0000fa 6fad movwf 0xad, 0x1 MOVWF __ECANRxFilterHitInfo, B ; .line 834; ecan.c ptr = (BYTE*)&RXB0CON; 0000fc 0e0f movlw 0xf MOVLW HIGH(_RXB0CON) 0000fe 6e0d movwf 0xd, 0 MOVWF r0x0d 000100 0e60 movlw 0x60 MOVLW LOW(_RXB0CON) 000102 6e0c movwf 0xc, 0 MOVWF r0x0c 000104 0e80 movlw 0x80 MOVLW 0x80 000106 6e0e movwf 0xe, 0 MOVWF r0x0e 000108 d040 bra 0x18a BRA _00165_DS_ _00163_DS_: 00010a 010f movlb 0xf BANKSEL _RXB1CONbits ; .line 837; ecan.c else if ( RXB1CON_RXFUL ) 00010c af50 btfss 0x50, 0x7, 0x1 BTFSS _RXB1CONbits, 7, B 00010e d03b bra 0x186 BRA _00160_DS_ ; .line 840; ecan.c PIR3_RXB1IF = 0; 000110 92a4 bcf 0xa4, 0x1, 0 BCF _PIR3bits, 1 ; .line 843; ecan.c if ( COMSTAT_RXB1OVFL ) 000112 ac74 btfss 0x74, 0x6, 0 BTFSS _COMSTATbits, 6 000114 d013 bra 0x13c BRA _00156_DS_ ; .line 845; ecan.c *msgFlags |= ECAN_RX_OVERFLOW; 000116 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 000118 ffe9 00011a c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 00011c fff3 00011e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000120 ec51 call 0x22a2, 0 CALL __gptrget1 000122 f011 000124 6e0f movwf 0xf, 0 MOVWF r0x0f 000126 860f bsf 0xf, 0x3, 0 BSF r0x0f, 3 000128 c00f movff 0xf, 0xfe5 MOVFF r0x0f, POSTDEC1 00012a ffe5 00012c c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 00012e ffe9 000130 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 000132 fff3 000134 500b movf 0xb, 0, 0 MOVF r0x0b, W 000136 ec94 call 0x2328, 0 CALL __gptrput1 000138 f011 ; .line 846; ecan.c COMSTAT_RXB1OVFL = 0; 00013a 9c74 bcf 0x74, 0x6, 0 BCF _COMSTATbits, 6 _00156_DS_: ; .line 849; ecan.c _ECANRxFilterHitInfo.Val = RXB1CON & 0x07; 00013c 0e07 movlw 0x7 MOVLW 0x07 00013e 010f movlb 0xf BANKSEL _RXB1CON 000140 1550 andwf 0x50, 0, 0x1 ANDWF _RXB1CON, W, B 000142 6e0f movwf 0xf, 0 MOVWF r0x0f 000144 500f movf 0xf, 0, 0 MOVF r0x0f, W 000146 0100 movlb 0 BANKSEL __ECANRxFilterHitInfo 000148 6fad movwf 0xad, 0x1 MOVWF __ECANRxFilterHitInfo, B ; ;;!!! pic16_aopOp:1071 called for a spillLocation -- assigning WREG instead --- CHECK ; .line 851; ecan.c if ( _ECANRxFilterHitInfo.Val < 0x02 ) 00014a c0ad movff 0xad, 0xfe8 MOVFF __ECANRxFilterHitInfo, WREG 00014c ffe8 00014e 0e02 movlw 0x2 MOVLW 0x02 000150 5c0f subwf 0xf, 0, 0 SUBWF r0x0f, W 000152 e212 bc 0x178 BC _00158_DS_ ; .line 852; ecan.c *msgFlags |= ECAN_RX_DBL_BUFFERED; 000154 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 000156 ffe9 000158 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 00015a fff3 00015c 500b movf 0xb, 0, 0 MOVF r0x0b, W 00015e ec51 call 0x22a2, 0 CALL __gptrget1 000160 f011 000162 6e0f movwf 0xf, 0 MOVWF r0x0f 000164 8e0f bsf 0xf, 0x7, 0 BSF r0x0f, 7 000166 c00f movff 0xf, 0xfe5 MOVFF r0x0f, POSTDEC1 000168 ffe5 00016a c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 00016c ffe9 00016e c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 000170 fff3 000172 500b movf 0xb, 0, 0 MOVF r0x0b, W 000174 ec94 call 0x2328, 0 CALL __gptrput1 000176 f011 _00158_DS_: ; .line 855; ecan.c ptr = (BYTE*)&RXB1CON; 000178 0e0f movlw 0xf MOVLW HIGH(_RXB1CON) 00017a 6e0d movwf 0xd, 0 MOVWF r0x0d 00017c 0e50 movlw 0x50 MOVLW LOW(_RXB1CON) 00017e 6e0c movwf 0xc, 0 MOVWF r0x0c 000180 0e80 movlw 0x80 MOVLW 0x80 000182 6e0e movwf 0xe, 0 MOVWF r0x0e 000184 d002 bra 0x18a BRA _00165_DS_ _00160_DS_: ; .line 858; ecan.c return FALSE; 000186 6ae8 clrf 0xe8, 0 CLRF WREG 000188 d0ff bra 0x388 BRA _00177_DS_ _00165_DS_: ; .line 938; ecan.c savedPtr = ptr; 00018a c00c movff 0xc, 0xf MOVFF r0x0c, r0x0f 00018c f00f 00018e c00d movff 0xd, 0x10 MOVFF r0x0d, r0x10 000190 f010 000192 c00e movff 0xe, 0x11 MOVFF r0x0e, r0x11 000194 f011 ; .line 939; ecan.c *msgFlags = 0; 000196 0e00 movlw 0 MOVLW 0x00 000198 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00019a c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 00019c ffe9 00019e c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 0001a0 fff3 0001a2 500b movf 0xb, 0, 0 MOVF r0x0b, W 0001a4 ec94 call 0x2328, 0 CALL __gptrput1 0001a6 f011 ; .line 942; ecan.c temp.Val = *(ptr+5); 0001a8 500c movf 0xc, 0, 0 MOVF r0x0c, W 0001aa 0f05 addlw 0x5 ADDLW 0x05 0001ac 6e12 movwf 0x12, 0 MOVWF r0x12 0001ae 0e00 movlw 0 MOVLW 0x00 0001b0 200d addwfc 0xd, 0, 0 ADDWFC r0x0d, W 0001b2 6e13 movwf 0x13, 0 MOVWF r0x13 0001b4 0e00 movlw 0 MOVLW 0x00 0001b6 200e addwfc 0xe, 0, 0 ADDWFC r0x0e, W 0001b8 6e14 movwf 0x14, 0 MOVWF r0x14 0001ba c012 movff 0x12, 0xfe9 MOVFF r0x12, FSR0L 0001bc ffe9 0001be c013 movff 0x13, 0xff3 MOVFF r0x13, PRODL 0001c0 fff3 0001c2 5014 movf 0x14, 0, 0 MOVF r0x14, W 0001c4 ec51 call 0x22a2, 0 CALL __gptrget1 0001c6 f011 0001c8 6e12 movwf 0x12, 0 MOVWF r0x12 0001ca 5012 movf 0x12, 0, 0 MOVF r0x12, W 0001cc 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 0001ce 6fae movwf 0xae, 0x1 MOVWF _ECANReceiveMessage_temp_1_1, B ; ;;!!! pic16_aopOp:1071 called for a spillLocation -- assigning WREG instead --- CHECK ; .line 943; ecan.c *data1Len = temp.Val & 0b00001111; 0001d0 c0ae movff 0xae, 0xfe8 MOVFF _ECANReceiveMessage_temp_1_1, WREG 0001d2 ffe8 0001d4 0e0f movlw 0xf MOVLW 0x0f 0001d6 1612 andwf 0x12, 0x1, 0 ANDWF r0x12, F 0001d8 c012 movff 0x12, 0xfe5 MOVFF r0x12, POSTDEC1 0001da ffe5 0001dc c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0001de ffe9 0001e0 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0001e2 fff3 0001e4 5008 movf 0x8, 0, 0 MOVF r0x08, W 0001e6 ec94 call 0x2328, 0 CALL __gptrput1 0001e8 f011 0001ea 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 ; .line 946; ecan.c if ( temp.bits.b6 ) 0001ec adae btfss 0xae, 0x6, 0x1 BTFSS _ECANReceiveMessage_temp_1_1, 6, B 0001ee d012 bra 0x214 BRA _00167_DS_ ; .line 947; ecan.c *msgFlags |= ECAN_RX_RTR_FRAME; 0001f0 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 0001f2 ffe9 0001f4 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 0001f6 fff3 0001f8 500b movf 0xb, 0, 0 MOVF r0x0b, W 0001fa ec51 call 0x22a2, 0 CALL __gptrget1 0001fc f011 0001fe 6e12 movwf 0x12, 0 MOVWF r0x12 000200 8c12 bsf 0x12, 0x6, 0 BSF r0x12, 6 000202 c012 movff 0x12, 0xfe5 MOVFF r0x12, POSTDEC1 000204 ffe5 000206 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 000208 ffe9 00020a c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 00020c fff3 00020e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000210 ec94 call 0x2328, 0 CALL __gptrput1 000212 f011 _00167_DS_: ; .line 950; ecan.c temp.Val = *(ptr+2); 000214 500c movf 0xc, 0, 0 MOVF r0x0c, W 000216 0f02 addlw 0x2 ADDLW 0x02 000218 6e12 movwf 0x12, 0 MOVWF r0x12 00021a 0e00 movlw 0 MOVLW 0x00 00021c 200d addwfc 0xd, 0, 0 ADDWFC r0x0d, W 00021e 6e13 movwf 0x13, 0 MOVWF r0x13 000220 0e00 movlw 0 MOVLW 0x00 000222 200e addwfc 0xe, 0, 0 ADDWFC r0x0e, W 000224 6e14 movwf 0x14, 0 MOVWF r0x14 000226 c012 movff 0x12, 0xfe9 MOVFF r0x12, FSR0L 000228 ffe9 00022a c013 movff 0x13, 0xff3 MOVFF r0x13, PRODL 00022c fff3 00022e 5014 movf 0x14, 0, 0 MOVF r0x14, W 000230 ec51 call 0x22a2, 0 CALL __gptrget1 000232 f011 000234 6e12 movwf 0x12, 0 MOVWF r0x12 000236 5012 movf 0x12, 0, 0 MOVF r0x12, W 000238 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 00023a 6fae movwf 0xae, 0x1 MOVWF _ECANReceiveMessage_temp_1_1, B 00023c 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 ; .line 951; ecan.c if ( temp.bits.b3 ) 00023e a7ae btfss 0xae, 0x3, 0x1 BTFSS _ECANReceiveMessage_temp_1_1, 3, B 000240 d016 bra 0x26e BRA _00169_DS_ ; .line 953; ecan.c *msgFlags |= ECAN_RX_XTD_FRAME; 000242 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 000244 ffe9 000246 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 000248 fff3 00024a 500b movf 0xb, 0, 0 MOVF r0x0b, W 00024c ec51 call 0x22a2, 0 CALL __gptrget1 00024e f011 000250 6e12 movwf 0x12, 0 MOVWF r0x12 000252 8a12 bsf 0x12, 0x5, 0 BSF r0x12, 5 000254 c012 movff 0x12, 0xfe5 MOVFF r0x12, POSTDEC1 000256 ffe5 000258 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 00025a ffe9 00025c c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 00025e fff3 000260 500b movf 0xb, 0, 0 MOVF r0x0b, W 000262 ec94 call 0x2328, 0 CALL __gptrput1 000264 f011 ; .line 954; ecan.c temp.Val = ECAN_MSG_XTD; 000266 0e01 movlw 0x1 MOVLW 0x01 000268 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 00026a 6fae movwf 0xae, 0x1 MOVWF _ECANReceiveMessage_temp_1_1, B 00026c d002 bra 0x272 BRA _00170_DS_ _00169_DS_: 00026e 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 ; .line 957; ecan.c temp.Val = ECAN_MSG_STD; 000270 6bae clrf 0xae, 0x1 CLRF _ECANReceiveMessage_temp_1_1, B _00170_DS_: ; .line 959; ecan.c _RegsToCANID(ptr+1, id, temp.Val); 000272 500c movf 0xc, 0, 0 MOVF r0x0c, W 000274 0f01 addlw 0x1 ADDLW 0x01 000276 6e12 movwf 0x12, 0 MOVWF r0x12 000278 0e00 movlw 0 MOVLW 0x00 00027a 200d addwfc 0xd, 0, 0 ADDWFC r0x0d, W 00027c 6e13 movwf 0x13, 0 MOVWF r0x13 00027e 0e00 movlw 0 MOVLW 0x00 000280 200e addwfc 0xe, 0, 0 ADDWFC r0x0e, W 000282 6e14 movwf 0x14, 0 MOVWF r0x14 000284 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 000286 51ae movf 0xae, 0, 0x1 MOVF _ECANReceiveMessage_temp_1_1, W, B 000288 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00028a 5002 movf 0x2, 0, 0 MOVF r0x02, W 00028c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00028e 5001 movf 0x1, 0, 0 MOVF r0x01, W 000290 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000292 5000 movf 0, 0, 0 MOVF r0x00, W 000294 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000296 5014 movf 0x14, 0, 0 MOVF r0x14, W 000298 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00029a 5013 movf 0x13, 0, 0 MOVF r0x13, W 00029c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00029e 5012 movf 0x12, 0, 0 MOVF r0x12, W 0002a0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0002a2 ecb3 call 0xd66, 0 CALL __RegsToCANID 0002a4 f006 0002a6 0e07 movlw 0x7 MOVLW 0x07 0002a8 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 962; ecan.c ptr += 6; 0002aa 0e06 movlw 0x6 MOVLW 0x06 0002ac 260c addwf 0xc, 0x1, 0 ADDWF r0x0c, F 0002ae 0e00 movlw 0 MOVLW 0x00 0002b0 220d addwfc 0xd, 0x1, 0 ADDWFC r0x0d, F 0002b2 0e00 movlw 0 MOVLW 0x00 0002b4 220e addwfc 0xe, 0x1, 0 ADDWFC r0x0e, F ; .line 963; ecan.c temp.Val = *data1Len; 0002b6 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0002b8 ffe9 0002ba c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0002bc fff3 0002be 5008 movf 0x8, 0, 0 MOVF r0x08, W 0002c0 ec51 call 0x22a2, 0 CALL __gptrget1 0002c2 f011 0002c4 6e06 movwf 0x6, 0 MOVWF r0x06 0002c6 5006 movf 0x6, 0, 0 MOVF r0x06, W 0002c8 0100 movlb 0 BANKSEL _ECANReceiveMessage_temp_1_1 0002ca 6fae movwf 0xae, 0x1 MOVWF _ECANReceiveMessage_temp_1_1, B ; .line 964; ecan.c for ( i = 0; i < temp.Val; i++ ) 0002cc c00c movff 0xc, 0 MOVFF r0x0c, r0x00 0002ce f000 0002d0 c00d movff 0xd, 0x1 MOVFF r0x0d, r0x01 0002d2 f001 0002d4 c00e movff 0xe, 0x2 MOVFF r0x0e, r0x02 0002d6 f002 0002d8 6a06 clrf 0x6, 0 CLRF r0x06 _00173_DS_: 0002da c006 movff 0x6, 0x7 MOVFF r0x06, r0x07 0002dc f007 0002de 6a08 clrf 0x8, 0 CLRF r0x08 0002e0 be06 btfsc 0x6, 0x7, 0 BTFSC r0x06, 7 0002e2 6808 setf 0x8, 0 SETF r0x08 0002e4 c0ae movff 0xae, 0xc MOVFF _ECANReceiveMessage_temp_1_1, r0x0c 0002e6 f00c 0002e8 6a0d clrf 0xd, 0 CLRF r0x0d 0002ea 5008 movf 0x8, 0, 0 MOVF r0x08, W 0002ec 0f80 addlw 0x80 ADDLW 0x80 0002ee 6ef3 movwf 0xf3, 0 MOVWF PRODL 0002f0 500d movf 0xd, 0, 0 MOVF r0x0d, W 0002f2 0f80 addlw 0x80 ADDLW 0x80 0002f4 5cf3 subwf 0xf3, 0, 0 SUBWF PRODL, W 0002f6 e102 bnz 0x2fc BNZ _00198_DS_ 0002f8 500c movf 0xc, 0, 0 MOVF r0x0c, W 0002fa 5c07 subwf 0x7, 0, 0 SUBWF r0x07, W _00198_DS_: 0002fc e21d bc 0x338 BC _00176_DS_ ; .line 965; ecan.c *data1++ = *ptr++; 0002fe c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000300 ffe9 000302 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000304 fff3 000306 5002 movf 0x2, 0, 0 MOVF r0x02, W 000308 ec51 call 0x22a2, 0 CALL __gptrget1 00030a f011 00030c 6e07 movwf 0x7, 0 MOVWF r0x07 00030e 2a00 incf 0, 0x1, 0 INCF r0x00, F 000310 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000312 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000314 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000316 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000318 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00031a ffe5 00031c c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 00031e ffe9 000320 c004 movff 0x4, 0xff3 MOVFF r0x04, PRODL 000322 fff3 000324 5005 movf 0x5, 0, 0 MOVF r0x05, W 000326 ec94 call 0x2328, 0 CALL __gptrput1 000328 f011 00032a 2a03 incf 0x3, 0x1, 0 INCF r0x03, F 00032c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00032e 2a04 incf 0x4, 0x1, 0 INCF r0x04, F 000330 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000332 2a05 incf 0x5, 0x1, 0 INCF r0x05, F ; .line 964; ecan.c for ( i = 0; i < temp.Val; i++ ) 000334 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 000336 d7d1 bra 0x2da BRA _00173_DS_ _00176_DS_: ; .line 968; ecan.c if ( PIR3_IRXIF ) 000338 aea4 btfss 0xa4, 0x7, 0 BTFSS _PIR3bits, 7 00033a d013 bra 0x362 BRA _00172_DS_ ; .line 970; ecan.c *msgFlags |= ECAN_RX_INVALID_MSG; 00033c c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 00033e ffe9 000340 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 000342 fff3 000344 500b movf 0xb, 0, 0 MOVF r0x0b, W 000346 ec51 call 0x22a2, 0 CALL __gptrget1 000348 f011 00034a 6e00 movwf 0, 0 MOVWF r0x00 00034c 8800 bsf 0, 0x4, 0 BSF r0x00, 4 00034e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000350 ffe5 000352 c009 movff 0x9, 0xfe9 MOVFF r0x09, FSR0L 000354 ffe9 000356 c00a movff 0xa, 0xff3 MOVFF r0x0a, PRODL 000358 fff3 00035a 500b movf 0xb, 0, 0 MOVF r0x0b, W 00035c ec94 call 0x2328, 0 CALL __gptrput1 00035e f011 ; .line 971; ecan.c PIR3_IRXIF = 0; 000360 9ea4 bcf 0xa4, 0x7, 0 BCF _PIR3bits, 7 _00172_DS_: ; .line 975; ecan.c *savedPtr &= 0x7f; 000362 c00f movff 0xf, 0xfe9 MOVFF r0x0f, FSR0L 000364 ffe9 000366 c010 movff 0x10, 0xff3 MOVFF r0x10, PRODL 000368 fff3 00036a 5011 movf 0x11, 0, 0 MOVF r0x11, W 00036c ec51 call 0x22a2, 0 CALL __gptrget1 00036e f011 000370 6e00 movwf 0, 0 MOVWF r0x00 000372 9e00 bcf 0, 0x7, 0 BCF r0x00, 7 000374 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000376 ffe5 000378 c00f movff 0xf, 0xfe9 MOVFF r0x0f, FSR0L 00037a ffe9 00037c c010 movff 0x10, 0xff3 MOVFF r0x10, PRODL 00037e fff3 000380 5011 movf 0x11, 0, 0 MOVF r0x11, W 000382 ec94 call 0x2328, 0 CALL __gptrput1 000384 f011 ; .line 986; ecan.c return TRUE; 000386 0e01 movlw 0x1 MOVLW 0x01 _00177_DS_: 000388 cfe4 movff 0xfe4, 0x14 MOVFF PREINC1, r0x14 00038a f014 00038c cfe4 movff 0xfe4, 0x13 MOVFF PREINC1, r0x13 00038e f013 000390 cfe4 movff 0xfe4, 0x12 MOVFF PREINC1, r0x12 000392 f012 000394 cfe4 movff 0xfe4, 0x11 MOVFF PREINC1, r0x11 000396 f011 000398 cfe4 movff 0xfe4, 0x10 MOVFF PREINC1, r0x10 00039a f010 00039c cfe4 movff 0xfe4, 0xf MOVFF PREINC1, r0x0f 00039e f00f 0003a0 cfe4 movff 0xfe4, 0xe MOVFF PREINC1, r0x0e 0003a2 f00e 0003a4 cfe4 movff 0xfe4, 0xd MOVFF PREINC1, r0x0d 0003a6 f00d 0003a8 cfe4 movff 0xfe4, 0xc MOVFF PREINC1, r0x0c 0003aa f00c 0003ac cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 0003ae f00b 0003b0 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 0003b2 f00a 0003b4 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 0003b6 f009 0003b8 cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 0003ba f008 0003bc cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0003be f007 0003c0 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0003c2 f006 0003c4 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0003c6 f005 0003c8 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0003ca f004 0003cc cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0003ce f003 0003d0 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0003d2 f002 0003d4 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0003d6 f001 0003d8 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0003da f000 0003dc cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0003de ffd9 0003e0 0012 return 0 RETURN ; ; Starting pCode block S_ecan__ECANSendMessage code _ECANSendMessage: ; .line 609; ecan.c BOOL ECANSendMessage( unsigned long id, 0007b0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0007b2 ffe5 0007b4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0007b6 ffd9 0007b8 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0007ba ffe5 0007bc c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0007be ffe5 0007c0 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0007c2 ffe5 0007c4 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0007c6 ffe5 0007c8 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 0007ca ffe5 0007cc c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 0007ce ffe5 0007d0 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 0007d2 ffe5 0007d4 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0007d6 ffe5 0007d8 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 0007da ffe5 0007dc c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 0007de ffe5 0007e0 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 0007e2 ffe5 0007e4 c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 0007e6 ffe5 0007e8 c00c movff 0xc, 0xfe5 MOVFF r0x0c, POSTDEC1 0007ea ffe5 0007ec c00d movff 0xd, 0xfe5 MOVFF r0x0d, POSTDEC1 0007ee ffe5 0007f0 c00e movff 0xe, 0xfe5 MOVFF r0x0e, POSTDEC1 0007f2 ffe5 0007f4 c00f movff 0xf, 0xfe5 MOVFF r0x0f, POSTDEC1 0007f6 ffe5 0007f8 c010 movff 0x10, 0xfe5 MOVFF r0x10, POSTDEC1 0007fa ffe5 0007fc c011 movff 0x11, 0xfe5 MOVFF r0x11, POSTDEC1 0007fe ffe5 000800 c012 movff 0x12, 0xfe5 MOVFF r0x12, POSTDEC1 000802 ffe5 000804 c013 movff 0x13, 0xfe5 MOVFF r0x13, POSTDEC1 000806 ffe5 000808 c014 movff 0x14, 0xfe5 MOVFF r0x14, POSTDEC1 00080a ffe5 00080c c015 movff 0x15, 0xfe5 MOVFF r0x15, POSTDEC1 00080e ffe5 000810 0e02 movlw 0x2 MOVLW 0x02 000812 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000814 f000 000816 0e03 movlw 0x3 MOVLW 0x03 000818 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 00081a f001 00081c 0e04 movlw 0x4 MOVLW 0x04 00081e cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000820 f002 000822 0e05 movlw 0x5 MOVLW 0x05 000824 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000826 f003 000828 0e06 movlw 0x6 MOVLW 0x06 00082a cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 00082c f004 00082e 0e07 movlw 0x7 MOVLW 0x07 000830 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 000832 f005 000834 0e08 movlw 0x8 MOVLW 0x08 000836 cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000838 f006 00083a 0e09 movlw 0x9 MOVLW 0x09 00083c cfdb movff 0xfdb, 0x7 MOVFF PLUSW2, r0x07 00083e f007 000840 0e0a movlw 0xa MOVLW 0x0a 000842 cfdb movff 0xfdb, 0x8 MOVFF PLUSW2, r0x08 000844 f008 ; .line 637; ecan.c pb[0]=(BYTE*)&TXB0CON; 000846 0e0f movlw 0xf MOVLW HIGH(_TXB0CON) 000848 6e0a movwf 0xa, 0 MOVWF r0x0a 00084a 0e40 movlw 0x40 MOVLW LOW(_TXB0CON) 00084c 6e09 movwf 0x9, 0 MOVWF r0x09 00084e 0e80 movlw 0x80 MOVLW 0x80 000850 6e0b movwf 0xb, 0 MOVWF r0x0b 000852 5009 movf 0x9, 0, 0 MOVF r0x09, W 000854 0100 movlb 0 BANKSEL _ECANSendMessage_pb_1_1 000856 6f60 movwf 0x60, 0x1 MOVWF _ECANSendMessage_pb_1_1, B 000858 500a movf 0xa, 0, 0 MOVF r0x0a, W 00085a 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 1) 00085c 6f61 movwf 0x61, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 1), B 00085e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000860 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 2) 000862 6f62 movwf 0x62, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 2), B ; .line 638; ecan.c pb[1]=(BYTE*)&TXB1CON; 000864 0e0f movlw 0xf MOVLW HIGH(_TXB1CON) 000866 6e0a movwf 0xa, 0 MOVWF r0x0a 000868 0e30 movlw 0x30 MOVLW LOW(_TXB1CON) 00086a 6e09 movwf 0x9, 0 MOVWF r0x09 00086c 0e80 movlw 0x80 MOVLW 0x80 00086e 6e0b movwf 0xb, 0 MOVWF r0x0b 000870 5009 movf 0x9, 0, 0 MOVF r0x09, W 000872 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 3) 000874 6f63 movwf 0x63, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 3), B 000876 500a movf 0xa, 0, 0 MOVF r0x0a, W 000878 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 4) 00087a 6f64 movwf 0x64, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 4), B 00087c 500b movf 0xb, 0, 0 MOVF r0x0b, W 00087e 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 5) 000880 6f65 movwf 0x65, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 5), B ; .line 639; ecan.c pb[2]=(BYTE*)&TXB2CON; 000882 0e0f movlw 0xf MOVLW HIGH(_TXB2CON) 000884 6e0a movwf 0xa, 0 MOVWF r0x0a 000886 0e20 movlw 0x20 MOVLW LOW(_TXB2CON) 000888 6e09 movwf 0x9, 0 MOVWF r0x09 00088a 0e80 movlw 0x80 MOVLW 0x80 00088c 6e0b movwf 0xb, 0 MOVWF r0x0b 00088e 5009 movf 0x9, 0, 0 MOVF r0x09, W 000890 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 6) 000892 6f66 movwf 0x66, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 6), B 000894 500a movf 0xa, 0, 0 MOVF r0x0a, W 000896 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 7) 000898 6f67 movwf 0x67, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 7), B 00089a 500b movf 0xb, 0, 0 MOVF r0x0b, W 00089c 0100 movlb 0 BANKSEL (_ECANSendMessage_pb_1_1 + 8) 00089e 6f68 movwf 0x68, 0x1 MOVWF (_ECANSendMessage_pb_1_1 + 8), B ; .line 669; ecan.c for ( i = 0; i < buffers; i++ ) 0008a0 6a09 clrf 0x9, 0 CLRF r0x09 0008a2 6a0a clrf 0xa, 0 CLRF r0x0a _00124_DS_: 0008a4 0e02 movlw 0x2 MOVLW 0x02 0008a6 5c09 subwf 0x9, 0, 0 SUBWF r0x09, W 0008a8 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0008aa d0c5 bra 0xa36 BRA _00127_DS_ ; .line 689; ecan.c ptr = pb[i]; 0008ac 0e60 movlw 0x60 MOVLW LOW(_ECANSendMessage_pb_1_1) 0008ae 240a addwf 0xa, 0, 0 ADDWF r0x0a, W 0008b0 6e0b movwf 0xb, 0 MOVWF r0x0b 0008b2 6a0c clrf 0xc, 0 CLRF r0x0c 0008b4 0e00 movlw 0 MOVLW HIGH(_ECANSendMessage_pb_1_1) 0008b6 220c addwfc 0xc, 0x1, 0 ADDWFC r0x0c, F 0008b8 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 0008ba ffe9 0008bc c00c movff 0xc, 0xfea MOVFF r0x0c, FSR0H 0008be ffea 0008c0 cfee movff 0xfee, 0xb MOVFF POSTINC0, r0x0b 0008c2 f00b 0008c4 cfee movff 0xfee, 0xc MOVFF POSTINC0, r0x0c 0008c6 f00c 0008c8 cfef movff 0xfef, 0xd MOVFF INDF0, r0x0d 0008ca f00d ; .line 690; ecan.c tempPtr = ptr; 0008cc c00b movff 0xb, 0xe MOVFF r0x0b, r0x0e 0008ce f00e 0008d0 c00c movff 0xc, 0xf MOVFF r0x0c, r0x0f 0008d2 f00f 0008d4 c00d movff 0xd, 0x10 MOVFF r0x0d, r0x10 0008d6 f010 ; .line 716; ecan.c if ( !(*ptr & 0x08) ) 0008d8 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 0008da ffe9 0008dc c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 0008de fff3 0008e0 500d movf 0xd, 0, 0 MOVF r0x0d, W 0008e2 ec51 call 0x22a2, 0 CALL __gptrget1 0008e4 f011 0008e6 6e11 movwf 0x11, 0 MOVWF r0x11 0008e8 b611 btfsc 0x11, 0x3, 0 BTFSC r0x11, 3 0008ea d0a1 bra 0xa2e BRA _00126_DS_ ; .line 719; ecan.c *ptr &= ~ECAN_TX_PRIORITY_BITS; 0008ec 0efc movlw 0xfc MOVLW 0xfc 0008ee 1611 andwf 0x11, 0x1, 0 ANDWF r0x11, F 0008f0 c011 movff 0x11, 0xfe5 MOVFF r0x11, POSTDEC1 0008f2 ffe5 0008f4 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 0008f6 ffe9 0008f8 c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 0008fa fff3 0008fc 500d movf 0xd, 0, 0 MOVF r0x0d, W 0008fe ec94 call 0x2328, 0 CALL __gptrput1 000900 f011 ; .line 720; ecan.c *ptr |= msgFlags & ECAN_TX_PRIORITY_BITS; 000902 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 000904 ffe9 000906 c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 000908 fff3 00090a 500d movf 0xd, 0, 0 MOVF r0x0d, W 00090c ec51 call 0x22a2, 0 CALL __gptrget1 00090e f011 000910 6e11 movwf 0x11, 0 MOVWF r0x11 000912 0e03 movlw 0x3 MOVLW 0x03 000914 1408 andwf 0x8, 0, 0 ANDWF r0x08, W 000916 6e12 movwf 0x12, 0 MOVWF r0x12 000918 5012 movf 0x12, 0, 0 MOVF r0x12, W 00091a 1211 iorwf 0x11, 0x1, 0 IORWF r0x11, F 00091c c011 movff 0x11, 0xfe5 MOVFF r0x11, POSTDEC1 00091e ffe5 000920 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 000922 ffe9 000924 c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 000926 fff3 000928 500d movf 0xd, 0, 0 MOVF r0x0d, W 00092a ec94 call 0x2328, 0 CALL __gptrput1 00092c f011 ; .line 723; ecan.c if ( msgFlags & ECAN_TX_RTR_BIT ) 00092e ac08 btfss 0x8, 0x6, 0 BTFSS r0x08, 6 000930 d004 bra 0x93a BRA _00111_DS_ ; .line 724; ecan.c temp = 0x40 | data1Len; 000932 0e40 movlw 0x40 MOVLW 0x40 000934 1007 iorwf 0x7, 0, 0 IORWF r0x07, W 000936 6e11 movwf 0x11, 0 MOVWF r0x11 000938 d002 bra 0x93e BRA _00112_DS_ _00111_DS_: ; .line 726; ecan.c temp = data1Len; 00093a c007 movff 0x7, 0x11 MOVFF r0x07, r0x11 00093c f011 _00112_DS_: ; .line 728; ecan.c *(ptr+5) = temp; 00093e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000940 0f05 addlw 0x5 ADDLW 0x05 000942 6e12 movwf 0x12, 0 MOVWF r0x12 000944 0e00 movlw 0 MOVLW 0x00 000946 200c addwfc 0xc, 0, 0 ADDWFC r0x0c, W 000948 6e13 movwf 0x13, 0 MOVWF r0x13 00094a 0e00 movlw 0 MOVLW 0x00 00094c 200d addwfc 0xd, 0, 0 ADDWFC r0x0d, W 00094e 6e14 movwf 0x14, 0 MOVWF r0x14 000950 c011 movff 0x11, 0xfe5 MOVFF r0x11, POSTDEC1 000952 ffe5 000954 c012 movff 0x12, 0xfe9 MOVFF r0x12, FSR0L 000956 ffe9 000958 c013 movff 0x13, 0xff3 MOVFF r0x13, PRODL 00095a fff3 00095c 5014 movf 0x14, 0, 0 MOVF r0x14, W 00095e ec94 call 0x2328, 0 CALL __gptrput1 000960 f011 ; .line 731; ecan.c if ( msgFlags & ECAN_TX_FRAME_BIT ) 000962 aa08 btfss 0x8, 0x5, 0 BTFSS r0x08, 5 000964 d003 bra 0x96c BRA _00114_DS_ ; .line 732; ecan.c temp = ECAN_MSG_XTD; 000966 0e01 movlw 0x1 MOVLW 0x01 000968 6e11 movwf 0x11, 0 MOVWF r0x11 00096a d001 bra 0x96e BRA _00115_DS_ _00114_DS_: ; .line 735; ecan.c temp = ECAN_MSG_STD; 00096c 6a11 clrf 0x11, 0 CLRF r0x11 _00115_DS_: ; .line 738; ecan.c _CANIDToRegs((BYTE*)(ptr+1), id, temp); 00096e 500b movf 0xb, 0, 0 MOVF r0x0b, W 000970 0f01 addlw 0x1 ADDLW 0x01 000972 6e12 movwf 0x12, 0 MOVWF r0x12 000974 0e00 movlw 0 MOVLW 0x00 000976 200c addwfc 0xc, 0, 0 ADDWFC r0x0c, W 000978 6e13 movwf 0x13, 0 MOVWF r0x13 00097a 0e00 movlw 0 MOVLW 0x00 00097c 200d addwfc 0xd, 0, 0 ADDWFC r0x0d, W 00097e 6e14 movwf 0x14, 0 MOVWF r0x14 000980 5011 movf 0x11, 0, 0 MOVF r0x11, W 000982 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000984 5003 movf 0x3, 0, 0 MOVF r0x03, W 000986 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000988 5002 movf 0x2, 0, 0 MOVF r0x02, W 00098a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00098c 5001 movf 0x1, 0, 0 MOVF r0x01, W 00098e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000990 5000 movf 0, 0, 0 MOVF r0x00, W 000992 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000994 5014 movf 0x14, 0, 0 MOVF r0x14, W 000996 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000998 5013 movf 0x13, 0, 0 MOVF r0x13, W 00099a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00099c 5012 movf 0x12, 0, 0 MOVF r0x12, W 00099e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009a0 ec1b call 0x1036, 0 CALL __CANIDToRegs 0009a2 f008 0009a4 0e08 movlw 0x8 MOVLW 0x08 0009a6 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 741; ecan.c ptr += 6; 0009a8 0e06 movlw 0x6 MOVLW 0x06 0009aa 260b addwf 0xb, 0x1, 0 ADDWF r0x0b, F 0009ac 0e00 movlw 0 MOVLW 0x00 0009ae 220c addwfc 0xc, 0x1, 0 ADDWFC r0x0c, F 0009b0 0e00 movlw 0 MOVLW 0x00 0009b2 220d addwfc 0xd, 0x1, 0 ADDWFC r0x0d, F ; .line 743; ecan.c for ( j = 0 ; j < data1Len; j++ ) 0009b4 c004 movff 0x4, 0x11 MOVFF r0x04, r0x11 0009b6 f011 0009b8 c005 movff 0x5, 0x12 MOVFF r0x05, r0x12 0009ba f012 0009bc c006 movff 0x6, 0x13 MOVFF r0x06, r0x13 0009be f013 0009c0 6a14 clrf 0x14, 0 CLRF r0x14 _00120_DS_: 0009c2 5007 movf 0x7, 0, 0 MOVF r0x07, W 0009c4 5c14 subwf 0x14, 0, 0 SUBWF r0x14, W 0009c6 e21d bc 0xa02 BC _00123_DS_ ; .line 744; ecan.c *ptr++ = *data1++; 0009c8 c011 movff 0x11, 0xfe9 MOVFF r0x11, FSR0L 0009ca ffe9 0009cc c012 movff 0x12, 0xff3 MOVFF r0x12, PRODL 0009ce fff3 0009d0 5013 movf 0x13, 0, 0 MOVF r0x13, W 0009d2 ec51 call 0x22a2, 0 CALL __gptrget1 0009d4 f011 0009d6 6e15 movwf 0x15, 0 MOVWF r0x15 0009d8 2a11 incf 0x11, 0x1, 0 INCF r0x11, F 0009da b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009dc 2a12 incf 0x12, 0x1, 0 INCF r0x12, F 0009de b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009e0 2a13 incf 0x13, 0x1, 0 INCF r0x13, F 0009e2 c015 movff 0x15, 0xfe5 MOVFF r0x15, POSTDEC1 0009e4 ffe5 0009e6 c00b movff 0xb, 0xfe9 MOVFF r0x0b, FSR0L 0009e8 ffe9 0009ea c00c movff 0xc, 0xff3 MOVFF r0x0c, PRODL 0009ec fff3 0009ee 500d movf 0xd, 0, 0 MOVF r0x0d, W 0009f0 ec94 call 0x2328, 0 CALL __gptrput1 0009f2 f011 0009f4 2a0b incf 0xb, 0x1, 0 INCF r0x0b, F 0009f6 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009f8 2a0c incf 0xc, 0x1, 0 INCF r0x0c, F 0009fa b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009fc 2a0d incf 0xd, 0x1, 0 INCF r0x0d, F ; .line 743; ecan.c for ( j = 0 ; j < data1Len; j++ ) 0009fe 2a14 incf 0x14, 0x1, 0 INCF r0x14, F 000a00 d7e0 bra 0x9c2 BRA _00120_DS_ _00123_DS_: ; .line 748; ecan.c if ( !(*tempPtr & 0x04) ) 000a02 c00e movff 0xe, 0xfe9 MOVFF r0x0e, FSR0L 000a04 ffe9 000a06 c00f movff 0xf, 0xff3 MOVFF r0x0f, PRODL 000a08 fff3 000a0a 5010 movf 0x10, 0, 0 MOVF r0x10, W 000a0c ec51 call 0x22a2, 0 CALL __gptrget1 000a0e f011 000a10 6e0b movwf 0xb, 0 MOVWF r0x0b 000a12 b40b btfsc 0xb, 0x2, 0 BTFSC r0x0b, 2 000a14 d00a bra 0xa2a BRA _00117_DS_ ; .line 749; ecan.c *tempPtr |= 0x08; 000a16 860b bsf 0xb, 0x3, 0 BSF r0x0b, 3 000a18 c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 000a1a ffe5 000a1c c00e movff 0xe, 0xfe9 MOVFF r0x0e, FSR0L 000a1e ffe9 000a20 c00f movff 0xf, 0xff3 MOVFF r0x0f, PRODL 000a22 fff3 000a24 5010 movf 0x10, 0, 0 MOVF r0x10, W 000a26 ec94 call 0x2328, 0 CALL __gptrput1 000a28 f011 _00117_DS_: ; .line 751; ecan.c return TRUE; 000a2a 0e01 movlw 0x1 MOVLW 0x01 000a2c d005 bra 0xa38 BRA _00128_DS_ _00126_DS_: ; .line 669; ecan.c for ( i = 0; i < buffers; i++ ) 000a2e 0e03 movlw 0x3 MOVLW 0x03 000a30 260a addwf 0xa, 0x1, 0 ADDWF r0x0a, F 000a32 2a09 incf 0x9, 0x1, 0 INCF r0x09, F 000a34 d737 bra 0x8a4 BRA _00124_DS_ _00127_DS_: ; .line 756; ecan.c return FALSE; 000a36 6ae8 clrf 0xe8, 0 CLRF WREG _00128_DS_: 000a38 cfe4 movff 0xfe4, 0x15 MOVFF PREINC1, r0x15 000a3a f015 000a3c cfe4 movff 0xfe4, 0x14 MOVFF PREINC1, r0x14 000a3e f014 000a40 cfe4 movff 0xfe4, 0x13 MOVFF PREINC1, r0x13 000a42 f013 000a44 cfe4 movff 0xfe4, 0x12 MOVFF PREINC1, r0x12 000a46 f012 000a48 cfe4 movff 0xfe4, 0x11 MOVFF PREINC1, r0x11 000a4a f011 000a4c cfe4 movff 0xfe4, 0x10 MOVFF PREINC1, r0x10 000a4e f010 000a50 cfe4 movff 0xfe4, 0xf MOVFF PREINC1, r0x0f 000a52 f00f 000a54 cfe4 movff 0xfe4, 0xe MOVFF PREINC1, r0x0e 000a56 f00e 000a58 cfe4 movff 0xfe4, 0xd MOVFF PREINC1, r0x0d 000a5a f00d 000a5c cfe4 movff 0xfe4, 0xc MOVFF PREINC1, r0x0c 000a5e f00c 000a60 cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 000a62 f00b 000a64 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 000a66 f00a 000a68 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 000a6a f009 000a6c cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 000a6e f008 000a70 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 000a72 f007 000a74 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000a76 f006 000a78 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000a7a f005 000a7c cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000a7e f004 000a80 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000a82 f003 000a84 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000a86 f002 000a88 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000a8a f001 000a8c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000a8e f000 000a90 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000a92 ffd9 000a94 0012 return 0 RETURN ; ; Starting pCode block S_ecan__ECANInitialize code _ECANInitialize: ; .line 163; ecan.c void ECANInitialize(void) 001dba cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001dbc ffe5 001dbe cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001dc0 ffd9 ; .line 167; ecan.c ECANSetOperationMode(ECAN_OP_MODE_CONFIG); 001dc2 0e80 movlw 0x80 MOVLW 0x80 001dc4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001dc6 ec0b call 0x2216, 0 CALL _ECANSetOperationMode 001dc8 f011 001dca 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 171; ecan.c BRGCON1 = ((ECAN_SJW_VAL-1) << 6) | (ECAN_BRP_VAL-1); 001dcc 0e01 movlw 0x1 MOVLW 0x01 001dce 6e70 movwf 0x70, 0 MOVWF _BRGCON1 ; .line 172; ecan.c BRGCON2 = (ECAN_PHSEG2_MODE_VAL << 7) | \ 001dd0 0eae movlw 0xae MOVLW 0xae 001dd2 6e71 movwf 0x71, 0 MOVWF _BRGCON2 ; .line 178; ecan.c (ECAN_PHSEG2_VAL-1); 001dd4 0e05 movlw 0x5 MOVLW 0x05 001dd6 6e72 movwf 0x72, 0 MOVWF _BRGCON3 ; .line 181; ecan.c CIOCON = ECAN_TX2_SOURCE_VAL << 7 | \ 001dd8 0e20 movlw 0x20 MOVLW 0x20 001dda 6e73 movwf 0x73, 0 MOVWF _CIOCON ; .line 188; ecan.c ECANCON_MDSEL1 = 0; 001ddc 9e77 bcf 0x77, 0x7, 0 BCF _ECANCONbits, 7 ; .line 189; ecan.c ECANCON_MDSEL0 = 0; 001dde 9c77 bcf 0x77, 0x6, 0 BCF _ECANCONbits, 6 ; .line 194; ecan.c RXB0CON = (ECAN_RXB0_MODE_VAL << 5) | (ECAN_RXB0_DBL_BUFFER_MODE_VAL << 2); 001de0 0e04 movlw 0x4 MOVLW 0x04 001de2 6e60 movwf 0x60, 0 MOVWF _RXB0CON 001de4 010f movlb 0xf BANKSEL _RXB1CON ; .line 195; ecan.c RXB1CON = ECAN_RXB1_MODE_VAL << 5; 001de6 6b50 clrf 0x50, 0x1 CLRF _RXB1CON, B 001de8 010f movlb 0xf BANKSEL _RXF0SIDH ; .line 289; ecan.c _SetStdRXFnValue(RXF0, ECAN_RXF0_VAL); 001dea 6b00 clrf 0, 0x1 CLRF _RXF0SIDH, B 001dec 010f movlb 0xf BANKSEL _RXF0SIDL 001dee 6b01 clrf 0x1, 0x1 CLRF _RXF0SIDL, B 001df0 010f movlb 0xf BANKSEL _RXF1SIDH ; .line 297; ecan.c _SetStdRXFnValue(RXF1, ECAN_RXF1_VAL); 001df2 6b04 clrf 0x4, 0x1 CLRF _RXF1SIDH, B 001df4 010f movlb 0xf BANKSEL _RXF1SIDL 001df6 6b05 clrf 0x5, 0x1 CLRF _RXF1SIDL, B 001df8 010f movlb 0xf BANKSEL _RXF2SIDH ; .line 306; ecan.c _SetStdRXFnValue(RXF2, ECAN_RXF2_VAL); 001dfa 6b08 clrf 0x8, 0x1 CLRF _RXF2SIDH, B 001dfc 010f movlb 0xf BANKSEL _RXF2SIDL 001dfe 6b09 clrf 0x9, 0x1 CLRF _RXF2SIDL, B 001e00 010f movlb 0xf BANKSEL _RXF3SIDH ; .line 315; ecan.c _SetStdRXFnValue(RXF3, ECAN_RXF3_VAL); 001e02 6b0c clrf 0xc, 0x1 CLRF _RXF3SIDH, B 001e04 010f movlb 0xf BANKSEL _RXF3SIDL 001e06 6b0d clrf 0xd, 0x1 CLRF _RXF3SIDL, B 001e08 010f movlb 0xf BANKSEL _RXF4SIDH ; .line 324; ecan.c _SetStdRXFnValue(RXF4, ECAN_RXF4_VAL); 001e0a 6b10 clrf 0x10, 0x1 CLRF _RXF4SIDH, B 001e0c 010f movlb 0xf BANKSEL _RXF4SIDL 001e0e 6b11 clrf 0x11, 0x1 CLRF _RXF4SIDL, B 001e10 010f movlb 0xf BANKSEL _RXF5SIDH ; .line 332; ecan.c _SetStdRXFnValue(RXF5, ECAN_RXF4_VAL); 001e12 6b14 clrf 0x14, 0x1 CLRF _RXF5SIDH, B 001e14 010f movlb 0xf BANKSEL _RXF5SIDL 001e16 6b15 clrf 0x15, 0x1 CLRF _RXF5SIDL, B 001e18 010f movlb 0xf BANKSEL _RXM0SIDH ; .line 474; ecan.c _SetStdRXMnValue(0, ECAN_RXM0_VAL); 001e1a 6b18 clrf 0x18, 0x1 CLRF _RXM0SIDH, B 001e1c 010f movlb 0xf BANKSEL _RXM0SIDL 001e1e 6b19 clrf 0x19, 0x1 CLRF _RXM0SIDL, B 001e20 010f movlb 0xf BANKSEL _RXM0SIDLbits ; .line 475; ecan.c RXM0SIDL_EXIDEN = 0; 001e22 9719 bcf 0x19, 0x3, 0x1 BCF _RXM0SIDLbits, 3, B 001e24 010f movlb 0xf BANKSEL _RXM1SIDH ; .line 482; ecan.c _SetStdRXMnValue(1, ECAN_RXM1_VAL); 001e26 6b1c clrf 0x1c, 0x1 CLRF _RXM1SIDH, B 001e28 010f movlb 0xf BANKSEL _RXM1SIDL 001e2a 6b1d clrf 0x1d, 0x1 CLRF _RXM1SIDL, B 001e2c 010f movlb 0xf BANKSEL _RXM1SIDLbits ; .line 483; ecan.c RXM1SIDL_EXIDEN = 0; 001e2e 971d bcf 0x1d, 0x3, 0x1 BCF _RXM1SIDLbits, 3, B ; .line 494; ecan.c ECANSetOperationMode(ECAN_INIT_MODE); 001e30 0e00 movlw 0 MOVLW 0x00 001e32 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001e34 ec0b call 0x2216, 0 CALL _ECANSetOperationMode 001e36 f011 001e38 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 001e3a cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001e3c ffd9 001e3e 0012 return 0 RETURN ; Statistics: ; code size: 3294 (0x0cde) bytes ( 2.51%) ; 1647 (0x066f) words ; udata size: 33 (0x0021) bytes ( 0.86%) ; access size: 22 (0x0016) bytes end