Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

pic18f with lcd display

Status
Not open for further replies.

isabella

Junior Member level 3
Joined
Mar 23, 2012
Messages
31
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,523
Hi all, is there anybody that can give me an example of code to control and initialize an lcd display in assembler language.
 

Try this...!
Code:
;/////////////////////////////////////////////////////////////////////////////////

;/////////////////////////////////////////////////////////////////////////////////

	include "P18F4520.inc"
__HEAPSTART                      EQU	0x00000038 ; Start address of heap 
__HEAPEND                        EQU	0x000005FF ; End address of heap 
__div_16_1_00003_arg_a           EQU	0x00000029 ; bytes:2
__div_16_1_00003_arg_b           EQU	0x0000002B ; bytes:2
CompTempVarRet198                EQU	0x00000032 ; bytes:2
__div_16_1_00003_1_r             EQU	0x0000002F ; bytes:2
__div_16_1_00003_1_i             EQU	0x00000031 ; bytes:1
gbl_status                       EQU	0x00000FD8 ; bytes:1
gbl_prodl                        EQU	0x00000FF3 ; bytes:1
gbl_prodh                        EQU	0x00000FF4 ; bytes:1
gbl_16_LSR                       EQU	0x00000005 ; bytes:4
gbl_float_detect_tininess        EQU	0x0000001B ; bytes:1
gbl_float_rounding_mode          EQU	0x0000001C ; bytes:1
gbl_float_exception_flags        EQU	0x0000001D ; bytes:1
gbl_17_gbl_aSig                  EQU	0x00000009 ; bytes:4
gbl_17_gbl_bSig                  EQU	0x0000000D ; bytes:4
gbl_17_gbl_zSig                  EQU	0x00000011 ; bytes:4
gbl_17_gbl_aExp                  EQU	0x0000001E ; bytes:1
gbl_17_gbl_bExp                  EQU	0x0000001F ; bytes:1
gbl_17_gbl_zExp                  EQU	0x00000019 ; bytes:2
gbl_17_gbl_aSign                 EQU	0x00000020 ; bytes:1
gbl_17_gbl_bSign                 EQU	0x00000021 ; bytes:1
gbl_17_gbl_zSign                 EQU	0x00000022 ; bytes:1
gbl_17_gbl_zSigZero              EQU	0x00000023 ; bytes:1
gbl_17_gbl_ret                   EQU	0x00000015 ; bytes:4
gbl_porta                        EQU	0x00000F80 ; bytes:1
gbl_portb                        EQU	0x00000F81 ; bytes:1
gbl_portc                        EQU	0x00000F82 ; bytes:1
gbl_portd                        EQU	0x00000F83 ; bytes:1
gbl_porte                        EQU	0x00000F84 ; bytes:1
gbl_lata                         EQU	0x00000F89 ; bytes:1
gbl_latb                         EQU	0x00000F8A ; bytes:1
gbl_latc                         EQU	0x00000F8B ; bytes:1
gbl_latd                         EQU	0x00000F8C ; bytes:1
gbl_late                         EQU	0x00000F8D ; bytes:1
gbl_ddra                         EQU	0x00000F92 ; bytes:1
gbl_trisa                        EQU	0x00000F92 ; bytes:1
gbl_ddrb                         EQU	0x00000F93 ; bytes:1
gbl_trisb                        EQU	0x00000F93 ; bytes:1
gbl_ddrc                         EQU	0x00000F94 ; bytes:1
gbl_trisc                        EQU	0x00000F94 ; bytes:1
gbl_ddrd                         EQU	0x00000F95 ; bytes:1
gbl_trisd                        EQU	0x00000F95 ; bytes:1
gbl_ddre                         EQU	0x00000F96 ; bytes:1
gbl_trise                        EQU	0x00000F96 ; bytes:1
gbl_osctune                      EQU	0x00000F9B ; bytes:1
gbl_pie1                         EQU	0x00000F9D ; bytes:1
gbl_pir1                         EQU	0x00000F9E ; bytes:1
gbl_ipr1                         EQU	0x00000F9F ; bytes:1
gbl_pie2                         EQU	0x00000FA0 ; bytes:1
gbl_pir2                         EQU	0x00000FA1 ; bytes:1
gbl_ipr2                         EQU	0x00000FA2 ; bytes:1
gbl_eecon1                       EQU	0x00000FA6 ; bytes:1
gbl_eecon2                       EQU	0x00000FA7 ; bytes:1
gbl_eedata                       EQU	0x00000FA8 ; bytes:1
gbl_eeadr                        EQU	0x00000FA9 ; bytes:1
gbl_rcsta                        EQU	0x00000FAB ; bytes:1
gbl_txsta                        EQU	0x00000FAC ; bytes:1
gbl_txreg                        EQU	0x00000FAD ; bytes:1
gbl_rcreg                        EQU	0x00000FAE ; bytes:1
gbl_spbrg                        EQU	0x00000FAF ; bytes:1
gbl_spbrgh                       EQU	0x00000FB0 ; bytes:1
gbl_t3con                        EQU	0x00000FB1 ; bytes:1
gbl_tmr3l                        EQU	0x00000FB2 ; bytes:1
gbl_tmr3h                        EQU	0x00000FB3 ; bytes:1
gbl_cmcon                        EQU	0x00000FB4 ; bytes:1
gbl_cvrcon                       EQU	0x00000FB5 ; bytes:1
gbl_eccp1as                      EQU	0x00000FB6 ; bytes:1
gbl_pwm1con                      EQU	0x00000FB7 ; bytes:1
gbl_baudcon                      EQU	0x00000FB8 ; bytes:1
gbl_baudctl                      EQU	0x00000FB8 ; bytes:1
gbl_ccp2con                      EQU	0x00000FBA ; bytes:1
gbl_ccpr2                        EQU	0x00000FBB ; bytes:1
gbl_ccpr2l                       EQU	0x00000FBB ; bytes:1
gbl_ccpr2h                       EQU	0x00000FBC ; bytes:1
gbl_ccp1con                      EQU	0x00000FBD ; bytes:1
gbl_ccpr1                        EQU	0x00000FBE ; bytes:1
gbl_ccpr1l                       EQU	0x00000FBE ; bytes:1
gbl_ccpr1h                       EQU	0x00000FBF ; bytes:1
gbl_adcon2                       EQU	0x00000FC0 ; bytes:1
gbl_adcon1                       EQU	0x00000FC1 ; bytes:1
gbl_adcon0                       EQU	0x00000FC2 ; bytes:1
gbl_adres                        EQU	0x00000FC3 ; bytes:1
gbl_adresl                       EQU	0x00000FC3 ; bytes:1
gbl_adresh                       EQU	0x00000FC4 ; bytes:1
gbl_sspcon2                      EQU	0x00000FC5 ; bytes:1
gbl_sspcon1                      EQU	0x00000FC6 ; bytes:1
gbl_sspstat                      EQU	0x00000FC7 ; bytes:1
gbl_sspadd                       EQU	0x00000FC8 ; bytes:1
gbl_sspbuf                       EQU	0x00000FC9 ; bytes:1
gbl_t2con                        EQU	0x00000FCA ; bytes:1
gbl_pr2                          EQU	0x00000FCB ; bytes:1
gbl_tmr2                         EQU	0x00000FCC ; bytes:1
gbl_t1con                        EQU	0x00000FCD ; bytes:1
gbl_tmr1l                        EQU	0x00000FCE ; bytes:1
gbl_tmr1h                        EQU	0x00000FCF ; bytes:1
gbl_rcon                         EQU	0x00000FD0 ; bytes:1
gbl_wdtcon                       EQU	0x00000FD1 ; bytes:1
gbl_hlvdcon                      EQU	0x00000FD2 ; bytes:1
gbl_lvdcon                       EQU	0x00000FD2 ; bytes:1
gbl_osccon                       EQU	0x00000FD3 ; bytes:1
gbl_t0con                        EQU	0x00000FD5 ; bytes:1
gbl_tmr0l                        EQU	0x00000FD6 ; bytes:1
gbl_tmr0h                        EQU	0x00000FD7 ; bytes:1
gbl_fsr2l                        EQU	0x00000FD9 ; bytes:1
gbl_fsr2h                        EQU	0x00000FDA ; bytes:1
gbl_plusw2                       EQU	0x00000FDB ; bytes:1
gbl_preinc2                      EQU	0x00000FDC ; bytes:1
gbl_postdec2                     EQU	0x00000FDD ; bytes:1
gbl_postinc2                     EQU	0x00000FDE ; bytes:1
gbl_indf2                        EQU	0x00000FDF ; bytes:1
gbl_bsr                          EQU	0x00000FE0 ; bytes:1
gbl_fsr1l                        EQU	0x00000FE1 ; bytes:1
gbl_fsr1h                        EQU	0x00000FE2 ; bytes:1
gbl_plusw1                       EQU	0x00000FE3 ; bytes:1
gbl_preinc1                      EQU	0x00000FE4 ; bytes:1
gbl_postdec1                     EQU	0x00000FE5 ; bytes:1
gbl_postinc1                     EQU	0x00000FE6 ; bytes:1
gbl_indf1                        EQU	0x00000FE7 ; bytes:1
gbl_wreg                         EQU	0x00000FE8 ; bytes:1
gbl_fsr0l                        EQU	0x00000FE9 ; bytes:1
gbl_fsr0h                        EQU	0x00000FEA ; bytes:1
gbl_plusw0                       EQU	0x00000FEB ; bytes:1
gbl_preinc0                      EQU	0x00000FEC ; bytes:1
gbl_postdec0                     EQU	0x00000FED ; bytes:1
gbl_postinc0                     EQU	0x00000FEE ; bytes:1
gbl_indf0                        EQU	0x00000FEF ; bytes:1
gbl_intcon3                      EQU	0x00000FF0 ; bytes:1
gbl_intcon2                      EQU	0x00000FF1 ; bytes:1
gbl_intcon                       EQU	0x00000FF2 ; bytes:1
gbl_prod                         EQU	0x00000FF3 ; bytes:1
gbl_tablat                       EQU	0x00000FF5 ; bytes:1
gbl_tblptr                       EQU	0x00000FF6 ; bytes:1
gbl_tblptrl                      EQU	0x00000FF6 ; bytes:1
gbl_tblptrh                      EQU	0x00000FF7 ; bytes:1
gbl_tblptru                      EQU	0x00000FF8 ; bytes:1
gbl_pc                           EQU	0x00000FF9 ; bytes:1
gbl_pcl                          EQU	0x00000FF9 ; bytes:1
gbl_pclath                       EQU	0x00000FFA ; bytes:1
gbl_pclatu                       EQU	0x00000FFB ; bytes:1
gbl_stkptr                       EQU	0x00000FFC ; bytes:1
gbl_tos                          EQU	0x00000FFD ; bytes:1
gbl_tosl                         EQU	0x00000FFD ; bytes:1
gbl_tosh                         EQU	0x00000FFE ; bytes:1
gbl_tosu                         EQU	0x00000FFF ; bytes:1
Wdt_Delay__0003C_arg_delay       EQU	0x00000029 ; bytes:1
Wdt_Delay__0003C_1_i             EQU	0x0000002A ; bytes:1
FCD_LCDDis_0003D_arg_in          EQU	0x00000034 ; bytes:1
FCD_LCDDis_0003D_arg_mask        EQU	0x00000035 ; bytes:1
FCD_LCDDis_0003D_1_pt            EQU	0x00000036 ; bytes:1
FCD_LCDDis_00040_arg_Character   EQU	0x00000024 ; bytes:1
FCD_LCDDis_00041_arg_in          EQU	0x00000028 ; bytes:1
FCD_LCDDis_00042_arg_x           EQU	0x00000027 ; bytes:1
FCD_LCDDis_00042_arg_y           EQU	0x00000028 ; bytes:1
FCD_LCDDis_00043_arg_Number      EQU	0x00000024 ; bytes:2
FCD_LCDDis_00043_1_tmp_int       EQU	0x00000026 ; bytes:2
FCD_LCDDis_00043_1_tmp_byte      EQU	0x00000028 ; bytes:1
CompTempVar2182                  EQU	0x00000029 ; bytes:1
CompTempVar2185                  EQU	0x0000002D ; bytes:1
CompTempVar2188                  EQU	0x0000002D ; bytes:1
CompTempVar2189                  EQU	0x0000002E ; bytes:1
CompTempVar2192                  EQU	0x0000002D ; bytes:1
CompTempVar2193                  EQU	0x0000002E ; bytes:1
CompTempVar2194                  EQU	0x00000029 ; bytes:1
CompTempVar2196                  EQU	0x0000002D ; bytes:1
CompTempVar2197                  EQU	0x0000002E ; bytes:1
CompTempVar2198                  EQU	0x00000029 ; bytes:1
FCD_LCDDis_00044_arg_String      EQU	0x00000024 ; bytes:2
FCD_LCDDis_00044_arg_MSZ_String  EQU	0x00000032 ; bytes:1
FCD_LCDDis_00044_1_idx           EQU	0x00000033 ; bytes:1
FCD_LCDDis_00045_arg_Direction   EQU	0x00000024 ; bytes:1
FCD_LCDDis_00045_arg_Num_P_00046 EQU	0x00000025 ; bytes:1
FCD_LCDDis_00045_1_cmd           EQU	0x00000026 ; bytes:1
FCD_LCDDis_00045_1_count         EQU	0x00000027 ; bytes:1
FCD_LCDDis_00047_arg_Line        EQU	0x00000024 ; bytes:1
FCD_LCDDis_00047_1_count         EQU	0x00000025 ; bytes:1
FCD_LCDDis_00047_1_rowcount      EQU	0x00000026 ; bytes:1
CompTempVar2208                  EQU	0x00000026 ; bytes:12
delay_10us_00000_arg_del         EQU	0x00000037 ; bytes:1
delay_ms_00000_arg_del           EQU	0x0000002B ; bytes:1
Int1Context                      EQU	0x00000001 ; bytes:4
	ORG 0x00000000
	GOTO	_startup
	ORG 0x00000008
	GOTO	interrupt
	ORG 0x0000000C
delay_ms_00000
; { delay_ms ; function begin
	MOVF delay_ms_00000_arg_del, F
	NOP
	BNZ	label1
	RETURN
label1
	MOVLW 0xF5
label2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	ADDLW 0xFF
	BTFSS STATUS,Z
	BRA	label2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ delay_ms_00000_arg_del, F
	BRA	label1
	RETURN
; } delay_ms function end

	ORG 0x0000005C
delay_10us_00000
; { delay_10us ; function begin
	MOVF delay_10us_00000_arg_del, F
	NOP
	BNZ	label3
	RETURN
label3
	MOVLW 0x09
label4
	NOP
	ADDLW 0xFF
	BTFSS STATUS,Z
	BRA	label4
	NOP
	NOP
	DECFSZ delay_10us_00000_arg_del, F
	BRA	label3
	RETURN
; } delay_10us function end

	ORG 0x00000078
Wdt_Delay__0003C
; { Wdt_Delay_Ms ; function begin
	CLRF Wdt_Delay__0003C_1_i
label5
	MOVF Wdt_Delay__0003C_arg_delay, W
	CPFSLT Wdt_Delay__0003C_1_i
	RETURN
	CLRWDT
	MOVLW 0x01
	MOVWF delay_ms_00000_arg_del
	CALL delay_ms_00000
	INCF Wdt_Delay__0003C_1_i, F
	BRA	label5
; } Wdt_Delay_Ms function end

	ORG 0x0000008E
FCD_LCDDis_0003D
; { FCD_LCDDisplay0_RawSend ; function begin
	BCF gbl_portb,0
	BCF gbl_portb,1
	BCF gbl_portb,2
	BCF gbl_portb,3
	BCF gbl_portb,4
	BCF gbl_portb,5
	SWAPF FCD_LCDDis_0003D_arg_in, W
	ANDLW 0x0F
	MOVWF FCD_LCDDis_0003D_1_pt
	MOVLW 0x0F
	ANDWF FCD_LCDDis_0003D_1_pt, F
	BTFSC FCD_LCDDis_0003D_1_pt,0
	BSF gbl_portb,0
	BTFSC FCD_LCDDis_0003D_1_pt,1
	BSF gbl_portb,1
	BTFSC FCD_LCDDis_0003D_1_pt,2
	BSF gbl_portb,2
	BTFSC FCD_LCDDis_0003D_1_pt,3
	BSF gbl_portb,3
	MOVF FCD_LCDDis_0003D_arg_mask, F
	BTFSS STATUS,Z
	BSF gbl_portb,4
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	BSF gbl_portb,5
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	BCF gbl_portb,5
	MOVLW 0x0F
	ANDWF FCD_LCDDis_0003D_arg_in, W
	MOVWF FCD_LCDDis_0003D_1_pt
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	BCF gbl_portb,0
	BCF gbl_portb,1
	BCF gbl_portb,2
	BCF gbl_portb,3
	BCF gbl_portb,4
	BCF gbl_portb,5
	BTFSC FCD_LCDDis_0003D_1_pt,0
	BSF gbl_portb,0
	BTFSC FCD_LCDDis_0003D_1_pt,1
	BSF gbl_portb,1
	BTFSC FCD_LCDDis_0003D_1_pt,2
	BSF gbl_portb,2
	BTFSC FCD_LCDDis_0003D_1_pt,3
	BSF gbl_portb,3
	MOVF FCD_LCDDis_0003D_arg_mask, F
	BTFSS STATUS,Z
	BSF gbl_portb,4
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	BSF gbl_portb,5
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	BCF gbl_portb,5
	MOVLW 0x0A
	MOVWF delay_10us_00000_arg_del
	CALL delay_10us_00000
	RETURN
; } FCD_LCDDisplay0_RawSend function end

	ORG 0x0000011C
__div_16_1_00003
; { __div_16_16 ; function begin
	CLRF __div_16_1_00003_1_r
	CLRF __div_16_1_00003_1_r+D'1'
	CLRF CompTempVarRet198
	CLRF CompTempVarRet198+D'1'
	CLRF __div_16_1_00003_1_i
label6
	BTFSC __div_16_1_00003_1_i,4
	RETURN
	BCF STATUS,C
	RLCF CompTempVarRet198, F
	RLCF CompTempVarRet198+D'1', F
	RLCF __div_16_1_00003_arg_a, F
	RLCF __div_16_1_00003_arg_a+D'1', F
	RLCF __div_16_1_00003_1_r, F
	RLCF __div_16_1_00003_1_r+D'1', F
	MOVF __div_16_1_00003_arg_b, W
	SUBWF __div_16_1_00003_1_r, W
	MOVF __div_16_1_00003_arg_b+D'1', W
	CPFSEQ __div_16_1_00003_1_r+D'1'
	SUBWF __div_16_1_00003_1_r+D'1', W
	BNC	label7
	MOVF __div_16_1_00003_arg_b, W
	SUBWF __div_16_1_00003_1_r, F
	MOVF __div_16_1_00003_arg_b+D'1', W
	SUBWFB __div_16_1_00003_1_r+D'1', F
	BSF CompTempVarRet198,0
label7
	INCF __div_16_1_00003_1_i, F
	BRA	label6
; } __div_16_16 function end

	ORG 0x00000152
FCD_LCDDis_00042
; { FCD_LCDDisplay0_Cursor ; function begin
	MOVF FCD_LCDDis_00042_arg_y, F
	BNZ	label8
	MOVLW 0x80
	MOVWF FCD_LCDDis_00042_arg_y
	BRA	label9
label8
	MOVLW 0xC0
	MOVWF FCD_LCDDis_00042_arg_y
label9
	MOVF FCD_LCDDis_00042_arg_x, W
	ADDWF FCD_LCDDis_00042_arg_y, W
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	RETURN
; } FCD_LCDDisplay0_Cursor function end

	ORG 0x00000176
FCD_LCDDis_00041
; { FCD_LCDDisplay0_Command ; function begin
	MOVF FCD_LCDDis_00041_arg_in, W
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	RETURN
; } FCD_LCDDisplay0_Command function end

	ORG 0x0000018A
FCD_LCDDis_00047
; { FCD_LCDDisplay0_ClearLine ; function begin
	MOVLW 0x28
	MOVWF FCD_LCDDis_00047_1_rowcount
	CLRF FCD_LCDDis_00042_arg_x
	MOVF FCD_LCDDis_00047_arg_Line, W
	MOVWF FCD_LCDDis_00042_arg_y
	CALL FCD_LCDDis_00042
	CLRF FCD_LCDDis_00047_1_count
label10
	MOVF FCD_LCDDis_00047_1_rowcount, W
	CPFSLT FCD_LCDDis_00047_1_count
	BRA	label11
	MOVLW 0x20
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	INCF FCD_LCDDis_00047_1_count, F
	BRA	label10
label11
	CLRF FCD_LCDDis_00042_arg_x
	MOVF FCD_LCDDis_00047_arg_Line, W
	MOVWF FCD_LCDDis_00042_arg_y
	CALL FCD_LCDDis_00042
	RETURN
; } FCD_LCDDisplay0_ClearLine function end

	ORG 0x000001BC
FCD_LCDDis_00045
; { FCD_LCDDisplay0_ScrollDisplay ; function begin
	CLRF FCD_LCDDis_00045_1_cmd
	MOVF FCD_LCDDis_00045_arg_Direction, F
	BZ	label15
	MOVLW 0x6C
	CPFSEQ FCD_LCDDis_00045_arg_Direction
	BRA	label12
	BRA	label15
label12
	MOVLW 0x4C
	CPFSEQ FCD_LCDDis_00045_arg_Direction
	BRA	label13
	BRA	label15
label13
	DECF FCD_LCDDis_00045_arg_Direction, W
	BZ	label16
	MOVLW 0x72
	CPFSEQ FCD_LCDDis_00045_arg_Direction
	BRA	label14
	BRA	label16
label14
	MOVLW 0x52
	CPFSEQ FCD_LCDDis_00045_arg_Direction
	BRA	label17
	BRA	label16
label15
	MOVLW 0x18
	MOVWF FCD_LCDDis_00045_1_cmd
	BRA	label17
label16
	MOVLW 0x1C
	MOVWF FCD_LCDDis_00045_1_cmd
label17
	MOVF FCD_LCDDis_00045_1_cmd, F
	BTFSC STATUS,Z
	RETURN
	CLRF FCD_LCDDis_00045_1_count
label18
	MOVF FCD_LCDDis_00045_arg_Num_P_00046, W
	CPFSLT FCD_LCDDis_00045_1_count
	RETURN
	MOVF FCD_LCDDis_00045_1_cmd, W
	MOVWF FCD_LCDDis_00041_arg_in
	CALL FCD_LCDDis_00041
	INCF FCD_LCDDis_00045_1_count, F
	BRA	label18
; } FCD_LCDDisplay0_ScrollDisplay function end

	ORG 0x0000020A
FCD_LCDDis_00044
; { FCD_LCDDisplay0_PrintString ; function begin
	CLRF FCD_LCDDis_00044_1_idx
	CLRF FCD_LCDDis_00044_1_idx
label19
	MOVF FCD_LCDDis_00044_arg_MSZ_String, W
	CPFSLT FCD_LCDDis_00044_1_idx
	RETURN
	MOVF FCD_LCDDis_00044_arg_String+D'1', W
	MOVWF FSR0H
	MOVF FCD_LCDDis_00044_arg_String, W
	ADDWF FCD_LCDDis_00044_1_idx, W
	MOVWF FSR0L
	MOVF INDF0, F
	BTFSC STATUS,Z
	RETURN
	MOVF FCD_LCDDis_00044_arg_String+D'1', W
	MOVWF FSR0H
	MOVF FCD_LCDDis_00044_arg_String, W
	ADDWF FCD_LCDDis_00044_1_idx, W
	MOVWF FSR0L
	MOVF INDF0, W
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	INCF FCD_LCDDis_00044_1_idx, F
	BRA	label19
; } FCD_LCDDisplay0_PrintString function end

	ORG 0x0000023E
FCD_LCDDis_00043
; { FCD_LCDDisplay0_PrintNumber ; function begin
	BTFSS FCD_LCDDis_00043_arg_Number+D'1',7
	BRA	label20
	MOVLW 0x2D
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVF FCD_LCDDis_00043_arg_Number, W
	SUBLW 0x00
	MOVWF CompTempVar2182
	COMF FCD_LCDDis_00043_arg_Number+D'1', F
	BTFSC STATUS,C
	INCF FCD_LCDDis_00043_arg_Number+D'1', F
	MOVF CompTempVar2182, W
	MOVWF FCD_LCDDis_00043_arg_Number
label20
	MOVF FCD_LCDDis_00043_arg_Number, W
	MOVWF FCD_LCDDis_00043_1_tmp_int
	MOVF FCD_LCDDis_00043_arg_Number+D'1', W
	MOVWF FCD_LCDDis_00043_1_tmp_int+D'1'
	MOVF FCD_LCDDis_00043_arg_Number+D'1', W
	SUBLW 0x27
	BNZ	label21
	MOVF FCD_LCDDis_00043_arg_Number, W
	SUBLW 0x10
label21
	BNC	label22
	BNZ	label26
label22
	BTFSC FCD_LCDDis_00043_arg_Number+D'1',7
	BRA	label26
	CLRF CompTempVar2185
	MOVF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF __div_16_1_00003_arg_a
	MOVF FCD_LCDDis_00043_1_tmp_int+D'1', W
	MOVWF __div_16_1_00003_arg_a+D'1'
	BTFSS FCD_LCDDis_00043_1_tmp_int+D'1',7
	BRA	label23
	COMF __div_16_1_00003_arg_a, F
	COMF __div_16_1_00003_arg_a+D'1', F
	INCF __div_16_1_00003_arg_a, F
	BTFSC STATUS,Z
	INCF __div_16_1_00003_arg_a+D'1', F
	INCF CompTempVar2185, F
label23
	MOVLW 0x10
	MOVWF __div_16_1_00003_arg_b
	MOVLW 0x27
	MOVWF __div_16_1_00003_arg_b+D'1'
	CALL __div_16_1_00003
	MOVF CompTempVarRet198, W
	MOVWF FCD_LCDDis_00043_1_tmp_byte
	BTFSS CompTempVar2185,0
	BRA	label24
	COMF FCD_LCDDis_00043_1_tmp_byte, F
	INCF FCD_LCDDis_00043_1_tmp_byte, F
label24
	MOVF FCD_LCDDis_00043_1_tmp_byte, W
	ADDLW 0x30
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
label25
	MOVLW 0x00
	CPFSGT FCD_LCDDis_00043_1_tmp_byte
	BRA	label26
	MOVLW 0x10
	SUBWF FCD_LCDDis_00043_1_tmp_int, F
	MOVLW 0x27
	SUBWFB FCD_LCDDis_00043_1_tmp_int+D'1', F
	DECF FCD_LCDDis_00043_1_tmp_byte, F
	BRA	label25
label26
	MOVF FCD_LCDDis_00043_arg_Number+D'1', W
	SUBLW 0x03
	BNZ	label27
	MOVF FCD_LCDDis_00043_arg_Number, W
	SUBLW 0xE8
label27
	BNC	label28
	BNZ	label32
label28
	BTFSC FCD_LCDDis_00043_arg_Number+D'1',7
	BRA	label32
	CLRF CompTempVar2189
	MOVF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF __div_16_1_00003_arg_a
	MOVF FCD_LCDDis_00043_1_tmp_int+D'1', W
	MOVWF __div_16_1_00003_arg_a+D'1'
	BTFSS FCD_LCDDis_00043_1_tmp_int+D'1',7
	BRA	label29
	COMF __div_16_1_00003_arg_a, F
	COMF __div_16_1_00003_arg_a+D'1', F
	INCF __div_16_1_00003_arg_a, F
	BTFSC STATUS,Z
	INCF __div_16_1_00003_arg_a+D'1', F
	INCF CompTempVar2189, F
label29
	MOVLW 0xE8
	MOVWF __div_16_1_00003_arg_b
	MOVLW 0x03
	MOVWF __div_16_1_00003_arg_b+D'1'
	CALL __div_16_1_00003
	MOVF CompTempVarRet198, W
	MOVWF CompTempVar2188
	BTFSS CompTempVar2189,0
	BRA	label30
	COMF CompTempVar2188, F
	INCF CompTempVar2188, F
label30
	MOVF CompTempVar2188, W
	MOVWF FCD_LCDDis_00043_1_tmp_byte
	MOVF FCD_LCDDis_00043_1_tmp_byte, W
	ADDLW 0x30
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
label31
	MOVLW 0x00
	CPFSGT FCD_LCDDis_00043_1_tmp_byte
	BRA	label32
	MOVLW 0xE8
	SUBWF FCD_LCDDis_00043_1_tmp_int, F
	MOVLW 0x03
	SUBWFB FCD_LCDDis_00043_1_tmp_int+D'1', F
	DECF FCD_LCDDis_00043_1_tmp_byte, F
	BRA	label31
label32
	MOVF FCD_LCDDis_00043_arg_Number+D'1', W
	MOVLW 0x64
	BTFSC STATUS,Z
	CPFSLT FCD_LCDDis_00043_arg_Number
	BRA	label33
	BRA	label37
label33
	BTFSC FCD_LCDDis_00043_arg_Number+D'1',7
	BRA	label37
	CLRF CompTempVar2193
	MOVF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF __div_16_1_00003_arg_a
	MOVF FCD_LCDDis_00043_1_tmp_int+D'1', W
	MOVWF __div_16_1_00003_arg_a+D'1'
	BTFSS FCD_LCDDis_00043_1_tmp_int+D'1',7
	BRA	label34
	COMF __div_16_1_00003_arg_a, F
	COMF __div_16_1_00003_arg_a+D'1', F
	INCF __div_16_1_00003_arg_a, F
	BTFSC STATUS,Z
	INCF __div_16_1_00003_arg_a+D'1', F
	INCF CompTempVar2193, F
label34
	MOVLW 0x64
	MOVWF __div_16_1_00003_arg_b
	CLRF __div_16_1_00003_arg_b+D'1'
	CALL __div_16_1_00003
	MOVF CompTempVarRet198, W
	MOVWF CompTempVar2192
	BTFSS CompTempVar2193,0
	BRA	label35
	COMF CompTempVar2192, F
	INCF CompTempVar2192, F
label35
	MOVF CompTempVar2192, W
	MOVWF FCD_LCDDis_00043_1_tmp_byte
	MOVF FCD_LCDDis_00043_1_tmp_byte, W
	ADDLW 0x30
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
label36
	MOVLW 0x00
	CPFSGT FCD_LCDDis_00043_1_tmp_byte
	BRA	label37
	MOVLW 0x64
	SUBWF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF CompTempVar2194
	SUBWFB FCD_LCDDis_00043_1_tmp_int, W
	SUBLW 0x64
	SUBWF FCD_LCDDis_00043_1_tmp_int+D'1', F
	MOVF CompTempVar2194, W
	MOVWF FCD_LCDDis_00043_1_tmp_int
	DECF FCD_LCDDis_00043_1_tmp_byte, F
	BRA	label36
label37
	MOVF FCD_LCDDis_00043_arg_Number+D'1', W
	MOVLW 0x0A
	BTFSC STATUS,Z
	CPFSLT FCD_LCDDis_00043_arg_Number
	BRA	label38
	BRA	label42
label38
	BTFSC FCD_LCDDis_00043_arg_Number+D'1',7
	BRA	label42
	CLRF CompTempVar2197
	MOVF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF __div_16_1_00003_arg_a
	MOVF FCD_LCDDis_00043_1_tmp_int+D'1', W
	MOVWF __div_16_1_00003_arg_a+D'1'
	BTFSS FCD_LCDDis_00043_1_tmp_int+D'1',7
	BRA	label39
	COMF __div_16_1_00003_arg_a, F
	COMF __div_16_1_00003_arg_a+D'1', F
	INCF __div_16_1_00003_arg_a, F
	BTFSC STATUS,Z
	INCF __div_16_1_00003_arg_a+D'1', F
	INCF CompTempVar2197, F
label39
	MOVLW 0x0A
	MOVWF __div_16_1_00003_arg_b
	CLRF __div_16_1_00003_arg_b+D'1'
	CALL __div_16_1_00003
	MOVF CompTempVarRet198, W
	MOVWF CompTempVar2196
	BTFSS CompTempVar2197,0
	BRA	label40
	COMF CompTempVar2196, F
	INCF CompTempVar2196, F
label40
	MOVF CompTempVar2196, W
	MOVWF FCD_LCDDis_00043_1_tmp_byte
	MOVF FCD_LCDDis_00043_1_tmp_byte, W
	ADDLW 0x30
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
label41
	MOVLW 0x00
	CPFSGT FCD_LCDDis_00043_1_tmp_byte
	BRA	label42
	MOVLW 0x0A
	SUBWF FCD_LCDDis_00043_1_tmp_int, W
	MOVWF CompTempVar2198
	SUBWFB FCD_LCDDis_00043_1_tmp_int, W
	SUBLW 0x0A
	SUBWF FCD_LCDDis_00043_1_tmp_int+D'1', F
	MOVF CompTempVar2198, W
	MOVWF FCD_LCDDis_00043_1_tmp_int
	DECF FCD_LCDDis_00043_1_tmp_byte, F
	BRA	label41
label42
	MOVF FCD_LCDDis_00043_1_tmp_int, W
	ADDLW 0x30
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	RETURN
; } FCD_LCDDisplay0_PrintNumber function end

	ORG 0x0000041A
FCD_LCDDis_00040
; { FCD_LCDDisplay0_PrintASCII ; function begin
	MOVF FCD_LCDDis_00040_arg_Character, W
	MOVWF FCD_LCDDis_0003D_arg_in
	MOVLW 0x10
	MOVWF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	RETURN
; } FCD_LCDDisplay0_PrintASCII function end

	ORG 0x00000428
FCD_LCDDis_0003E
; { FCD_LCDDisplay0_Start ; function begin
	BCF gbl_trisb,0
	BCF gbl_trisb,1
	BCF gbl_trisb,2
	BCF gbl_trisb,3
	BCF gbl_trisb,4
	BCF gbl_trisb,5
	MOVLW 0x0C
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x33
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x33
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x32
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x2C
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x06
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x0C
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x01
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	MOVLW 0x02
	MOVWF FCD_LCDDis_0003D_arg_in
	CLRF FCD_LCDDis_0003D_arg_mask
	CALL FCD_LCDDis_0003D
	MOVLW 0x02
	MOVWF Wdt_Delay__0003C_arg_delay
	CALL Wdt_Delay__0003C
	RETURN
; } FCD_LCDDisplay0_Start function end

	ORG 0x000004CE
main
; { main ; function begin
	MOVLW 0x0F
	MOVWF gbl_adcon1
	CLRF gbl_trisb
	CLRF gbl_portb
label43
	CALL FCD_LCDDis_0003E
	MOVLW 0x14
	MOVWF FCD_LCDDis_00040_arg_Character
	CALL FCD_LCDDis_00040
	MOVLW 0x20
	MOVWF CompTempVar2208+D'5'
	MOVLW 0x44
	MOVWF CompTempVar2208+D'10'
	MOVLW 0x45
	MOVWF CompTempVar2208+D'1'
	MOVLW 0x48
	MOVWF CompTempVar2208
	MOVLW 0x4C
	MOVWF CompTempVar2208+D'2'
	MOVWF CompTempVar2208+D'3'
	MOVWF CompTempVar2208+D'9'
	MOVLW 0x4F
	MOVWF CompTempVar2208+D'4'
	MOVWF CompTempVar2208+D'7'
	MOVLW 0x52
	MOVWF CompTempVar2208+D'8'
	MOVLW 0x57
	MOVWF CompTempVar2208+D'6'
	CLRF CompTempVar2208+D'11'
	MOVLW HIGH(CompTempVar2208+D'0')
	MOVWF FCD_LCDDis_00044_arg_String+D'1'
	MOVLW LOW(CompTempVar2208+D'0')
	MOVWF FCD_LCDDis_00044_arg_String
	MOVLW 0x0B
	MOVWF FCD_LCDDis_00044_arg_MSZ_String
	CALL FCD_LCDDis_00044
	MOVLW 0x02
	MOVWF FCD_LCDDis_00045_arg_Direction
	MOVWF FCD_LCDDis_00045_arg_Num_P_00046
	CALL FCD_LCDDis_00045
	MOVLW 0xD2
	MOVWF FCD_LCDDis_00043_arg_Number
	MOVLW 0x04
	MOVWF FCD_LCDDis_00043_arg_Number+D'1'
	CALL FCD_LCDDis_00043
	MOVLW 0x01
	MOVWF FCD_LCDDis_00047_arg_Line
	CALL FCD_LCDDis_00047
	MOVLW 0x32
	MOVWF delay_ms_00000_arg_del
	CALL delay_ms_00000
	BRA	label43
; } main function end

	ORG 0x00000542
_startup
	MOVLW 0xD5
	MOVWF gbl_16_LSR
	MOVLW 0xC4
	MOVWF gbl_16_LSR+D'1'
	MOVLW 0xBB
	MOVWF gbl_16_LSR+D'2'
	MOVLW 0xDC
	MOVWF gbl_16_LSR+D'3'
	CLRF gbl_17_gbl_aSig
	CLRF gbl_17_gbl_aSig+D'1'
	CLRF gbl_17_gbl_aSig+D'2'
	CLRF gbl_17_gbl_aSig+D'3'
	CLRF gbl_17_gbl_bSig
	CLRF gbl_17_gbl_bSig+D'1'
	CLRF gbl_17_gbl_bSig+D'2'
	CLRF gbl_17_gbl_bSig+D'3'
	CLRF gbl_17_gbl_zSig
	CLRF gbl_17_gbl_zSig+D'1'
	CLRF gbl_17_gbl_zSig+D'2'
	CLRF gbl_17_gbl_zSig+D'3'
	CLRF gbl_17_gbl_aExp
	CLRF gbl_17_gbl_bExp
	CLRF gbl_17_gbl_zExp
	CLRF gbl_17_gbl_zExp+D'1'
	CLRF gbl_17_gbl_aSign
	CLRF gbl_17_gbl_bSign
	CLRF gbl_17_gbl_zSign
	CLRF gbl_17_gbl_zSigZero
	CLRF gbl_17_gbl_ret
	CLRF gbl_17_gbl_ret+D'1'
	CLRF gbl_17_gbl_ret+D'2'
	CLRF gbl_17_gbl_ret+D'3'
	CLRF gbl_float_rounding_mode
	CLRF gbl_float_exception_flags
	CLRF gbl_float_detect_tininess
	GOTO	main
	ORG 0x0000058C
interrupt
; { interrupt ; function begin
	MOVFF FSR0H,  Int1Context
	MOVFF FSR0L,  Int1Context+D'1'
	MOVFF PRODH,  Int1Context+D'2'
	MOVFF PRODL,  Int1Context+D'3'
	MOVFF Int1Context+D'3',  PRODL
	MOVFF Int1Context+D'2',  PRODH
	MOVFF Int1Context+D'1',  FSR0L
	MOVFF Int1Context,  FSR0H
	RETFIE 1
; } interrupt function end

	END
 

Hi,

Yes, I have some good code, but it would be better if I simulated it first if I knew what 18F chip your are using and what Port the lcd will be on.

I assume you have a standard 2x16 HD44780 compatible lcd ?

- - - Updated - - -

SRJTH.M1 Try this...!
[/QUOTE

What a wonderful example of lcd code for a beginner....
 

Hi,

Think you will have no trouble getting this Assembly code to work straight away..
 

Attachments

  • lcd18F.rar
    57.1 KB · Views: 48

SRJTH.M1 Try this...!

What a wonderful example of lcd code for a beginner....

I couldn't agree more.

An absolute lack of any meaningful comments, except for these ridiculous examples:

Code:
; { FCD_LCDDisplay0_ScrollDisplay ; function begin

; } FCD_LCDDisplay0_ScrollDisplay function end

Also the code comes complete with my pet peeve, labels in the form:

Code:
labelxx

I mean why bother typing out the word "label" they would have been just as effective in the form:

Code:
lxx

or

Code:
axx

And you have to love EQUs like:

Code:
FCD_LCDDis_00044_arg_String      EQU	0x00000024 ; bytes:2
FCD_LCDDis_00044_arg_MSZ_String  EQU	0x00000032 ; bytes:1
FCD_LCDDis_00044_1_idx           EQU	0x00000033 ; bytes:1
FCD_LCDDis_00045_arg_Direction   EQU	0x00000024 ; bytes:1
FCD_LCDDis_00045_arg_Num_P_00046 EQU	0x00000025 ; bytes:1
FCD_LCDDis_00045_1_cmd           EQU	0x00000026 ; bytes:1
FCD_LCDDis_00045_1_count         EQU	0x00000027 ; bytes:1
FCD_LCDDis_00047_arg_Line        EQU	0x00000024 ; bytes:1
FCD_LCDDis_00047_1_count         EQU	0x00000025 ; bytes:1
FCD_LCDDis_00047_1_rowcount      EQU	0x00000026 ; bytes:1
CompTempVar2208                  EQU	0x00000026 ; bytes:12
delay_10us_00000_arg_del         EQU	0x00000037 ; bytes:1
delay_ms_00000_arg_del           EQU	0x0000002B ; bytes:1


Frankly, it looks like someone disassembled a hex file containing compiled C routines for an LCD interface.

Especially with names like FCD_LCDDis_00047_1_rowcount. :shock:


BigDog
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top