In this experiment will be printed a sentence or word in a way to print character one at a time on the LCD screen by using a look up table
.include “m8535def.inc”
.org 0×0000
;
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16
;
ldi r16,0b11111111
out ddrc,r16
sbi ddrd,3;rs
sbi ddrd,4;en
;
rcall Init_LCD
;
start:
ldi r16,0×01
rcall write_inst
;
ldi zl,low(2*mystring)
ldi zh,high(2*mystring)
rcall line1
rcall write_msg
;
ldi zl,low(2*mystring2)
ldi zh,high(2*mystring2)
rcall line2
rcall write_msg
ending:
rjmp ending
;
write_msg:
loopchar:
lpm
mov r16,r0
cpi r16,0
brne write_char
ret
;
write_char:
rcall write_data
inc zl
rjmp loopchar
;
stop:rjmp stop
;
Init_LCD:
ldi r16,0b00000001
rcall write_inst
ldi r16,0b00111000
rcall write_inst
ldi r16,0b00001100
rcall write_inst
ldi r16,0b00000110
rcall write_inst
ret
;
write_inst:
cbi portd,3
Out portC,r16
sbi portd,4
rcall delay
cbi portd,4
ret
;
write_data:
sbi portd,3
Out portC,r16
sbi portd,4
rcall delay
cbi portd,4
ret
;
shift_left:
ldi r16,0×18
rcall write_inst
ret
;
shift_right:
ldi r16,0x1f
rcall write_inst
ret
;
line1:
ldi r16,0×80
rcall write_inst
ret
line2:
ldi r16,0xc0
rcall write_inst
ret
;
delay:
ldi R17, $0f
WGLOOP0: ldi R18, $0f
WGLOOP1: ldi R19, $10
WGLOOP2: dec R19
brne WGLOOP2
dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
ret
;
mystring:
.db ” Selamat Datang “,0
mystring2:
.db ” Poltekkes SBY “,0