;-------------------------------------------------------- ; 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_testLed__main code _main: ; .line 57; testLed.c OSCCON = 0x62; // Internal 4MHZ MOVLW 0x62 MOVWF _OSCCON ; .line 59; testLed.c TRISB = 0x0F; // PORTB top 4 bits Output MOVLW 0x0f MOVWF _TRISB ; .line 60; testLed.c PORTB = 0; CLRF _PORTB _00127_DS_: ; .line 65; testLed.c for(v = 0; v < 16; v++){ CLRF r0x00 _00119_DS_: MOVLW 0x10 SUBWF r0x00, W BC _00127_DS_ ; .line 66; testLed.c PORTB = v << 4; SWAPF r0x00, W ANDLW 0xf0 MOVWF _PORTB ; .line 67; testLed.c delayMs(100); MOVLW 0x00 MOVWF POSTDEC1 MOVLW 0x64 MOVWF POSTDEC1 CALL _delayMs MOVLW 0x02 ADDWF FSR1L, F ; .line 65; testLed.c for(v = 0; v < 16; v++){ INCF r0x00, F BRA _00119_DS_ RETURN ; ; Starting pCode block S_testLed__delayMs code _delayMs: ; .line 43; testLed.c void delayMs(unsigned int n){ MOVFF FSR2L, POSTDEC1 MOVFF FSR1L, FSR2L MOVFF r0x00, POSTDEC1 MOVFF r0x01, POSTDEC1 MOVFF r0x02, POSTDEC1 MOVFF r0x03, POSTDEC1 MOVLW 0x02 MOVFF PLUSW2, r0x00 MOVLW 0x03 MOVFF PLUSW2, r0x01 _00105_DS_: ; .line 46; testLed.c while(n--){ MOVFF r0x00, r0x02 MOVFF r0x01, r0x03 MOVLW 0xff ADDWF r0x00, F BTFSS STATUS, 0 DECF r0x01, F MOVF r0x02, W IORWF r0x03, W BZ _00111_DS_ ; .line 47; testLed.c for(c = 0; c < 250; c++){ MOVLW 0xfa MOVWF r0x02 _00110_DS_: nop DECFSZ r0x02, F BRA _00110_DS_ ; .line 47; testLed.c for(c = 0; c < 250; c++){ BRA _00105_DS_ _00111_DS_: MOVFF PREINC1, r0x03 MOVFF PREINC1, r0x02 MOVFF PREINC1, r0x01 MOVFF PREINC1, r0x00 MOVFF PREINC1, FSR2L RETURN ; Statistics: ; code size: 138 (0x008a) bytes ( 0.11%) ; 69 (0x0045) words ; udata size: 0 (0x0000) bytes ( 0.00%) ; access size: 4 (0x0004) bytes end