当前位置:文档之家› 综合实验,数字录音机

综合实验,数字录音机

综合实验,数字录音机。

试验目的:了解数字录音技术的基本原理。

连接电路,MIC输入接ADC0809通道IN2,DAC0832输出接扬声器。

编程以每秒钟5000次的速率采集IN2输入的语音数据并存入内存,共采集60000个数据(录12秒),然后再以同样的速率将数据送DAC0832使扬声器放音。

其他要求见实验册P44。

程序如下:
DATA SEGMENT
ioport equ 0c000h-280h ;实验箱驱动默认中断地址为C000H,此处设置偏移量;8255A
ioport1 equ ioport+288h
ioport2 equ ioport+28bh
;8253
ioport3 equ ioport+280h
ioport4 equ ioport+283h
;ADC0809
ioport5 equ ioport+29ah
;DAC0832
ioport6 equ ioport+290h
ORG 1000H
REC DB 13,10,"Press any key to record.",13,10,'$'
PLY DB 13,10,"Press any key to play, SPACE to play again, else to exit.",13,10,'$'
DAT DB 60000 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
MOV AX,DATA
MOV DS,AX
LEA DX,REC ;打印录音提示
MOV AH,09H
INT 21H
MOV AL,0
CHK:MOV AH,0BH ;检测键盘按键
INT 21H
CMP AL,0FFH
JE NEXT
JMP CHK
NEXT:CALL MYRECORD ;调用录音子程序
LEA DX,PLY ;打印放音提示
MOV AH,09H
INT 21H
MOV AL,0
CHK1:MOV AH,0BH ;检测键盘按键INT 21H
CMP AL,0FFH
JE NEXT1
JMP CHK1
NEXT1:CALL PLAY ;调用放音子程序
MOV AL,0
CHK2:MOV AH,0BH ;检测键盘按键INT 21H
CMP AL,0FFH
JE NEXT2
JMP CHK2
NEXT2:MOV AH,07H ;检测空格键
INT 21H
CMP AL,20H
JE NEXT1
MOV AH,4CH
INT 21H
;============================== RET
START ENDP
DELAY PROC NEAR
;延时子程序
PUSH DX
PUSH AX
MOV DX,ioport4
MOV AL,00010000B
OUT DX,AL
MOV DX,ioport3
MOV AL,200
OUT DX,AL
MOV DX,ioport2
MOV AL,10010000B
OUT DX,AL
MOV DX,ioport1
MOV AL,0
CHKPA0:IN AL,DX
AND AL,1
CMP AL,1
JNE CHKPA0
POP AX
POP DX
RET
DELAY ENDP
MYRECORD PROC NEAR ;录音子程序
PUSH DI
PUSH CX
PUSH DX
PUSH AX
MOV DI,OFFSET DAT
MOV CX,60000
AD: MOV DX,ioport5
OUT DX,AL
CALL DELAY
IN AL,DX
MOV [DI],AL
INC DI
LOOP AD
POP AX
POP DX
POP CX
POP DI
RET
MYRECORD ENDP
PLAY PROC NEAR
;放音子程序
PUSH SI
PUSH CX
PUSH DX
PUSH AX
MOV SI,OFFSET DAT
MOV CX,60000
MOV DX,ioport6
DA: MOV AL,[SI]
OUT DX,AL
INC SI
CALL DELAY
LOOP DA
POP AX
POP DX
POP CX
POP SI
RET
PLAY ENDP
CODE ENDS
END STT
提示:这是我们《微型计算机原理与接口技术A》最后一次试验。

通过此次试验我们大致可以了解数字录音技术的原理。

通过全部试验应该掌握所学过的芯片的汇编编程控制,在编程中基本掌握相关的汇编语言,要更注意编程结构的整体流程,而不是细节,不要逮住一个延时子程序研究来研究去,知道整个子程序的入口出口参数以及能做什么就可以了。

个人认为,学习计算机程序语言最重要的是培养自己的编程思想,大学计算机相关专业程序设计课程教育最大的失误恐怕是取消BASIC的学习,认为没用就没有学习的价值,而恰恰相反,本人认为BASIC是最简单最易懂的程序语言,最容易培养编程思想和逻辑,BASIC 学习之后才应该按专业不同朝硬件和软件两个方向发展,如偏软件的继续学习VB,VC等等,偏硬件的继续学习C,汇编等等。

相关主题