738 lines
14 KiB
NASM
738 lines
14 KiB
NASM
;--------------------------------------------------------
|
|
; File Created by SDCC : free open source ISO C Compiler
|
|
; Version 4.5.0 #15242 (Linux)
|
|
;--------------------------------------------------------
|
|
; PIC16 port for the Microchip 16-bit core micros
|
|
;--------------------------------------------------------
|
|
list p=18f4550
|
|
radix dec
|
|
CONFIG XINST=OFF
|
|
CONFIG FOSC=HS
|
|
CONFIG WDT=OFF
|
|
CONFIG LVP=OFF
|
|
CONFIG MCLRE=OFF
|
|
|
|
|
|
;--------------------------------------------------------
|
|
; public variables in this module
|
|
;--------------------------------------------------------
|
|
global _LCD_Initialize
|
|
global _LCDWriteNibble
|
|
global _LCDPutChar
|
|
global _LCDPutCmd
|
|
global _LCDPutStr
|
|
global _LCDGoto
|
|
global _sram_end
|
|
global _main
|
|
|
|
;--------------------------------------------------------
|
|
; extern variables in this module
|
|
;--------------------------------------------------------
|
|
extern __gptrload
|
|
extern __gptrget1
|
|
extern _stdin
|
|
extern _stdout
|
|
extern _SPPCFGbits
|
|
extern _SPPEPSbits
|
|
extern _SPPCONbits
|
|
extern _UFRMLbits
|
|
extern _UFRMHbits
|
|
extern _UIRbits
|
|
extern _UIEbits
|
|
extern _UEIRbits
|
|
extern _UEIEbits
|
|
extern _USTATbits
|
|
extern _UCONbits
|
|
extern _UADDRbits
|
|
extern _UCFGbits
|
|
extern _UEP0bits
|
|
extern _UEP1bits
|
|
extern _UEP2bits
|
|
extern _UEP3bits
|
|
extern _UEP4bits
|
|
extern _UEP5bits
|
|
extern _UEP6bits
|
|
extern _UEP7bits
|
|
extern _UEP8bits
|
|
extern _UEP9bits
|
|
extern _UEP10bits
|
|
extern _UEP11bits
|
|
extern _UEP12bits
|
|
extern _UEP13bits
|
|
extern _UEP14bits
|
|
extern _UEP15bits
|
|
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 _CCP1ASbits
|
|
extern _ECCP1ASbits
|
|
extern _CCP1DELbits
|
|
extern _ECCP1DELbits
|
|
extern _BAUDCONbits
|
|
extern _BAUDCTLbits
|
|
extern _CCP2CONbits
|
|
extern _CCP1CONbits
|
|
extern _ECCP1CONbits
|
|
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 _SPPDATA
|
|
extern _SPPCFG
|
|
extern _SPPEPS
|
|
extern _SPPCON
|
|
extern _UFRM
|
|
extern _UFRML
|
|
extern _UFRMH
|
|
extern _UIR
|
|
extern _UIE
|
|
extern _UEIR
|
|
extern _UEIE
|
|
extern _USTAT
|
|
extern _UCON
|
|
extern _UADDR
|
|
extern _UCFG
|
|
extern _UEP0
|
|
extern _UEP1
|
|
extern _UEP2
|
|
extern _UEP3
|
|
extern _UEP4
|
|
extern _UEP5
|
|
extern _UEP6
|
|
extern _UEP7
|
|
extern _UEP8
|
|
extern _UEP9
|
|
extern _UEP10
|
|
extern _UEP11
|
|
extern _UEP12
|
|
extern _UEP13
|
|
extern _UEP14
|
|
extern _UEP15
|
|
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 _TMR3
|
|
extern _TMR3L
|
|
extern _TMR3H
|
|
extern _CMCON
|
|
extern _CVRCON
|
|
extern _CCP1AS
|
|
extern _ECCP1AS
|
|
extern _CCP1DEL
|
|
extern _ECCP1DEL
|
|
extern _BAUDCON
|
|
extern _BAUDCTL
|
|
extern _CCP2CON
|
|
extern _CCPR2
|
|
extern _CCPR2L
|
|
extern _CCPR2H
|
|
extern _CCP1CON
|
|
extern _ECCP1CON
|
|
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 _TMR1
|
|
extern _TMR1L
|
|
extern _TMR1H
|
|
extern _RCON
|
|
extern _WDTCON
|
|
extern _HLVDCON
|
|
extern _LVDCON
|
|
extern _OSCCON
|
|
extern _T0CON
|
|
extern _TMR0
|
|
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 _delay1ktcy
|
|
|
|
;--------------------------------------------------------
|
|
; Equates to used internal registers
|
|
;--------------------------------------------------------
|
|
STATUS equ 0xfd8
|
|
PCLATH equ 0xffa
|
|
WREG equ 0xfe8
|
|
TBLPTRL equ 0xff6
|
|
TBLPTRH equ 0xff7
|
|
FSR1L equ 0xfe1
|
|
FSR2L equ 0xfd9
|
|
POSTINC1 equ 0xfe6
|
|
POSTDEC1 equ 0xfe5
|
|
PREINC1 equ 0xfe4
|
|
PLUSW2 equ 0xfdb
|
|
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
|
|
|
|
|
|
ustat_main_00 udata 0X07FF
|
|
_sram_end res 0
|
|
|
|
;--------------------------------------------------------
|
|
; interrupt vector
|
|
;--------------------------------------------------------
|
|
|
|
;--------------------------------------------------------
|
|
; global & static initialisations
|
|
;--------------------------------------------------------
|
|
; I code from now on!
|
|
; ; Starting pCode block
|
|
S_main__main code
|
|
_main:
|
|
; .line 72; main.c OSCCON=0x72; // Select internal oscillator with frequency = 8MHz
|
|
MOVLW 0x72
|
|
MOVWF _OSCCON
|
|
; .line 73; main.c LCD_Initialize();
|
|
CALL _LCD_Initialize
|
|
; .line 74; main.c LCDPutStr(" Hello World!"); //Display String "Hello World"
|
|
MOVLW UPPER(___str_0)
|
|
MOVWF r0x02
|
|
MOVLW HIGH(___str_0)
|
|
MOVWF r0x01
|
|
MOVLW LOW(___str_0)
|
|
MOVWF r0x00
|
|
MOVF r0x02, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x00, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutStr
|
|
MOVLW 0x03
|
|
ADDWF FSR1L, F
|
|
; .line 75; main.c LCDGoto(8,1); //Go to column 8 of second line
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
MOVLW 0x08
|
|
MOVWF POSTDEC1
|
|
CALL _LCDGoto
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 76; main.c LCDPutChar('1'); //Display character '1'
|
|
MOVLW 0x31
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutChar
|
|
MOVF POSTINC1, F
|
|
; .line 77; main.c DisplayClr(); // Clear the display
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 79; main.c LCDPutStr(" LCD Display"); // Dispay a string "LCD Display"
|
|
MOVLW UPPER(___str_1)
|
|
MOVWF r0x02
|
|
MOVLW HIGH(___str_1)
|
|
MOVWF r0x01
|
|
MOVLW LOW(___str_1)
|
|
MOVWF r0x00
|
|
MOVF r0x02, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x00, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutStr
|
|
MOVLW 0x03
|
|
ADDWF FSR1L, F
|
|
; .line 80; main.c LCDGoto(0,1); //Go to second line
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
MOVLW 0x00
|
|
MOVWF POSTDEC1
|
|
CALL _LCDGoto
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 81; main.c LCDPutStr("Micro Lab"); //Display String "Micro Lab"
|
|
MOVLW UPPER(___str_2)
|
|
MOVWF r0x02
|
|
MOVLW HIGH(___str_2)
|
|
MOVWF r0x01
|
|
MOVLW LOW(___str_2)
|
|
MOVWF r0x00
|
|
MOVF r0x02, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
MOVF r0x00, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutStr
|
|
MOVLW 0x03
|
|
ADDWF FSR1L, F
|
|
_00106_DS_:
|
|
; .line 82; main.c while (1)
|
|
BRA _00106_DS_
|
|
; .line 87; main.c }
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCDGoto code
|
|
_LCDGoto:
|
|
; .line 191; main.c void LCDGoto(char pos,char ln)
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
MOVFF r0x00, POSTDEC1
|
|
MOVFF r0x01, POSTDEC1
|
|
MOVFF r0x02, POSTDEC1
|
|
MOVLW 0x02
|
|
MOVFF PLUSW2, r0x00
|
|
MOVLW 0x03
|
|
MOVFF PLUSW2, r0x01
|
|
; .line 194; main.c if ((ln > (NB_LINES-1)) || (pos > (NB_COL-1)))
|
|
MOVF r0x01, W
|
|
MOVWF r0x02
|
|
MOVF r0x02, W
|
|
ADDLW 0x80
|
|
ADDLW 0x7e
|
|
BC _00141_DS_
|
|
MOVLW 0x10
|
|
SUBWF r0x00, W
|
|
BNC _00142_DS_
|
|
_00141_DS_:
|
|
; .line 197; main.c return;
|
|
BRA _00144_DS_
|
|
_00142_DS_:
|
|
; .line 201; main.c LCDPutCmd((ln == 1) ? (0xC0 | pos) : (0x80 | pos));
|
|
MOVF r0x01, W
|
|
XORLW 0x01
|
|
BNZ _00146_DS_
|
|
MOVLW 0xc0
|
|
IORWF r0x00, W
|
|
MOVWF r0x01
|
|
BRA _00147_DS_
|
|
_00146_DS_:
|
|
MOVLW 0x80
|
|
IORWF r0x00, W
|
|
MOVWF r0x01
|
|
_00147_DS_:
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 204; main.c delay1ktcy(LCD_delay);
|
|
MOVLW 0x05
|
|
CALL _delay1ktcy
|
|
_00144_DS_:
|
|
; .line 205; main.c }
|
|
MOVFF PREINC1, r0x02
|
|
MOVFF PREINC1, r0x01
|
|
MOVFF PREINC1, r0x00
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCDPutStr code
|
|
_LCDPutStr:
|
|
; .line 178; main.c void LCDPutStr(const char *str)
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
MOVFF r0x00, POSTDEC1
|
|
MOVFF r0x01, POSTDEC1
|
|
MOVFF r0x02, POSTDEC1
|
|
MOVFF r0x03, POSTDEC1
|
|
MOVFF r0x04, POSTDEC1
|
|
MOVFF r0x05, POSTDEC1
|
|
MOVFF r0x06, POSTDEC1
|
|
MOVLW 0x02
|
|
MOVFF PLUSW2, r0x00
|
|
MOVLW 0x03
|
|
MOVFF PLUSW2, r0x01
|
|
MOVLW 0x04
|
|
MOVFF PLUSW2, r0x02
|
|
; .line 183; main.c while (str[i])
|
|
CLRF r0x03
|
|
_00133_DS_:
|
|
MOVF r0x03, W
|
|
ADDWF r0x00, W
|
|
MOVWF r0x04
|
|
CLRF WREG
|
|
ADDWFC r0x01, W
|
|
MOVWF r0x05
|
|
CLRF WREG
|
|
ADDWFC r0x02, W
|
|
MOVWF r0x06
|
|
MOVFF r0x04, TBLPTRL
|
|
MOVFF r0x05, TBLPTRH
|
|
MOVFF r0x06, PCLATH
|
|
CALL __gptrload
|
|
CALL __gptrget1
|
|
MOVWF r0x04
|
|
MOVF r0x04, W
|
|
BZ _00136_DS_
|
|
; .line 186; main.c LCDPutChar(str[i++]);
|
|
MOVF r0x03, W
|
|
ADDWF r0x00, W
|
|
MOVWF r0x04
|
|
CLRF WREG
|
|
ADDWFC r0x01, W
|
|
MOVWF r0x05
|
|
CLRF WREG
|
|
ADDWFC r0x02, W
|
|
MOVWF r0x06
|
|
INCF r0x03, F
|
|
MOVFF r0x04, TBLPTRL
|
|
MOVFF r0x05, TBLPTRH
|
|
MOVFF r0x06, PCLATH
|
|
CALL __gptrload
|
|
CALL __gptrget1
|
|
MOVWF r0x04
|
|
MOVF r0x04, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutChar
|
|
MOVF POSTINC1, F
|
|
BRA _00133_DS_
|
|
_00136_DS_:
|
|
; .line 189; main.c }
|
|
MOVFF PREINC1, r0x06
|
|
MOVFF PREINC1, r0x05
|
|
MOVFF PREINC1, r0x04
|
|
MOVFF PREINC1, r0x03
|
|
MOVFF PREINC1, r0x02
|
|
MOVFF PREINC1, r0x01
|
|
MOVFF PREINC1, r0x00
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCDPutCmd code
|
|
_LCDPutCmd:
|
|
; .line 161; main.c void LCDPutCmd(char ch)
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
MOVFF r0x00, POSTDEC1
|
|
MOVFF r0x01, POSTDEC1
|
|
MOVLW 0x02
|
|
MOVFF PLUSW2, r0x00
|
|
; .line 163; main.c delay1ktcy(LCD_delay);
|
|
MOVLW 0x05
|
|
CALL _delay1ktcy
|
|
; .line 166; main.c LCDWriteNibble(ch,instr);
|
|
MOVLW 0x00
|
|
MOVWF POSTDEC1
|
|
MOVF r0x00, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDWriteNibble
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 169; main.c ch = (ch << 4);
|
|
SWAPF r0x00, W
|
|
ANDLW 0xf0
|
|
MOVWF r0x01
|
|
; .line 171; main.c delay1ktcy(1);
|
|
MOVLW 0x01
|
|
CALL _delay1ktcy
|
|
; .line 174; main.c LCDWriteNibble(ch,instr);
|
|
MOVLW 0x00
|
|
MOVWF POSTDEC1
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDWriteNibble
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 175; main.c }
|
|
MOVFF PREINC1, r0x01
|
|
MOVFF PREINC1, r0x00
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCDPutChar code
|
|
_LCDPutChar:
|
|
; .line 146; main.c void LCDPutChar(char ch)
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
MOVFF r0x00, POSTDEC1
|
|
MOVFF r0x01, POSTDEC1
|
|
MOVLW 0x02
|
|
MOVFF PLUSW2, r0x00
|
|
; .line 148; main.c delay1ktcy(LCD_delay);
|
|
MOVLW 0x05
|
|
CALL _delay1ktcy
|
|
; .line 151; main.c LCDWriteNibble(ch,data);
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
MOVF r0x00, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDWriteNibble
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 154; main.c ch = (ch << 4);
|
|
SWAPF r0x00, W
|
|
ANDLW 0xf0
|
|
MOVWF r0x01
|
|
; .line 157; main.c LCDWriteNibble(ch,data);
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
MOVF r0x01, W
|
|
MOVWF POSTDEC1
|
|
CALL _LCDWriteNibble
|
|
MOVF POSTINC1, F
|
|
MOVF POSTINC1, F
|
|
; .line 158; main.c }
|
|
MOVFF PREINC1, r0x01
|
|
MOVFF PREINC1, r0x00
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCDWriteNibble code
|
|
_LCDWriteNibble:
|
|
; .line 119; main.c void LCDWriteNibble(char ch, char rs)
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
MOVFF r0x00, POSTDEC1
|
|
MOVFF r0x01, POSTDEC1
|
|
MOVFF r0x02, POSTDEC1
|
|
MOVLW 0x02
|
|
MOVFF PLUSW2, r0x00
|
|
MOVLW 0x03
|
|
MOVFF PLUSW2, r0x01
|
|
; .line 122; main.c ch = (ch >> 4);
|
|
SWAPF r0x00, W
|
|
ANDLW 0x0f
|
|
MOVWF r0x00
|
|
; .line 125; main.c ch = (ch & 0x0F);
|
|
MOVLW 0x0f
|
|
ANDWF r0x00, F
|
|
; .line 128; main.c LCD_PORT = (LCD_PORT & 0xF0);
|
|
MOVFF _PORTD, r0x02
|
|
MOVLW 0xf0
|
|
ANDWF r0x02, W
|
|
MOVWF _PORTD
|
|
; .line 131; main.c LCD_PORT = (LCD_PORT | ch);
|
|
MOVF r0x00, W
|
|
IORWF _PORTD, F
|
|
; .line 134; main.c LCD_RS = rs;
|
|
MOVF r0x01, W
|
|
ANDLW 0x01
|
|
SWAPF WREG, W
|
|
MOVWF PRODH
|
|
MOVF _PORTDbits, W
|
|
ANDLW 0xef
|
|
IORWF PRODH, W
|
|
MOVWF _PORTDbits
|
|
; .line 137; main.c LCD_RW = 0;
|
|
BCF _PORTDbits, 5
|
|
; .line 140; main.c LCD_EN = 1;
|
|
BSF _PORTDbits, 6
|
|
; .line 143; main.c LCD_EN = 0;
|
|
BCF _PORTDbits, 6
|
|
; .line 144; main.c }
|
|
MOVFF PREINC1, r0x02
|
|
MOVFF PREINC1, r0x01
|
|
MOVFF PREINC1, r0x00
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
S_main__LCD_Initialize code
|
|
_LCD_Initialize:
|
|
; .line 89; main.c void LCD_Initialize()
|
|
MOVFF FSR2L, POSTDEC1
|
|
MOVFF FSR1L, FSR2L
|
|
; .line 92; main.c LCD_PORT = 0;
|
|
CLRF _PORTD
|
|
; .line 94; main.c TRISD = 0x00;
|
|
CLRF _TRISD
|
|
; .line 97; main.c LCD_PWR = 1;
|
|
BSF _PORTDbits, 7
|
|
; .line 100; main.c delay1ktcy(LCD_Startup);
|
|
MOVLW 0x0f
|
|
CALL _delay1ktcy
|
|
; .line 103; main.c LCDPutCmd(0x32);
|
|
MOVLW 0x32
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 106; main.c LCDPutCmd(FUNCTION_SET);
|
|
MOVLW 0x28
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 109; main.c LCDPutCmd(DISPLAY_SETUP);
|
|
MOVLW 0x0c
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 111; main.c DisplayClr();
|
|
MOVLW 0x01
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 114; main.c LCDPutCmd(ENTRY_MODE);
|
|
MOVLW 0x06
|
|
MOVWF POSTDEC1
|
|
CALL _LCDPutCmd
|
|
MOVF POSTINC1, F
|
|
; .line 116; main.c }
|
|
MOVFF PREINC1, FSR2L
|
|
RETURN
|
|
|
|
; ; Starting pCode block
|
|
___str_0:
|
|
DB 0x20, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64
|
|
DB 0x21, 0x00
|
|
; ; Starting pCode block
|
|
___str_1:
|
|
DB 0x20, 0x4c, 0x43, 0x44, 0x20, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79
|
|
DB 0x00
|
|
; ; Starting pCode block
|
|
___str_2:
|
|
DB 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x20, 0x4c, 0x61, 0x62, 0x00
|
|
|
|
|
|
; Statistics:
|
|
; code size: 802 (0x0322) bytes ( 0.61%)
|
|
; 401 (0x0191) words
|
|
; udata size: 0 (0x0000) bytes ( 0.00%)
|
|
; access size: 7 (0x0007) bytes
|
|
|
|
|
|
end
|