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 _delayMs global _main ;-------------------------------------------------------- ; extern variables in this module ;-------------------------------------------------------- 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 ;-------------------------------------------------------- ; Equates to used internal registers ;-------------------------------------------------------- STATUS equ 0xfd8 FSR1L equ 0xfe1 FSR2L equ 0xfd9 POSTDEC1 equ 0xfe5 PREINC1 equ 0xfe4 PLUSW2 equ 0xfdb ; Internal registers .registers udata_ovr 0x0000 r0x00 res 1 r0x01 res 1 r0x02 res 1 r0x03 res 1 ;-------------------------------------------------------- ; interrupt vector ;-------------------------------------------------------- ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- ; I code from now on! ; ; Starting pCode block S_testSwitch__main code _main: ; .line 35; testSwitch.c OSCCON = 0x62; // Internal 4MHZ 00011e 0e62 movlw 0x62 MOVLW 0x62 000120 6ed3 movwf 0xd3, 0 MOVWF _OSCCON ; .line 37; testSwitch.c TRISB = 0x0F; // PORTB top 4 bits Output 000122 0e0f movlw 0xf MOVLW 0x0f 000124 6e93 movwf 0x93, 0 MOVWF _TRISB ; .line 38; testSwitch.c PORTB = 0; 000126 6a81 clrf 0x81, 0 CLRF _PORTB _00120_DS_: ; .line 41; testSwitch.c if(PORTCbits.RC0) 000128 a082 btfss 0x82, 0, 0 BTFSS _PORTCbits, 0 00012a d002 bra 0x130 BRA _00117_DS_ ; .line 42; testSwitch.c PORTBbits.RB7 = 1; 00012c 8e81 bsf 0x81, 0x7, 0 BSF _PORTBbits, 7 00012e d7fc bra 0x128 BRA _00120_DS_ _00117_DS_: ; .line 44; testSwitch.c PORTBbits.RB7 = 0; 000130 9e81 bcf 0x81, 0x7, 0 BCF _PORTBbits, 7 000132 d7fa bra 0x128 BRA _00120_DS_ 000134 0012 return 0 RETURN ; ; Starting pCode block S_testSwitch__delayMs code _delayMs: ; .line 23; testSwitch.c void delayMs(unsigned int n){ 0000c2 cfd9 movff 0xfd9, 0xfe5 MOVFF FSR2L, POSTDEC1 0000c4 ffe5 0000c6 cfe1 movff 0xfe1, 0xfd9 MOVFF FSR1L, FSR2L 0000c8 ffd9 0000ca c000 movff 0, 0xfe5 MOVFF r0x00, POSTDEC1 0000cc ffe5 0000ce c001 movff 0x1, 0xfe5 MOVFF r0x01, POSTDEC1 0000d0 ffe5 0000d2 c002 movff 0x2, 0xfe5 MOVFF r0x02, POSTDEC1 0000d4 ffe5 0000d6 c003 movff 0x3, 0xfe5 MOVFF r0x03, POSTDEC1 0000d8 ffe5 0000da 0e02 movlw 0x2 MOVLW 0x02 0000dc cfdb movff 0xfdb, 0 MOVFF PLUSW2, r0x00 0000de f000 0000e0 0e03 movlw 0x3 MOVLW 0x03 0000e2 cfdb movff 0xfdb, 0x1 MOVFF PLUSW2, r0x01 0000e4 f001 _00105_DS_: ; .line 26; testSwitch.c while(n--){ 0000e6 c000 movff 0, 0x2 MOVFF r0x00, r0x02 0000e8 f002 0000ea c001 movff 0x1, 0x3 MOVFF r0x01, r0x03 0000ec f003 0000ee 0eff movlw 0xff MOVLW 0xff 0000f0 2600 addwf 0, 0x1, 0 ADDWF r0x00, F 0000f2 a0d8 btfss 0xd8, 0, 0 BTFSS STATUS, 0 0000f4 0601 decf 0x1, 0x1, 0 DECF r0x01, F 0000f6 5002 movf 0x2, 0, 0 MOVF r0x02, W 0000f8 1003 iorwf 0x3, 0, 0 IORWF r0x03, W 0000fa e006 bz 0x108 BZ _00111_DS_ ; .line 27; testSwitch.c for(c = 0; c < 250; c++){ 0000fc 0efa movlw 0xfa MOVLW 0xfa 0000fe 6e02 movwf 0x2, 0 MOVWF r0x02 _00110_DS_: 000100 0000 nop nop 000102 2e02 decfsz 0x2, 0x1, 0 DECFSZ r0x02, F 000104 d7fd bra 0x100 BRA _00110_DS_ ; .line 27; testSwitch.c for(c = 0; c < 250; c++){ 000106 d7ef bra 0xe6 BRA _00105_DS_ _00111_DS_: 000108 cfe4 movff 0xfe4, 0x3 MOVFF PREINC1, r0x03 00010a f003 00010c cfe4 movff 0xfe4, 0x2 MOVFF PREINC1, r0x02 00010e f002 000110 cfe4 movff 0xfe4, 0x1 MOVFF PREINC1, r0x01 000112 f001 000114 cfe4 movff 0xfe4, 0 MOVFF PREINC1, r0x00 000116 f000 000118 cfe4 movff 0xfe4, 0xfd9 MOVFF PREINC1, FSR2L 00011a ffd9 00011c 0012 return 0 RETURN ; Statistics: ; code size: 116 (0x0074) bytes ( 0.09%) ; 58 (0x003a) words ; udata size: 0 (0x0000) bytes ( 0.00%) ; access size: 4 (0x0004) bytes end