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 _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_testTimer_0 udata _isr_c_1_1 res 1 udata_testTimer_1 udata _lcdInit_dat_1_1 res 3 udata_testTimer_2 udata _lcdPutChar_dat_1_1 res 2 udata_testTimer_3 udata _lcdPutHexByte_dat_1_1 res 3 udata_testTimer_4 udata _timerHigh res 2 ;-------------------------------------------------------- ; interrupt vector ;-------------------------------------------------------- ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- ; ; Starting pCode block for absolute section ; ;----------------------------------------- S_testTimer_ivec_0x1_isr code 0X000008 ivec_0x1_isr: 000008 ef89 goto 0xd12 GOTO _isr 00000a f006 ; I code from now on! ; ; Starting pCode block S_testTimer__main code _main: ; .line 31; testTimer.c OSCCON = 0x62; // Internal 4MHZ 00152a 0e62 movlw 0x62 MOVLW 0x62 00152c 6ed3 movwf 0xd3, 0 MOVWF _OSCCON ; .line 32; testTimer.c TRISB = 0x0F; // PORTB top 4 bits Output 00152e 0e0f movlw 0xf MOVLW 0x0f 001530 6e93 movwf 0x93, 0 MOVWF _TRISB ; .line 34; testTimer.c PORTB = 0; // LED's off 001532 6a81 clrf 0x81, 0 CLRF _PORTB ; .line 36; testTimer.c timerInit(); 001534 eccd call 0x159a, 0 CALL _timerInit 001536 f00a ; .line 39; testTimer.c INTCON = 0; // Clear interrupt flag bits 001538 6af2 clrf 0xf2, 0 CLRF _INTCON ; .line 40; testTimer.c INTCONbits.PEIE = 1; 00153a 8cf2 bsf 0xf2, 0x6, 0 BSF _INTCONbits, 6 ; .line 41; testTimer.c PIE2bits.TMR3IE = 1; // TMR3 overflow interrupt enable 00153c 82a0 bsf 0xa0, 0x1, 0 BSF _PIE2bits, 1 ; .line 42; testTimer.c INTCONbits.GIE = 1; // Global interrupt enable 00153e 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 _00474_DS_: ; .line 45; testTimer.c while(1){ 001540 d7ff bra 0x1540 BRA _00474_DS_ 001542 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__isr code _isr: ; .line 15; testTimer.c void isr(void) interrupt 1 { 000d12 cfe8 movff 0xfe8, 0xfe5 MOVFF WREG, POSTDEC1 000d14 ffe5 000d16 cfd8 movff 0xfd8, 0xfe5 MOVFF STATUS, POSTDEC1 000d18 ffe5 000d1a cfe0 movff 0xfe0, 0xfe5 MOVFF BSR, POSTDEC1 000d1c ffe5 000d1e cff3 movff 0xff3, 0xfe5 MOVFF PRODL, POSTDEC1 000d20 ffe5 000d22 cff4 movff 0xff4, 0xfe5 MOVFF PRODH, POSTDEC1 000d24 ffe5 000d26 cfe9 movff 0xfe9, 0xfe5 MOVFF FSR0L, POSTDEC1 000d28 ffe5 000d2a cfea movff 0xfea, 0xfe5 MOVFF FSR0H, POSTDEC1 000d2c ffe5 000d2e cffa movff 0xffa, 0xfe5 MOVFF PCLATH, POSTDEC1 000d30 ffe5 000d32 cffb movff 0xffb, 0xfe5 MOVFF PCLATU, POSTDEC1 000d34 ffe5 000d36 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000d38 ffe5 ; .line 18; testTimer.c if(PIR2bits.TMR3IF){ 000d3a a2a1 btfss 0xa1, 0x1, 0 BTFSS _PIR2bits, 1 000d3c d01d bra 0xd78 BRA _00463_DS_ ; .line 19; testTimer.c timerTick(); 000d3e ecfb call 0x15f6, 0 CALL _timerTick 000d40 f00a ; .line 21; testTimer.c if(c++ == 10){ 000d42 c08a movff 0x8a, 0 MOVFF _isr_c_1_1, r0x00 000d44 f000 000d46 0100 movlb 0 BANKSEL _isr_c_1_1 000d48 2b8a incf 0x8a, 0x1, 0x1 INCF _isr_c_1_1, F, B 000d4a 5000 movf 0, 0, 0 MOVF r0x00, W 000d4c 0a0a xorlw 0xa XORLW 0x0a 000d4e e113 bnz 0xd76 BNZ _00460_DS_ ; .line 22; testTimer.c PORTBbits.RB7 = !PORTBbits.RB7; 000d50 6a00 clrf 0, 0 CLRF r0x00 000d52 be81 btfsc 0x81, 0x7, 0 BTFSC _PORTBbits, 7 000d54 2a00 incf 0, 0x1, 0 INCF r0x00, F 000d56 5000 movf 0, 0, 0 MOVF r0x00, W 000d58 80d8 bsf 0xd8, 0, 0 BSF STATUS, 0 000d5a 66e8 tstfsz 0xe8, 0 TSTFSZ WREG 000d5c 90d8 bcf 0xd8, 0, 0 BCF STATUS, 0 000d5e 6a00 clrf 0, 0 CLRF r0x00 000d60 3600 rlcf 0, 0x1, 0 RLCF r0x00, F 000d62 5000 movf 0, 0, 0 MOVF r0x00, W 000d64 0b01 andlw 0x1 ANDLW 0x01 000d66 40e8 rrncf 0xe8, 0, 0 RRNCF WREG, W 000d68 6ef4 movwf 0xf4, 0 MOVWF PRODH 000d6a 5081 movf 0x81, 0, 0 MOVF _PORTBbits, W 000d6c 0b7f andlw 0x7f ANDLW 0x7f 000d6e 10f4 iorwf 0xf4, 0, 0 IORWF PRODH, W 000d70 6e81 movwf 0x81, 0 MOVWF _PORTBbits 000d72 0100 movlb 0 BANKSEL _isr_c_1_1 ; .line 23; testTimer.c c = 0; 000d74 6b8a clrf 0x8a, 0x1 CLRF _isr_c_1_1, B _00460_DS_: ; .line 25; testTimer.c PIR2bits.TMR3IF = 0; // Clear timer interrupt flag 000d76 92a1 bcf 0xa1, 0x1, 0 BCF _PIR2bits, 1 _00463_DS_: 000d78 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000d7a f000 000d7c cfe4 movff 0xfe4, 0xffb MOVFF PREINC1, PCLATU 000d7e fffb 000d80 cfe4 movff 0xfe4, 0xffa MOVFF PREINC1, PCLATH 000d82 fffa 000d84 cfe4 movff 0xfe4, 0xfea MOVFF PREINC1, FSR0H 000d86 ffea 000d88 cfe4 movff 0xfe4, 0xfe9 MOVFF PREINC1, FSR0L 000d8a ffe9 000d8c cfe4 movff 0xfe4, 0xff4 MOVFF PREINC1, PRODH 000d8e fff4 000d90 cfe4 movff 0xfe4, 0xff3 MOVFF PREINC1, PRODL 000d92 fff3 000d94 cfe4 movff 0xfe4, 0xfe0 MOVFF PREINC1, BSR 000d96 ffe0 000d98 cfe4 movff 0xfe4, 0xfd8 MOVFF PREINC1, STATUS 000d9a ffd8 000d9c cfe4 movff 0xfe4, 0xfe8 MOVFF PREINC1, WREG 000d9e ffe8 000da0 0010 retfie 0 RETFIE ; ; Starting pCode block S_testTimer__adcRead code _adcRead: ; .line 660; ./picLib3.c UInt16 adcRead(UInt8 channel){ 001296 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001298 ffe5 00129a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00129c ffd9 00129e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0012a0 ffe5 0012a2 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0012a4 ffe5 0012a6 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0012a8 ffe5 0012aa c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0012ac ffe5 0012ae 0e02 movlw 0x2 MOVLW 0x02 0012b0 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0012b2 f000 ; .line 662; ./picLib3.c ADCON0 = (channel << 2) | 0x03; 0012b4 4400 rlncf 0, 0, 0 RLNCF r0x00, W 0012b6 44e8 rlncf 0xe8, 0, 0 RLNCF WREG, W 0012b8 0bfc andlw 0xfc ANDLW 0xfc 0012ba 6e01 movwf 0x1, 0 MOVWF r0x01 0012bc 0e03 movlw 0x3 MOVLW 0x03 0012be 1001 iorwf 0x1, 0, 0 IORWF r0x01, W 0012c0 6ec2 movwf 0xc2, 0 MOVWF _ADCON0 _00451_DS_: ; .line 664; ./picLib3.c while(ADCON0bits.NOT_DONE){ 0012c2 b2c2 btfsc 0xc2, 0x1, 0 BTFSC _ADCON0bits, 1 0012c4 d7fe bra 0x12c2 BRA _00451_DS_ ; .line 668; ./picLib3.c return (ADRESH << 8) + ADRESL; 0012c6 cfc4 movff 0xfc4, 0 MOVFF _ADRESH, r0x00 0012c8 f000 0012ca 6a01 clrf 0x1, 0 CLRF r0x01 0012cc 5000 movf 0, 0, 0 MOVF r0x00, W 0012ce 6e03 movwf 0x3, 0 MOVWF r0x03 0012d0 6a02 clrf 0x2, 0 CLRF r0x02 0012d2 cfc3 movff 0xfc3, 0 MOVFF _ADRESL, r0x00 0012d4 f000 0012d6 6a01 clrf 0x1, 0 CLRF r0x01 0012d8 5000 movf 0, 0, 0 MOVF r0x00, W 0012da 2602 addwf 0x2, 0x1, 0 ADDWF r0x02, F 0012dc 5001 movf 0x1, 0, 0 MOVF r0x01, W 0012de 2203 addwfc 0x3, 0x1, 0 ADDWFC r0x03, F 0012e0 c003 movff 0x3, 0xff3 MOVFF r0x03, PRODL 0012e2 fff3 0012e4 5002 movf 0x2, 0, 0 MOVF r0x02, W 0012e6 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0012e8 f003 0012ea cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0012ec f002 0012ee cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0012f0 f001 0012f2 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0012f4 f000 0012f6 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0012f8 ffd9 0012fa 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__adcInit code _adcInit: ; .line 655; ./picLib3.c ADCON0 = 0x01; // Enable ADC 0015aa 0e01 movlw 0x1 MOVLW 0x01 0015ac 6ec2 movwf 0xc2, 0 MOVWF _ADCON0 ; .line 656; ./picLib3.c ADCON1 = 0x05; // Enable first 9 ADC inputs and use internal voltage reference 0015ae 0e05 movlw 0x5 MOVLW 0x05 0015b0 6ec1 movwf 0xc1, 0 MOVWF _ADCON1 ; .line 657; ./picLib3.c ADCON2 = 0x94; // Setup Aquisition times for 4MHz Clock 0015b2 0e94 movlw 0x94 MOVLW 0x94 0015b4 6ec0 movwf 0xc0, 0 MOVWF _ADCON2 0015b6 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerGetSec code _timerGetSec: ; .line 644; ./picLib3.c UInt16 timerGetSec(){ 001072 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001074 ffe5 001076 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001078 ffe5 00107a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00107c ffe5 00107e c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001080 ffe5 ; .line 645; ./picLib3.c return timerGetMicroSec() / 1000000; 001082 ece0 call 0x11c0, 0 CALL _timerGetMicroSec 001084 f008 001086 6e00 movwf 0, 0 MOVWF r0x00 001088 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 00108a f001 00108c cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 00108e f002 001090 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 001092 f003 001094 0e00 movlw 0 MOVLW 0x00 001096 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001098 0e0f movlw 0xf MOVLW 0x0f 00109a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00109c 0e42 movlw 0x42 MOVLW 0x42 00109e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010a0 0e40 movlw 0x40 MOVLW 0x40 0010a2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010a4 5003 movf 0x3, 0, 0 MOVF r0x03, W 0010a6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010a8 5002 movf 0x2, 0, 0 MOVF r0x02, W 0010aa 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010ac 5001 movf 0x1, 0, 0 MOVF r0x01, W 0010ae 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010b0 5000 movf 0, 0, 0 MOVF r0x00, W 0010b2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0010b4 ecff call 0x5fe, 0 CALL __divulong 0010b6 f002 0010b8 6e00 movwf 0, 0 MOVWF r0x00 0010ba cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 0010bc f001 0010be cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 0010c0 f002 0010c2 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 0010c4 f003 0010c6 0e08 movlw 0x8 MOVLW 0x08 0010c8 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0010ca c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0010cc fff3 0010ce 5000 movf 0, 0, 0 MOVF r0x00, W 0010d0 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0010d2 f003 0010d4 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0010d6 f002 0010d8 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0010da f001 0010dc cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0010de f000 0010e0 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerGetMilliSec code _timerGetMilliSec: ; .line 640; ./picLib3.c UInt16 timerGetMilliSec(){ 0010e2 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0010e4 ffe5 0010e6 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0010e8 ffe5 0010ea c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0010ec ffe5 0010ee c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0010f0 ffe5 ; .line 641; ./picLib3.c return timerGetMicroSec() / 1000; 0010f2 ece0 call 0x11c0, 0 CALL _timerGetMicroSec 0010f4 f008 0010f6 6e00 movwf 0, 0 MOVWF r0x00 0010f8 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 0010fa f001 0010fc cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 0010fe f002 001100 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 001102 f003 001104 0e00 movlw 0 MOVLW 0x00 001106 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001108 0e00 movlw 0 MOVLW 0x00 00110a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00110c 0e03 movlw 0x3 MOVLW 0x03 00110e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001110 0ee8 movlw 0xe8 MOVLW 0xe8 001112 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001114 5003 movf 0x3, 0, 0 MOVF r0x03, W 001116 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001118 5002 movf 0x2, 0, 0 MOVF r0x02, W 00111a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00111c 5001 movf 0x1, 0, 0 MOVF r0x01, W 00111e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001120 5000 movf 0, 0, 0 MOVF r0x00, W 001122 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001124 ecff call 0x5fe, 0 CALL __divulong 001126 f002 001128 6e00 movwf 0, 0 MOVWF r0x00 00112a cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 00112c f001 00112e cff4 movff 0xff4, 0x2 MOVFF PRODH, r0x02 001130 f002 001132 cfe9 movff 0xfe9, 0x3 MOVFF FSR0L, r0x03 001134 f003 001136 0e08 movlw 0x8 MOVLW 0x08 001138 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 00113a c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 00113c fff3 00113e 5000 movf 0, 0, 0 MOVF r0x00, W 001140 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001142 f003 001144 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001146 f002 001148 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00114a f001 00114c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00114e f000 001150 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerGetMicroSec code _timerGetMicroSec: 0011c0 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0011c2 ffe5 0011c4 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0011c6 ffe5 0011c8 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0011ca ffe5 0011cc c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0011ce ffe5 0011d0 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 0011d2 ffe5 0011d4 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 0011d6 ffe5 ; t1 = (TMR3H << 8) | TMR3L; 0011d8 cfb2 movff 0xfb2, 0 MOVFF _TMR3L, r0x00 0011da f000 0011dc cfb3 movff 0xfb3, 0x1 MOVFF _TMR3H, r0x01 0011de f001 0011e0 c088 movff 0x88, 0x2 MOVFF _timerHigh, r0x02 0011e2 f002 0011e4 c089 movff 0x89, 0x3 MOVFF (_timerHigh + 1), r0x03 0011e6 f003 ; t3 = (TMR3H << 8) | TMR3L; 0011e8 cfb2 movff 0xfb2, 0x4 MOVFF _TMR3L, r0x04 0011ea f004 0011ec cfb3 movff 0xfb3, 0x5 MOVFF _TMR3H, r0x05 0011ee f005 ; if(t3 < t1){ 0011f0 5001 movf 0x1, 0, 0 MOVF r0x01, W 0011f2 5c05 subwf 0x5, 0, 0 SUBWF r0x05, W 0011f4 e102 bnz 0x11fa BNZ _00001 0011f6 5000 movf 0, 0, 0 MOVF r0x00, W 0011f8 5c04 subwf 0x4, 0, 0 SUBWF r0x04, W _00001: 0011fa e204 bc 0x1204 BC _00002 0011fc c088 movff 0x88, 0x2 MOVFF _timerHigh, r0x02 0011fe f002 001200 c089 movff 0x89, 0x3 MOVFF (_timerHigh + 1), r0x03 001202 f003 _00002: ; return ((UInt32)timerHigh << 16) | t3; 001204 c003 movff 0x3, 0xfe9 MOVFF r0x03, FSR0L 001206 ffe9 001208 c002 movff 0x2, 0xff4 MOVFF r0x02, PRODH 00120a fff4 00120c c005 movff 0x5, 0xff3 MOVFF r0x05, PRODL 00120e fff3 001210 5004 movf 0x4, 0, 0 MOVF r0x04, W 001212 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 001214 f005 001216 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 001218 f004 00121a cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 00121c f003 00121e cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001220 f002 001222 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001224 f001 001226 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001228 f000 00122a 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerTick code _timerTick: 0015f6 0100 movlb 0 BANKSEL _timerHigh ; .line 575; ./picLib3.c timerHigh++; 0015f8 2b88 incf 0x88, 0x1, 0x1 INCF _timerHigh, F, B 0015fa e301 bnc 0x15fe BNC _10473_DS_ ; removed redundant BANKSEL 0015fc 2b89 incf 0x89, 0x1, 0x1 INCF (_timerHigh + 1), F, B _10473_DS_: 0015fe 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerClear code _timerClear: ; .line 568; ./picLib3.c TMR3H = 0; 0015c6 6ab3 clrf 0xb3, 0 CLRF _TMR3H ; .line 569; ./picLib3.c TMR3L = 0; 0015c8 6ab2 clrf 0xb2, 0 CLRF _TMR3L 0015ca 0100 movlb 0 BANKSEL _timerHigh ; .line 571; ./picLib3.c timerHigh = 0; 0015cc 6b88 clrf 0x88, 0x1 CLRF _timerHigh, B ; removed redundant BANKSEL 0015ce 6b89 clrf 0x89, 0x1 CLRF (_timerHigh + 1), B 0015d0 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__timerInit code _timerInit: ; .line 560; ./picLib3.c T3CON = 0x81; 00159a 0e81 movlw 0x81 MOVLW 0x81 00159c 6eb1 movwf 0xb1, 0 MOVWF _T3CON ; .line 561; ./picLib3.c TMR3H = 0; 00159e 6ab3 clrf 0xb3, 0 CLRF _TMR3H ; .line 562; ./picLib3.c TMR3L = 0; 0015a0 6ab2 clrf 0xb2, 0 CLRF _TMR3L 0015a2 0100 movlb 0 BANKSEL _timerHigh ; .line 564; ./picLib3.c timerHigh = 0; 0015a4 6b88 clrf 0x88, 0x1 CLRF _timerHigh, B ; removed redundant BANKSEL 0015a6 6b89 clrf 0x89, 0x1 CLRF (_timerHigh + 1), B 0015a8 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromWrite32 code _eepromWrite32: ; .line 483; ./picLib3.c void eepromWrite32(UInt8 address, UInt32 value){ 000bd8 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000bda ffe5 000bdc cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000bde ffd9 000be0 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000be2 ffe5 000be4 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000be6 ffe5 000be8 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000bea ffe5 000bec c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000bee ffe5 000bf0 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000bf2 ffe5 000bf4 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000bf6 ffe5 000bf8 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000bfa ffe5 000bfc 0e02 movlw 0x2 MOVLW 0x02 000bfe cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000c00 f000 000c02 0e03 movlw 0x3 MOVLW 0x03 000c04 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000c06 f001 000c08 0e04 movlw 0x4 MOVLW 0x04 000c0a cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000c0c f002 000c0e 0e05 movlw 0x5 MOVLW 0x05 000c10 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000c12 f003 000c14 0e06 movlw 0x6 MOVLW 0x06 000c16 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000c18 f004 ; .line 484; ./picLib3.c eepromWrite16(address, value); 000c1a 5001 movf 0x1, 0, 0 MOVF r0x01, W 000c1c 6e05 movwf 0x5, 0 MOVWF r0x05 ; # MOVF r0x02, W ; # MOVWF r0x06 ; # MOVF r0x06, W 000c1e 5002 movf 0x2, 0, 0 MOVF r0x02, W 000c20 6e06 movwf 0x6, 0 MOVWF r0x06 000c22 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c24 5005 movf 0x5, 0, 0 MOVF r0x05, W 000c26 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c28 5000 movf 0, 0, 0 MOVF r0x00, W 000c2a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c2c ec50 call 0xea0, 0 CALL _eepromWrite16 000c2e f007 000c30 0e03 movlw 0x3 MOVLW 0x03 000c32 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 485; ./picLib3.c eepromWrite16(address + 2, value >> 16); 000c34 2a00 incf 0, 0x1, 0 INCF r0x00, F 000c36 2a00 incf 0, 0x1, 0 INCF r0x00, F 000c38 5003 movf 0x3, 0, 0 MOVF r0x03, W 000c3a 6e01 movwf 0x1, 0 MOVWF r0x01 000c3c 5004 movf 0x4, 0, 0 MOVF r0x04, W 000c3e 6e02 movwf 0x2, 0 MOVWF r0x02 000c40 6a03 clrf 0x3, 0 CLRF r0x03 000c42 6a04 clrf 0x4, 0 CLRF r0x04 000c44 5002 movf 0x2, 0, 0 MOVF r0x02, W 000c46 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c48 5001 movf 0x1, 0, 0 MOVF r0x01, W 000c4a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c4c 5000 movf 0, 0, 0 MOVF r0x00, W 000c4e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000c50 ec50 call 0xea0, 0 CALL _eepromWrite16 000c52 f007 000c54 0e03 movlw 0x3 MOVLW 0x03 000c56 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000c58 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 000c5a f006 000c5c cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000c5e f005 000c60 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000c62 f004 000c64 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000c66 f003 000c68 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000c6a f002 000c6c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000c6e f001 000c70 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000c72 f000 000c74 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000c76 ffd9 000c78 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromRead32 code _eepromRead32: ; .line 475; ./picLib3.c UInt32 eepromRead32(UInt8 address){ 000906 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000908 ffe5 00090a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00090c ffd9 00090e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000910 ffe5 000912 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000914 ffe5 000916 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000918 ffe5 00091a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00091c ffe5 00091e c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000920 ffe5 000922 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000924 ffe5 000926 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 000928 ffe5 00092a c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00092c ffe5 00092e c008 movff 0x8, 0xfe5 MOVFF r0x08, POSTDEC1 000930 ffe5 000932 c009 movff 0x9, 0xfe5 MOVFF r0x09, POSTDEC1 000934 ffe5 000936 c00a movff 0xa, 0xfe5 MOVFF r0x0a, POSTDEC1 000938 ffe5 00093a c00b movff 0xb, 0xfe5 MOVFF r0x0b, POSTDEC1 00093c ffe5 00093e 0e02 movlw 0x2 MOVLW 0x02 000940 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000942 f000 ; .line 478; ./picLib3.c v = eepromRead16(address); 000944 5000 movf 0, 0, 0 MOVF r0x00, W 000946 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000948 ec8b call 0xf16, 0 CALL _eepromRead16 00094a f007 00094c 6e01 movwf 0x1, 0 MOVWF r0x01 00094e cff3 movff 0xff3, 0x2 MOVFF PRODL, r0x02 000950 f002 000952 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 000954 6a03 clrf 0x3, 0 CLRF r0x03 000956 6a04 clrf 0x4, 0 CLRF r0x04 ; .line 479; ./picLib3.c v |= ((UInt32)eepromRead16(address + 2) << 16); 000958 2a00 incf 0, 0x1, 0 INCF r0x00, F 00095a 2a00 incf 0, 0x1, 0 INCF r0x00, F 00095c 5000 movf 0, 0, 0 MOVF r0x00, W 00095e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000960 ec8b call 0xf16, 0 CALL _eepromRead16 000962 f007 000964 6e00 movwf 0, 0 MOVWF r0x00 000966 cff3 movff 0xff3, 0x5 MOVFF PRODL, r0x05 000968 f005 00096a 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 00096c 6a06 clrf 0x6, 0 CLRF r0x06 00096e 6a07 clrf 0x7, 0 CLRF r0x07 000970 5005 movf 0x5, 0, 0 MOVF r0x05, W 000972 6e0b movwf 0xb, 0 MOVWF r0x0b 000974 5000 movf 0, 0, 0 MOVF r0x00, W 000976 6e0a movwf 0xa, 0 MOVWF r0x0a 000978 6a08 clrf 0x8, 0 CLRF r0x08 00097a 6a09 clrf 0x9, 0 CLRF r0x09 00097c 5008 movf 0x8, 0, 0 MOVF r0x08, W 00097e 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 000980 5009 movf 0x9, 0, 0 MOVF r0x09, W 000982 1202 iorwf 0x2, 0x1, 0 IORWF r0x02, F 000984 500a movf 0xa, 0, 0 MOVF r0x0a, W 000986 1203 iorwf 0x3, 0x1, 0 IORWF r0x03, F 000988 500b movf 0xb, 0, 0 MOVF r0x0b, W 00098a 1204 iorwf 0x4, 0x1, 0 IORWF r0x04, F ; .line 480; ./picLib3.c return v; 00098c c004 movff 0x4, 0xfe9 MOVFF r0x04, FSR0L 00098e ffe9 000990 c003 movff 0x3, 0xff4 MOVFF r0x03, PRODH 000992 fff4 000994 c002 movff 0x2, 0xff3 MOVFF r0x02, PRODL 000996 fff3 000998 5001 movf 0x1, 0, 0 MOVF r0x01, W 00099a cfe4 movff 0xfe4, 0xb MOVFF PREINC1, r0x0b 00099c f00b 00099e cfe4 movff 0xfe4, 0xa MOVFF PREINC1, r0x0a 0009a0 f00a 0009a2 cfe4 movff 0xfe4, 0x9 MOVFF PREINC1, r0x09 0009a4 f009 0009a6 cfe4 movff 0xfe4, 0x8 MOVFF PREINC1, r0x08 0009a8 f008 0009aa cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0009ac f007 0009ae cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0009b0 f006 0009b2 cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0009b4 f005 0009b6 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0009b8 f004 0009ba cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0009bc f003 0009be cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0009c0 f002 0009c2 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0009c4 f001 0009c6 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0009c8 f000 0009ca cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0009cc ffd9 0009ce 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromWrite16 code _eepromWrite16: ; .line 445; ./picLib3.c void eepromWrite16(UInt8 address, UInt16 value){ 000ea0 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000ea2 ffe5 000ea4 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000ea6 ffd9 000ea8 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000eaa ffe5 000eac c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000eae ffe5 000eb0 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000eb2 ffe5 000eb4 0e02 movlw 0x2 MOVLW 0x02 000eb6 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000eb8 f000 000eba 0e03 movlw 0x3 MOVLW 0x03 000ebc cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000ebe f001 000ec0 0e04 movlw 0x4 MOVLW 0x04 000ec2 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000ec4 f002 ; .line 447; ./picLib3.c EECON1bits.EEPGD = 0; 000ec6 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 448; ./picLib3.c EECON1bits.CFGS = 0; 000ec8 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 449; ./picLib3.c EECON1bits.WREN = 1; // Enable writes to data EEPROM 000eca 84a6 bsf 0xa6, 0x2, 0 BSF _EECON1bits, 2 ; .line 450; ./picLib3.c INTCONbits.GIE = 0; // Disable interrupts 000ecc 9ef2 bcf 0xf2, 0x7, 0 BCF _INTCONbits, 7 ; .line 452; ./picLib3.c EEADR = address; 000ece c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 000ed0 ffa9 ; .line 453; ./picLib3.c EEDATA = value; 000ed2 5001 movf 0x1, 0, 0 MOVF r0x01, W 000ed4 6ea8 movwf 0xa8, 0 MOVWF _EEDATA ; .line 454; ./picLib3.c EECON2 = 0x55; 000ed6 0e55 movlw 0x55 MOVLW 0x55 000ed8 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 455; ./picLib3.c EECON2 = 0x0AA; 000eda 0eaa movlw 0xaa MOVLW 0xaa 000edc 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 456; ./picLib3.c EECON1bits.WR = 1; // Start writing 000ede 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00395_DS_: ; .line 457; ./picLib3.c while(EECON1bits.WR); 000ee0 b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 000ee2 d7fe bra 0xee0 BRA _00395_DS_ ; .line 459; ./picLib3.c EEADR = address + 1; 000ee4 2800 incf 0, 0, 0 INCF r0x00, W 000ee6 6ea9 movwf 0xa9, 0 MOVWF _EEADR ; .line 460; ./picLib3.c EEDATA = value >> 8; 000ee8 5002 movf 0x2, 0, 0 MOVF r0x02, W 000eea 6e01 movwf 0x1, 0 MOVWF r0x01 000eec 6a02 clrf 0x2, 0 CLRF r0x02 000eee 5001 movf 0x1, 0, 0 MOVF r0x01, W 000ef0 6ea8 movwf 0xa8, 0 MOVWF _EEDATA ; .line 461; ./picLib3.c EECON2 = 0x55; 000ef2 0e55 movlw 0x55 MOVLW 0x55 000ef4 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 462; ./picLib3.c EECON2 = 0x0AA; 000ef6 0eaa movlw 0xaa MOVLW 0xaa 000ef8 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 463; ./picLib3.c EECON1bits.WR = 1; // Start writing 000efa 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00398_DS_: ; .line 464; ./picLib3.c while(EECON1bits.WR); 000efc b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 000efe d7fe bra 0xefc BRA _00398_DS_ ; .line 471; ./picLib3.c EECON1bits.WREN = 0; 000f00 94a6 bcf 0xa6, 0x2, 0 BCF _EECON1bits, 2 ; .line 472; ./picLib3.c INTCONbits.GIE = 1; // enable interrupts 000f02 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 000f04 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000f06 f002 000f08 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000f0a f001 000f0c cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000f0e f000 000f10 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000f12 ffd9 000f14 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromRead16 code _eepromRead16: ; .line 431; ./picLib3.c UInt16 eepromRead16(UInt8 address){ 000f16 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000f18 ffe5 000f1a cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000f1c ffd9 000f1e c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000f20 ffe5 000f22 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000f24 ffe5 000f26 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000f28 ffe5 000f2a c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000f2c ffe5 000f2e c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000f30 ffe5 000f32 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000f34 ffe5 000f36 0e02 movlw 0x2 MOVLW 0x02 000f38 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000f3a f000 ; .line 434; ./picLib3.c EECON1bits.CFGS = 0; 000f3c 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 435; ./picLib3.c EECON1bits.EEPGD = 0; 000f3e 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 436; ./picLib3.c EEADR = address; 000f40 c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 000f42 ffa9 ; .line 437; ./picLib3.c EECON1bits.RD = 1; 000f44 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 438; ./picLib3.c v = EEDATA; 000f46 cfa8 movff 0xfa8, 0x1 MOVFF _EEDATA, r0x01 000f48 f001 000f4a 6a02 clrf 0x2, 0 CLRF r0x02 ; .line 439; ./picLib3.c EEADR = address + 1; 000f4c 2800 incf 0, 0, 0 INCF r0x00, W 000f4e 6ea9 movwf 0xa9, 0 MOVWF _EEADR ; .line 440; ./picLib3.c EECON1bits.RD = 1; 000f50 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 441; ./picLib3.c v |= (EEDATA << 8); 000f52 cfa8 movff 0xfa8, 0 MOVFF _EEDATA, r0x00 000f54 f000 000f56 6a03 clrf 0x3, 0 CLRF r0x03 000f58 5000 movf 0, 0, 0 MOVF r0x00, W 000f5a 6e05 movwf 0x5, 0 MOVWF r0x05 000f5c 6a04 clrf 0x4, 0 CLRF r0x04 000f5e 5004 movf 0x4, 0, 0 MOVF r0x04, W 000f60 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 000f62 5005 movf 0x5, 0, 0 MOVF r0x05, W 000f64 1202 iorwf 0x2, 0x1, 0 IORWF r0x02, F ; .line 442; ./picLib3.c return v; 000f66 c002 movff 0x2, 0xff3 MOVFF r0x02, PRODL 000f68 fff3 000f6a 5001 movf 0x1, 0, 0 MOVF r0x01, W 000f6c cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000f6e f005 000f70 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000f72 f004 000f74 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000f76 f003 000f78 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000f7a f002 000f7c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000f7e f001 000f80 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000f82 f000 000f84 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000f86 ffd9 000f88 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromWrite8 code _eepromWrite8: ; .line 409; ./picLib3.c void eepromWrite8(UInt8 address, UInt8 value){ 0013aa cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0013ac ffe5 0013ae cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0013b0 ffd9 0013b2 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0013b4 ffe5 0013b6 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0013b8 ffe5 0013ba 0e02 movlw 0x2 MOVLW 0x02 0013bc cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0013be f000 0013c0 0e03 movlw 0x3 MOVLW 0x03 0013c2 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0013c4 f001 ; .line 411; ./picLib3.c EECON1bits.EEPGD = 0; 0013c6 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 412; ./picLib3.c EECON1bits.CFGS = 0; 0013c8 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 413; ./picLib3.c EECON1bits.WREN = 1; // Enable writes to data EEPROM 0013ca 84a6 bsf 0xa6, 0x2, 0 BSF _EECON1bits, 2 ; .line 414; ./picLib3.c INTCONbits.GIE = 0; // Disable interrupts 0013cc 9ef2 bcf 0xf2, 0x7, 0 BCF _INTCONbits, 7 ; .line 416; ./picLib3.c EEDATA = value; 0013ce c001 movff 0x1, 0xfa8 MOVFF r0x01, _EEDATA 0013d0 ffa8 ; .line 417; ./picLib3.c EEADR = address; 0013d2 c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 0013d4 ffa9 ; .line 418; ./picLib3.c EECON2 = 0x55; 0013d6 0e55 movlw 0x55 MOVLW 0x55 0013d8 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 419; ./picLib3.c EECON2 = 0x0AA; 0013da 0eaa movlw 0xaa MOVLW 0xaa 0013dc 6ea7 movwf 0xa7, 0 MOVWF _EECON2 ; .line 420; ./picLib3.c EECON1bits.WR = 1; // Start writing 0013de 82a6 bsf 0xa6, 0x1, 0 BSF _EECON1bits, 1 _00382_DS_: ; .line 421; ./picLib3.c while(EECON1bits.WR); 0013e0 b2a6 btfsc 0xa6, 0x1, 0 BTFSC _EECON1bits, 1 0013e2 d7fe bra 0x13e0 BRA _00382_DS_ ; .line 427; ./picLib3.c EECON1bits.WREN = 0; 0013e4 94a6 bcf 0xa6, 0x2, 0 BCF _EECON1bits, 2 ; .line 428; ./picLib3.c INTCONbits.GIE = 1; // enable interrupts 0013e6 8ef2 bsf 0xf2, 0x7, 0 BSF _INTCONbits, 7 0013e8 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0013ea f001 0013ec cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0013ee f000 0013f0 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0013f2 ffd9 0013f4 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__eepromRead8 code _eepromRead8: ; .line 401; ./picLib3.c UInt8 eepromRead8(UInt8 address){ 00143a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00143c ffe5 00143e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001440 ffd9 001442 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001444 ffe5 001446 0e02 movlw 0x2 MOVLW 0x02 001448 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00144a f000 ; .line 402; ./picLib3.c EECON1bits.CFGS = 0; 00144c 9ca6 bcf 0xa6, 0x6, 0 BCF _EECON1bits, 6 ; .line 403; ./picLib3.c EECON1bits.EEPGD = 0; 00144e 9ea6 bcf 0xa6, 0x7, 0 BCF _EECON1bits, 7 ; .line 404; ./picLib3.c EEADR = address; 001450 c000 movff 0, 0xfa9 MOVFF r0x00, _EEADR 001452 ffa9 ; .line 405; ./picLib3.c EECON1bits.RD = 1; 001454 80a6 bsf 0xa6, 0, 0 BSF _EECON1bits, 0 ; .line 406; ./picLib3.c return EEDATA; 001456 50a8 movf 0xa8, 0, 0 MOVF _EEDATA, W 001458 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 00145a f000 00145c cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00145e ffd9 001460 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartWrite code _usartWrite: ; .line 389; ./picLib3.c void usartWrite(char* buffer, UInt8 len){ 000da2 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000da4 ffe5 000da6 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000da8 ffd9 000daa c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000dac ffe5 000dae c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000db0 ffe5 000db2 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000db4 ffe5 000db6 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000db8 ffe5 000dba c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000dbc ffe5 000dbe c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000dc0 ffe5 000dc2 0e02 movlw 0x2 MOVLW 0x02 000dc4 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000dc6 f000 000dc8 0e03 movlw 0x3 MOVLW 0x03 000dca cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000dcc f001 000dce 0e04 movlw 0x4 MOVLW 0x04 000dd0 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000dd2 f002 000dd4 0e05 movlw 0x5 MOVLW 0x05 000dd6 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000dd8 f003 ; .line 392; ./picLib3.c for(i = 0; i < len; i++){ 000dda 6a04 clrf 0x4, 0 CLRF r0x04 _00363_DS_: 000ddc 5003 movf 0x3, 0, 0 MOVF r0x03, W 000dde 5c04 subwf 0x4, 0, 0 SUBWF r0x04, W 000de0 e214 bc 0xe0a BC _00367_DS_ ; .line 393; ./picLib3.c usartPutc(*buffer++); 000de2 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000de4 ffe9 000de6 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000de8 fff3 000dea 5002 movf 0x2, 0, 0 MOVF r0x02, W 000dec ec56 call 0x14ac, 0 CALL __gptrget1 000dee f00a 000df0 6e05 movwf 0x5, 0 MOVWF r0x05 000df2 2a00 incf 0, 0x1, 0 INCF r0x00, F 000df4 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000df6 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000df8 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000dfa 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000dfc 5005 movf 0x5, 0, 0 MOVF r0x05, W 000dfe 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e00 ec44 call 0x1488, 0 CALL _usartPutc 000e02 f00a 000e04 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 392; ./picLib3.c for(i = 0; i < len; i++){ 000e06 2a04 incf 0x4, 0x1, 0 INCF r0x04, F 000e08 d7e9 bra 0xddc BRA _00363_DS_ _00367_DS_: 000e0a cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 000e0c f005 000e0e cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000e10 f004 000e12 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000e14 f003 000e16 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000e18 f002 000e1a cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000e1c f001 000e1e cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000e20 f000 000e22 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000e24 ffd9 000e26 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartPuts code _usartPuts: ; .line 356; ./picLib3.c void usartPuts(char* p){ 000f8a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000f8c ffe5 000f8e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000f90 ffd9 000f92 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000f94 ffe5 000f96 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000f98 ffe5 000f9a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000f9c ffe5 000f9e c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000fa0 ffe5 000fa2 0e02 movlw 0x2 MOVLW 0x02 000fa4 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000fa6 f000 000fa8 0e03 movlw 0x3 MOVLW 0x03 000faa cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000fac f001 000fae 0e04 movlw 0x4 MOVLW 0x04 000fb0 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000fb2 f002 _00355_DS_: ; .line 357; ./picLib3.c while(*p){ 000fb4 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000fb6 ffe9 000fb8 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000fba fff3 000fbc 5002 movf 0x2, 0, 0 MOVF r0x02, W 000fbe ec56 call 0x14ac, 0 CALL __gptrget1 000fc0 f00a 000fc2 6e03 movwf 0x3, 0 MOVWF r0x03 000fc4 5003 movf 0x3, 0, 0 MOVF r0x03, W 000fc6 e010 bz 0xfe8 BZ _00358_DS_ _00352_DS_: ; .line 358; ./picLib3.c while(!TXSTAbits.TRMT); 000fc8 a2ac btfss 0xac, 0x1, 0 BTFSS _TXSTAbits, 1 000fca d7fe bra 0xfc8 BRA _00352_DS_ ; .line 359; ./picLib3.c TXREG = *p++; 000fcc c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 000fce ffe9 000fd0 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 000fd2 fff3 000fd4 5002 movf 0x2, 0, 0 MOVF r0x02, W 000fd6 ec56 call 0x14ac, 0 CALL __gptrget1 000fd8 f00a 000fda 6ead movwf 0xad, 0 MOVWF _TXREG 000fdc 2a00 incf 0, 0x1, 0 INCF r0x00, F 000fde b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000fe0 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 000fe2 b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 000fe4 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 000fe6 d7e6 bra 0xfb4 BRA _00355_DS_ _00358_DS_: 000fe8 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000fea f003 000fec cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000fee f002 000ff0 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000ff2 f001 000ff4 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000ff6 f000 000ff8 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000ffa ffd9 000ffc 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartPutc code _usartPutc: ; .line 351; ./picLib3.c void usartPutc(UInt8 c){ 001488 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00148a ffe5 00148c cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00148e ffd9 001490 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001492 ffe5 001494 0e02 movlw 0x2 MOVLW 0x02 001496 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001498 f000 _00344_DS_: ; .line 352; ./picLib3.c while(!TXSTAbits.TRMT); 00149a a2ac btfss 0xac, 0x1, 0 BTFSS _TXSTAbits, 1 00149c d7fe bra 0x149a BRA _00344_DS_ ; .line 353; ./picLib3.c TXREG = c; 00149e c000 movff 0, 0xfad MOVFF r0x00, _TXREG 0014a0 ffad 0014a2 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0014a4 f000 0014a6 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 0014a8 ffd9 0014aa 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartGetc code _usartGetc: _00336_DS_: ; .line 347; ./picLib3.c while(PIR1bits.RCIF == 0); 001600 aa9e btfss 0x9e, 0x5, 0 BTFSS _PIR1bits, 5 001602 d7fe bra 0x1600 BRA _00336_DS_ ; .line 348; ./picLib3.c return RCREG; 001604 50ae movf 0xae, 0, 0 MOVF _RCREG, W 001606 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartRxRdy code _usartRxRdy: ; .line 342; ./picLib3.c unsigned char usartRxRdy(void){ 001588 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00158a ffe5 ; .line 343; ./picLib3.c return PIR1bits.RCIF; 00158c 6a00 clrf 0, 0 CLRF r0x00 00158e ba9e btfsc 0x9e, 0x5, 0 BTFSC _PIR1bits, 5 001590 2a00 incf 0, 0x1, 0 INCF r0x00, F 001592 5000 movf 0, 0, 0 MOVF r0x00, W 001594 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001596 f000 001598 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__usartInit code _usartInit: ; .line 329; ./picLib3.c TXSTA = 0x20; 0014ee 0e20 movlw 0x20 MOVLW 0x20 0014f0 6eac movwf 0xac, 0 MOVWF _TXSTA ; .line 330; ./picLib3.c RCSTA = 0x90; 0014f2 0e90 movlw 0x90 MOVLW 0x90 0014f4 6eab movwf 0xab, 0 MOVWF _RCSTA ; .line 336; ./picLib3.c SPBRG = 12; // 4800 Baud 4MHz Clock 0014f6 0e0c movlw 0xc MOVLW 0x0c 0014f8 6eaf movwf 0xaf, 0 MOVWF _SPBRG ; .line 339; ./picLib3.c delayMs(1); 0014fa 0e00 movlw 0 MOVLW 0x00 0014fc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0014fe 0e01 movlw 0x1 MOVLW 0x01 001500 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001502 ec7e call 0x12fc, 0 CALL _delayMs 001504 f009 001506 0e02 movlw 0x2 MOVLW 0x02 001508 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 00150a 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__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 ec44 call 0xa88, 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 ecba call 0x1574, 0 CALL __gptrput1 0000ca f00a 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 ecba call 0x1574, 0 CALL __gptrput1 0000ec f00a 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 ece8 call 0x9d0, 0 CALL __moduint 00010a f004 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 ec44 call 0xa88, 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 ecba call 0x1574, 0 CALL __gptrput1 000148 f00a 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 ecba call 0x1574, 0 CALL __gptrput1 00016a f00a 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 ece8 call 0x9d0, 0 CALL __moduint 000188 f004 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 ec44 call 0xa88, 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 ecba call 0x1574, 0 CALL __gptrput1 0001c6 f00a 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 ecba call 0x1574, 0 CALL __gptrput1 0001e8 f00a 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 ece8 call 0x9d0, 0 CALL __moduint 000206 f004 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 ec44 call 0xa88, 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 ecba call 0x1574, 0 CALL __gptrput1 000244 f00a 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 ecba call 0x1574, 0 CALL __gptrput1 000266 f00a 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 ece8 call 0x9d0, 0 CALL __moduint 000284 f004 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 ecba call 0x1574, 0 CALL __gptrput1 0002a4 f00a 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 ecba call 0x1574, 0 CALL __gptrput1 0002c4 f00a _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 ec56 call 0x14ac, 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 ecba call 0x1574, 0 CALL __gptrput1 000316 f00a ; .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_testTimer__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 eca9 call 0x1152, 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 ecba call 0x1574, 0 CALL __gptrput1 0003bc f00a 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 ecff call 0xffe, 0 CALL __moduchar 0003da f007 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 eca9 call 0x1152, 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 ecba call 0x1574, 0 CALL __gptrput1 000408 f00a 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 ecff call 0xffe, 0 CALL __moduchar 00041e f007 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 ecba call 0x1574, 0 CALL __gptrput1 00043a f00a ; .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 ec56 call 0x14ac, 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 ecba call 0x1574, 0 CALL __gptrput1 00048c f00a ; .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_testTimer__lcdPutHexByte code _lcdPutHexByte: ; .line 260; ./picLib3.c void lcdPutHexByte(UInt8 v){ 000b32 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000b34 ffe5 000b36 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000b38 ffd9 000b3a c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000b3c ffe5 000b3e c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000b40 ffe5 000b42 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000b44 ffe5 000b46 0e02 movlw 0x2 MOVLW 0x02 000b48 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000b4a f000 ; .line 264; ./picLib3.c c = v / 16; 000b4c 3800 swapf 0, 0, 0 SWAPF r0x00, W 000b4e 0b0f andlw 0xf ANDLW 0x0f 000b50 6e01 movwf 0x1, 0 MOVWF r0x01 ; .line 265; ./picLib3.c c += '0'; 000b52 0e30 movlw 0x30 MOVLW 0x30 000b54 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F ; .line 266; ./picLib3.c if(c > '9') 000b56 0e3a movlw 0x3a MOVLW 0x3a 000b58 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 000b5a e302 bnc 0xb60 BNC _00256_DS_ ; .line 267; ./picLib3.c c += 7; 000b5c 0e07 movlw 0x7 MOVLW 0x07 000b5e 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F _00256_DS_: ; .line 269; ./picLib3.c dat[0] = c; 000b60 5001 movf 0x1, 0, 0 MOVF r0x01, W 000b62 0100 movlb 0 BANKSEL _lcdPutHexByte_dat_1_1 000b64 6f83 movwf 0x83, 0x1 MOVWF _lcdPutHexByte_dat_1_1, B ; .line 271; ./picLib3.c c = v & 0x0F; 000b66 0e0f movlw 0xf MOVLW 0x0f 000b68 1400 andwf 0, 0, 0 ANDWF r0x00, W 000b6a 6e01 movwf 0x1, 0 MOVWF r0x01 ; .line 272; ./picLib3.c c += '0'; 000b6c 0e30 movlw 0x30 MOVLW 0x30 000b6e 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F ; .line 273; ./picLib3.c if(c > '9') 000b70 0e3a movlw 0x3a MOVLW 0x3a 000b72 5c01 subwf 0x1, 0, 0 SUBWF r0x01, W 000b74 e302 bnc 0xb7a BNC _00258_DS_ ; .line 274; ./picLib3.c c += 7; 000b76 0e07 movlw 0x7 MOVLW 0x07 000b78 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F _00258_DS_: ; .line 275; ./picLib3.c dat[1] = c; 000b7a 5001 movf 0x1, 0, 0 MOVF r0x01, W 000b7c 0100 movlb 0 BANKSEL (_lcdPutHexByte_dat_1_1 + 1) 000b7e 6f84 movwf 0x84, 0x1 MOVWF (_lcdPutHexByte_dat_1_1 + 1), B ; removed redundant BANKSEL ; .line 276; ./picLib3.c dat[2] = 0xFF; 000b80 6985 setf 0x85, 0x1 SETF (_lcdPutHexByte_dat_1_1 + 2), B ; .line 278; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, 3); 000b82 0e00 movlw 0 MOVLW HIGH(_lcdPutHexByte_dat_1_1) 000b84 6e01 movwf 0x1, 0 MOVWF r0x01 000b86 0e83 movlw 0x83 MOVLW LOW(_lcdPutHexByte_dat_1_1) 000b88 6e00 movwf 0, 0 MOVWF r0x00 000b8a 0e80 movlw 0x80 MOVLW 0x80 000b8c 6e02 movwf 0x2, 0 MOVWF r0x02 000b8e 0e03 movlw 0x3 MOVLW 0x03 000b90 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b92 5002 movf 0x2, 0, 0 MOVF r0x02, W 000b94 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b96 5001 movf 0x1, 0, 0 MOVF r0x01, W 000b98 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b9a 5000 movf 0, 0, 0 MOVF r0x00, W 000b9c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000b9e 0e00 movlw 0 MOVLW 0x00 000ba0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ba2 0e00 movlw 0 MOVLW 0x00 000ba4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000ba6 0e00 movlw 0 MOVLW 0x00 000ba8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000baa 0ec6 movlw 0xc6 MOVLW 0xc6 000bac 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000bae ec8c call 0x718, 0 CALL _i2cWrite 000bb0 f003 000bb2 0e08 movlw 0x8 MOVLW 0x08 000bb4 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 279; ./picLib3.c delayMs(10); 000bb6 0e00 movlw 0 MOVLW 0x00 000bb8 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000bba 0e0a movlw 0xa MOVLW 0x0a 000bbc 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000bbe ec7e call 0x12fc, 0 CALL _delayMs 000bc0 f009 000bc2 0e02 movlw 0x2 MOVLW 0x02 000bc4 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000bc6 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000bc8 f002 000bca cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000bcc f001 000bce cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000bd0 f000 000bd2 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000bd4 ffd9 000bd6 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__lcdWriteStr code _lcdWriteStr: ; .line 237; ./picLib3.c void lcdWriteStr(UInt8 x, UInt8 y, char* str){ 00081a cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00081c ffe5 00081e cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000820 ffd9 000822 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000824 ffe5 000826 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000828 ffe5 00082a c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00082c ffe5 00082e c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 000830 ffe5 000832 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000834 ffe5 000836 0e02 movlw 0x2 MOVLW 0x02 000838 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00083a f000 00083c 0e03 movlw 0x3 MOVLW 0x03 00083e cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 000840 f001 000842 0e04 movlw 0x4 MOVLW 0x04 000844 cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000846 f002 000848 0e05 movlw 0x5 MOVLW 0x05 00084a cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 00084c f003 00084e 0e06 movlw 0x6 MOVLW 0x06 000850 cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 000852 f004 ; .line 238; ./picLib3.c i2cWaitForIdle(); 000854 ecac call 0x1358, 0 CALL _i2cWaitForIdle 000856 f009 ; .line 240; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz CLK 000858 0e09 movlw 0x9 MOVLW 0x09 00085a 6ec8 movwf 0xc8, 0 MOVWF _SSPADD ; .line 242; ./picLib3.c i2cStart(); 00085c ecf5 call 0x15ea, 0 CALL _i2cStart 00085e f00a ; .line 244; ./picLib3.c i2cPutByte(0xC6); 000860 0ec6 movlw 0xc6 MOVLW 0xc6 000862 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000864 eca2 call 0x1544, 0 CALL _i2cPutByte 000866 f00a 000868 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 245; ./picLib3.c i2cPutByte(0x00); 00086a 0e00 movlw 0 MOVLW 0x00 00086c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00086e eca2 call 0x1544, 0 CALL _i2cPutByte 000870 f00a 000872 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 246; ./picLib3.c i2cPutByte(0xFE); 000874 0efe movlw 0xfe MOVLW 0xfe 000876 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000878 eca2 call 0x1544, 0 CALL _i2cPutByte 00087a f00a 00087c 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); 00087e 5001 movf 0x1, 0, 0 MOVF r0x01, W 000880 0d40 mullw 0x40 MULLW 0x40 000882 cff3 movff 0xff3, 0x1 MOVFF PRODL, r0x01 000884 f001 000886 0e80 movlw 0x80 MOVLW 0x80 000888 2601 addwf 0x1, 0x1, 0 ADDWF r0x01, F 00088a 5001 movf 0x1, 0, 0 MOVF r0x01, W 00088c 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 00088e 5000 movf 0, 0, 0 MOVF r0x00, W 000890 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000892 eca2 call 0x1544, 0 CALL _i2cPutByte 000894 f00a 000896 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 249; ./picLib3.c while(*str){ 000898 c002 movff 0x2, 0 MOVFF r0x02, r0x00 00089a f000 00089c c003 movff 0x3, 0x1 MOVFF r0x03, r0x01 00089e f001 0008a0 c004 movff 0x4, 0x2 MOVFF r0x04, r0x02 0008a2 f002 _00247_DS_: 0008a4 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0008a6 ffe9 0008a8 c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0008aa fff3 0008ac 5002 movf 0x2, 0, 0 MOVF r0x02, W 0008ae ec56 call 0x14ac, 0 CALL __gptrget1 0008b0 f00a 0008b2 6e03 movwf 0x3, 0 MOVWF r0x03 0008b4 5003 movf 0x3, 0, 0 MOVF r0x03, W 0008b6 e00b bz 0x8ce BZ _00249_DS_ ; .line 250; ./picLib3.c i2cPutByte(*str++); 0008b8 2a00 incf 0, 0x1, 0 INCF r0x00, F 0008ba b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0008bc 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0008be b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0008c0 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 0008c2 5003 movf 0x3, 0, 0 MOVF r0x03, W 0008c4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008c6 eca2 call 0x1544, 0 CALL _i2cPutByte 0008c8 f00a 0008ca 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 0008cc d7eb bra 0x8a4 BRA _00247_DS_ _00249_DS_: ; .line 253; ./picLib3.c i2cPutByte(0xFF); 0008ce 0eff movlw 0xff MOVLW 0xff 0008d0 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008d2 eca2 call 0x1544, 0 CALL _i2cPutByte 0008d4 f00a 0008d6 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 255; ./picLib3.c i2cStop(); 0008d8 ece9 call 0x15d2, 0 CALL _i2cStop 0008da f00a ; .line 256; ./picLib3.c delayMs(10); 0008dc 0e00 movlw 0 MOVLW 0x00 0008de 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008e0 0e0a movlw 0xa MOVLW 0x0a 0008e2 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0008e4 ec7e call 0x12fc, 0 CALL _delayMs 0008e6 f009 0008e8 0e02 movlw 0x2 MOVLW 0x02 0008ea 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 0008ec cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 0008ee f004 0008f0 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 0008f2 f003 0008f4 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 0008f6 f002 0008f8 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0008fa f001 0008fc cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0008fe f000 000900 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000902 ffd9 000904 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__lcdPutChar code _lcdPutChar: ; .line 227; ./picLib3.c void lcdPutChar(char c){ 000e28 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 000e2a ffe5 000e2c cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 000e2e ffd9 000e30 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000e32 ffe5 000e34 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000e36 ffe5 000e38 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 000e3a ffe5 000e3c 0e02 movlw 0x2 MOVLW 0x02 000e3e cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000e40 f000 ; .line 230; ./picLib3.c dat[0] = c; 000e42 5000 movf 0, 0, 0 MOVF r0x00, W 000e44 0100 movlb 0 BANKSEL _lcdPutChar_dat_1_1 000e46 6f86 movwf 0x86, 0x1 MOVWF _lcdPutChar_dat_1_1, B ; removed redundant BANKSEL ; .line 231; ./picLib3.c dat[1] = 255; 000e48 6987 setf 0x87, 0x1 SETF (_lcdPutChar_dat_1_1 + 1), B ; .line 233; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, 2); 000e4a 0e00 movlw 0 MOVLW HIGH(_lcdPutChar_dat_1_1) 000e4c 6e01 movwf 0x1, 0 MOVWF r0x01 000e4e 0e86 movlw 0x86 MOVLW LOW(_lcdPutChar_dat_1_1) 000e50 6e00 movwf 0, 0 MOVWF r0x00 000e52 0e80 movlw 0x80 MOVLW 0x80 000e54 6e02 movwf 0x2, 0 MOVWF r0x02 000e56 0e02 movlw 0x2 MOVLW 0x02 000e58 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e5a 5002 movf 0x2, 0, 0 MOVF r0x02, W 000e5c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e5e 5001 movf 0x1, 0, 0 MOVF r0x01, W 000e60 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e62 5000 movf 0, 0, 0 MOVF r0x00, W 000e64 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e66 0e00 movlw 0 MOVLW 0x00 000e68 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e6a 0e00 movlw 0 MOVLW 0x00 000e6c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e6e 0e00 movlw 0 MOVLW 0x00 000e70 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e72 0ec6 movlw 0xc6 MOVLW 0xc6 000e74 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e76 ec8c call 0x718, 0 CALL _i2cWrite 000e78 f003 000e7a 0e08 movlw 0x8 MOVLW 0x08 000e7c 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 234; ./picLib3.c delayMs(10); 000e7e 0e00 movlw 0 MOVLW 0x00 000e80 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e82 0e0a movlw 0xa MOVLW 0x0a 000e84 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000e86 ec7e call 0x12fc, 0 CALL _delayMs 000e88 f009 000e8a 0e02 movlw 0x2 MOVLW 0x02 000e8c 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 000e8e cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 000e90 f002 000e92 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000e94 f001 000e96 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000e98 f000 000e9a cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000e9c ffd9 000e9e 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__lcdInit code _lcdInit: ; .line 219; ./picLib3.c void lcdInit(){ 00122c c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00122e ffe5 001230 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001232 ffe5 001234 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001236 ffe5 ; .line 220; ./picLib3.c UInt8 dat[] = { 254,1,255 }; 001238 0efe movlw 0xfe MOVLW 0xfe 00123a 0100 movlb 0 BANKSEL _lcdInit_dat_1_1 00123c 6f80 movwf 0x80, 0x1 MOVWF _lcdInit_dat_1_1, B 00123e 0e01 movlw 0x1 MOVLW 0x01 ; removed redundant BANKSEL 001240 6f81 movwf 0x81, 0x1 MOVWF (_lcdInit_dat_1_1 + 1), B ; removed redundant BANKSEL 001242 6982 setf 0x82, 0x1 SETF (_lcdInit_dat_1_1 + 2), B ; .line 223; ./picLib3.c i2cWrite(0xC6, 0, I2cSlow8, dat, sizeof(dat)); 001244 0e00 movlw 0 MOVLW HIGH(_lcdInit_dat_1_1) 001246 6e01 movwf 0x1, 0 MOVWF r0x01 001248 0e80 movlw 0x80 MOVLW LOW(_lcdInit_dat_1_1) 00124a 6e00 movwf 0, 0 MOVWF r0x00 00124c 0e80 movlw 0x80 MOVLW 0x80 00124e 6e02 movwf 0x2, 0 MOVWF r0x02 001250 0e03 movlw 0x3 MOVLW 0x03 001252 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001254 5002 movf 0x2, 0, 0 MOVF r0x02, W 001256 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001258 5001 movf 0x1, 0, 0 MOVF r0x01, W 00125a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00125c 5000 movf 0, 0, 0 MOVF r0x00, W 00125e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001260 0e00 movlw 0 MOVLW 0x00 001262 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001264 0e00 movlw 0 MOVLW 0x00 001266 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001268 0e00 movlw 0 MOVLW 0x00 00126a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00126c 0ec6 movlw 0xc6 MOVLW 0xc6 00126e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001270 ec8c call 0x718, 0 CALL _i2cWrite 001272 f003 001274 0e08 movlw 0x8 MOVLW 0x08 001276 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F ; .line 224; ./picLib3.c delayMs(10); 001278 0e00 movlw 0 MOVLW 0x00 00127a 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00127c 0e0a movlw 0xa MOVLW 0x0a 00127e 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 001280 ec7e call 0x12fc, 0 CALL _delayMs 001282 f009 001284 0e02 movlw 0x2 MOVLW 0x02 001286 26e1 addwf 0xe1, 0x1, 0 ADDWF FSR1L, F 001288 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00128a f002 00128c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00128e f001 001290 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001292 f000 001294 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__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 ecac call 0x1358, 0 CALL _i2cWaitForIdle 00051e f009 ; .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 ecf5 call 0x15ea, 0 CALL _i2cStart 000530 f00a ; .line 193; ./picLib3.c i2cPutByte(chipAddress); 000532 5000 movf 0, 0, 0 MOVF r0x00, W 000534 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 000536 eca2 call 0x1544, 0 CALL _i2cPutByte 000538 f00a 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 eca2 call 0x1544, 0 CALL _i2cPutByte 00054c f00a 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 eca2 call 0x1544, 0 CALL _i2cPutByte 000556 f00a 000558 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 198; ./picLib3.c i2cRepStart(); 00055a ecef call 0x15de, 0 CALL _i2cRepStart 00055c f00a ; .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 eca2 call 0x1544, 0 CALL _i2cPutByte 000566 f00a 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 ecfb call 0x13f6, 0 CALL _i2cGetByte 000586 f009 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 ecba call 0x1574, 0 CALL __gptrput1 00059c f00a 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 ecfb call 0x13f6, 0 CALL _i2cGetByte 0005b6 f009 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 ecba call 0x1574, 0 CALL __gptrput1 0005cc f00a _00220_DS_: ; .line 210; ./picLib3.c i2cStop(); 0005ce ece9 call 0x15d2, 0 CALL _i2cStop 0005d0 f00a ; .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_testTimer__i2cWrite code _i2cWrite: ; .line 158; ./picLib3.c Int8 i2cWrite(UInt8 chipAddress, UInt16 regAddress, I2cMode mode, UInt8* dat, UInt8 len){ 000718 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 00071a ffe5 00071c cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00071e ffd9 000720 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 000722 ffe5 000724 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 000726 ffe5 000728 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00072a ffe5 00072c c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 00072e ffe5 000730 c004 movff 0x4, 0xfe5 MOVFF r0x04, POSTDEC1 000732 ffe5 000734 c005 movff 0x5, 0xfe5 MOVFF r0x05, POSTDEC1 000736 ffe5 000738 c006 movff 0x6, 0xfe5 MOVFF r0x06, POSTDEC1 00073a ffe5 00073c c007 movff 0x7, 0xfe5 MOVFF r0x07, POSTDEC1 00073e ffe5 000740 0e02 movlw 0x2 MOVLW 0x02 000742 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 000744 f000 000746 0e03 movlw 0x3 MOVLW 0x03 000748 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 00074a f001 00074c 0e04 movlw 0x4 MOVLW 0x04 00074e cfdb movff 0xfdb, 0x2 MOVFF PLUSW2, r0x02 000750 f002 000752 0e05 movlw 0x5 MOVLW 0x05 000754 cfdb movff 0xfdb, 0x3 MOVFF PLUSW2, r0x03 000756 f003 000758 0e06 movlw 0x6 MOVLW 0x06 00075a cfdb movff 0xfdb, 0x4 MOVFF PLUSW2, r0x04 00075c f004 00075e 0e07 movlw 0x7 MOVLW 0x07 000760 cfdb movff 0xfdb, 0x5 MOVFF PLUSW2, r0x05 000762 f005 000764 0e08 movlw 0x8 MOVLW 0x08 000766 cfdb movff 0xfdb, 0x6 MOVFF PLUSW2, r0x06 000768 f006 00076a 0e09 movlw 0x9 MOVLW 0x09 00076c cfdb movff 0xfdb, 0x7 MOVFF PLUSW2, r0x07 00076e f007 ; .line 159; ./picLib3.c i2cWaitForIdle(); 000770 ecac call 0x1358, 0 CALL _i2cWaitForIdle 000772 f009 ; .line 161; ./picLib3.c if(mode & 0x01) 000774 a003 btfss 0x3, 0, 0 BTFSS r0x03, 0 000776 d003 bra 0x77e BRA _00191_DS_ ; .line 162; ./picLib3.c SSPADD = 0x02; // Set the baud rate to 333KHz at 4MHz CLK 000778 0e02 movlw 0x2 MOVLW 0x02 00077a 6ec8 movwf 0xc8, 0 MOVWF _SSPADD 00077c d002 bra 0x782 BRA _00192_DS_ _00191_DS_: ; .line 164; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz CLK 00077e 0e09 movlw 0x9 MOVLW 0x09 000780 6ec8 movwf 0xc8, 0 MOVWF _SSPADD _00192_DS_: ; .line 166; ./picLib3.c i2cStart(); 000782 ecf5 call 0x15ea, 0 CALL _i2cStart 000784 f00a ; .line 168; ./picLib3.c i2cPutByte(chipAddress); 000786 5000 movf 0, 0, 0 MOVF r0x00, W 000788 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00078a eca2 call 0x1544, 0 CALL _i2cPutByte 00078c f00a 00078e 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 169; ./picLib3.c if(mode & 0x02) 000790 a203 btfss 0x3, 0x1, 0 BTFSS r0x03, 1 000792 d008 bra 0x7a4 BRA _00194_DS_ ; .line 170; ./picLib3.c i2cPutByte(regAddress >> 8); 000794 5002 movf 0x2, 0, 0 MOVF r0x02, W 000796 6e00 movwf 0, 0 MOVWF r0x00 000798 6a03 clrf 0x3, 0 CLRF r0x03 00079a 5000 movf 0, 0, 0 MOVF r0x00, W 00079c 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 00079e eca2 call 0x1544, 0 CALL _i2cPutByte 0007a0 f00a 0007a2 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F _00194_DS_: ; .line 171; ./picLib3.c i2cPutByte(regAddress); 0007a4 5001 movf 0x1, 0, 0 MOVF r0x01, W 0007a6 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007a8 eca2 call 0x1544, 0 CALL _i2cPutByte 0007aa f00a 0007ac 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F ; .line 173; ./picLib3.c while(len--){ 0007ae c004 movff 0x4, 0 MOVFF r0x04, r0x00 0007b0 f000 0007b2 c005 movff 0x5, 0x1 MOVFF r0x05, r0x01 0007b4 f001 0007b6 c006 movff 0x6, 0x2 MOVFF r0x06, r0x02 0007b8 f002 0007ba c007 movff 0x7, 0x3 MOVFF r0x07, r0x03 0007bc f003 _00195_DS_: 0007be c003 movff 0x3, 0x4 MOVFF r0x03, r0x04 0007c0 f004 0007c2 0603 decf 0x3, 0x1, 0 DECF r0x03, F 0007c4 5004 movf 0x4, 0, 0 MOVF r0x04, W 0007c6 e013 bz 0x7ee BZ _00197_DS_ ; .line 174; ./picLib3.c i2cPutByte(*dat++); 0007c8 c000 movff 0, 0xfe9 MOVFF r0x00, FSR0L 0007ca ffe9 0007cc c001 movff 0x1, 0xff3 MOVFF r0x01, PRODL 0007ce fff3 0007d0 5002 movf 0x2, 0, 0 MOVF r0x02, W 0007d2 ec56 call 0x14ac, 0 CALL __gptrget1 0007d4 f00a 0007d6 6e04 movwf 0x4, 0 MOVWF r0x04 0007d8 2a00 incf 0, 0x1, 0 INCF r0x00, F 0007da b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0007dc 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 0007de b0d8 btfsc 0xd8, 0, 0 BTFSC STATUS, 0 0007e0 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 0007e2 5004 movf 0x4, 0, 0 MOVF r0x04, W 0007e4 6ee5 movwf 0xe5, 0 MOVWF POSTDEC1 0007e6 eca2 call 0x1544, 0 CALL _i2cPutByte 0007e8 f00a 0007ea 2ae1 incf 0xe1, 0x1, 0 INCF FSR1L, F 0007ec d7e8 bra 0x7be BRA _00195_DS_ _00197_DS_: ; .line 177; ./picLib3.c i2cStop(); 0007ee ece9 call 0x15d2, 0 CALL _i2cStop 0007f0 f00a ; .line 179; ./picLib3.c return 0; 0007f2 6ae8 clrf 0xe8, 0 CLRF WREG 0007f4 cfe4 movff 0xfe4, 0x7 MOVFF PREINC1, r0x07 0007f6 f007 0007f8 cfe4 movff 0xfe4, 0x6 MOVFF PREINC1, r0x06 0007fa f006 0007fc cfe4 movff 0xfe4, 0x5 MOVFF PREINC1, r0x05 0007fe f005 000800 cfe4 movff 0xfe4, 0x4 MOVFF PREINC1, r0x04 000802 f004 000804 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 000806 f003 000808 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00080a f002 00080c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00080e f001 000810 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000812 f000 000814 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 000816 ffd9 000818 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cGetByte code _i2cGetByte: ; .line 139; ./picLib3.c UInt8 i2cGetByte(UInt8 ack){ 0013f6 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0013f8 ffe5 0013fa cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0013fc ffd9 0013fe c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001400 ffe5 001402 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001404 ffe5 001406 0e02 movlw 0x2 MOVLW 0x02 001408 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 00140a f000 ; .line 142; ./picLib3.c i2cWaitForIdle(); 00140c ecac call 0x1358, 0 CALL _i2cWaitForIdle 00140e f009 ; .line 143; ./picLib3.c SSPCON2bits.RCEN = 1; 001410 86c5 bsf 0xc5, 0x3, 0 BSF _SSPCON2bits, 3 ; .line 144; ./picLib3.c i2cWaitForIdle(); 001412 ecac call 0x1358, 0 CALL _i2cWaitForIdle 001414 f009 ; .line 145; ./picLib3.c v = SSPBUF; 001416 cfc9 movff 0xfc9, 0x1 MOVFF _SSPBUF, r0x01 001418 f001 ; .line 146; ./picLib3.c i2cWaitForIdle(); 00141a ecac call 0x1358, 0 CALL _i2cWaitForIdle 00141c f009 ; .line 148; ./picLib3.c if(ack) 00141e 5000 movf 0, 0, 0 MOVF r0x00, W 001420 e002 bz 0x1426 BZ _00183_DS_ ; .line 149; ./picLib3.c SSPCON2bits.ACKDT = 0; 001422 9ac5 bcf 0xc5, 0x5, 0 BCF _SSPCON2bits, 5 001424 d001 bra 0x1428 BRA _00184_DS_ _00183_DS_: ; .line 151; ./picLib3.c SSPCON2bits.ACKDT = 1; 001426 8ac5 bsf 0xc5, 0x5, 0 BSF _SSPCON2bits, 5 _00184_DS_: ; .line 153; ./picLib3.c SSPCON2bits.ACKEN = 1; // Send acknowledge sequence 001428 88c5 bsf 0xc5, 0x4, 0 BSF _SSPCON2bits, 4 ; .line 155; ./picLib3.c return v; 00142a 5001 movf 0x1, 0, 0 MOVF r0x01, W 00142c cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00142e f001 001430 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001432 f000 001434 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001436 ffd9 001438 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cPutByte code _i2cPutByte: ; .line 128; ./picLib3.c void i2cPutByte(UInt8 v){ 001544 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 001546 ffe5 001548 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 00154a ffd9 00154c 0e02 movlw 0x2 MOVLW 0x02 00154e cfdb movff 0xfdb, 0xfc9 MOVFF PLUSW2, _SSPBUF 001550 ffc9 ; .line 134; ./picLib3.c i2cWaitForIdle(); 001552 ecac call 0x1358, 0 CALL _i2cWaitForIdle 001554 f009 ; .line 135; ./picLib3.c SSPBUF = v; 001556 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001558 ffd9 00155a 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cStop code _i2cStop: ; .line 123; ./picLib3.c i2cWaitForIdle(); 0015d2 ecac call 0x1358, 0 CALL _i2cWaitForIdle 0015d4 f009 ; .line 124; ./picLib3.c SSPCON2bits.PEN = 1; 0015d6 84c5 bsf 0xc5, 0x2, 0 BSF _SSPCON2bits, 2 _00169_DS_: ; .line 125; ./picLib3.c while(SSPCON2bits.PEN); 0015d8 b4c5 btfsc 0xc5, 0x2, 0 BTFSC _SSPCON2bits, 2 0015da d7fe bra 0x15d8 BRA _00169_DS_ 0015dc 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cRepStart code _i2cRepStart: ; .line 117; ./picLib3.c i2cWaitForIdle(); 0015de ecac call 0x1358, 0 CALL _i2cWaitForIdle 0015e0 f009 ; .line 118; ./picLib3.c SSPCON2bits.RSEN = 1; 0015e2 82c5 bsf 0xc5, 0x1, 0 BSF _SSPCON2bits, 1 _00161_DS_: ; .line 119; ./picLib3.c while(SSPCON2bits.RSEN); 0015e4 b2c5 btfsc 0xc5, 0x1, 0 BTFSC _SSPCON2bits, 1 0015e6 d7fe bra 0x15e4 BRA _00161_DS_ 0015e8 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cStart code _i2cStart: ; .line 111; ./picLib3.c i2cWaitForIdle(); 0015ea ecac call 0x1358, 0 CALL _i2cWaitForIdle 0015ec f009 ; .line 112; ./picLib3.c SSPCON2bits.SEN = 1; 0015ee 80c5 bsf 0xc5, 0, 0 BSF _SSPCON2bits, 0 _00153_DS_: ; .line 113; ./picLib3.c while(SSPCON2bits.SEN); 0015f0 b0c5 btfsc 0xc5, 0, 0 BTFSC _SSPCON2bits, 0 0015f2 d7fe bra 0x15f0 BRA _00153_DS_ 0015f4 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cWaitForIdle code _i2cWaitForIdle: ; .line 99; ./picLib3.c Int8 i2cWaitForIdle(){ 001358 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 00135a ffe5 00135c c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00135e ffe5 001360 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 001362 ffe5 ; .line 102; ./picLib3.c while(((SSPCON2 & 0x1F) | SSPSTATbits.R_W) && --to); // Wait for idle and not writing 001364 0eff movlw 0xff MOVLW 0xff 001366 6e00 movwf 0, 0 MOVWF r0x00 _00138_DS_: 001368 0e1f movlw 0x1f MOVLW 0x1f 00136a 14c5 andwf 0xc5, 0, 0 ANDWF _SSPCON2, W 00136c 6e01 movwf 0x1, 0 MOVWF r0x01 00136e 6a02 clrf 0x2, 0 CLRF r0x02 001370 b4c7 btfsc 0xc7, 0x2, 0 BTFSC _SSPSTATbits, 2 001372 2a02 incf 0x2, 0x1, 0 INCF r0x02, F 001374 5002 movf 0x2, 0, 0 MOVF r0x02, W 001376 1201 iorwf 0x1, 0x1, 0 IORWF r0x01, F 001378 5001 movf 0x1, 0, 0 MOVF r0x01, W 00137a e003 bz 0x1382 BZ _00148_DS_ 00137c 0600 decf 0, 0x1, 0 DECF r0x00, F 00137e 5000 movf 0, 0, 0 MOVF r0x00, W 001380 e1f3 bnz 0x1368 BNZ _00138_DS_ _00148_DS_: 001382 c000 movff 0, 0x1 MOVFF r0x00, r0x01 001384 f001 ; # MOVF r0x00, W ; # BTFSS STATUS, 2 ; # GOTO _00142_DS_ ; # CALL _i2cReset ; # MOVF r0x01, W ; .line 105; ./picLib3.c if(!to) 001386 5000 movf 0, 0, 0 MOVF r0x00, W ; .line 106; ./picLib3.c i2cReset(); 001388 b4d8 btfsc 0xd8, 0x2, 0 BTFSC STATUS, 2 ; .line 107; ./picLib3.c return !to; 00138a ec67 call 0x14ce, 0 CALL _i2cReset 00138c f00a 00138e 5001 movf 0x1, 0, 0 MOVF r0x01, W 001390 80d8 bsf 0xd8, 0, 0 BSF STATUS, 0 001392 66e8 tstfsz 0xe8, 0 TSTFSZ WREG 001394 90d8 bcf 0xd8, 0, 0 BCF STATUS, 0 001396 6a01 clrf 0x1, 0 CLRF r0x01 001398 3601 rlcf 0x1, 0x1, 0 RLCF r0x01, F 00139a 5001 movf 0x1, 0, 0 MOVF r0x01, W 00139c cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00139e f002 0013a0 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 0013a2 f001 0013a4 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 0013a6 f000 0013a8 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cWaitForIdle1 code _i2cWaitForIdle1: ; .line 95; ./picLib3.c void i2cWaitForIdle1(){ 001462 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001464 ffe5 001466 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 001468 ffe5 _00129_DS_: ; .line 96; ./picLib3.c while((SSPCON2 & 0x1F) | SSPSTATbits.R_W); // Wait for idle and not writing 00146a 0e1f movlw 0x1f MOVLW 0x1f 00146c 14c5 andwf 0xc5, 0, 0 ANDWF _SSPCON2, W 00146e 6e00 movwf 0, 0 MOVWF r0x00 001470 6a01 clrf 0x1, 0 CLRF r0x01 001472 b4c7 btfsc 0xc7, 0x2, 0 BTFSC _SSPSTATbits, 2 001474 2a01 incf 0x1, 0x1, 0 INCF r0x01, F 001476 5001 movf 0x1, 0, 0 MOVF r0x01, W 001478 1200 iorwf 0, 0x1, 0 IORWF r0x00, F 00147a 5000 movf 0, 0, 0 MOVF r0x00, W 00147c e1f6 bnz 0x146a BNZ _00129_DS_ 00147e cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 001480 f001 001482 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001484 f000 001486 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cInit code _i2cInit: ; .line 76; ./picLib3.c SSPSTAT &= 0x3f; 00150c 0e3f movlw 0x3f MOVLW 0x3f 00150e 16c7 andwf 0xc7, 0x1, 0 ANDWF _SSPSTAT, F ; .line 78; ./picLib3.c SSPCON1 = 0x28; // Set I2C master mode 001510 0e28 movlw 0x28 MOVLW 0x28 001512 6ec6 movwf 0xc6, 0 MOVWF _SSPCON1 ; .line 79; ./picLib3.c SSPCON2 = 0x00; 001514 6ac5 clrf 0xc5, 0 CLRF _SSPCON2 ; .line 80; ./picLib3.c SSPADD = 0x09; // Set the baud rate to 100KHz at 4MHz 001516 0e09 movlw 0x9 MOVLW 0x09 001518 6ec8 movwf 0xc8, 0 MOVWF _SSPADD ; .line 82; ./picLib3.c TRISCbits.TRISC3 = 1; // Enable pins 00151a 8694 bsf 0x94, 0x3, 0 BSF _TRISCbits, 3 ; .line 83; ./picLib3.c TRISCbits.TRISC4 = 1; 00151c 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 88; ./picLib3.c PIR1bits.SSPIF = 0; // clear SSPIF interrupt flag 00151e 969e bcf 0x9e, 0x3, 0 BCF _PIR1bits, 3 ; .line 89; ./picLib3.c PIR2bits.BCLIF = 0; // clear bus collision flag 001520 96a1 bcf 0xa1, 0x3, 0 BCF _PIR2bits, 3 ; .line 91; ./picLib3.c i2cReset(); 001522 ec67 call 0x14ce, 0 CALL _i2cReset 001524 f00a ; .line 92; ./picLib3.c PORTBbits.RB5 = 0; 001526 9a81 bcf 0x81, 0x5, 0 BCF _PORTBbits, 5 001528 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__i2cReset code _i2cReset: ; .line 53; ./picLib3.c PORTBbits.RB5 = 1; 0014ce 8a81 bsf 0x81, 0x5, 0 BSF _PORTBbits, 5 ; .line 55; ./picLib3.c SSPCON1bits.SSPEN = 0; // Disable I2C hardware 0014d0 9ac6 bcf 0xc6, 0x5, 0 BCF _SSPCON1bits, 5 ; .line 56; ./picLib3.c TRISCbits.TRISC3 = 0; 0014d2 9694 bcf 0x94, 0x3, 0 BCF _TRISCbits, 3 ; .line 57; ./picLib3.c PORTCbits.RC3 = 1; 0014d4 8682 bsf 0x82, 0x3, 0 BSF _PORTCbits, 3 _00116_DS_: ; .line 60; ./picLib3.c while(!PORTCbits.RC4){ 0014d6 b882 btfsc 0x82, 0x4, 0 BTFSC _PORTCbits, 4 0014d8 d003 bra 0x14e0 BRA _00118_DS_ ; .line 61; ./picLib3.c PORTCbits.RC3 = 0; 0014da 9682 bcf 0x82, 0x3, 0 BCF _PORTCbits, 3 ; .line 62; ./picLib3.c PORTCbits.RC3 = 1; 0014dc 8682 bsf 0x82, 0x3, 0 BSF _PORTCbits, 3 0014de d7fb bra 0x14d6 BRA _00116_DS_ _00118_DS_: ; .line 66; ./picLib3.c TRISCbits.TRISC4 = 0; 0014e0 9894 bcf 0x94, 0x4, 0 BCF _TRISCbits, 4 ; .line 67; ./picLib3.c PORTCbits.RC4 = 0; 0014e2 9882 bcf 0x82, 0x4, 0 BCF _PORTCbits, 4 ; .line 68; ./picLib3.c PORTCbits.RC4 = 1; 0014e4 8882 bsf 0x82, 0x4, 0 BSF _PORTCbits, 4 ; .line 70; ./picLib3.c TRISCbits.TRISC3 = 1; // Enable pins 0014e6 8694 bsf 0x94, 0x3, 0 BSF _TRISCbits, 3 ; .line 71; ./picLib3.c TRISCbits.TRISC4 = 1; 0014e8 8894 bsf 0x94, 0x4, 0 BSF _TRISCbits, 4 ; .line 72; ./picLib3.c SSPCON1bits.SSPEN = 1; // Re-enable I2C hardware 0014ea 8ac6 bsf 0xc6, 0x5, 0 BSF _SSPCON1bits, 5 0014ec 0012 return 0 RETURN ; ; Starting pCode block S_testTimer__delayMs code _delayMs: ; .line 27; ./picLib3.c void delayMs(UInt16 n){ 0012fc cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0012fe ffe5 001300 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 001302 ffd9 001304 c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 001306 ffe5 001308 c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 00130a ffe5 00130c c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 00130e ffe5 001310 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 001312 ffe5 001314 0e02 movlw 0x2 MOVLW 0x02 001316 cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 001318 f000 00131a 0e03 movlw 0x3 MOVLW 0x03 00131c cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 00131e f001 _00105_DS_: ; .line 30; ./picLib3.c while(n--){ 001320 c000 movff 0, 0x2 MOVFF r0x00, r0x02 001322 f002 001324 c001 movff 0x1, 0x3 MOVFF r0x01, r0x03 001326 f003 001328 0eff movlw 0xff MOVLW 0xff 00132a 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 00132c a0d8 btfss 0xd8, 0, 0 BTFSS STATUS, 0 00132e 0601 decf 0x1, 0x1, 0 DECF r0x01, F 001330 5002 movf 0x2, 0, 0 MOVF r0x02, W 001332 1003 iorwf 0x3, 0, 0 IORWF r0x03, W 001334 e006 bz 0x1342 BZ _00111_DS_ ; .line 31; ./picLib3.c for(c = 0; c < 250; c++){ 001336 0efa movlw 0xfa MOVLW 0xfa 001338 6e02 movwf 0x2, 0 MOVWF r0x02 _00110_DS_: 00133a 0000 nop nop 00133c 2e02 decfsz 0x2, 0x1, 0 DECFSZ r0x02, F 00133e d7fd bra 0x133a BRA _00110_DS_ ; .line 31; ./picLib3.c for(c = 0; c < 250; c++){ 001340 d7ef bra 0x1320 BRA _00105_DS_ _00111_DS_: 001342 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 001344 f003 001346 cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 001348 f002 00134a cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 00134c f001 00134e cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 001350 f000 001352 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 001354 ffd9 001356 0012 return 0 RETURN ; Statistics: ; code size: 4462 (0x116e) bytes ( 3.40%) ; 2231 (0x08b7) words ; udata size: 11 (0x000b) bytes ( 0.86%) ; access size: 12 (0x000c) bytes end