gplink-0.13.5 alpha Copyright (c) 1998-2005 gputils project Listing File Generated: 9-19-2008 15:32:03 Address Value Disassembly Source ------- ----- ----------- ------ ;-------------------------------------------------------- ; File Created by SDCC : free open source ANSI-C Compiler ; Version 2.8.3 #5235 (Sep 15 2008) (UNIX) ; This file was generated Fri Sep 19 15:32:03 2008 ;-------------------------------------------------------- ; PIC16 port for the Microchip 16-bit core micros ;-------------------------------------------------------- list p=18f2520 radix dec ;-------------------------------------------------------- ; public variables in this module ;-------------------------------------------------------- global _stack global _stack_end global _timerHigh global _delayMs global _i2cReset global _i2cInit global _i2cWaitForIdle1 global _i2cWaitForIdle global _i2cStart global _i2cRepStart global _i2cStop global _i2cPutByte global _i2cGetByte global _i2cWrite global _i2cRead global _lcdInit global _lcdPutChar global _lcdWriteStr global _lcdPutHexByte global _strByte global _strWordDec global _usartInit global _usartRxRdy global _usartGetc global _usartPutc global _usartPuts global _usartWrite global _eepromRead8 global _eepromWrite8 global _eepromRead16 global _eepromWrite16 global _eepromRead32 global _eepromWrite32 global _timerInit global _timerClear global _timerTick global _timerGetMicroSec global _timerGetMilliSec global _timerGetSec global _adcInit global _adcRead global _isr global _main ;-------------------------------------------------------- ; extern variables in this module ;-------------------------------------------------------- extern __gptrget1 extern __gptrput1 extern __divuchar extern __moduchar extern _PORTAbits extern _PORTBbits extern _PORTCbits extern _PORTDbits extern _PORTEbits extern _LATAbits extern _LATBbits extern _LATCbits extern _LATDbits extern _LATEbits extern _DDRAbits extern _TRISAbits extern _DDRBbits extern _TRISBbits extern _DDRCbits extern _TRISCbits extern _DDRDbits extern _TRISDbits extern _DDREbits extern _TRISEbits extern _OSCTUNEbits extern _PIE1bits extern _PIR1bits extern _IPR1bits extern _PIE2bits extern _PIR2bits extern _IPR2bits extern _EECON1bits extern _RCSTAbits extern _TXSTAbits extern _T3CONbits extern _CMCONbits extern _CVRCONbits extern _ECCP1ASbits extern _PWM1CONbits extern _BAUDCONbits extern _BAUDCTLbits extern _CCP2CONbits 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 _PORTA extern _PORTB extern _PORTC extern _PORTD extern _PORTE extern _LATA extern _LATB extern _LATC extern _LATD extern _LATE extern _DDRA extern _TRISA extern _DDRB extern _TRISB extern _DDRC extern _TRISC extern _DDRD extern _TRISD extern _DDRE extern _TRISE extern _OSCTUNE extern _PIE1 extern _PIR1 extern _IPR1 extern _PIE2 extern _PIR2 extern _IPR2 extern _EECON1 extern _EECON2 extern _EEDATA extern _EEADR extern _RCSTA extern _TXSTA extern _TXREG extern _RCREG extern _SPBRG extern _SPBRGH extern _T3CON extern _TMR3L extern _TMR3H extern _CMCON extern _CVRCON extern _ECCP1AS extern _PWM1CON extern _BAUDCON extern _BAUDCTL extern _CCP2CON extern _CCPR2 extern _CCPR2L extern _CCPR2H 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 __divuint extern __moduint extern __divulong ;-------------------------------------------------------- ; Equates to used internal registers ;-------------------------------------------------------- STATUS equ 0xfd8 PCLATH equ 0xffa PCLATU equ 0xffb WREG equ 0xfe8 BSR equ 0xfe0 FSR0L equ 0xfe9 FSR0H equ 0xfea FSR1L equ 0xfe1 FSR2L equ 0xfd9 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 udata_testSwitches_0 udata _lcdInit_dat_1_1 res 3 udata_testSwitches_1 udata _lcdPutChar_dat_1_1 res 2 udata_testSwitches_2 udata _lcdPutHexByte_dat_1_1 res 3 udata_testSwitches_3 udata _timerHigh res 2 udata_testSwitches_4 udata _main_str_1_1 res 16 ustat_testSwitches_00 udata 0X0200 _stack res 255 _stack_end res 1 ;-------------------------------------------------------- ; interrupt vector ;-------------------------------------------------------- ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- ; ; Starting pCode block for absolute section ; ;----------------------------------------- S_testSwitches_ivec_0x1_isr code 0X000008 ivec_0x1_isr: 000008 eff0 goto 0x13e0 GOTO _isr 00000a f009 ; I code from now on! ; ; Starting pCode block S_testSwitches__main code _main: ; .line 32; testSwitches.c OSCCON = 0x62; // Internal 4MHZ 000718 0e62 movlw 0x62 MOVLW 0x62 00071a 6ed3 movwf 0xd3, 0 MOVWF _OSCCON ; .line 35; testSwitches.c TRISA = 0xFF; // PORTA Input 00071c 0eff movlw 0xff MOVLW 0xff 00071e 6e92 movwf 0x92, 0 MOVWF _TRISA ; .line 36; testSwitches.c TRISB = 0x0F; // PORTB top 4 bits Output 000720 0e0f movlw 0xf MOVLW 0x0f 000722 6e93 movwf 0x93, 0 MOVWF _TRISB ; .line 37; testSwitches.c TRISC = 0xFF; // PORTC Input 000724 0eff movlw 0xff MOVLW 0xff 000726 6e94 movwf 0x94, 0 MOVWF _TRISC ; .line 39; testSwitches.c PORTB = 0; // LED's off 000728 6a81 clrf 0x81, 0 CLRF _PORTB ; .line 42; testSwitches.c i2cInit(); 00072a ecf4 call 0x15e8, 0 CALL _i2cInit 00072c f00a ; .line 43; testSwitches.c lcdInit(); 00072e ec5a call 0x12b4, 0 CALL _lcdInit 000730 f009 ; .line 44; testSwitches.c usartInit(); 000732 ece5 call 0x15ca, 0 CALL _usartInit 000734 f00a ; .line 45; testSwitches.c timerInit(); 000736 ec2e call 0x165c, 0 CALL _timerInit 000738 f00b ; .line 46; testSwitches.c adcInit(); 00073a ec36 call 0x166c, 0 CALL _adcInit 00073c f00b ; .line 48; testSwitches.c PORTB = 0x00; 00073e 6a81 clrf 0x81, 0 CLRF _PORTB ; .line 51; testSwitches.c INTCON = 0; // Clear interrupt flag bits 000740 6af2 clrf 0xf2, 0 CLRF _INTCON ; .line 52; testSwitches.c INTCONbits.PEIE = 1; // Enable peripheral interrupts 000742 8cf2 bsf 0xf2, 0x6, 0 BSF _INTCONbits, 6 ; .line 53; testSwitches.c PIE1bits.CCP1IE = 1; // TMR1 overflow interrupt enable 000744 849d bsf 0x9d, 0x2, 0 BSF _PIE1bits, 2 ; .line 54; testSwitches.c INTCON2bits.INTEDG0 = 1; // INT0 Interrupt on +ve edge 000746 8cf1 bsf 0xf1, 0x6, 0 BSF _INTCON2bits, 6 ; .line 55; testSwitches.c INTCONbits.INT0IE = 1; // Enable INT0 Speed interrupt 000748 88f2 bsf 0xf2, 0x4, 0 BSF _INTCONbits, 4 ; .line 56; testSwitches.c INTCONbits.GIE = 1; // Global interrupt enable 00074a 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 _00467_DS_: ; .line 59; testSwitches.c v = adcRead(9); 00074c 0e09 movlw 0x9 MOVLW 0x09 00074e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000750 ec8f call 0x131e, 0 CALL _adcRead 000752 f009 000754 6e00 movwf 0, 0 MOVWF r0x00 000756 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 000758 f001 00075a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 60; testSwitches.c strWordDec(str, 0, v); 00075c 0e00 movlw 0 MOVLW HIGH(_main_str_1_1) 00075e 6e03 movwf 0x3, 0 MOVWF r0x03 000760 0e80 movlw 0x80 MOVLW LOW(_main_str_1_1) 000762 6e02 movwf 0x2, 0 MOVWF r0x02 000764 0e80 movlw 0x80 MOVLW 0x80 000766 6e04 movwf 0x4, 0 MOVWF r0x04 000768 5001 movf 0x1, 0, 0 MOVF r0x01, W 00076a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00076c 5000 movf 0, 0, 0 MOVF r0x00, W 00076e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000770 0e00 movlw 0 MOVLW 0x00 000772 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000774 5004 movf 0x4, 0, 0 MOVF r0x04, W 000776 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000778 5003 movf 0x3, 0, 0 MOVF r0x03, W 00077a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00077c 5002 movf 0x2, 0, 0 MOVF r0x02, W 00077e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000780 ec15 call 0x2a, 0 CALL _strWordDec 000782 f000 000784 0e06 movlw 0x6 MOVLW 0x06 000786 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000788 0100 movlb 0 BANKSEL (_main_str_1_1 + 6) ; .line 61; testSwitches.c str[6] = 0; 00078a 6b86 clrf 0x86, 0x1 CLRF (_main_str_1_1 + 6), B ; .line 62; testSwitches.c lcdWriteStr(0, 0, str); 00078c 0e00 movlw 0 MOVLW HIGH(_main_str_1_1) 00078e 6e03 movwf 0x3, 0 MOVWF r0x03 000790 0e80 movlw 0x80 MOVLW LOW(_main_str_1_1) 000792 6e02 movwf 0x2, 0 MOVWF r0x02 000794 0e80 movlw 0x80 MOVLW 0x80 ; # MOVWF r0x04 ; # MOVF r0x04, W 000796 6e04 movwf 0x4, 0 MOVWF r0x04 000798 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00079a 5003 movf 0x3, 0, 0 MOVF r0x03, W 00079c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00079e 5002 movf 0x2, 0, 0 MOVF r0x02, W 0007a0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007a2 0e00 movlw 0 MOVLW 0x00 0007a4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007a6 0e00 movlw 0 MOVLW 0x00 0007a8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007aa ec99 call 0x932, 0 CALL _lcdWriteStr 0007ac f004 0007ae 0e05 movlw 0x5 MOVLW 0x05 0007b0 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 64; testSwitches.c v = (v + 32) / 64; 0007b2 5000 movf 0, 0, 0 MOVF r0x00, W 0007b4 0f20 addlw 0x20 ADDLW 0x20 0007b6 6e02 movwf 0x2, 0 MOVWF r0x02 0007b8 0e00 movlw 0 MOVLW 0x00 0007ba 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0007bc 6e03 movwf 0x3, 0 MOVWF r0x03 0007be 3402 rlcf 0x2, 0, 0 RLCF r0x02, W 0007c0 6e01 movwf 0x1, 0 MOVWF r0x01 0007c2 3403 rlcf 0x3, 0, 0 RLCF r0x03, W 0007c4 6e00 movwf 0, 0 MOVWF r0x00 0007c6 3601 rlcf 0x1, 0x1, 0 RLCF r0x01, F 0007c8 3600 rlcf 0, 0x1, 0 RLCF r0x00, F 0007ca 3401 rlcf 0x1, 0, 0 RLCF r0x01, W 0007cc 0b03 andlw 0x3 ANDLW 0x03 0007ce 6e01 movwf 0x1, 0 MOVWF r0x01 ; .line 65; testSwitches.c strWordDec(str, 0, v); 0007d0 0e00 movlw 0 MOVLW HIGH(_main_str_1_1) 0007d2 6e03 movwf 0x3, 0 MOVWF r0x03 0007d4 0e80 movlw 0x80 MOVLW LOW(_main_str_1_1) 0007d6 6e02 movwf 0x2, 0 MOVWF r0x02 0007d8 0e80 movlw 0x80 MOVLW 0x80 0007da 6e04 movwf 0x4, 0 MOVWF r0x04 0007dc 5001 movf 0x1, 0, 0 MOVF r0x01, W 0007de 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007e0 5000 movf 0, 0, 0 MOVF r0x00, W 0007e2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007e4 0e00 movlw 0 MOVLW 0x00 0007e6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007e8 5004 movf 0x4, 0, 0 MOVF r0x04, W 0007ea 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007ec 5003 movf 0x3, 0, 0 MOVF r0x03, W 0007ee 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007f0 5002 movf 0x2, 0, 0 MOVF r0x02, W 0007f2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007f4 ec15 call 0x2a, 0 CALL _strWordDec 0007f6 f000 0007f8 0e06 movlw 0x6 MOVLW 0x06 0007fa 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0007fc 0100 movlb 0 BANKSEL (_main_str_1_1 + 6) ; .line 66; testSwitches.c str[6] = 0; 0007fe 6b86 clrf 0x86, 0x1 CLRF (_main_str_1_1 + 6), B ; .line 67; testSwitches.c lcdWriteStr(0, 1, str); 000800 0e00 movlw 0 MOVLW HIGH(_main_str_1_1) 000802 6e03 movwf 0x3, 0 MOVWF r0x03 000804 0e80 movlw 0x80 MOVLW LOW(_main_str_1_1) 000806 6e02 movwf 0x2, 0 MOVWF r0x02 000808 0e80 movlw 0x80 MOVLW 0x80 ; # MOVWF r0x04 ; # MOVF r0x04, W 00080a 6e04 movwf 0x4, 0 MOVWF r0x04 00080c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00080e 5003 movf 0x3, 0, 0 MOVF r0x03, W 000810 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000812 5002 movf 0x2, 0, 0 MOVF r0x02, W 000814 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000816 0e01 movlw 0x1 MOVLW 0x01 000818 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00081a 0e00 movlw 0 MOVLW 0x00 00081c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00081e ec99 call 0x932, 0 CALL _lcdWriteStr 000820 f004 000822 0e05 movlw 0x5 MOVLW 0x05 000824 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 69; testSwitches.c PORTB = v << 4; 000826 3800 swapf 0, 0, 0 SWAPF r0x00, W 000828 0bf0 andlw 0xf0 ANDLW 0xf0 00082a 6e81 movwf 0x81, 0 MOVWF _PORTB 00082c d78f bra 0x74c BRA _00467_DS_ 00082e 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__isr code _isr: ; .line 17; testSwitches.c void isr(void) interrupt 1 { 0013e0 cfe8 movff 0xfe8, 0xfe5 MOVFF WREG, POSTDEC1 0013e2 ffe5 0013e4 cfd8 movff 0xfd8, 0xfe5 MOVFF STATUS, POSTDEC1 0013e6 ffe5 0013e8 cfe0 movff 0xfe0, 0xfe5 MOVFF BSR, POSTDEC1 0013ea ffe5 0013ec cff3 movff 0xff3, 0xfe5 MOVFF PRODL, POSTDEC1 0013ee ffe5 0013f0 cff4 movff 0xff4, 0xfe5 MOVFF PRODH, POSTDEC1 0013f2 ffe5 0013f4 cfe9 movff 0xfe9, 0xfe5 MOVFF FSR0L, POSTDEC1 0013f6 ffe5 0013f8 cfea movff 0xfea, 0xfe5 MOVFF FSR0H, POSTDEC1 0013fa ffe5 0013fc cffa movff 0xffa, 0xfe5 MOVFF PCLATH, POSTDEC1 0013fe ffe5 001400 cffb movff 0xffb, 0xfe5 MOVFF PCLATU, POSTDEC1 001402 ffe5 ; .line 19; testSwitches.c if(PIR1bits.CCP1IF){ 001404 a49e btfss 0x9e, 0x2, 0 BTFSS _PIR1bits, 2 001406 d003 bra 0x140e BRA _00461_DS_ ; .line 20; testSwitches.c timerTick(); 001408 ec5c call 0x16b8, 0 CALL _timerTick 00140a f00b ; .line 23; testSwitches.c PIR1bits.CCP1IF = 0; // Clear timer interrupt flag 00140c 949e bcf 0x9e, 0x2, 0 BCF _PIR1bits, 2 _00461_DS_: 00140e cfe4 movff 0xfe4, 0xffb MOVFF PREINC1, PCLATU 001410 fffb 001412 cfe4 movff 0xfe4, 0xffa MOVFF PREINC1, PCLATH 001414 fffa 001416 cfe4 movff 0xfe4, 0xfea MOVFF PREINC1, FSR0H 001418 ffea 00141a cfe4 movff 0xfe4, 0xfe9 MOVFF PREINC1, FSR0L 00141c ffe9 00141e cfe4 movff 0xfe4, 0xff4 MOVFF PREINC1, PRODH 001420 fff4 001422 cfe4 movff 0xfe4, 0xff3 MOVFF PREINC1, PRODL 001424 fff3 001426 cfe4 movff 0xfe4, 0xfe0 MOVFF PREINC1, BSR 001428 ffe0 00142a cfe4 movff 0xfe4, 0xfd8 MOVFF PREINC1, STATUS 00142c ffd8 00142e cfe4 movff 0xfe4, 0xfe8 MOVFF PREINC1, WREG 001430 ffe8 001432 0010 retfie 0 RETFIE ; ; Starting pCode block S_testSwitches__adcRead code _adcRead: ; .line 660; ./picLib3.c UInt16 adcRead(UInt8 channel){ 00131e cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001320 ffe5 001322 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001324 ffd9 001326 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001328 ffe5 00132a c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00132c ffe5 00132e c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001330 ffe5 001332 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001334 ffe5 001336 0e02 movlw 0x2 MOVLW 0x02 001338 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00133a f000 ; .line 662; ./picLib3.c ADCON0 = (channel << 2) | 0x03; 00133c 4400 rlncf 0, 0, 0 RLNCF r0x00, W 00133e 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 001340 0bfc andlw 0xfc ANDLW 0xfc 001342 6e01 movwf 0x1, 0 MOVWF r0x01 001344 0e03 movlw 0x3 MOVLW 0x03 001346 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 001348 6ec2 movwf 0xc2, 0 MOVWF _ADCON0 _00451_DS_: ; .line 664; ./picLib3.c while(ADCON0bits.NOT_DONE){ 00134a b2c2 btfsc 0xc2, 0x1, 0 BTFSC _ADCON0bits, 1 00134c d7fe bra 0x134a BRA _00451_DS_ ; .line 668; ./picLib3.c return (ADRESH << 8) + ADRESL; 00134e cfc4 movff 0xfc4, 0 MOVFF _ADRESH, r0x00 001350 f000 001352 6a01 clrf 0x1, 0 CLRF r0x01 001354 5000 movf 0, 0, 0 MOVF r0x00, W 001356 6e03 movwf 0x3, 0 MOVWF r0x03 001358 6a02 clrf 0x2, 0 CLRF r0x02 00135a cfc3 movff 0xfc3, 0 MOVFF _ADRESL, r0x00 00135c f000 00135e 6a01 clrf 0x1, 0 CLRF r0x01 001360 5000 movf 0, 0, 0 MOVF r0x00, W 001362 2602 addwf 0x2, 0x1, 0 ADDWF r0x02, F 001364 5001 movf 0x1, 0, 0 MOVF r0x01, W 001366 2203 addwfc 0x3, 0x1, 0 ADDWFC r0x03, F 001368 c003 movff 0x3, 0xff3 MOVFF r0x03, PRODL 00136a fff3 00136c 5002 movf 0x2, 0, 0 MOVF r0x02, W 00136e cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001370 f003 001372 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001374 f002 001376 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001378 f001 00137a cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00137c f000 00137e cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001380 ffd9 001382 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__adcInit code _adcInit: ; .line 655; ./picLib3.c ADCON0 = 0x01; // Enable ADC 00166c 0e01 movlw 0x1 MOVLW 0x01 00166e 6ec2 movwf 0xc2, 0 MOVWF _ADCON0 ; .line 656; ./picLib3.c ADCON1 = 0x05; // Enable first 9 ADC inputs and use internal voltage reference 001670 0e05 movlw 0x5 MOVLW 0x05 001672 6ec1 movwf 0xc1, 0 MOVWF _ADCON1 ; .line 657; ./picLib3.c ADCON2 = 0x94; // Setup Aquisition times for 4MHz Clock 001674 0e94 movlw 0x94 MOVLW 0x94 001676 6ec0 movwf 0xc0, 0 MOVWF _ADCON2 001678 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerGetSec code _timerGetSec: ; .line 644; ./picLib3.c UInt16 timerGetSec(){ 0010fa c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0010fc ffe5 0010fe c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001100 ffe5 001102 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001104 ffe5 001106 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001108 ffe5 ; .line 645; ./picLib3.c return timerGetMicroSec() / 1000000; 00110a ec24 call 0x1248, 0 CALL _timerGetMicroSec 00110c f009 00110e 6e00 movwf 0, 0 MOVWF r0x00 001110 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 001112 f001 001114 cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 001116 f002 001118 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 00111a f003 00111c 0e00 movlw 0 MOVLW 0x00 00111e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001120 0e0f movlw 0xf MOVLW 0x0f 001122 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001124 0e42 movlw 0x42 MOVLW 0x42 001126 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001128 0e40 movlw 0x40 MOVLW 0x40 00112a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00112c 5003 movf 0x3, 0, 0 MOVF r0x03, W 00112e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001130 5002 movf 0x2, 0, 0 MOVF r0x02, W 001132 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001134 5001 movf 0x1, 0, 0 MOVF r0x01, W 001136 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001138 5000 movf 0, 0, 0 MOVF r0x00, W 00113a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00113c ecff call 0x5fe, 0 CALL __divulong 00113e f002 001140 6e00 movwf 0, 0 MOVWF r0x00 001142 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 001144 f001 001146 cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 001148 f002 00114a cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 00114c f003 00114e 0e08 movlw 0x8 MOVLW 0x08 001150 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 001152 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001154 fff3 001156 5000 movf 0, 0, 0 MOVF r0x00, W 001158 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 00115a f003 00115c cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00115e f002 001160 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001162 f001 001164 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001166 f000 001168 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerGetMilliSec code _timerGetMilliSec: ; .line 640; ./picLib3.c UInt16 timerGetMilliSec(){ 00116a c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00116c ffe5 00116e c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001170 ffe5 001172 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001174 ffe5 001176 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001178 ffe5 ; .line 641; ./picLib3.c return timerGetMicroSec() / 1000; 00117a ec24 call 0x1248, 0 CALL _timerGetMicroSec 00117c f009 00117e 6e00 movwf 0, 0 MOVWF r0x00 001180 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 001182 f001 001184 cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 001186 f002 001188 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 00118a f003 00118c 0e00 movlw 0 MOVLW 0x00 00118e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001190 0e00 movlw 0 MOVLW 0x00 001192 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001194 0e03 movlw 0x3 MOVLW 0x03 001196 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001198 0ee8 movlw 0xe8 MOVLW 0xe8 00119a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00119c 5003 movf 0x3, 0, 0 MOVF r0x03, W 00119e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0011a0 5002 movf 0x2, 0, 0 MOVF r0x02, W 0011a2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0011a4 5001 movf 0x1, 0, 0 MOVF r0x01, W 0011a6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0011a8 5000 movf 0, 0, 0 MOVF r0x00, W 0011aa 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0011ac ecff call 0x5fe, 0 CALL __divulong 0011ae f002 0011b0 6e00 movwf 0, 0 MOVWF r0x00 0011b2 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 0011b4 f001 0011b6 cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 0011b8 f002 0011ba cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 0011bc f003 0011be 0e08 movlw 0x8 MOVLW 0x08 0011c0 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0011c2 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0011c4 fff3 0011c6 5000 movf 0, 0, 0 MOVF r0x00, W 0011c8 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0011ca f003 0011cc cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0011ce f002 0011d0 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0011d2 f001 0011d4 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0011d6 f000 0011d8 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerGetMicroSec code _timerGetMicroSec: 001248 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00124a ffe5 00124c c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00124e ffe5 001250 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001252 ffe5 001254 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001256 ffe5 001258 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 00125a ffe5 00125c c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 00125e ffe5 ; t1 = (TMR3H << 8) | TMR3L; 001260 cfb2 movff 0xfb2, 0 MOVFF _TMR3L, r0x00 001262 f000 001264 cfb3 movff 0xfb3, 0x1 MOVFF _TMR3H, r0x01 001266 f001 001268 c098 movff 0x98, 0x2 MOVFF _timerHigh, r0x02 00126a f002 00126c c099 movff 0x99, 0x3 MOVFF (_timerHigh + 1), r0x03 00126e f003 ; t3 = (TMR3H << 8) | TMR3L; 001270 cfb2 movff 0xfb2, 0x4 MOVFF _TMR3L, r0x04 001272 f004 001274 cfb3 movff 0xfb3, 0x5 MOVFF _TMR3H, r0x05 001276 f005 ; if(t3 < t1){ 001278 5001 movf 0x1, 0, 0 MOVF r0x01, W 00127a 5c05 subwf 0x5, 0, 0 SUBWF r0x05, W 00127c e102 bnz 0x1282 BNZ _00001 00127e 5000 movf 0, 0, 0 MOVF r0x00, W 001280 5c04 subwf 0x4, 0, 0 SUBWF r0x04, W _00001: 001282 e204 bc 0x128c BC _00002 001284 c098 movff 0x98, 0x2 MOVFF _timerHigh, r0x02 001286 f002 001288 c099 movff 0x99, 0x3 MOVFF (_timerHigh + 1), r0x03 00128a f003 _00002: ; return ((UInt32)timerHigh << 16) | t3; 00128c c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 00128e ffe9 001290 c002 movff 0x2, 0xff4 MOVFF r0x02, PRODH 001292 fff4 001294 c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 001296 fff3 001298 5004 movf 0x4, 0, 0 MOVF r0x04, W 00129a cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 00129c f005 00129e cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0012a0 f004 0012a2 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0012a4 f003 0012a6 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0012a8 f002 0012aa cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0012ac f001 0012ae cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0012b0 f000 0012b2 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerTick code _timerTick: 0016b8 0100 movlb 0 BANKSEL _timerHigh ; .line 575; ./picLib3.c timerHigh++; 0016ba 2b98 incf 0x98, 0x1, 0x1 INCF _timerHigh, F, B 0016bc e301 bnc 0x16c0 BNC _10466_DS_ ; removed redundant BANKSEL 0016be 2b99 incf 0x99, 0x1, 0x1 INCF (_timerHigh + 1), F, B _10466_DS_: 0016c0 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerClear code _timerClear: ; .line 568; ./picLib3.c TMR3H = 0; 001688 6ab3 clrf 0xb3, 0 CLRF _TMR3H ; .line 569; ./picLib3.c TMR3L = 0; 00168a 6ab2 clrf 0xb2, 0 CLRF _TMR3L 00168c 0100 movlb 0 BANKSEL _timerHigh ; .line 571; ./picLib3.c timerHigh = 0; 00168e 6b98 clrf 0x98, 0x1 CLRF _timerHigh, B ; removed redundant BANKSEL 001690 6b99 clrf 0x99, 0x1 CLRF (_timerHigh + 1), B 001692 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__timerInit code _timerInit: ; .line 560; ./picLib3.c T3CON = 0x81; 00165c 0e81 movlw 0x81 MOVLW 0x81 00165e 6eb1 movwf 0xb1, 0 MOVWF _T3CON ; .line 561; ./picLib3.c TMR3H = 0; 001660 6ab3 clrf 0xb3, 0 CLRF _TMR3H ; .line 562; ./picLib3.c TMR3L = 0; 001662 6ab2 clrf 0xb2, 0 CLRF _TMR3L 001664 0100 movlb 0 BANKSEL _timerHigh ; .line 564; ./picLib3.c timerHigh = 0; 001666 6b98 clrf 0x98, 0x1 CLRF _timerHigh, B ; removed redundant BANKSEL 001668 6b99 clrf 0x99, 0x1 CLRF (_timerHigh + 1), B 00166a 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromWrite32 code _eepromWrite32: ; .line 483; ./picLib3.c void eepromWrite32(UInt8 address, UInt32 value){ 000cf0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000cf2 ffe5 000cf4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000cf6 ffd9 000cf8 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000cfa ffe5 000cfc c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000cfe ffe5 000d00 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000d02 ffe5 000d04 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000d06 ffe5 000d08 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000d0a ffe5 000d0c c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000d0e ffe5 000d10 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000d12 ffe5 000d14 0e02 movlw 0x2 MOVLW 0x02 000d16 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000d18 f000 000d1a 0e03 movlw 0x3 MOVLW 0x03 000d1c cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000d1e f001 000d20 0e04 movlw 0x4 MOVLW 0x04 000d22 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000d24 f002 000d26 0e05 movlw 0x5 MOVLW 0x05 000d28 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000d2a f003 000d2c 0e06 movlw 0x6 MOVLW 0x06 000d2e cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000d30 f004 ; .line 484; ./picLib3.c eepromWrite16(address, value); 000d32 5001 movf 0x1, 0, 0 MOVF r0x01, W 000d34 6e05 movwf 0x5, 0 MOVWF r0x05 ; # MOVF r0x02, W ; # MOVWF r0x06 ; # MOVF r0x06, W 000d36 5002 movf 0x2, 0, 0 MOVF r0x02, W 000d38 6e06 movwf 0x6, 0 MOVWF r0x06 000d3a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d3c 5005 movf 0x5, 0, 0 MOVF r0x05, W 000d3e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d40 5000 movf 0, 0, 0 MOVF r0x00, W 000d42 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d44 ec94 call 0xf28, 0 CALL _eepromWrite16 000d46 f007 000d48 0e03 movlw 0x3 MOVLW 0x03 000d4a 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 485; ./picLib3.c eepromWrite16(address + 2, value >> 16); 000d4c 2a00 incf 0, 0x1, 0 INCF r0x00, F 000d4e 2a00 incf 0, 0x1, 0 INCF r0x00, F 000d50 5003 movf 0x3, 0, 0 MOVF r0x03, W 000d52 6e01 movwf 0x1, 0 MOVWF r0x01 000d54 5004 movf 0x4, 0, 0 MOVF r0x04, W 000d56 6e02 movwf 0x2, 0 MOVWF r0x02 000d58 6a03 clrf 0x3, 0 CLRF r0x03 000d5a 6a04 clrf 0x4, 0 CLRF r0x04 000d5c 5002 movf 0x2, 0, 0 MOVF r0x02, W 000d5e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d60 5001 movf 0x1, 0, 0 MOVF r0x01, W 000d62 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d64 5000 movf 0, 0, 0 MOVF r0x00, W 000d66 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000d68 ec94 call 0xf28, 0 CALL _eepromWrite16 000d6a f007 000d6c 0e03 movlw 0x3 MOVLW 0x03 000d6e 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000d70 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000d72 f006 000d74 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000d76 f005 000d78 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000d7a f004 000d7c cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000d7e f003 000d80 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000d82 f002 000d84 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000d86 f001 000d88 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000d8a f000 000d8c cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000d8e ffd9 000d90 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromRead32 code _eepromRead32: ; .line 475; ./picLib3.c UInt32 eepromRead32(UInt8 address){ 000a1e cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000a20 ffe5 000a22 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000a24 ffd9 000a26 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000a28 ffe5 000a2a c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000a2c ffe5 000a2e c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000a30 ffe5 000a32 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000a34 ffe5 000a36 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000a38 ffe5 000a3a c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000a3c ffe5 000a3e c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000a40 ffe5 000a42 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000a44 ffe5 000a46 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 000a48 ffe5 000a4a c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000a4c ffe5 000a4e c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000a50 ffe5 000a52 c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 000a54 ffe5 000a56 0e02 movlw 0x2 MOVLW 0x02 000a58 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000a5a f000 ; .line 478; ./picLib3.c v = eepromRead16(address); 000a5c 5000 movf 0, 0, 0 MOVF r0x00, W 000a5e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000a60 eccf call 0xf9e, 0 CALL _eepromRead16 000a62 f007 000a64 6e01 movwf 0x1, 0 MOVWF r0x01 000a66 cff3 movff 0xff3, 0x2 MOVFF PRODL, r0x02 000a68 f002 000a6a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 000a6c 6a03 clrf 0x3, 0 CLRF r0x03 000a6e 6a04 clrf 0x4, 0 CLRF r0x04 ; .line 479; ./picLib3.c v |= ((UInt32)eepromRead16(address + 2) << 16); 000a70 2a00 incf 0, 0x1, 0 INCF r0x00, F 000a72 2a00 incf 0, 0x1, 0 INCF r0x00, F 000a74 5000 movf 0, 0, 0 MOVF r0x00, W 000a76 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000a78 eccf call 0xf9e, 0 CALL _eepromRead16 000a7a f007 000a7c 6e00 movwf 0, 0 MOVWF r0x00 000a7e cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 000a80 f005 000a82 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 000a84 6a06 clrf 0x6, 0 CLRF r0x06 000a86 6a07 clrf 0x7, 0 CLRF r0x07 000a88 5005 movf 0x5, 0, 0 MOVF r0x05, W 000a8a 6e0b movwf 0xb, 0 MOVWF r0x0b 000a8c 5000 movf 0, 0, 0 MOVF r0x00, W 000a8e 6e0a movwf 0xa, 0 MOVWF r0x0a 000a90 6a08 clrf 0x8, 0 CLRF r0x08 000a92 6a09 clrf 0x9, 0 CLRF r0x09 000a94 5008 movf 0x8, 0, 0 MOVF r0x08, W 000a96 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 000a98 5009 movf 0x9, 0, 0 MOVF r0x09, W 000a9a 1202 iorwf 0x2, 0x1, 0 IORWF r0x02, F 000a9c 500a movf 0xa, 0, 0 MOVF r0x0a, W 000a9e 1203 iorwf 0x3, 0x1, 0 IORWF r0x03, F 000aa0 500b movf 0xb, 0, 0 MOVF r0x0b, W 000aa2 1204 iorwf 0x4, 0x1, 0 IORWF r0x04, F ; .line 480; ./picLib3.c return v; 000aa4 c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 000aa6 ffe9 000aa8 c003 movff 0x3, 0xff4 MOVFF r0x03, PRODH 000aaa fff4 000aac c002 movff 0x2, 0xff3 MOVFF r0x02, PRODL 000aae fff3 000ab0 5001 movf 0x1, 0, 0 MOVF r0x01, W 000ab2 cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 000ab4 f00b 000ab6 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 000ab8 f00a 000aba cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 000abc f009 000abe cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 000ac0 f008 000ac2 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 000ac4 f007 000ac6 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000ac8 f006 000aca cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000acc f005 000ace cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000ad0 f004 000ad2 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000ad4 f003 000ad6 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000ad8 f002 000ada cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000adc f001 000ade cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000ae0 f000 000ae2 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000ae4 ffd9 000ae6 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromWrite16 code _eepromWrite16: ; .line 445; ./picLib3.c void eepromWrite16(UInt8 address, UInt16 value){ 000f28 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000f2a ffe5 000f2c cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000f2e ffd9 000f30 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000f32 ffe5 000f34 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000f36 ffe5 000f38 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000f3a ffe5 000f3c 0e02 movlw 0x2 MOVLW 0x02 000f3e cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000f40 f000 000f42 0e03 movlw 0x3 MOVLW 0x03 000f44 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000f46 f001 000f48 0e04 movlw 0x4 MOVLW 0x04 000f4a cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000f4c f002 ; .line 447; ./picLib3.c EECON1bits.EEPGD = 0; 000f4e 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 448; ./picLib3.c EECON1bits.CFGS = 0; 000f50 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 449; ./picLib3.c EECON1bits.WREN = 1; // Enable writes to data EEPROM 000f52 84a6 bsf 0xa6, 0x2, 0 BSF _EECON1bits, 2 ; .line 450; ./picLib3.c INTCONbits.GIE = 0; // Disable interrupts 000f54 9ef2 bcf 0xf2, 0x7, 0 BCF _INTCONbits, 7 ; .line 452; ./picLib3.c EEADR = address; 000f56 c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 000f58 ffa9 ; .line 453; ./picLib3.c EEDATA = value; 000f5a 5001 movf 0x1, 0, 0 MOVF r0x01, W 000f5c 6ea8 movwf 0xa8, 0 MOVWF _EEDATA ; .line 454; ./picLib3.c EECON2 = 0x55; 000f5e 0e55 movlw 0x55 MOVLW 0x55 000f60 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 455; ./picLib3.c EECON2 = 0x0AA; 000f62 0eaa movlw 0xaa MOVLW 0xaa 000f64 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 456; ./picLib3.c EECON1bits.WR = 1; // Start writing 000f66 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00395_DS_: ; .line 457; ./picLib3.c while(EECON1bits.WR); 000f68 b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 000f6a d7fe bra 0xf68 BRA _00395_DS_ ; .line 459; ./picLib3.c EEADR = address + 1; 000f6c 2800 incf 0, 0, 0 INCF r0x00, W 000f6e 6ea9 movwf 0xa9, 0 MOVWF _EEADR ; .line 460; ./picLib3.c EEDATA = value >> 8; 000f70 5002 movf 0x2, 0, 0 MOVF r0x02, W 000f72 6e01 movwf 0x1, 0 MOVWF r0x01 000f74 6a02 clrf 0x2, 0 CLRF r0x02 000f76 5001 movf 0x1, 0, 0 MOVF r0x01, W 000f78 6ea8 movwf 0xa8, 0 MOVWF _EEDATA ; .line 461; ./picLib3.c EECON2 = 0x55; 000f7a 0e55 movlw 0x55 MOVLW 0x55 000f7c 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 462; ./picLib3.c EECON2 = 0x0AA; 000f7e 0eaa movlw 0xaa MOVLW 0xaa 000f80 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 463; ./picLib3.c EECON1bits.WR = 1; // Start writing 000f82 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00398_DS_: ; .line 464; ./picLib3.c while(EECON1bits.WR); 000f84 b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 000f86 d7fe bra 0xf84 BRA _00398_DS_ ; .line 471; ./picLib3.c EECON1bits.WREN = 0; 000f88 94a6 bcf 0xa6, 0x2, 0 BCF _EECON1bits, 2 ; .line 472; ./picLib3.c INTCONbits.GIE = 1; // enable interrupts 000f8a 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 000f8c cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000f8e f002 000f90 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000f92 f001 000f94 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000f96 f000 000f98 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000f9a ffd9 000f9c 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromRead16 code _eepromRead16: ; .line 431; ./picLib3.c UInt16 eepromRead16(UInt8 address){ 000f9e cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000fa0 ffe5 000fa2 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000fa4 ffd9 000fa6 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000fa8 ffe5 000faa c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000fac ffe5 000fae c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000fb0 ffe5 000fb2 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000fb4 ffe5 000fb6 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000fb8 ffe5 000fba c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000fbc ffe5 000fbe 0e02 movlw 0x2 MOVLW 0x02 000fc0 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000fc2 f000 ; .line 434; ./picLib3.c EECON1bits.CFGS = 0; 000fc4 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 435; ./picLib3.c EECON1bits.EEPGD = 0; 000fc6 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 436; ./picLib3.c EEADR = address; 000fc8 c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 000fca ffa9 ; .line 437; ./picLib3.c EECON1bits.RD = 1; 000fcc 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 438; ./picLib3.c v = EEDATA; 000fce cfa8 movff 0xfa8, 0x1 MOVFF _EEDATA, r0x01 000fd0 f001 000fd2 6a02 clrf 0x2, 0 CLRF r0x02 ; .line 439; ./picLib3.c EEADR = address + 1; 000fd4 2800 incf 0, 0, 0 INCF r0x00, W 000fd6 6ea9 movwf 0xa9, 0 MOVWF _EEADR ; .line 440; ./picLib3.c EECON1bits.RD = 1; 000fd8 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 441; ./picLib3.c v |= (EEDATA << 8); 000fda cfa8 movff 0xfa8, 0 MOVFF _EEDATA, r0x00 000fdc f000 000fde 6a03 clrf 0x3, 0 CLRF r0x03 000fe0 5000 movf 0, 0, 0 MOVF r0x00, W 000fe2 6e05 movwf 0x5, 0 MOVWF r0x05 000fe4 6a04 clrf 0x4, 0 CLRF r0x04 000fe6 5004 movf 0x4, 0, 0 MOVF r0x04, W 000fe8 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 000fea 5005 movf 0x5, 0, 0 MOVF r0x05, W 000fec 1202 iorwf 0x2, 0x1, 0 IORWF r0x02, F ; .line 442; ./picLib3.c return v; 000fee c002 movff 0x2, 0xff3 MOVFF r0x02, PRODL 000ff0 fff3 000ff2 5001 movf 0x1, 0, 0 MOVF r0x01, W 000ff4 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000ff6 f005 000ff8 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000ffa f004 000ffc cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000ffe f003 001000 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001002 f002 001004 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001006 f001 001008 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00100a f000 00100c cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00100e ffd9 001010 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromWrite8 code _eepromWrite8: ; .line 409; ./picLib3.c void eepromWrite8(UInt8 address, UInt8 value){ 001486 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001488 ffe5 00148a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00148c ffd9 00148e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001490 ffe5 001492 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001494 ffe5 001496 0e02 movlw 0x2 MOVLW 0x02 001498 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00149a f000 00149c 0e03 movlw 0x3 MOVLW 0x03 00149e cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0014a0 f001 ; .line 411; ./picLib3.c EECON1bits.EEPGD = 0; 0014a2 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 412; ./picLib3.c EECON1bits.CFGS = 0; 0014a4 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 413; ./picLib3.c EECON1bits.WREN = 1; // Enable writes to data EEPROM 0014a6 84a6 bsf 0xa6, 0x2, 0 BSF _EECON1bits, 2 ; .line 414; ./picLib3.c INTCONbits.GIE = 0; // Disable interrupts 0014a8 9ef2 bcf 0xf2, 0x7, 0 BCF _INTCONbits, 7 ; .line 416; ./picLib3.c EEDATA = value; 0014aa c001 movff 0x1, 0xfa8 MOVFF r0x01, _EEDATA 0014ac ffa8 ; .line 417; ./picLib3.c EEADR = address; 0014ae c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 0014b0 ffa9 ; .line 418; ./picLib3.c EECON2 = 0x55; 0014b2 0e55 movlw 0x55 MOVLW 0x55 0014b4 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 419; ./picLib3.c EECON2 = 0x0AA; 0014b6 0eaa movlw 0xaa MOVLW 0xaa 0014b8 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 420; ./picLib3.c EECON1bits.WR = 1; // Start writing 0014ba 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00382_DS_: ; .line 421; ./picLib3.c while(EECON1bits.WR); 0014bc b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 0014be d7fe bra 0x14bc BRA _00382_DS_ ; .line 427; ./picLib3.c EECON1bits.WREN = 0; 0014c0 94a6 bcf 0xa6, 0x2, 0 BCF _EECON1bits, 2 ; .line 428; ./picLib3.c INTCONbits.GIE = 1; // enable interrupts 0014c2 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 0014c4 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0014c6 f001 0014c8 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0014ca f000 0014cc cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0014ce ffd9 0014d0 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__eepromRead8 code _eepromRead8: ; .line 401; ./picLib3.c UInt8 eepromRead8(UInt8 address){ 001516 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001518 ffe5 00151a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00151c ffd9 00151e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001520 ffe5 001522 0e02 movlw 0x2 MOVLW 0x02 001524 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001526 f000 ; .line 402; ./picLib3.c EECON1bits.CFGS = 0; 001528 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 403; ./picLib3.c EECON1bits.EEPGD = 0; 00152a 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 404; ./picLib3.c EEADR = address; 00152c c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 00152e ffa9 ; .line 405; ./picLib3.c EECON1bits.RD = 1; 001530 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 406; ./picLib3.c return EEDATA; 001532 50a8 movf 0xa8, 0, 0 MOVF _EEDATA, W 001534 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001536 f000 001538 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00153a ffd9 00153c 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartWrite code _usartWrite: ; .line 389; ./picLib3.c void usartWrite(char* buffer, UInt8 len){ 000e2a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000e2c ffe5 000e2e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000e30 ffd9 000e32 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000e34 ffe5 000e36 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000e38 ffe5 000e3a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000e3c ffe5 000e3e c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000e40 ffe5 000e42 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000e44 ffe5 000e46 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000e48 ffe5 000e4a 0e02 movlw 0x2 MOVLW 0x02 000e4c cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000e4e f000 000e50 0e03 movlw 0x3 MOVLW 0x03 000e52 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000e54 f001 000e56 0e04 movlw 0x4 MOVLW 0x04 000e58 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000e5a f002 000e5c 0e05 movlw 0x5 MOVLW 0x05 000e5e cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000e60 f003 ; .line 392; ./picLib3.c for(i = 0; i < len; i++){ 000e62 6a04 clrf 0x4, 0 CLRF r0x04 _00363_DS_: 000e64 5003 movf 0x3, 0, 0 MOVF r0x03, W 000e66 5c04 subwf 0x4, 0, 0 SUBWF r0x04, W 000e68 e214 bc 0xe92 BC _00367_DS_ ; .line 393; ./picLib3.c usartPutc(*buffer++); 000e6a c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000e6c ffe9 000e6e c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000e70 fff3 000e72 5002 movf 0x2, 0, 0 MOVF r0x02, W 000e74 ecc4 call 0x1588, 0 CALL __gptrget1 000e76 f00a 000e78 6e05 movwf 0x5, 0 MOVWF r0x05 000e7a 2a00 incf 0, 0x1, 0 INCF r0x00, F 000e7c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000e7e 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000e80 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000e82 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000e84 5005 movf 0x5, 0, 0 MOVF r0x05, W 000e86 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e88 ecb2 call 0x1564, 0 CALL _usartPutc 000e8a f00a 000e8c 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 392; ./picLib3.c for(i = 0; i < len; i++){ 000e8e 2a04 incf 0x4, 0x1, 0 INCF r0x04, F 000e90 d7e9 bra 0xe64 BRA _00363_DS_ _00367_DS_: 000e92 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000e94 f005 000e96 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000e98 f004 000e9a cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000e9c f003 000e9e cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000ea0 f002 000ea2 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000ea4 f001 000ea6 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000ea8 f000 000eaa cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000eac ffd9 000eae 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartPuts code _usartPuts: ; .line 356; ./picLib3.c void usartPuts(char* p){ 001012 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001014 ffe5 001016 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001018 ffd9 00101a c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00101c ffe5 00101e c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001020 ffe5 001022 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001024 ffe5 001026 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001028 ffe5 00102a 0e02 movlw 0x2 MOVLW 0x02 00102c cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00102e f000 001030 0e03 movlw 0x3 MOVLW 0x03 001032 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 001034 f001 001036 0e04 movlw 0x4 MOVLW 0x04 001038 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 00103a f002 _00355_DS_: ; .line 357; ./picLib3.c while(*p){ 00103c c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00103e ffe9 001040 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 001042 fff3 001044 5002 movf 0x2, 0, 0 MOVF r0x02, W 001046 ecc4 call 0x1588, 0 CALL __gptrget1 001048 f00a 00104a 6e03 movwf 0x3, 0 MOVWF r0x03 00104c 5003 movf 0x3, 0, 0 MOVF r0x03, W 00104e e010 bz 0x1070 BZ _00358_DS_ _00352_DS_: ; .line 358; ./picLib3.c while(!TXSTAbits.TRMT); 001050 a2ac btfss 0xac, 0x1, 0 BTFSS _TXSTAbits, 1 001052 d7fe bra 0x1050 BRA _00352_DS_ ; .line 359; ./picLib3.c TXREG = *p++; 001054 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 001056 ffe9 001058 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00105a fff3 00105c 5002 movf 0x2, 0, 0 MOVF r0x02, W 00105e ecc4 call 0x1588, 0 CALL __gptrget1 001060 f00a 001062 6ead movwf 0xad, 0 MOVWF _TXREG 001064 2a00 incf 0, 0x1, 0 INCF r0x00, F 001066 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 001068 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 00106a b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00106c 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 00106e d7e6 bra 0x103c BRA _00355_DS_ _00358_DS_: 001070 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001072 f003 001074 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001076 f002 001078 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00107a f001 00107c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00107e f000 001080 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001082 ffd9 001084 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartPutc code _usartPutc: ; .line 351; ./picLib3.c void usartPutc(UInt8 c){ 001564 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001566 ffe5 001568 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00156a ffd9 00156c c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00156e ffe5 001570 0e02 movlw 0x2 MOVLW 0x02 001572 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001574 f000 _00344_DS_: ; .line 352; ./picLib3.c while(!TXSTAbits.TRMT); 001576 a2ac btfss 0xac, 0x1, 0 BTFSS _TXSTAbits, 1 001578 d7fe bra 0x1576 BRA _00344_DS_ ; .line 353; ./picLib3.c TXREG = c; 00157a c000 movff 0, 0xfad MOVFF r0x00, _TXREG 00157c ffad 00157e cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001580 f000 001582 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001584 ffd9 001586 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartGetc code _usartGetc: _00336_DS_: ; .line 347; ./picLib3.c while(PIR1bits.RCIF == 0); 0016c2 aa9e btfss 0x9e, 0x5, 0 BTFSS _PIR1bits, 5 0016c4 d7fe bra 0x16c2 BRA _00336_DS_ ; .line 348; ./picLib3.c return RCREG; 0016c6 50ae movf 0xae, 0, 0 MOVF _RCREG, W 0016c8 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartRxRdy code _usartRxRdy: ; .line 342; ./picLib3.c unsigned char usartRxRdy(void){ 00164a c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00164c ffe5 ; .line 343; ./picLib3.c return PIR1bits.RCIF; 00164e 6a00 clrf 0, 0 CLRF r0x00 001650 ba9e btfsc 0x9e, 0x5, 0 BTFSC _PIR1bits, 5 001652 2a00 incf 0, 0x1, 0 INCF r0x00, F 001654 5000 movf 0, 0, 0 MOVF r0x00, W 001656 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001658 f000 00165a 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__usartInit code _usartInit: ; .line 329; ./picLib3.c TXSTA = 0x20; 0015ca 0e20 movlw 0x20 MOVLW 0x20 0015cc 6eac movwf 0xac, 0 MOVWF _TXSTA ; .line 330; ./picLib3.c RCSTA = 0x90; 0015ce 0e90 movlw 0x90 MOVLW 0x90 0015d0 6eab movwf 0xab, 0 MOVWF _RCSTA ; .line 336; ./picLib3.c SPBRG = 12; // 4800 Baud 4MHz Clock 0015d2 0e0c movlw 0xc MOVLW 0x0c 0015d4 6eaf movwf 0xaf, 0 MOVWF _SPBRG ; .line 339; ./picLib3.c delayMs(1); 0015d6 0e00 movlw 0 MOVLW 0x00 0015d8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0015da 0e01 movlw 0x1 MOVLW 0x01 0015dc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0015de ecc2 call 0x1384, 0 CALL _delayMs 0015e0 f009 0015e2 0e02 movlw 0x2 MOVLW 0x02 0015e4 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0015e6 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__strWordDec code _strWordDec: ; .line 297; ./picLib3.c void strWordDec(char* str, UInt8 decPlace, UInt16 v){ 00002a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00002c ffe5 00002e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000030 ffd9 000032 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000034 ffe5 000036 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000038 ffe5 00003a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00003c ffe5 00003e c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000040 ffe5 000042 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000044 ffe5 000046 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000048 ffe5 00004a c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 00004c ffe5 00004e c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000050 ffe5 000052 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 000054 ffe5 000056 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000058 ffe5 00005a c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 00005c ffe5 00005e 0e02 movlw 0x2 MOVLW 0x02 000060 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000062 f000 000064 0e03 movlw 0x3 MOVLW 0x03 000066 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000068 f001 00006a 0e04 movlw 0x4 MOVLW 0x04 00006c cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 00006e f002 000070 0e05 movlw 0x5 MOVLW 0x05 000072 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000074 f003 000076 0e06 movlw 0x6 MOVLW 0x06 000078 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 00007a f004 00007c 0e07 movlw 0x7 MOVLW 0x07 00007e cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 000080 f005 ; .line 298; ./picLib3.c char* p = str; 000082 c000 movff 0, 0x6 MOVFF r0x00, r0x06 000084 f006 000086 c001 movff 0x1, 0x7 MOVFF r0x01, r0x07 000088 f007 00008a c002 movff 0x2, 0x8 MOVFF r0x02, r0x08 00008c f008 ; .line 300; ./picLib3.c if(decPlace) 00008e 5003 movf 0x3, 0, 0 MOVF r0x03, W 000090 e003 bz 0x98 BZ _00289_DS_ ; .line 301; ./picLib3.c decPlace = 5 - decPlace; 000092 5003 movf 0x3, 0, 0 MOVF r0x03, W 000094 0805 sublw 0x5 SUBLW 0x05 000096 6e03 movwf 0x3, 0 MOVWF r0x03 _00289_DS_: ; .line 303; ./picLib3.c *p++ = (v / 10000) + '0'; 000098 0e27 movlw 0x27 MOVLW 0x27 00009a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00009c 0e10 movlw 0x10 MOVLW 0x10 00009e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0000a0 5005 movf 0x5, 0, 0 MOVF r0x05, W 0000a2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0000a4 5004 movf 0x4, 0, 0 MOVF r0x04, W 0000a6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0000a8 ecd0 call 0xba0, 0 CALL __divuint 0000aa f005 0000ac 6e09 movwf 0x9, 0 MOVWF r0x09 0000ae cff3 movff 0xff3, 0xa MOVFF PRODL, r0x0a 0000b0 f00a 0000b2 0e04 movlw 0x4 MOVLW 0x04 0000b4 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0000b6 0e30 movlw 0x30 MOVLW 0x30 0000b8 2609 addwf 0x9, 0x1, 0 ADDWF r0x09, F 0000ba c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 0000bc ffe5 0000be c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0000c0 ffe9 0000c2 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0000c4 fff3 0000c6 5008 movf 0x8, 0, 0 MOVF r0x08, W 0000c8 ec1b call 0x1636, 0 CALL __gptrput1 0000ca f00b 0000cc 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 0000ce b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0000d0 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 0000d2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0000d4 2a08 incf 0x8, 0x1, 0 INCF r0x08, F ; .line 304; ./picLib3.c if(!--decPlace) *p++ = '.'; 0000d6 0603 decf 0x3, 0x1, 0 DECF r0x03, F 0000d8 5003 movf 0x3, 0, 0 MOVF r0x03, W 0000da e10e bnz 0xf8 BNZ _00291_DS_ 0000dc 0e2e movlw 0x2e MOVLW 0x2e 0000de 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0000e0 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0000e2 ffe9 0000e4 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0000e6 fff3 0000e8 5008 movf 0x8, 0, 0 MOVF r0x08, W 0000ea ec1b call 0x1636, 0 CALL __gptrput1 0000ec f00b 0000ee 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 0000f0 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0000f2 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 0000f4 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0000f6 2a08 incf 0x8, 0x1, 0 INCF r0x08, F _00291_DS_: ; .line 305; ./picLib3.c v = v % 10000; 0000f8 0e27 movlw 0x27 MOVLW 0x27 0000fa 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0000fc 0e10 movlw 0x10 MOVLW 0x10 0000fe 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000100 5005 movf 0x5, 0, 0 MOVF r0x05, W 000102 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000104 5004 movf 0x4, 0, 0 MOVF r0x04, W 000106 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000108 ec74 call 0xae8, 0 CALL __moduint 00010a f005 00010c 6e04 movwf 0x4, 0 MOVWF r0x04 00010e cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 000110 f005 000112 0e04 movlw 0x4 MOVLW 0x04 000114 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 306; ./picLib3.c *p++ = (v / 1000) + '0'; 000116 0e03 movlw 0x3 MOVLW 0x03 000118 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00011a 0ee8 movlw 0xe8 MOVLW 0xe8 00011c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00011e 5005 movf 0x5, 0, 0 MOVF r0x05, W 000120 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000122 5004 movf 0x4, 0, 0 MOVF r0x04, W 000124 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000126 ecd0 call 0xba0, 0 CALL __divuint 000128 f005 00012a 6e09 movwf 0x9, 0 MOVWF r0x09 00012c cff3 movff 0xff3, 0xa MOVFF PRODL, r0x0a 00012e f00a 000130 0e04 movlw 0x4 MOVLW 0x04 000132 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000134 0e30 movlw 0x30 MOVLW 0x30 000136 2609 addwf 0x9, 0x1, 0 ADDWF r0x09, F 000138 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 00013a ffe5 00013c c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 00013e ffe9 000140 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000142 fff3 000144 5008 movf 0x8, 0, 0 MOVF r0x08, W 000146 ec1b call 0x1636, 0 CALL __gptrput1 000148 f00b 00014a 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 00014c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00014e 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 000150 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000152 2a08 incf 0x8, 0x1, 0 INCF r0x08, F ; .line 307; ./picLib3.c if(!--decPlace) *p++ = '.'; 000154 0603 decf 0x3, 0x1, 0 DECF r0x03, F 000156 5003 movf 0x3, 0, 0 MOVF r0x03, W 000158 e10e bnz 0x176 BNZ _00293_DS_ 00015a 0e2e movlw 0x2e MOVLW 0x2e 00015c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00015e c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 000160 ffe9 000162 c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000164 fff3 000166 5008 movf 0x8, 0, 0 MOVF r0x08, W 000168 ec1b call 0x1636, 0 CALL __gptrput1 00016a f00b 00016c 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 00016e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000170 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 000172 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000174 2a08 incf 0x8, 0x1, 0 INCF r0x08, F _00293_DS_: ; .line 308; ./picLib3.c v = v % 1000; 000176 0e03 movlw 0x3 MOVLW 0x03 000178 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00017a 0ee8 movlw 0xe8 MOVLW 0xe8 00017c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00017e 5005 movf 0x5, 0, 0 MOVF r0x05, W 000180 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000182 5004 movf 0x4, 0, 0 MOVF r0x04, W 000184 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000186 ec74 call 0xae8, 0 CALL __moduint 000188 f005 00018a 6e04 movwf 0x4, 0 MOVWF r0x04 00018c cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 00018e f005 000190 0e04 movlw 0x4 MOVLW 0x04 000192 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 309; ./picLib3.c *p++ = (v / 100) + '0'; 000194 0e00 movlw 0 MOVLW 0x00 000196 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000198 0e64 movlw 0x64 MOVLW 0x64 00019a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00019c 5005 movf 0x5, 0, 0 MOVF r0x05, W 00019e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0001a0 5004 movf 0x4, 0, 0 MOVF r0x04, W 0001a2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0001a4 ecd0 call 0xba0, 0 CALL __divuint 0001a6 f005 0001a8 6e09 movwf 0x9, 0 MOVWF r0x09 0001aa cff3 movff 0xff3, 0xa MOVFF PRODL, r0x0a 0001ac f00a 0001ae 0e04 movlw 0x4 MOVLW 0x04 0001b0 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0001b2 0e30 movlw 0x30 MOVLW 0x30 0001b4 2609 addwf 0x9, 0x1, 0 ADDWF r0x09, F 0001b6 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 0001b8 ffe5 0001ba c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0001bc ffe9 0001be c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0001c0 fff3 0001c2 5008 movf 0x8, 0, 0 MOVF r0x08, W 0001c4 ec1b call 0x1636, 0 CALL __gptrput1 0001c6 f00b 0001c8 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 0001ca b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0001cc 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 0001ce b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0001d0 2a08 incf 0x8, 0x1, 0 INCF r0x08, F ; .line 310; ./picLib3.c if(!--decPlace) *p++ = '.'; 0001d2 0603 decf 0x3, 0x1, 0 DECF r0x03, F 0001d4 5003 movf 0x3, 0, 0 MOVF r0x03, W 0001d6 e10e bnz 0x1f4 BNZ _00295_DS_ 0001d8 0e2e movlw 0x2e MOVLW 0x2e 0001da 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 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 ec1b call 0x1636, 0 CALL __gptrput1 0001e8 f00b 0001ea 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 0001ec b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0001ee 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 0001f0 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0001f2 2a08 incf 0x8, 0x1, 0 INCF r0x08, F _00295_DS_: ; .line 311; ./picLib3.c v = v % 100; 0001f4 0e00 movlw 0 MOVLW 0x00 0001f6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0001f8 0e64 movlw 0x64 MOVLW 0x64 0001fa 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0001fc 5005 movf 0x5, 0, 0 MOVF r0x05, W 0001fe 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000200 5004 movf 0x4, 0, 0 MOVF r0x04, W 000202 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000204 ec74 call 0xae8, 0 CALL __moduint 000206 f005 000208 6e04 movwf 0x4, 0 MOVWF r0x04 00020a cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 00020c f005 00020e 0e04 movlw 0x4 MOVLW 0x04 000210 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 312; ./picLib3.c *p++ = (v / 10) + '0'; 000212 0e00 movlw 0 MOVLW 0x00 000214 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000216 0e0a movlw 0xa MOVLW 0x0a 000218 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00021a 5005 movf 0x5, 0, 0 MOVF r0x05, W 00021c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00021e 5004 movf 0x4, 0, 0 MOVF r0x04, W 000220 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000222 ecd0 call 0xba0, 0 CALL __divuint 000224 f005 000226 6e09 movwf 0x9, 0 MOVWF r0x09 000228 cff3 movff 0xff3, 0xa MOVFF PRODL, r0x0a 00022a f00a 00022c 0e04 movlw 0x4 MOVLW 0x04 00022e 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000230 0e30 movlw 0x30 MOVLW 0x30 000232 2609 addwf 0x9, 0x1, 0 ADDWF r0x09, F 000234 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000236 ffe5 000238 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 00023a ffe9 00023c c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 00023e fff3 000240 5008 movf 0x8, 0, 0 MOVF r0x08, W 000242 ec1b call 0x1636, 0 CALL __gptrput1 000244 f00b 000246 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 000248 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00024a 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 00024c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00024e 2a08 incf 0x8, 0x1, 0 INCF r0x08, F ; .line 313; ./picLib3.c if(!--decPlace) *p++ = '.'; 000250 0603 decf 0x3, 0x1, 0 DECF r0x03, F 000252 5003 movf 0x3, 0, 0 MOVF r0x03, W 000254 e10e bnz 0x272 BNZ _00297_DS_ 000256 0e2e movlw 0x2e MOVLW 0x2e 000258 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00025a c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 00025c ffe9 00025e c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 000260 fff3 000262 5008 movf 0x8, 0, 0 MOVF r0x08, W 000264 ec1b call 0x1636, 0 CALL __gptrput1 000266 f00b 000268 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 00026a b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00026c 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 00026e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000270 2a08 incf 0x8, 0x1, 0 INCF r0x08, F _00297_DS_: ; .line 314; ./picLib3.c v = v % 10; 000272 0e00 movlw 0 MOVLW 0x00 000274 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000276 0e0a movlw 0xa MOVLW 0x0a 000278 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00027a 5005 movf 0x5, 0, 0 MOVF r0x05, W 00027c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00027e 5004 movf 0x4, 0, 0 MOVF r0x04, W 000280 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000282 ec74 call 0xae8, 0 CALL __moduint 000284 f005 000286 6e04 movwf 0x4, 0 MOVWF r0x04 000288 cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 00028a f005 00028c 0e04 movlw 0x4 MOVLW 0x04 00028e 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 315; ./picLib3.c *p++ = v + '0'; 000290 0e30 movlw 0x30 MOVLW 0x30 000292 2604 addwf 0x4, 0x1, 0 ADDWF r0x04, F 000294 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000296 ffe5 000298 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 00029a ffe9 00029c c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 00029e fff3 0002a0 5008 movf 0x8, 0, 0 MOVF r0x08, W 0002a2 ec1b call 0x1636, 0 CALL __gptrput1 0002a4 f00b 0002a6 2a06 incf 0x6, 0x1, 0 INCF r0x06, F 0002a8 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0002aa 2a07 incf 0x7, 0x1, 0 INCF r0x07, F 0002ac b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0002ae 2a08 incf 0x8, 0x1, 0 INCF r0x08, F ; .line 316; ./picLib3.c if(!--decPlace) *p++ = '.'; 0002b0 2e03 decfsz 0x3, 0x1, 0 DECFSZ r0x03, F 0002b2 d009 bra 0x2c6 BRA _00315_DS_ 0002b4 0e2e movlw 0x2e MOVLW 0x2e 0002b6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0002b8 c006 movff 0x6, 0xfe9 MOVFF r0x06, FSR0L 0002ba ffe9 0002bc c007 movff 0x7, 0xff3 MOVFF r0x07, PRODL 0002be fff3 0002c0 5008 movf 0x8, 0, 0 MOVF r0x08, W 0002c2 ec1b call 0x1636, 0 CALL __gptrput1 0002c4 f00b _00315_DS_: ; .line 319; ./picLib3.c for(p = str; (p < str + 4) && (*p == '0'); p++) 0002c6 5000 movf 0, 0, 0 MOVF r0x00, W 0002c8 0f04 addlw 0x4 ADDLW 0x04 0002ca 6e03 movwf 0x3, 0 MOVWF r0x03 0002cc 0e00 movlw 0 MOVLW 0x00 0002ce 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0002d0 6e04 movwf 0x4, 0 MOVWF r0x04 0002d2 0e00 movlw 0 MOVLW 0x00 0002d4 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 0002d6 6e05 movwf 0x5, 0 MOVWF r0x05 _00301_DS_: 0002d8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0002da 0f80 addlw 0x80 ADDLW 0x80 0002dc 6ef3 movwf 0xf3, 0 MOVWF PRODL 0002de 5005 movf 0x5, 0, 0 MOVF r0x05, W 0002e0 0f80 addlw 0x80 ADDLW 0x80 0002e2 5cf3 subwf 0xf3, 0, 0 SUBWF PRODL, W 0002e4 e105 bnz 0x2f0 BNZ _00319_DS_ 0002e6 5004 movf 0x4, 0, 0 MOVF r0x04, W 0002e8 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 0002ea e102 bnz 0x2f0 BNZ _00319_DS_ 0002ec 5003 movf 0x3, 0, 0 MOVF r0x03, W 0002ee 5c00 subwf 0, 0, 0 SUBWF r0x00, W _00319_DS_: 0002f0 e219 bc 0x324 BC _00305_DS_ 0002f2 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0002f4 ffe9 0002f6 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0002f8 fff3 0002fa 5002 movf 0x2, 0, 0 MOVF r0x02, W 0002fc ecc4 call 0x1588, 0 CALL __gptrget1 0002fe f00a ; # MOVWF r0x06 ; # MOVF r0x06, W 000300 6e06 movwf 0x6, 0 MOVWF r0x06 000302 0a30 xorlw 0x30 XORLW 0x30 000304 e10f bnz 0x324 BNZ _00305_DS_ ; .line 320; ./picLib3.c *p = ' '; 000306 0e20 movlw 0x20 MOVLW 0x20 000308 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00030a c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00030c ffe9 00030e c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000310 fff3 000312 5002 movf 0x2, 0, 0 MOVF r0x02, W 000314 ec1b call 0x1636, 0 CALL __gptrput1 000316 f00b ; .line 319; ./picLib3.c for(p = str; (p < str + 4) && (*p == '0'); p++) 000318 2a00 incf 0, 0x1, 0 INCF r0x00, F 00031a b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00031c 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 00031e b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000320 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000322 d7da bra 0x2d8 BRA _00301_DS_ _00305_DS_: 000324 cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 000326 f00a 000328 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 00032a f009 00032c cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 00032e f008 000330 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 000332 f007 000334 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000336 f006 000338 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 00033a f005 00033c cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 00033e f004 000340 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000342 f003 000344 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000346 f002 000348 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00034a f001 00034c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00034e f000 000350 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000352 ffd9 000354 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__strByte code _strByte: ; .line 283; ./picLib3.c void strByte(char* str, UInt8 v){ 000356 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000358 ffe5 00035a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00035c ffd9 00035e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000360 ffe5 000362 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000364 ffe5 000366 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000368 ffe5 00036a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00036c ffe5 00036e c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000370 ffe5 000372 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000374 ffe5 000376 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000378 ffe5 00037a c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00037c ffe5 00037e 0e02 movlw 0x2 MOVLW 0x02 000380 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000382 f000 000384 0e03 movlw 0x3 MOVLW 0x03 000386 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000388 f001 00038a 0e04 movlw 0x4 MOVLW 0x04 00038c cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 00038e f002 000390 0e05 movlw 0x5 MOVLW 0x05 000392 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000394 f003 ; .line 286; ./picLib3.c *p++ = (v / 100) + '0'; 000396 0e64 movlw 0x64 MOVLW 0x64 000398 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00039a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00039c ffe5 00039e eced call 0x11da, 0 CALL __divuchar 0003a0 f008 0003a2 6e04 movwf 0x4, 0 MOVWF r0x04 0003a4 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 0003a6 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 0003a8 0e30 movlw 0x30 MOVLW 0x30 0003aa 2604 addwf 0x4, 0x1, 0 ADDWF r0x04, F 0003ac c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 0003ae ffe5 0003b0 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0003b2 ffe9 0003b4 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0003b6 fff3 0003b8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0003ba ec1b call 0x1636, 0 CALL __gptrput1 0003bc f00b 0003be 5000 movf 0, 0, 0 MOVF r0x00, W 0003c0 0f01 addlw 0x1 ADDLW 0x01 0003c2 6e04 movwf 0x4, 0 MOVWF r0x04 0003c4 0e00 movlw 0 MOVLW 0x00 0003c6 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 0003c8 6e05 movwf 0x5, 0 MOVWF r0x05 0003ca 0e00 movlw 0 MOVLW 0x00 0003cc 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 0003ce 6e06 movwf 0x6, 0 MOVWF r0x06 ; .line 287; ./picLib3.c v = v % 100; 0003d0 0e64 movlw 0x64 MOVLW 0x64 0003d2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0003d4 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0003d6 ffe5 0003d8 ec43 call 0x1086, 0 CALL __moduchar 0003da f008 0003dc 6e03 movwf 0x3, 0 MOVWF r0x03 0003de 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 0003e0 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W ; .line 288; ./picLib3.c *p++ = (v / 10) + '0'; 0003e2 0e0a movlw 0xa MOVLW 0x0a 0003e4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0003e6 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0003e8 ffe5 0003ea eced call 0x11da, 0 CALL __divuchar 0003ec f008 0003ee 6e07 movwf 0x7, 0 MOVWF r0x07 0003f0 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 0003f2 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 0003f4 0e30 movlw 0x30 MOVLW 0x30 0003f6 2607 addwf 0x7, 0x1, 0 ADDWF r0x07, F 0003f8 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0003fa ffe5 0003fc c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 0003fe ffe9 000400 c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 000402 fff3 000404 5006 movf 0x6, 0, 0 MOVF r0x06, W 000406 ec1b call 0x1636, 0 CALL __gptrput1 000408 f00b 00040a 2a04 incf 0x4, 0x1, 0 INCF r0x04, F 00040c b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 00040e 2a05 incf 0x5, 0x1, 0 INCF r0x05, F 000410 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000412 2a06 incf 0x6, 0x1, 0 INCF r0x06, F ; .line 289; ./picLib3.c v = v % 10; 000414 0e0a movlw 0xa MOVLW 0x0a 000416 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000418 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00041a ffe5 00041c ec43 call 0x1086, 0 CALL __moduchar 00041e f008 000420 6e03 movwf 0x3, 0 MOVWF r0x03 000422 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W 000424 50e4 movf 0xe4, 0, 0 MOVF PREINC1, W ; .line 290; ./picLib3.c *p++ = v + '0'; 000426 0e30 movlw 0x30 MOVLW 0x30 000428 2603 addwf 0x3, 0x1, 0 ADDWF r0x03, F 00042a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00042c ffe5 00042e c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 000430 ffe9 000432 c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 000434 fff3 000436 5006 movf 0x6, 0, 0 MOVF r0x06, W 000438 ec1b call 0x1636, 0 CALL __gptrput1 00043a f00b ; .line 293; ./picLib3.c for(p = str; (p < str + 2) && (*p == '0'); p++) 00043c 5000 movf 0, 0, 0 MOVF r0x00, W 00043e 0f02 addlw 0x2 ADDLW 0x02 000440 6e03 movwf 0x3, 0 MOVWF r0x03 000442 0e00 movlw 0 MOVLW 0x00 000444 2001 addwfc 0x1, 0, 0 ADDWFC r0x01, W 000446 6e04 movwf 0x4, 0 MOVWF r0x04 000448 0e00 movlw 0 MOVLW 0x00 00044a 2002 addwfc 0x2, 0, 0 ADDWFC r0x02, W 00044c 6e05 movwf 0x5, 0 MOVWF r0x05 _00271_DS_: 00044e 5002 movf 0x2, 0, 0 MOVF r0x02, W 000450 0f80 addlw 0x80 ADDLW 0x80 000452 6ef3 movwf 0xf3, 0 MOVWF PRODL 000454 5005 movf 0x5, 0, 0 MOVF r0x05, W 000456 0f80 addlw 0x80 ADDLW 0x80 000458 5cf3 subwf 0xf3, 0, 0 SUBWF PRODL, W 00045a e105 bnz 0x466 BNZ _00281_DS_ 00045c 5004 movf 0x4, 0, 0 MOVF r0x04, W 00045e 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 000460 e102 bnz 0x466 BNZ _00281_DS_ 000462 5003 movf 0x3, 0, 0 MOVF r0x03, W 000464 5c00 subwf 0, 0, 0 SUBWF r0x00, W _00281_DS_: 000466 e219 bc 0x49a BC _00275_DS_ 000468 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 00046a ffe9 00046c c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00046e fff3 000470 5002 movf 0x2, 0, 0 MOVF r0x02, W 000472 ecc4 call 0x1588, 0 CALL __gptrget1 000474 f00a ; # MOVWF r0x06 ; # MOVF r0x06, W 000476 6e06 movwf 0x6, 0 MOVWF r0x06 000478 0a30 xorlw 0x30 XORLW 0x30 00047a e10f bnz 0x49a BNZ _00275_DS_ ; .line 294; ./picLib3.c *p = ' '; 00047c 0e20 movlw 0x20 MOVLW 0x20 00047e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000480 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000482 ffe9 000484 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000486 fff3 000488 5002 movf 0x2, 0, 0 MOVF r0x02, W 00048a ec1b call 0x1636, 0 CALL __gptrput1 00048c f00b ; .line 293; ./picLib3.c for(p = str; (p < str + 2) && (*p == '0'); p++) 00048e 2a00 incf 0, 0x1, 0 INCF r0x00, F 000490 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000492 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000494 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000496 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000498 d7da bra 0x44e BRA _00271_DS_ _00275_DS_: 00049a cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 00049c f007 00049e cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0004a0 f006 0004a2 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0004a4 f005 0004a6 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0004a8 f004 0004aa cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0004ac f003 0004ae cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0004b0 f002 0004b2 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0004b4 f001 0004b6 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0004b8 f000 0004ba cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0004bc ffd9 0004be 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__lcdPutHexByte code _lcdPutHexByte: ; .line 260; ./picLib3.c void lcdPutHexByte(UInt8 v){ 000c4a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000c4c ffe5 000c4e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000c50 ffd9 000c52 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000c54 ffe5 000c56 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000c58 ffe5 000c5a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000c5c ffe5 000c5e 0e02 movlw 0x2 MOVLW 0x02 000c60 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000c62 f000 ; .line 264; ./picLib3.c c = v / 16; 000c64 3800 swapf 0, 0, 0 SWAPF r0x00, W 000c66 0b0f andlw 0xf ANDLW 0x0f 000c68 6e01 movwf 0x1, 0 MOVWF r0x01 ; .line 265; ./picLib3.c c += '0'; 000c6a 0e30 movlw 0x30 MOVLW 0x30 000c6c 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F ; .line 266; ./picLib3.c if(c > '9') 000c6e 0e3a movlw 0x3a MOVLW 0x3a 000c70 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 000c72 e302 bnc 0xc78 BNC _00256_DS_ ; .line 267; ./picLib3.c c += 7; 000c74 0e07 movlw 0x7 MOVLW 0x07 000c76 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F _00256_DS_: ; .line 269; ./picLib3.c dat[0] = c; 000c78 5001 movf 0x1, 0, 0 MOVF r0x01, W 000c7a 0100 movlb 0 BANKSEL _lcdPutHexByte_dat_1_1 000c7c 6f93 movwf 0x93, 0x1 MOVWF _lcdPutHexByte_dat_1_1, B ; .line 271; ./picLib3.c c = v & 0x0F; 000c7e 0e0f movlw 0xf MOVLW 0x0f 000c80 1400 andwf 0, 0, 0 ANDWF r0x00, W 000c82 6e01 movwf 0x1, 0 MOVWF r0x01 ; .line 272; ./picLib3.c c += '0'; 000c84 0e30 movlw 0x30 MOVLW 0x30 000c86 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F ; .line 273; ./picLib3.c if(c > '9') 000c88 0e3a movlw 0x3a MOVLW 0x3a 000c8a 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 000c8c e302 bnc 0xc92 BNC _00258_DS_ ; .line 274; ./picLib3.c c += 7; 000c8e 0e07 movlw 0x7 MOVLW 0x07 000c90 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F _00258_DS_: ; .line 275; ./picLib3.c dat[1] = c; 000c92 5001 movf 0x1, 0, 0 MOVF r0x01, W 000c94 0100 movlb 0 BANKSEL (_lcdPutHexByte_dat_1_1 + 1) 000c96 6f94 movwf 0x94, 0x1 MOVWF (_lcdPutHexByte_dat_1_1 + 1), B ; removed redundant BANKSEL ; .line 276; ./picLib3.c dat[2] = 0xFF; 000c98 6995 setf 0x95, 0x1 SETF (_lcdPutHexByte_dat_1_1 + 2), B ; .line 278; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, 3); 000c9a 0e00 movlw 0 MOVLW HIGH(_lcdPutHexByte_dat_1_1) 000c9c 6e01 movwf 0x1, 0 MOVWF r0x01 000c9e 0e93 movlw 0x93 MOVLW LOW(_lcdPutHexByte_dat_1_1) 000ca0 6e00 movwf 0, 0 MOVWF r0x00 000ca2 0e80 movlw 0x80 MOVLW 0x80 000ca4 6e02 movwf 0x2, 0 MOVWF r0x02 000ca6 0e03 movlw 0x3 MOVLW 0x03 000ca8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000caa 5002 movf 0x2, 0, 0 MOVF r0x02, W 000cac 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cae 5001 movf 0x1, 0, 0 MOVF r0x01, W 000cb0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cb2 5000 movf 0, 0, 0 MOVF r0x00, W 000cb4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cb6 0e00 movlw 0 MOVLW 0x00 000cb8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cba 0e00 movlw 0 MOVLW 0x00 000cbc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cbe 0e00 movlw 0 MOVLW 0x00 000cc0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cc2 0ec6 movlw 0xc6 MOVLW 0xc6 000cc4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cc6 ec18 call 0x830, 0 CALL _i2cWrite 000cc8 f004 000cca 0e08 movlw 0x8 MOVLW 0x08 000ccc 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 279; ./picLib3.c delayMs(10); 000cce 0e00 movlw 0 MOVLW 0x00 000cd0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cd2 0e0a movlw 0xa MOVLW 0x0a 000cd4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000cd6 ecc2 call 0x1384, 0 CALL _delayMs 000cd8 f009 000cda 0e02 movlw 0x2 MOVLW 0x02 000cdc 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000cde cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000ce0 f002 000ce2 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000ce4 f001 000ce6 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000ce8 f000 000cea cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000cec ffd9 000cee 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__lcdWriteStr code _lcdWriteStr: ; .line 237; ./picLib3.c void lcdWriteStr(UInt8 x, UInt8 y, char* str){ 000932 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000934 ffe5 000936 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000938 ffd9 00093a c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00093c ffe5 00093e c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000940 ffe5 000942 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000944 ffe5 000946 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000948 ffe5 00094a c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 00094c ffe5 00094e 0e02 movlw 0x2 MOVLW 0x02 000950 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000952 f000 000954 0e03 movlw 0x3 MOVLW 0x03 000956 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000958 f001 00095a 0e04 movlw 0x4 MOVLW 0x04 00095c cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 00095e f002 000960 0e05 movlw 0x5 MOVLW 0x05 000962 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000964 f003 000966 0e06 movlw 0x6 MOVLW 0x06 000968 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 00096a f004 ; .line 238; ./picLib3.c i2cWaitForIdle(); 00096c ec1a call 0x1434, 0 CALL _i2cWaitForIdle 00096e f00a ; .line 240; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz CLK 000970 0e09 movlw 0x9 MOVLW 0x09 000972 6ec8 movwf 0xc8, 0 MOVWF _SSPADD ; .line 242; ./picLib3.c i2cStart(); 000974 ec56 call 0x16ac, 0 CALL _i2cStart 000976 f00b ; .line 244; ./picLib3.c i2cPutByte(0xC6); 000978 0ec6 movlw 0xc6 MOVLW 0xc6 00097a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00097c ec03 call 0x1606, 0 CALL _i2cPutByte 00097e f00b 000980 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 245; ./picLib3.c i2cPutByte(0x00); 000982 0e00 movlw 0 MOVLW 0x00 000984 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000986 ec03 call 0x1606, 0 CALL _i2cPutByte 000988 f00b 00098a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 246; ./picLib3.c i2cPutByte(0xFE); 00098c 0efe movlw 0xfe MOVLW 0xfe 00098e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000990 ec03 call 0x1606, 0 CALL _i2cPutByte 000992 f00b 000994 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; ;multiply lit val:0x40 by variable r0x01 and store in r0x01 ; ;Unrolled 8 X 8 multiplication ; ;FIXME: the function does not support result==WREG ; .line 247; ./picLib3.c i2cPutByte(128 + (y * 64) + x); 000996 5001 movf 0x1, 0, 0 MOVF r0x01, W 000998 0d40 mullw 0x40 MULLW 0x40 00099a cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 00099c f001 00099e 0e80 movlw 0x80 MOVLW 0x80 0009a0 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F 0009a2 5001 movf 0x1, 0, 0 MOVF r0x01, W 0009a4 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 0009a6 5000 movf 0, 0, 0 MOVF r0x00, W 0009a8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009aa ec03 call 0x1606, 0 CALL _i2cPutByte 0009ac f00b 0009ae 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 249; ./picLib3.c while(*str){ 0009b0 c002 movff 0x2, 0 MOVFF r0x02, r0x00 0009b2 f000 0009b4 c003 movff 0x3, 0x1 MOVFF r0x03, r0x01 0009b6 f001 0009b8 c004 movff 0x4, 0x2 MOVFF r0x04, r0x02 0009ba f002 _00247_DS_: 0009bc c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0009be ffe9 0009c0 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0009c2 fff3 0009c4 5002 movf 0x2, 0, 0 MOVF r0x02, W 0009c6 ecc4 call 0x1588, 0 CALL __gptrget1 0009c8 f00a 0009ca 6e03 movwf 0x3, 0 MOVWF r0x03 0009cc 5003 movf 0x3, 0, 0 MOVF r0x03, W 0009ce e00b bz 0x9e6 BZ _00249_DS_ ; .line 250; ./picLib3.c i2cPutByte(*str++); 0009d0 2a00 incf 0, 0x1, 0 INCF r0x00, F 0009d2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009d4 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0009d6 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0009d8 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 0009da 5003 movf 0x3, 0, 0 MOVF r0x03, W 0009dc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009de ec03 call 0x1606, 0 CALL _i2cPutByte 0009e0 f00b 0009e2 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 0009e4 d7eb bra 0x9bc BRA _00247_DS_ _00249_DS_: ; .line 253; ./picLib3.c i2cPutByte(0xFF); 0009e6 0eff movlw 0xff MOVLW 0xff 0009e8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009ea ec03 call 0x1606, 0 CALL _i2cPutByte 0009ec f00b 0009ee 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 255; ./picLib3.c i2cStop(); 0009f0 ec4a call 0x1694, 0 CALL _i2cStop 0009f2 f00b ; .line 256; ./picLib3.c delayMs(10); 0009f4 0e00 movlw 0 MOVLW 0x00 0009f6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009f8 0e0a movlw 0xa MOVLW 0x0a 0009fa 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0009fc ecc2 call 0x1384, 0 CALL _delayMs 0009fe f009 000a00 0e02 movlw 0x2 MOVLW 0x02 000a02 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000a04 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000a06 f004 000a08 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000a0a f003 000a0c cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000a0e f002 000a10 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000a12 f001 000a14 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000a16 f000 000a18 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000a1a ffd9 000a1c 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__lcdPutChar code _lcdPutChar: ; .line 227; ./picLib3.c void lcdPutChar(char c){ 000eb0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000eb2 ffe5 000eb4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000eb6 ffd9 000eb8 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000eba ffe5 000ebc c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000ebe ffe5 000ec0 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000ec2 ffe5 000ec4 0e02 movlw 0x2 MOVLW 0x02 000ec6 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000ec8 f000 ; .line 230; ./picLib3.c dat[0] = c; 000eca 5000 movf 0, 0, 0 MOVF r0x00, W 000ecc 0100 movlb 0 BANKSEL _lcdPutChar_dat_1_1 000ece 6f96 movwf 0x96, 0x1 MOVWF _lcdPutChar_dat_1_1, B ; removed redundant BANKSEL ; .line 231; ./picLib3.c dat[1] = 255; 000ed0 6997 setf 0x97, 0x1 SETF (_lcdPutChar_dat_1_1 + 1), B ; .line 233; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, 2); 000ed2 0e00 movlw 0 MOVLW HIGH(_lcdPutChar_dat_1_1) 000ed4 6e01 movwf 0x1, 0 MOVWF r0x01 000ed6 0e96 movlw 0x96 MOVLW LOW(_lcdPutChar_dat_1_1) 000ed8 6e00 movwf 0, 0 MOVWF r0x00 000eda 0e80 movlw 0x80 MOVLW 0x80 000edc 6e02 movwf 0x2, 0 MOVWF r0x02 000ede 0e02 movlw 0x2 MOVLW 0x02 000ee0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ee2 5002 movf 0x2, 0, 0 MOVF r0x02, W 000ee4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ee6 5001 movf 0x1, 0, 0 MOVF r0x01, W 000ee8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000eea 5000 movf 0, 0, 0 MOVF r0x00, W 000eec 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000eee 0e00 movlw 0 MOVLW 0x00 000ef0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ef2 0e00 movlw 0 MOVLW 0x00 000ef4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ef6 0e00 movlw 0 MOVLW 0x00 000ef8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000efa 0ec6 movlw 0xc6 MOVLW 0xc6 000efc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000efe ec18 call 0x830, 0 CALL _i2cWrite 000f00 f004 000f02 0e08 movlw 0x8 MOVLW 0x08 000f04 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 234; ./picLib3.c delayMs(10); 000f06 0e00 movlw 0 MOVLW 0x00 000f08 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000f0a 0e0a movlw 0xa MOVLW 0x0a 000f0c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000f0e ecc2 call 0x1384, 0 CALL _delayMs 000f10 f009 000f12 0e02 movlw 0x2 MOVLW 0x02 000f14 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000f16 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000f18 f002 000f1a cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000f1c f001 000f1e cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000f20 f000 000f22 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000f24 ffd9 000f26 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__lcdInit code _lcdInit: ; .line 219; ./picLib3.c void lcdInit(){ 0012b4 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0012b6 ffe5 0012b8 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0012ba ffe5 0012bc c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0012be ffe5 ; .line 220; ./picLib3.c UInt8 dat[] = { 254,1,255 }; 0012c0 0efe movlw 0xfe MOVLW 0xfe 0012c2 0100 movlb 0 BANKSEL _lcdInit_dat_1_1 0012c4 6f90 movwf 0x90, 0x1 MOVWF _lcdInit_dat_1_1, B 0012c6 0e01 movlw 0x1 MOVLW 0x01 ; removed redundant BANKSEL 0012c8 6f91 movwf 0x91, 0x1 MOVWF (_lcdInit_dat_1_1 + 1), B ; removed redundant BANKSEL 0012ca 6992 setf 0x92, 0x1 SETF (_lcdInit_dat_1_1 + 2), B ; .line 223; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, sizeof(dat)); 0012cc 0e00 movlw 0 MOVLW HIGH(_lcdInit_dat_1_1) 0012ce 6e01 movwf 0x1, 0 MOVWF r0x01 0012d0 0e90 movlw 0x90 MOVLW LOW(_lcdInit_dat_1_1) 0012d2 6e00 movwf 0, 0 MOVWF r0x00 0012d4 0e80 movlw 0x80 MOVLW 0x80 0012d6 6e02 movwf 0x2, 0 MOVWF r0x02 0012d8 0e03 movlw 0x3 MOVLW 0x03 0012da 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012dc 5002 movf 0x2, 0, 0 MOVF r0x02, W 0012de 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012e0 5001 movf 0x1, 0, 0 MOVF r0x01, W 0012e2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012e4 5000 movf 0, 0, 0 MOVF r0x00, W 0012e6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012e8 0e00 movlw 0 MOVLW 0x00 0012ea 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012ec 0e00 movlw 0 MOVLW 0x00 0012ee 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012f0 0e00 movlw 0 MOVLW 0x00 0012f2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012f4 0ec6 movlw 0xc6 MOVLW 0xc6 0012f6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0012f8 ec18 call 0x830, 0 CALL _i2cWrite 0012fa f004 0012fc 0e08 movlw 0x8 MOVLW 0x08 0012fe 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 224; ./picLib3.c delayMs(10); 001300 0e00 movlw 0 MOVLW 0x00 001302 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001304 0e0a movlw 0xa MOVLW 0x0a 001306 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001308 ecc2 call 0x1384, 0 CALL _delayMs 00130a f009 00130c 0e02 movlw 0x2 MOVLW 0x02 00130e 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 001310 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001312 f002 001314 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001316 f001 001318 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00131a f000 00131c 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cRead code _i2cRead: ; .line 183; ./picLib3.c Int8 i2cRead(UInt8 chipAddress, UInt16 regAddress, I2cMode mode, UInt8* dat, UInt8 len){ 0004c0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0004c2 ffe5 0004c4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0004c6 ffd9 0004c8 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0004ca ffe5 0004cc c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0004ce ffe5 0004d0 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0004d2 ffe5 0004d4 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0004d6 ffe5 0004d8 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 0004da ffe5 0004dc c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 0004de ffe5 0004e0 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 0004e2 ffe5 0004e4 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 0004e6 ffe5 0004e8 c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 0004ea ffe5 0004ec 0e02 movlw 0x2 MOVLW 0x02 0004ee cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0004f0 f000 0004f2 0e03 movlw 0x3 MOVLW 0x03 0004f4 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0004f6 f001 0004f8 0e04 movlw 0x4 MOVLW 0x04 0004fa cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 0004fc f002 0004fe 0e05 movlw 0x5 MOVLW 0x05 000500 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000502 f003 000504 0e06 movlw 0x6 MOVLW 0x06 000506 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000508 f004 00050a 0e07 movlw 0x7 MOVLW 0x07 00050c cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 00050e f005 000510 0e08 movlw 0x8 MOVLW 0x08 000512 cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000514 f006 000516 0e09 movlw 0x9 MOVLW 0x09 000518 cfdb movff 0xfdb, 0x7 MOVFF PLUSW2, r0x07 00051a f007 ; .line 184; ./picLib3.c i2cWaitForIdle(); 00051c ec1a call 0x1434, 0 CALL _i2cWaitForIdle 00051e f00a ; .line 186; ./picLib3.c if(mode & 0x01) 000520 a003 btfss 0x3, 0, 0 BTFSS r0x03, 0 000522 d003 bra 0x52a BRA _00212_DS_ ; .line 187; ./picLib3.c SSPADD = 0x02; // Set the baud rate to 333KHz at 4MHz CLK 000524 0e02 movlw 0x2 MOVLW 0x02 000526 6ec8 movwf 0xc8, 0 MOVWF _SSPADD 000528 d002 bra 0x52e BRA _00213_DS_ _00212_DS_: ; .line 189; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz CLK 00052a 0e09 movlw 0x9 MOVLW 0x09 00052c 6ec8 movwf 0xc8, 0 MOVWF _SSPADD _00213_DS_: ; .line 191; ./picLib3.c i2cStart(); 00052e ec56 call 0x16ac, 0 CALL _i2cStart 000530 f00b ; .line 193; ./picLib3.c i2cPutByte(chipAddress); 000532 5000 movf 0, 0, 0 MOVF r0x00, W 000534 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000536 ec03 call 0x1606, 0 CALL _i2cPutByte 000538 f00b 00053a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 194; ./picLib3.c if(mode & 0x02) 00053c a203 btfss 0x3, 0x1, 0 BTFSS r0x03, 1 00053e d008 bra 0x550 BRA _00215_DS_ ; .line 195; ./picLib3.c i2cPutByte(regAddress >> 8); 000540 5002 movf 0x2, 0, 0 MOVF r0x02, W 000542 6e03 movwf 0x3, 0 MOVWF r0x03 000544 6a08 clrf 0x8, 0 CLRF r0x08 000546 5003 movf 0x3, 0, 0 MOVF r0x03, W 000548 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00054a ec03 call 0x1606, 0 CALL _i2cPutByte 00054c f00b 00054e 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F _00215_DS_: ; .line 196; ./picLib3.c i2cPutByte(regAddress); 000550 5001 movf 0x1, 0, 0 MOVF r0x01, W 000552 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000554 ec03 call 0x1606, 0 CALL _i2cPutByte 000556 f00b 000558 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 198; ./picLib3.c i2cRepStart(); 00055a ec50 call 0x16a0, 0 CALL _i2cRepStart 00055c f00b ; .line 200; ./picLib3.c i2cPutByte(chipAddress | 0x01); 00055e 8000 bsf 0, 0, 0 BSF r0x00, 0 000560 5000 movf 0, 0, 0 MOVF r0x00, W 000562 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000564 ec03 call 0x1606, 0 CALL _i2cPutByte 000566 f00b 000568 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 202; ./picLib3.c while(len > 1){ 00056a c004 movff 0x4, 0 MOVFF r0x04, r0x00 00056c f000 00056e c005 movff 0x5, 0x1 MOVFF r0x05, r0x01 000570 f001 000572 c006 movff 0x6, 0x2 MOVFF r0x06, r0x02 000574 f002 000576 c007 movff 0x7, 0x3 MOVFF r0x07, r0x03 000578 f003 _00216_DS_: 00057a 0e02 movlw 0x2 MOVLW 0x02 00057c 5c03 subwf 0x3, 0, 0 SUBWF r0x03, W 00057e e316 bnc 0x5ac BNC _00218_DS_ ; .line 203; ./picLib3.c *dat++ = i2cGetByte(1); 000580 0e01 movlw 0x1 MOVLW 0x01 000582 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000584 ec69 call 0x14d2, 0 CALL _i2cGetByte 000586 f00a 000588 6e04 movwf 0x4, 0 MOVWF r0x04 00058a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 00058c c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 00058e ffe5 000590 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000592 ffe9 000594 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000596 fff3 000598 5002 movf 0x2, 0, 0 MOVF r0x02, W 00059a ec1b call 0x1636, 0 CALL __gptrput1 00059c f00b 00059e 2a00 incf 0, 0x1, 0 INCF r0x00, F 0005a0 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0005a2 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0005a4 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0005a6 2a02 incf 0x2, 0x1, 0 INCF r0x02, F ; .line 204; ./picLib3.c len--; 0005a8 0603 decf 0x3, 0x1, 0 DECF r0x03, F 0005aa d7e7 bra 0x57a BRA _00216_DS_ _00218_DS_: ; .line 206; ./picLib3.c if(len != 0){ 0005ac 5003 movf 0x3, 0, 0 MOVF r0x03, W 0005ae e00f bz 0x5ce BZ _00220_DS_ ; .line 207; ./picLib3.c *dat++ = i2cGetByte(0); 0005b0 0e00 movlw 0 MOVLW 0x00 0005b2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0005b4 ec69 call 0x14d2, 0 CALL _i2cGetByte 0005b6 f00a 0005b8 6e03 movwf 0x3, 0 MOVWF r0x03 0005ba 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 0005bc c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0005be ffe5 0005c0 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0005c2 ffe9 0005c4 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0005c6 fff3 0005c8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0005ca ec1b call 0x1636, 0 CALL __gptrput1 0005cc f00b _00220_DS_: ; .line 210; ./picLib3.c i2cStop(); 0005ce ec4a call 0x1694, 0 CALL _i2cStop 0005d0 f00b ; .line 212; ./picLib3.c return 0; 0005d2 6ae8 clrf 0xe8, 0 CLRF WREG 0005d4 cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 0005d6 f008 0005d8 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0005da f007 0005dc cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0005de f006 0005e0 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0005e2 f005 0005e4 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0005e6 f004 0005e8 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0005ea f003 0005ec cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0005ee f002 0005f0 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0005f2 f001 0005f4 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0005f6 f000 0005f8 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0005fa ffd9 0005fc 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cWrite code _i2cWrite: ; .line 158; ./picLib3.c Int8 i2cWrite(UInt8 chipAddress, UInt16 regAddress, I2cMode mode, UInt8* dat, UInt8 len){ 000830 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000832 ffe5 000834 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000836 ffd9 000838 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00083a ffe5 00083c c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00083e ffe5 000840 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000842 ffe5 000844 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000846 ffe5 000848 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 00084a ffe5 00084c c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 00084e ffe5 000850 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000852 ffe5 000854 c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 000856 ffe5 000858 0e02 movlw 0x2 MOVLW 0x02 00085a cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00085c f000 00085e 0e03 movlw 0x3 MOVLW 0x03 000860 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000862 f001 000864 0e04 movlw 0x4 MOVLW 0x04 000866 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000868 f002 00086a 0e05 movlw 0x5 MOVLW 0x05 00086c cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 00086e f003 000870 0e06 movlw 0x6 MOVLW 0x06 000872 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000874 f004 000876 0e07 movlw 0x7 MOVLW 0x07 000878 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 00087a f005 00087c 0e08 movlw 0x8 MOVLW 0x08 00087e cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000880 f006 000882 0e09 movlw 0x9 MOVLW 0x09 000884 cfdb movff 0xfdb, 0x7 MOVFF PLUSW2, r0x07 000886 f007 ; .line 159; ./picLib3.c i2cWaitForIdle(); 000888 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 00088a f00a ; .line 161; ./picLib3.c if(mode & 0x01) 00088c a003 btfss 0x3, 0, 0 BTFSS r0x03, 0 00088e d003 bra 0x896 BRA _00191_DS_ ; .line 162; ./picLib3.c SSPADD = 0x02; // Set the baud rate to 333KHz at 4MHz CLK 000890 0e02 movlw 0x2 MOVLW 0x02 000892 6ec8 movwf 0xc8, 0 MOVWF _SSPADD 000894 d002 bra 0x89a BRA _00192_DS_ _00191_DS_: ; .line 164; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz CLK 000896 0e09 movlw 0x9 MOVLW 0x09 000898 6ec8 movwf 0xc8, 0 MOVWF _SSPADD _00192_DS_: ; .line 166; ./picLib3.c i2cStart(); 00089a ec56 call 0x16ac, 0 CALL _i2cStart 00089c f00b ; .line 168; ./picLib3.c i2cPutByte(chipAddress); 00089e 5000 movf 0, 0, 0 MOVF r0x00, W 0008a0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008a2 ec03 call 0x1606, 0 CALL _i2cPutByte 0008a4 f00b 0008a6 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 169; ./picLib3.c if(mode & 0x02) 0008a8 a203 btfss 0x3, 0x1, 0 BTFSS r0x03, 1 0008aa d008 bra 0x8bc BRA _00194_DS_ ; .line 170; ./picLib3.c i2cPutByte(regAddress >> 8); 0008ac 5002 movf 0x2, 0, 0 MOVF r0x02, W 0008ae 6e00 movwf 0, 0 MOVWF r0x00 0008b0 6a03 clrf 0x3, 0 CLRF r0x03 0008b2 5000 movf 0, 0, 0 MOVF r0x00, W 0008b4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008b6 ec03 call 0x1606, 0 CALL _i2cPutByte 0008b8 f00b 0008ba 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F _00194_DS_: ; .line 171; ./picLib3.c i2cPutByte(regAddress); 0008bc 5001 movf 0x1, 0, 0 MOVF r0x01, W 0008be 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008c0 ec03 call 0x1606, 0 CALL _i2cPutByte 0008c2 f00b 0008c4 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 173; ./picLib3.c while(len--){ 0008c6 c004 movff 0x4, 0 MOVFF r0x04, r0x00 0008c8 f000 0008ca c005 movff 0x5, 0x1 MOVFF r0x05, r0x01 0008cc f001 0008ce c006 movff 0x6, 0x2 MOVFF r0x06, r0x02 0008d0 f002 0008d2 c007 movff 0x7, 0x3 MOVFF r0x07, r0x03 0008d4 f003 _00195_DS_: 0008d6 c003 movff 0x3, 0x4 MOVFF r0x03, r0x04 0008d8 f004 0008da 0603 decf 0x3, 0x1, 0 DECF r0x03, F 0008dc 5004 movf 0x4, 0, 0 MOVF r0x04, W 0008de e013 bz 0x906 BZ _00197_DS_ ; .line 174; ./picLib3.c i2cPutByte(*dat++); 0008e0 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0008e2 ffe9 0008e4 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0008e6 fff3 0008e8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0008ea ecc4 call 0x1588, 0 CALL __gptrget1 0008ec f00a 0008ee 6e04 movwf 0x4, 0 MOVWF r0x04 0008f0 2a00 incf 0, 0x1, 0 INCF r0x00, F 0008f2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0008f4 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0008f6 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0008f8 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 0008fa 5004 movf 0x4, 0, 0 MOVF r0x04, W 0008fc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008fe ec03 call 0x1606, 0 CALL _i2cPutByte 000900 f00b 000902 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 000904 d7e8 bra 0x8d6 BRA _00195_DS_ _00197_DS_: ; .line 177; ./picLib3.c i2cStop(); 000906 ec4a call 0x1694, 0 CALL _i2cStop 000908 f00b ; .line 179; ./picLib3.c return 0; 00090a 6ae8 clrf 0xe8, 0 CLRF WREG 00090c cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 00090e f007 000910 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000912 f006 000914 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000916 f005 000918 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 00091a f004 00091c cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 00091e f003 000920 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000922 f002 000924 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000926 f001 000928 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00092a f000 00092c cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00092e ffd9 000930 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cGetByte code _i2cGetByte: ; .line 139; ./picLib3.c UInt8 i2cGetByte(UInt8 ack){ 0014d2 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0014d4 ffe5 0014d6 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0014d8 ffd9 0014da c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0014dc ffe5 0014de c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0014e0 ffe5 0014e2 0e02 movlw 0x2 MOVLW 0x02 0014e4 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0014e6 f000 ; .line 142; ./picLib3.c i2cWaitForIdle(); 0014e8 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 0014ea f00a ; .line 143; ./picLib3.c SSPCON2bits.RCEN = 1; 0014ec 86c5 bsf 0xc5, 0x3, 0 BSF _SSPCON2bits, 3 ; .line 144; ./picLib3.c i2cWaitForIdle(); 0014ee ec1a call 0x1434, 0 CALL _i2cWaitForIdle 0014f0 f00a ; .line 145; ./picLib3.c v = SSPBUF; 0014f2 cfc9 movff 0xfc9, 0x1 MOVFF _SSPBUF, r0x01 0014f4 f001 ; .line 146; ./picLib3.c i2cWaitForIdle(); 0014f6 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 0014f8 f00a ; .line 148; ./picLib3.c if(ack) 0014fa 5000 movf 0, 0, 0 MOVF r0x00, W 0014fc e002 bz 0x1502 BZ _00183_DS_ ; .line 149; ./picLib3.c SSPCON2bits.ACKDT = 0; 0014fe 9ac5 bcf 0xc5, 0x5, 0 BCF _SSPCON2bits, 5 001500 d001 bra 0x1504 BRA _00184_DS_ _00183_DS_: ; .line 151; ./picLib3.c SSPCON2bits.ACKDT = 1; 001502 8ac5 bsf 0xc5, 0x5, 0 BSF _SSPCON2bits, 5 _00184_DS_: ; .line 153; ./picLib3.c SSPCON2bits.ACKEN = 1; // Send acknowledge sequence 001504 88c5 bsf 0xc5, 0x4, 0 BSF _SSPCON2bits, 4 ; .line 155; ./picLib3.c return v; 001506 5001 movf 0x1, 0, 0 MOVF r0x01, W 001508 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00150a f001 00150c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00150e f000 001510 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001512 ffd9 001514 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cPutByte code _i2cPutByte: ; .line 128; ./picLib3.c void i2cPutByte(UInt8 v){ 001606 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001608 ffe5 00160a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00160c ffd9 00160e 0e02 movlw 0x2 MOVLW 0x02 001610 cfdb movff 0xfdb, 0xfc9 MOVFF PLUSW2, _SSPBUF 001612 ffc9 ; .line 134; ./picLib3.c i2cWaitForIdle(); 001614 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 001616 f00a ; .line 135; ./picLib3.c SSPBUF = v; 001618 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00161a ffd9 00161c 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cStop code _i2cStop: ; .line 123; ./picLib3.c i2cWaitForIdle(); 001694 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 001696 f00a ; .line 124; ./picLib3.c SSPCON2bits.PEN = 1; 001698 84c5 bsf 0xc5, 0x2, 0 BSF _SSPCON2bits, 2 _00169_DS_: ; .line 125; ./picLib3.c while(SSPCON2bits.PEN); 00169a b4c5 btfsc 0xc5, 0x2, 0 BTFSC _SSPCON2bits, 2 00169c d7fe bra 0x169a BRA _00169_DS_ 00169e 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cRepStart code _i2cRepStart: ; .line 117; ./picLib3.c i2cWaitForIdle(); 0016a0 ec1a call 0x1434, 0 CALL _i2cWaitForIdle 0016a2 f00a ; .line 118; ./picLib3.c SSPCON2bits.RSEN = 1; 0016a4 82c5 bsf 0xc5, 0x1, 0 BSF _SSPCON2bits, 1 _00161_DS_: ; .line 119; ./picLib3.c while(SSPCON2bits.RSEN); 0016a6 b2c5 btfsc 0xc5, 0x1, 0 BTFSC _SSPCON2bits, 1 0016a8 d7fe bra 0x16a6 BRA _00161_DS_ 0016aa 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cStart code _i2cStart: ; .line 111; ./picLib3.c i2cWaitForIdle(); 0016ac ec1a call 0x1434, 0 CALL _i2cWaitForIdle 0016ae f00a ; .line 112; ./picLib3.c SSPCON2bits.SEN = 1; 0016b0 80c5 bsf 0xc5, 0, 0 BSF _SSPCON2bits, 0 _00153_DS_: ; .line 113; ./picLib3.c while(SSPCON2bits.SEN); 0016b2 b0c5 btfsc 0xc5, 0, 0 BTFSC _SSPCON2bits, 0 0016b4 d7fe bra 0x16b2 BRA _00153_DS_ 0016b6 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cWaitForIdle code _i2cWaitForIdle: ; .line 99; ./picLib3.c Int8 i2cWaitForIdle(){ 001434 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001436 ffe5 001438 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00143a ffe5 00143c c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00143e ffe5 ; .line 102; ./picLib3.c while(((SSPCON2 & 0x1F) | SSPSTATbits.R_W) && --to); // Wait for idle and not writing 001440 0eff movlw 0xff MOVLW 0xff 001442 6e00 movwf 0, 0 MOVWF r0x00 _00138_DS_: 001444 0e1f movlw 0x1f MOVLW 0x1f 001446 14c5 andwf 0xc5, 0, 0 ANDWF _SSPCON2, W 001448 6e01 movwf 0x1, 0 MOVWF r0x01 00144a 6a02 clrf 0x2, 0 CLRF r0x02 00144c b4c7 btfsc 0xc7, 0x2, 0 BTFSC _SSPSTATbits, 2 00144e 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 001450 5002 movf 0x2, 0, 0 MOVF r0x02, W 001452 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 001454 5001 movf 0x1, 0, 0 MOVF r0x01, W 001456 e003 bz 0x145e BZ _00148_DS_ 001458 0600 decf 0, 0x1, 0 DECF r0x00, F 00145a 5000 movf 0, 0, 0 MOVF r0x00, W 00145c e1f3 bnz 0x1444 BNZ _00138_DS_ _00148_DS_: 00145e c000 movff 0, 0x1 MOVFF r0x00, r0x01 001460 f001 ; # MOVF r0x00, W ; # BTFSS STATUS, 2 ; # GOTO _00142_DS_ ; # CALL _i2cReset ; # MOVF r0x01, W ; .line 105; ./picLib3.c if(!to) 001462 5000 movf 0, 0, 0 MOVF r0x00, W ; .line 106; ./picLib3.c i2cReset(); 001464 b4d8 btfsc 0xd8, 0x2, 0 BTFSC STATUS, 2 ; .line 107; ./picLib3.c return !to; 001466 ecd5 call 0x15aa, 0 CALL _i2cReset 001468 f00a 00146a 5001 movf 0x1, 0, 0 MOVF r0x01, W 00146c 80d8 bsf 0xd8, 0, 0 BSF STATUS, 0 00146e 66e8 tstfsz 0xe8, 0 TSTFSZ WREG 001470 90d8 bcf 0xd8, 0, 0 BCF STATUS, 0 001472 6a01 clrf 0x1, 0 CLRF r0x01 001474 3601 rlcf 0x1, 0x1, 0 RLCF r0x01, F 001476 5001 movf 0x1, 0, 0 MOVF r0x01, W 001478 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00147a f002 00147c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00147e f001 001480 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001482 f000 001484 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cWaitForIdle1 code _i2cWaitForIdle1: ; .line 95; ./picLib3.c void i2cWaitForIdle1(){ 00153e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001540 ffe5 001542 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001544 ffe5 _00129_DS_: ; .line 96; ./picLib3.c while((SSPCON2 & 0x1F) | SSPSTATbits.R_W); // Wait for idle and not writing 001546 0e1f movlw 0x1f MOVLW 0x1f 001548 14c5 andwf 0xc5, 0, 0 ANDWF _SSPCON2, W 00154a 6e00 movwf 0, 0 MOVWF r0x00 00154c 6a01 clrf 0x1, 0 CLRF r0x01 00154e b4c7 btfsc 0xc7, 0x2, 0 BTFSC _SSPSTATbits, 2 001550 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 001552 5001 movf 0x1, 0, 0 MOVF r0x01, W 001554 1200 iorwf 0, 0x1, 0 IORWF r0x00, F 001556 5000 movf 0, 0, 0 MOVF r0x00, W 001558 e1f6 bnz 0x1546 BNZ _00129_DS_ 00155a cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00155c f001 00155e cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001560 f000 001562 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cInit code _i2cInit: ; .line 76; ./picLib3.c SSPSTAT &= 0x3f; 0015e8 0e3f movlw 0x3f MOVLW 0x3f 0015ea 16c7 andwf 0xc7, 0x1, 0 ANDWF _SSPSTAT, F ; .line 78; ./picLib3.c SSPCON1 = 0x28; // Set I2C master mode 0015ec 0e28 movlw 0x28 MOVLW 0x28 0015ee 6ec6 movwf 0xc6, 0 MOVWF _SSPCON1 ; .line 79; ./picLib3.c SSPCON2 = 0x00; 0015f0 6ac5 clrf 0xc5, 0 CLRF _SSPCON2 ; .line 80; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz 0015f2 0e09 movlw 0x9 MOVLW 0x09 0015f4 6ec8 movwf 0xc8, 0 MOVWF _SSPADD ; .line 82; ./picLib3.c TRISCbits.TRISC3 = 1; // Enable pins 0015f6 8694 bsf 0x94, 0x3, 0 BSF _TRISCbits, 3 ; .line 83; ./picLib3.c TRISCbits.TRISC4 = 1; 0015f8 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 88; ./picLib3.c PIR1bits.SSPIF = 0; // clear SSPIF interrupt flag 0015fa 969e bcf 0x9e, 0x3, 0 BCF _PIR1bits, 3 ; .line 89; ./picLib3.c PIR2bits.BCLIF = 0; // clear bus collision flag 0015fc 96a1 bcf 0xa1, 0x3, 0 BCF _PIR2bits, 3 ; .line 91; ./picLib3.c i2cReset(); 0015fe ecd5 call 0x15aa, 0 CALL _i2cReset 001600 f00a ; .line 92; ./picLib3.c PORTBbits.RB5 = 0; 001602 9a81 bcf 0x81, 0x5, 0 BCF _PORTBbits, 5 001604 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__i2cReset code _i2cReset: ; .line 53; ./picLib3.c PORTBbits.RB5 = 1; 0015aa 8a81 bsf 0x81, 0x5, 0 BSF _PORTBbits, 5 ; .line 55; ./picLib3.c SSPCON1bits.SSPEN = 0; // Disable I2C hardware 0015ac 9ac6 bcf 0xc6, 0x5, 0 BCF _SSPCON1bits, 5 ; .line 56; ./picLib3.c TRISCbits.TRISC3 = 0; 0015ae 9694 bcf 0x94, 0x3, 0 BCF _TRISCbits, 3 ; .line 57; ./picLib3.c PORTCbits.RC3 = 1; 0015b0 8682 bsf 0x82, 0x3, 0 BSF _PORTCbits, 3 _00116_DS_: ; .line 60; ./picLib3.c while(!PORTCbits.RC4){ 0015b2 b882 btfsc 0x82, 0x4, 0 BTFSC _PORTCbits, 4 0015b4 d003 bra 0x15bc BRA _00118_DS_ ; .line 61; ./picLib3.c PORTCbits.RC3 = 0; 0015b6 9682 bcf 0x82, 0x3, 0 BCF _PORTCbits, 3 ; .line 62; ./picLib3.c PORTCbits.RC3 = 1; 0015b8 8682 bsf 0x82, 0x3, 0 BSF _PORTCbits, 3 0015ba d7fb bra 0x15b2 BRA _00116_DS_ _00118_DS_: ; .line 66; ./picLib3.c TRISCbits.TRISC4 = 0; 0015bc 9894 bcf 0x94, 0x4, 0 BCF _TRISCbits, 4 ; .line 67; ./picLib3.c PORTCbits.RC4 = 0; 0015be 9882 bcf 0x82, 0x4, 0 BCF _PORTCbits, 4 ; .line 68; ./picLib3.c PORTCbits.RC4 = 1; 0015c0 8882 bsf 0x82, 0x4, 0 BSF _PORTCbits, 4 ; .line 70; ./picLib3.c TRISCbits.TRISC3 = 1; // Enable pins 0015c2 8694 bsf 0x94, 0x3, 0 BSF _TRISCbits, 3 ; .line 71; ./picLib3.c TRISCbits.TRISC4 = 1; 0015c4 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 72; ./picLib3.c SSPCON1bits.SSPEN = 1; // Re-enable I2C hardware 0015c6 8ac6 bsf 0xc6, 0x5, 0 BSF _SSPCON1bits, 5 0015c8 0012 return 0 RETURN ; ; Starting pCode block S_testSwitches__delayMs code _delayMs: ; .line 27; ./picLib3.c void delayMs(UInt16 n){ 001384 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001386 ffe5 001388 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00138a ffd9 00138c c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00138e ffe5 001390 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001392 ffe5 001394 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001396 ffe5 001398 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00139a ffe5 00139c 0e02 movlw 0x2 MOVLW 0x02 00139e cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0013a0 f000 0013a2 0e03 movlw 0x3 MOVLW 0x03 0013a4 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0013a6 f001 _00105_DS_: ; .line 30; ./picLib3.c while(n--){ 0013a8 c000 movff 0, 0x2 MOVFF r0x00, r0x02 0013aa f002 0013ac c001 movff 0x1, 0x3 MOVFF r0x01, r0x03 0013ae f003 0013b0 0eff movlw 0xff MOVLW 0xff 0013b2 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 0013b4 a0d8 btfss 0xd8, 0, 0 BTFSS STATUS, 0 0013b6 0601 decf 0x1, 0x1, 0 DECF r0x01, F 0013b8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0013ba 1003 iorwf 0x3, 0, 0 IORWF r0x03, W 0013bc e006 bz 0x13ca BZ _00111_DS_ ; .line 31; ./picLib3.c for(c = 0; c < 250; c++){ 0013be 0efa movlw 0xfa MOVLW 0xfa 0013c0 6e02 movwf 0x2, 0 MOVWF r0x02 _00110_DS_: 0013c2 0000 nop nop 0013c4 2e02 decfsz 0x2, 0x1, 0 DECFSZ r0x02, F 0013c6 d7fd bra 0x13c2 BRA _00110_DS_ ; .line 31; ./picLib3.c for(c = 0; c < 250; c++){ 0013c8 d7ef bra 0x13a8 BRA _00105_DS_ _00111_DS_: 0013ca cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0013cc f003 0013ce cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0013d0 f002 0013d2 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0013d4 f001 0013d6 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0013d8 f000 0013da cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0013dc ffd9 0013de 0012 return 0 RETURN ; Statistics: ; code size: 4656 (0x1230) bytes ( 3.55%) ; 2328 (0x0918) words ; udata size: 282 (0x011a) bytes (22.03%) ; access size: 12 (0x000c) bytes end