À, có lẽ mình làm được rồi, các bạn xem hộ mình bài này có đúng không, hiển thị số 123 lên LCD từ R4 (giá trị từ 0- 255, sau khi tham khảo tut của bạn mafd_47, http://www.dientuvietnam.net/forums/...read.php?t=281 ). Mong các bạn giúp đỡ.
INCLUDE 89c51.mc
rs BIT P2.5
rw BIT P2.6
en BIT P2.7
bf BIT p0.7
lcd DATA p0
org 0000h
main:
ACALL lcd_init
MOV A,#82h
LCALL cmd
LCALL dis_str
DB "- T*D*T*T -",#99h
MOV A,#0C6h
LCALL cmd
MOV R4,#123
MOV A,R4
LCALL write_bcd
MOV A,R3
LCALL data_lcd
MOV A,R2
LCALL data_lcd
MOV A,R1
LCALL data_lcd
JMP $
write_bcd:
step1:
MOV B,#100
DIV AB
MOV R3,A
MOV A,B
MOV B,#10
DIV AB
MOV R2,A
MOV A,B
MOV R1,A
step2:
MOV A,R3
ADD A,#30h
MOV R3,A
MOV A,R2
ADD A,#30h
MOV R2,A
MOV A,R1
ADD A,#30h
MOV R1,A
RET
lcd_init:
MOV A,#38h
ACALL cmd
MOV A,#0Ch
ACALL cmd
MOV A,#01h
ACALL cmd
MOV A,#06h
ACALL cmd
RET
cmd:
ACALL check_bf
MOV lcd,a
CLR rs
CLR rw
SETB en
CLR en
RET
data_lcd:
ACALL check_bf
MOV lcd,A
SETB rs
CLR rw
SETB en
CLR en
RET
check_bf:
SETB bf
CLR rs
SETB rw
re_check:
CLR en
SETB en
JB bf,re_check
RET
dis_str:
POP dph
POP dpl
str_next1:
CLR A
MOVC A,@A+DPTR
CJNE A,#99h,ttt
JMP ret_str
ttt:
ACALL data_lcd
INC DPTR
JMP str_next1
ret_str:
MOV A,#01h
JMP @A+DPTR
Link down chương trình và mô phỏng (Proteus 7.5); http://www.dientuvietnam.net/forums/...read.php?t=281
INCLUDE 89c51.mc
rs BIT P2.5
rw BIT P2.6
en BIT P2.7
bf BIT p0.7
lcd DATA p0
org 0000h
main:
ACALL lcd_init
MOV A,#82h
LCALL cmd
LCALL dis_str
DB "- T*D*T*T -",#99h
MOV A,#0C6h
LCALL cmd
MOV R4,#123
MOV A,R4
LCALL write_bcd
MOV A,R3
LCALL data_lcd
MOV A,R2
LCALL data_lcd
MOV A,R1
LCALL data_lcd
JMP $
write_bcd:
step1:
MOV B,#100
DIV AB
MOV R3,A
MOV A,B
MOV B,#10
DIV AB
MOV R2,A
MOV A,B
MOV R1,A
step2:
MOV A,R3
ADD A,#30h
MOV R3,A
MOV A,R2
ADD A,#30h
MOV R2,A
MOV A,R1
ADD A,#30h
MOV R1,A
RET
lcd_init:
MOV A,#38h
ACALL cmd
MOV A,#0Ch
ACALL cmd
MOV A,#01h
ACALL cmd
MOV A,#06h
ACALL cmd
RET
cmd:
ACALL check_bf
MOV lcd,a
CLR rs
CLR rw
SETB en
CLR en
RET
data_lcd:
ACALL check_bf
MOV lcd,A
SETB rs
CLR rw
SETB en
CLR en
RET
check_bf:
SETB bf
CLR rs
SETB rw
re_check:
CLR en
SETB en
JB bf,re_check
RET
dis_str:
POP dph
POP dpl
str_next1:
CLR A
MOVC A,@A+DPTR
CJNE A,#99h,ttt
JMP ret_str
ttt:
ACALL data_lcd
INC DPTR
JMP str_next1
ret_str:
MOV A,#01h
JMP @A+DPTR
Link down chương trình và mô phỏng (Proteus 7.5); http://www.dientuvietnam.net/forums/...read.php?t=281
Comment