ORG 0000H
LJMP MAIN
ORG 0010H
RS BIT P2.0
RW BIT P2.1
EN BIT P2.2
MAIN: ;主函數
LCALL INIT ;初始化
B1:MOV R3,#00H
MOV R4,#00H
MOV R0,#80H
LCALL WRITE_COM
B2:MOV DPTR,#TABLE0
MOV A,R3
MOVC A,@A+DPTR
MOV R1,A
LCALL WRITE_DATE
;延時5毫秒
MOV R2,#05H
A5:LCALL DELAY_MS
DJNZ R2,A5
INC R3
CJNE R3,#09H,B2 ;TABLE0中只有9個字符
B3:MOV R0,#0C0H
LCALL WRITE_COM
B4:MOV DPTR,#TABLE1
MOV A,R4
MOVC A,@A+DPTR
MOV R1,A
LCALL WRITE_DATE
;延時5毫秒
MOV R2,#05H
A6:LCALL DELAY_MS
DJNZ R2,A6
INC R4 ;r4++
CJNE R4,#10H,B4 ;TABLE1中有16個字符
SJMP B1
;1602寫命令
WRITE_COM:
CLR RS
CLR RW
CLR EN
MOV P0,R0
MOV R2,#05H
A1: LCALL DELAY_MS
DJNZ R2,A1
SETB EN
MOV R2,#05H
A2: LCALL DELAY_MS
DJNZ R2,A2
CLR EN
RET
;1602寫數據
WRITE_DATE:
SETB RS
CLR RW
CLR EN
MOV P0,R1
MOV R2,#05H
A3: LCALL DELAY_MS
DJNZ R2,A1
SETB EN
MOV R2,#05H
A4: LCALL DELAY_MS
DJNZ R2,A2
CLR EN
RET
;1602初始化
INIT:
CLR EN
MOV R0,#38H
LCALL WRITE_COM
MOV R0,#0CH
LCALL WRITE_COM
MOV R0,#06H
LCALL WRITE_COM
MOV R0,#01H
LCALL WRITE_COM
RET
;/**************************************************************
;函數名稱:DELAY_MS
;函數功能:1毫秒延時
;**************************************************************/
DELAY_MS:
MOV R7,#1
D3: MOV R6,#250
D4: NOP
NOP
DJNZ R6,D4
DJNZ R7,D3
RET
TABLE0:DB "12345678:"
TABLE1:DB "87654321"
END
|