?? lcdclk.asm
字號:
org 0000h
ljmp main
org 000bh
ljmp ptf0
org 0040h
main: mov sp,#0efh
mov r1,#30h
mov 32h,#0ah
mov 35h,#0ah
mov r5,#0
mov r6,#0
mov r7,#0
mov r4,#20
mov th0,#3ch
mov tl0,#0b0h
mov tmod,#1
mov ie,#82h
mov ip,#2
key: lcall tran
lcall dis
lcall ccscan
jnz ink1
ljmp key
ink1: lcall tran
lcall dis
lcall dis
lcall ccscan
jz key
mov 45h,a
;lcall wait
lcall l0
cjne a,#0,a1
setb tr0
ljmp here
a1: cjne a,#1,a2
inc r5
cjne r5,#60,key
mov r5,#0
lcall tran
lcall dis
ljmp key
a2: cjne a,#2,a3
inc r6
cjne r6,#60,key
mov r6,#0
lcall tran
lcall dis
ljmp key
a3: cjne a,#3,key
inc r7
cjne r7,#24,key
mov r7,#0
lcall tran
lcall dis
ljmp key
here: lcall tran
lcall dis
ajmp here
ptf0: orl tl0,#0b0h
mov th0,#3ch
djnz r4,ptf0r
mov r4,#20
inc r5
cjne r5,#60,ptf0r
mov r5,#0
inc r6
cjne r6,#60,ptf0r
mov r6,#0
inc r7
cjne r7,#24,ptf0r
mov r7,#0
ptf0r:
reti
tran: mov b,#10
mov a,r5
div ab
mov 30h,b
mov b,#10
div ab
mov 31h,b
mov b,#10
mov a,r6
div ab
mov 33h,b
mov b,#10
div ab
mov 34h,b
mov b,#10
mov a,r7
div ab
mov 36h,b
mov b,#10
div ab
mov 37h,b
ret
;************************************************************
dis: push acc
mov r1,#37h
CALL Initial
MOV r3,#10000000B
loop: mov a,r3
CALL Write_instruction
MOV A,@r1
add a,#30h
CALL WriteLCDData
dec r1
inc r3
cjne r3,#10001000b,loop
pop acc
ret
;*****************************************************************
Initial:
MOV A,#00111000B
CALL Write_instruction
MOV A,#00001110B
CALL Write_instruction
MOV A,#00000110B
CALL Write_instruction
RET
;*****************************************************************
CheckBusy:
PUSH ACC
CheckBusyLoop:
CLR ENABLE
SETB R_W
CLR RS
SETB ENABLE
MOV A,DB0_DB7
CLR ENABLE
JB ACC.7,CheckBusyLoop
POP ACC
CALL DELAY
RET
;*****************************************************************
Write_instruction:
CALL CheckBusy
CLR ENABLE
CLR R_W
CLR RS
SETB ENABLE
MOV DB0_DB7,A
CLR ENABLE
RET
;*****************************************************************
WriteLCDData:
CALL CheckBusy
CLR ENABLE
CLR R_W
SETB RS
SETB ENABLE
MOV DB0_DB7,A
CLR ENABLE
RET
;*****************************************************************
DELAY:
MOV 40h,#5
D1: MOV 41h,#0ffh
DJNZ 41h,$
DJNZ 40h,D1
RET
CLS:
MOV A,#01H
CALL Write_instruction
RET
ccscan: mov a,p0
cpl a
ret
l0: mov a,45h
mov r2,#0
clr c
l1: rrc a
jc l2
inc r2
sjmp l1
l2: mov a,r2
ret
wait: lcall tran
lcall dis
lcall ccscan
jnz wait
ret
RS BIT P3.4
R_W BIT P3.5
ENABLE BIT P3.3
DB0_DB7 DATA P1
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -