📄 isd_rec.asm
字号:
;FOR EAT598
CS273 EQU 0F200H
T_INIT EQU 30H ;延时时间的初值
TIME EQU 31H ;调用延时子程序的次数
REC EQU P1.0 ;录音控制
PLAYL EQU P1.1 ;电平放音控制
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
MOV DPTR,#CS273 ;74LS273的控制口
MOV R7,#00H ;0
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“0”
MOV R7,#04H ;1
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“1”
MOV R7,#08H ;2
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“2”
MOV R7,#0CH ;3
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“3”
MOV R7,#10H ;4
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“4”
MOV R7,#14H ;5
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“5”
MOV R7,#18H ;6
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“6”
MOV R7,#1CH ;7
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“7”
MOV R7,#20H ;8
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“8”
MOV R7,#24H ;9
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“9”
MOV R7,#28H ;10
LCALL RECORD
NOP ;设置断点处,按录音(REC)键,对着话筒说“十”
MOV R7,#2CH ;分钟
LCALL RECORD2
NOP ;设置断点处,按录音(REC)键,对着话筒说“分钟”
MOV R7,#34H ;总共
LCALL RECORD2
NOP ;设置断点处,按录音(REC)键,对着话筒说“总共”
SJMP $
RECORD:
MOV A,#0FFH ;送停止录放音码
MOVX @DPTR,A
MOV A,R7 ;录音控制码由R7 单元送入A
LCALL DELAY20 ;延时20MS
MOVX @DPTR,A
CLR REC
LCALL DELAY500 ;延时0.5S对麦克风发音录单字如:数字”1”,”2”
MOV A,#0FFH
MOVX @DPTR,A ;停止录音
SETB REC
RET
RECORD2:
MOV A,#0FFH ;送停止录放音码
MOVX @DPTR,A
MOV A,R7 ;录音控制码由R7单元送入A
LCALL DELAY20 ;延时20MS
MOVX @DPTR,A
CLR REC
LCALL DELAY500 ;延时0.5S对麦克风发音录单字如:数字”1”,”2”
LCALL DELAY500
MOV A,#0FFH
MOVX @DPTR,A ;停止录音
SETB REC
RET
DELAY:
PUSH TIME ;延时TIMER1*1 MS FOR 12MHZ
PUSH T_INIT
DELAY1:
MOV T_INIT,#250 ;循环一次需要4个机器周期,时间为4*1ΜS
DELAY2:
NOP ; 1个周期
NOP ; 1个周期
DJNZ T_INIT,DELAY2 ;2个周期
DJNZ TIME,DELAY1
POP T_INIT
POP TIME
RET
DELAY20: ; 延时20 MS
PUSH TIME
MOV TIME,#20
LCALL DELAY
LCALL DELAY
POP TIME
RET
DELAY500: ; 延时500 MS
PUSH TIME
MOV TIME,#250
LCALL DELAY
LCALL DELAY
POP TIME
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -