📄 dtmfser.asm
字号:
E2 EQU P1.4
RS0 EQU P1.5
RW EQU P1.6
CS EQU P1.7
siod equ r5
sioc equ r7
org 0000h
ajmp CSH
org 0003h
reti
org 0023h
ajmp siodata
org 0030h
db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,41h,42h,43h,44h,45h,46h,56h,4eh,53h,27h,57h
org 0050h
CSH: mov r0,#00h
cs0: mov @r0,#00h
inc r0
cjne r0,#7fh,cs0
mov 81h,#70h
mov siod,#0ffh
acall siorw
cs1: mov a,siod
cjne a,#0ffh,cs3
jb p2.0,cs1
acall dtmff
cs2: jnb p2.0,cs2
AJMP CS1
cs3: mov siod,#0ffh
mov sbuf,#2ah
acall dtmff
cs4: acall dtmfs
ajmp cs1
dtmfs:
MOV P1,#28H ;A\
setb e2
MOV P1,#20H ;B\
setb e2
MOV P1,#20H ;A\
setb e2
MOV P1,#7FH
mov 68h,#00h
mov 69h,#80h
LOOP1: djnz 68h,loopx
djnz 69h,loopx
SETB CS
ret
loopx: SETB RS0
SETB RW
cpl p2.2
CLR E2
SETB E2
MOV A,P1
JNB ACC.2,LOOP1
CLR RS0
CLR E2
SETB E2
MOV A,P1
ANL A,#0FH
MOV P0,A
MOV DPTR,#0030H
MOVC A,@A+DPTR
mov SBUF,a
CPL P2.3
mov 68h,#00h
mov 69h,#80h
cjne A,#44h,loop1
SETB CS
RET
dtmff:
CLR p3.3
acall ltime
acall ltime
acall ltime
acall ltime
acall ltime
acall ltime
acall ltime
acall ltime
acall ltime
mov 10h,#36h
mov 11h,#36h
mov 12h,#36h
mov 13h,#36h
MOV P1,#28H
setb e2
MOV P1,#20H
setb e2
MOV P1,#21H
setb e2
mov r1,#10h
fsc: mov r3,#0ffh
fsd: mov b,@r1
inc r3
mov dptr,#0030h
mov a,r3
movc a,@a+dptr
cjne a,b,fsd
mov A,r3
ACALL DTMFFS
inc r1
cjne r1,#12h,fsc
SETB p3.3
SETB CS
ret
DTMFFS: ANL A,#0FH
MOV P1,A
SETB E2
MOV P1,#7FH
LOOP3: SETB RS0
SETB RW
CLR E2
SETB E2
MOV A,P1
JNB ACC.1,LOOP3
RET
time: mov 6fh,#00h
tm: djnz 6fh,tm
ret
LTIME: MOV 6EH,#45H
LTM: ACALL TIME
DJNZ 6EH,LTM
RET
SIORW: MOV TMOD,#20H
MOV TH1,#0faH
SETB TR1
MOV SCON,#50H
MOV IE,#90H
RET
SIODATA:jnb ti,sio
clr ti
clr 00h
reti
sio: mov siod,sbuf
clr ri
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -