📄 mai.asm
字号:
;AT89C51与ISD4004的接口及录音/放音程序设计
SS EQU P1.0 ;片选
SCLK EQU P1.1 ;ISD4004时钟
MOIS EQU P1.2 ;数据输入
MISO EQU P1.3 ;数据输出
INT EQU P1.4 ;中断
; ;初始化
ORG 0000H
LJMP MAIN
MAIN: Mov SP, #10H;
MOV P1,#0FFH
MOV P2,#0FFH;
MOV P3,#0FFH;
MOV P0,#0FFH;
CLR EA;
; SETB LED ;关指示灯
LCALL DSTOP ;ISD掉电
MISO: MOV 3AH,#200;
MOSI: JB AN,#MISO ;等按AN键
DJNZ 3AH, MOS1 ;
LCALL UP ;ISD上电
MOV 20H,#00H ;低8位地址
MOV 21H,#00H ;高8位地址
JB PR, REC ;PR=1 录音
LJMP PLAY ;PR=0 放音
SETREC: ;指定地址录音
MOV 20H,#00H ;低八为地址
MOV 21H,#00H ;高八位地址
MOV 22H,#0a0H ;操作码
MOV A,20H
LCALL ISDX
MOV A,21H
LCALL ISDX
MOV A,22H
LCALL ISDX
SETB SS
;REC 8位
;从当前地址录音 10110 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 >
REC1: MOV 36H,#10;
REC2:LCALL YS50 ;延时录音
DJNZ 36H,REC2 ;
MOV A,0B0H ; 发 1011 0XXX
LCALL ISDX;
SETB SS ;关片选
REC3: MOV 35H,#200;
REC4: JNB INT,REC7 ;OVF=0芯片溢出
JNB AN,REC3 ;
DJNZ 35H,REC4
LCALL STOPP ;停止当前操作
REC5: JNB STOP,REC6 ;中断RESET
JB AN,REC5 ;等待AN=0
LCALL STOPP ;停止当前操作
LJMP REC1;
REC6: CLR SCLK ;时钟SCLK=0
SETB SS ;关片选
LCALL STOPP ;停止当前操作
LJMP MAII ;
REC7: LCALL YS50 ;延时录音
JB AN,REC6 ;等待AN=1
DJNZ 36H,REC7 ;
SETPLAY: ;;恢付ǖ刂仿家
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -