⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isd_rec.asm

📁 MCS-51单片机实验 39个实用实验和源码
💻 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 + -