mấy huynh ơi,kiểm tra giúp em đoạn code này có sai sót gì không?mấy nay em mô phỏng trên proteus nhưng không thấy hiển thị gì cả..em cũng đã sửa đi sửa lại theo nhiều cách mà vẫn không được.hiện giờ em đang bí...và cũng mong mấy huynh giải thích cho em hiểu đoạn mã tô màu...em xin cám ơn mấy huynh trước
;--------------------------------------------------------
;LCD 2hàng- 16 ký tự,D0- D7 nối vào P1 của 8951
Include reg_51.pdf
EN BIT P3.4
RS BIT P3.2
RW BIT P3.3
LAMP BIT P3.5
MAIN:
CLR LAMP ;BAT DEN BACKGROUND LCD
CLR RS ;DUA RS XUONG MUC 0
CLR RW ;DUA RW XUONG MUC 0
SETB EN
MOV TMOD,#01H
MOV TL0,#LOW(-50000)
MOV TH0,#HIGH(-50000) ;DALAY 50 MS
MOV P1,#38H ;DAT CHE DO 2 DONG
CALL GHILENH
MOV P1,#38H
CALL GHILENH
CALL DELAY
MOV P1,#0CH ;BAT HIEN THI
CALL GHILENH
MOV P1,#01H ;XOA MAN HINH
CALL GHILENH
CALL DONG01
CALL DONG02
sjmp $
WRITE:
PUSH ACC
WRITE1:
MOV A,#0
MOVC A,@A+DPTR
CJNE A,#2,WRITE_DATA
POP ACC
RET
WRITE_DATA:
MOV P1,A
CALL GHI_DATA
INC DPTR
SJMP WRITE1
DELAY:
CLR TF0
SETB TR0
JNB TF0,$
RET
;--------------------------------------------------------
DONG01:
MOV P1,#080H
CALL GHILENH
MOV P1,#080H
CALL GHILENH
MOV DPTR,#DT_DONG1
CALL WRITE
RET
;--------------------------------------------------------
DONG02:
MOV P1,#0C0H
CALL GHILENH
MOV P1,#0C0H
CALL GHILENH
MOV DPTR,#DT_DONG2
CALL WRITE
RET
GHILENH:
CLR RS
NOP
CLR RW
CLR EN
NOP
SETB EN
NOP
RET
GHI_DATA:
SETB RS
NOP
WAIT:
CLR RW
CLR EN
NOP
SETB EN
NOP
MOV P1,#0FFH
SETB RW
CLR RS
CLR EN
NOP
SETB EN
WAIT1:
NOP
MOV A,P1
ANL A,#80H
CJNE A,#00H,WAIT1
NOP
NOP
NOP
NOP
NOP
NOP
RET
;-----------------------------------
DT_DONG1:
DB 'K.DIEN-DIEN TU',02H
DT_DONG2:
DB 'PTN TDH-VDK',02H
END
;--------------------------------------------------------
;LCD 2hàng- 16 ký tự,D0- D7 nối vào P1 của 8951
Include reg_51.pdf
EN BIT P3.4
RS BIT P3.2
RW BIT P3.3
LAMP BIT P3.5
MAIN:
CLR LAMP ;BAT DEN BACKGROUND LCD
CLR RS ;DUA RS XUONG MUC 0
CLR RW ;DUA RW XUONG MUC 0
SETB EN
MOV TMOD,#01H
MOV TL0,#LOW(-50000)
MOV TH0,#HIGH(-50000) ;DALAY 50 MS
MOV P1,#38H ;DAT CHE DO 2 DONG
CALL GHILENH
MOV P1,#38H
CALL GHILENH
CALL DELAY
MOV P1,#0CH ;BAT HIEN THI
CALL GHILENH
MOV P1,#01H ;XOA MAN HINH
CALL GHILENH
CALL DONG01
CALL DONG02
sjmp $
WRITE:
PUSH ACC
WRITE1:
MOV A,#0
MOVC A,@A+DPTR
CJNE A,#2,WRITE_DATA
POP ACC
RET
WRITE_DATA:
MOV P1,A
CALL GHI_DATA
INC DPTR
SJMP WRITE1
DELAY:
CLR TF0
SETB TR0
JNB TF0,$
RET
;--------------------------------------------------------
DONG01:
MOV P1,#080H
CALL GHILENH
MOV P1,#080H
CALL GHILENH
MOV DPTR,#DT_DONG1
CALL WRITE
RET
;--------------------------------------------------------
DONG02:
MOV P1,#0C0H
CALL GHILENH
MOV P1,#0C0H
CALL GHILENH
MOV DPTR,#DT_DONG2
CALL WRITE
RET
GHILENH:
CLR RS
NOP
CLR RW
CLR EN
NOP
SETB EN
NOP
RET
GHI_DATA:
SETB RS
NOP
WAIT:
CLR RW
CLR EN
NOP
SETB EN
NOP
MOV P1,#0FFH
SETB RW
CLR RS
CLR EN
NOP
SETB EN
WAIT1:
NOP
MOV A,P1
ANL A,#80H
CJNE A,#00H,WAIT1
NOP
NOP
NOP
NOP
NOP
NOP
RET
;-----------------------------------
DT_DONG1:
DB 'K.DIEN-DIEN TU',02H
DT_DONG2:
DB 'PTN TDH-VDK',02H
END
Comment