📄 无线识别.asm
字号:
MOV R2,#6 ;写入汉字个数
MOV R4,#99H ;写入地址
MOV DPTR,#TABLE2 ;写"电子设计竞赛"
LCALL DISP
CLR YJCS
RET
;********显示收回数据***********************
XDISP: ACALL OFFDIS
MOV R2,#5 ;写入数据个数
MOV R4,#80H ;写入地址
MOV R0,#30H
ACALL DIS
ACALL YANSHI1
RET
;*******************************************
DISP: SETB YJCS
MOV A,#0F8H ;DDRAM
ACALL WRITE64
MOV A,R4 ;写入地址
ACALL WRITDAT
ACALL DELAY1
MOV R3,#0
ACALL FANHUI1
; MOV A,#0FAH ;写空位
; ACALL WRITE64
; MOV A,#20H
; ACALL WRITDAT
CLR YJCS
RET
;************************************
DIS: SETB YJCS
MOV A,#0F8H ;DDRAM
ACALL WRITE64
MOV A,R4 ;写入地址
ACALL WRITDAT
LLP: MOV A,#0FAH ;写一字节数据
ACALL WRITE64
MOV A,@R0
ACALL WRITDAT
ACALL DELAY1
INC R0
DJNZ R2,LLP
; MOV A,#0FAH ;写空位
; ACALL WRITE64
; MOV A,#20H
; ACALL WRITDAT
CLR YJCS
RET
;************************************
DELROW: SETB YJCS
MOV R2,#16
MOV A,#0F8H ;DDRAM
ACALL WRITE64
MOV A,R4 ;写入地址
ACALL WRITDAT
LWP: MOV A,#0FAH ;写一字节数据
ACALL WRITE64
MOV A,#20H
ACALL WRITDAT
ACALL DELAY1
DJNZ R2,LWP
CLR YJCS
RET
;************************************
DISPL: SETB CS
MOV A,#0F8H ;DDRAM
ACALL WRITE64
MOV A,R4 ;写入地址
ACALL WRITDAT
MOV A,#0FAH ;写一字节数据
ACALL WRITE64
MOV A,R3
ACALL WRITDAT
MOV A,#0FAH ;写空位
ACALL WRITE64
MOV A,#20H
ACALL WRITDAT
ACALL DELAY1
CLR CS
RET
;*************液晶初始化***************
STARYJ: MOV A,#0F8H ;写清零命令
ACALL WRITE64
LCALL YAN30
MOV A,#01H
ACALL WRITDAT
ACALL DELAY10
MOV A,#0F8H ;写地址归位命令
ACALL WRITE64
LCALL YAN30
MOV A,#02H
ACALL WRITDAT
ACALL DELAY10
MOV A,#0F8H ;写显示开
ACALL WRITE64
LCALL YAN20
MOV A,#0CH
ACALL WRITDAT
ACALL DELAY1
RET
;****************************************
OFFDIS: CLR YJCS
LCALL DELAY10
SETB YJCS
MOV A,#0F8H ;写清零命令
ACALL WRITE64
LCALL YAN30
MOV A,#01H
ACALL WRITDAT
ACALL DELAY10
; MOV A,#0F8H ;DDRAM
; ACALL WRITE64
; LCALL YAN20
; MOV A,#20H
; ACALL WRITDAT
; ACALL DELAY10
RET
;-------------------------------------------
DZGW: MOV A,#0F8H ;写地址归位命令
ACALL WRITE64
LCALL YAN30
MOV A,#02H
ACALL WRITDAT
ACALL DELAY10
RET
;-------写汉字----------------------
FANHUI1:MOV A,#0FAH ;写第一字节
ACALL WRITE64
LCALL YAN30
MOV A,R3
MOVC A,@A+DPTR
ACALL WRITDAT
LCALL YAN20
INC R3
MOV A,#0FAH ;写第二字节
ACALL WRITE64
LCALL YAN20
MOV A,R3
MOVC A,@A+DPTR
ACALL WRITDAT
INC R3
ACALL YAN20
DJNZ R2,FANHUI1
RET
;---------------------------------------
WD: MOV A,#0FCH
ACALL WRITE64
LCALL READ8
JB ACC.7,WD
RET
;---------------读忙闲标志位-----------------------
READ8: SETB YCLK ;读BF 子程序
MOV R7,#8
NBIT: CLR YCLK
NOP
NOP
SETB YCLK
MOV C,SID
RLC A
NOP
DJNZ R7,NBIT
RET
;--------------------------------------
WRITE64:SETB YCLK ;写显示命令指令子程序
MOV R7,#8
NEXTBIT:CLR YCLK
NOP
RLC A
MOV SID,C
SETB YCLK
NOP
DJNZ R7,NEXTBIT
RET
;-----------------------
WRITDAT: SETB YCLK ;写显示数据子程序
NOP
ACALL BANBYTE
ACALL SI0
ACALL BANBYTE
ACALL SI0
lcall yan30
RET
;-----------------------
BANBYTE:MOV R7,#4
NEXT1: CLR YCLK
NOP
RLC A
MOV SID,C
NOP
NOP
SETB YCLK
NOP
NOP
DJNZ R7,NEXT1
RET
;---------------------------
SI0: MOV R7,#4
CLR C
XXYY: CLR YCLK
NOP
MOV SID,C
NOP
SETB YCLK
NOP
NOP
DJNZ R7,XXYY
RET
;*********显示子程序结束******
DELAY1: PUSH 04H
PUSH 05H
MOV R5,#1 ;1ms延时 ;25
DE11: MOV R4,#125 ;10
DE12: DJNZ R4,DE12
DJNZ R5,DE11
POP 05H
POP 04H
RET
;**********************************
DELAY10: PUSH 04H
PUSH 05H
MOV R5,#5 ;10ms延时
DE8: MOV R4,#250
DE9: DJNZ R4,DE9
DJNZ R5,DE8
POP 05H
POP 04H
RET
;********* 延时30微秒 **********************************
YAN30: PUSH 01H
MOV R1,#10
Yk0: DJNZ R1,Yk0
POP 01H
RET
;********** 延时20毫秒 ************************
YAN20: PUSH 01H
MOV R1,#1
Y20: LCALL YAN01
DJNZ R1,Y20
POP 01H
RET
;***************************************************
;********** 延时20毫秒 ************************
YAN2: PUSH 01H
mov r2,#10
Y10: MOV R1,#20
Y21: LCALL YAN01
DJNZ R1,Y21
djnz r2,Y10
POP 01H
RET
;**************************************************
YAN50: PUSH 06H ;延时50us
MOV R6,#25
YY1: DJNZ R6,YY1
POP 06H
RET
;**************************************************
YAN8: PUSH 06H ;延时8us
MOV R6,#2
YY2: DJNZ R6,YY2
POP 06H
RET
;*************************************************
YANSHI1: push 01h
push 02h
push 03h
mov r1,#10 ;延时1.0s子程序
l31: mov r2,#200
l32: mov r3,#250
l33: nop
nop
djnz r3,l33
djnz r2,l32
djnz r1,l31
pop 03h
pop 02h
pop 01h
ret
;*******************************************************
YANSH05: push 01h
push 02h
push 03h
mov r1,#02h ;延时0.5s子程序
Jl31: mov r2,#250
Jl32: mov r3,#250
Jl33: nop
nop
djnz r3,Jl33
djnz r2,Jl32
djnz r1,Jl31
pop 03h
pop 02h
pop 01h
ret
;****************************************************
YANSH200: push 01h
push 02h
mov r1,#200 ;延时200ms子程序
l21: mov r2,#250
l22: nop
nop
djnz r2,l22
djnz r1,l21
pop 02h
pop 01h
ret
;****************************************************
YANSH10: push 01h
push 02h
mov r1,#20 ;延时10ms子程序
bl21: mov r2,#250
bl22: djnz r2,bl22
djnz r1,bl21
pop 02h
pop 01h
ret
;****************************************************
YAN01: push 01h
mov r1,#2 ;延时10us子程序
w22: djnz r1,w22
pop 01h
ret
;****************************************************
YAN1: push 01h
push 02h
mov r1,#1 ;延时1ms子程序
sl21: mov r2,#200
sl22: djnz r2,sl22
djnz r1,sl21
pop 02h
pop 01h
ret
;*********延时程序结束********
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -