📄 pro1.a51
字号:
COML EQU 20H ;16位命令的低字节存储单元
COMH EQU 21H ;16位命令的高字节存储单元
MISO EQU P1.0 ;主机输入,从设备输出信号
SS EQU P1.1 ;从设备片选信号
MOSI EQU P3.0 ;主机输出,从设备输入信号
SCLK EQU P3.1 ;从设备的时钟脉冲
ADDR EQU 8600H ;单片机读录放按钮状态度地址
ORG 0000H
LJMP MAIN
ORG 0400H
MAIN: MOV SP,#60H
;接下来是从指定的2个地址开始录2段语音,第一段录音不能超过30秒
MOV DPTR,#ADDR
RECP: MOVX A,@DPTR
JB ACC.1,RECP
CALL POWERUP
CALL POWERUP
CALL DEL25ms
CALL SETREC1
CALL REC
RECP2: MOVX A,@DPTR
JNB ACC.1,RECP2
CALL STOP
RECP3: MOVX A,@DPTR
JB ACC.1,RECP3
CALL POWERUP
CALL POWERUP
CALL DEL25ms
CALL SETREC2
CALL REC
RECP4: MOVX A,@DPTR
JNB ACC.1,RECP4
CALL STOP
PLYP1: MOV DPTR,#ADDR
PLYP11: MOVX A,@DPTR
JB ACC.0,PLYP11
CALL POWERUP
CALL SETPLY1
CALL PLAY
CALL DELAY
PLYP2: MOVX A,@DPTR
JB ACC.0,PLYP2
CALL POWERUP
CALL SETPLY2
CALL PLAY
CALL DELAY
SJMP PLYP1
SETREC1: MOV COMH,#0A4H
SJMP SETPLYA
SETREC2: MOV COMH,#0A5H
SJMP SETPLYA
SETPLY1: MOV COMH,#0E4H
SJMP SETPLYA
SETPLY2: MOV COMH,#0E5H
SJMP SETPLYA
SETPLYA: MOV COML,#00H
CALL COMM
RET
COMM: CLR SS
MOV A,COML
ACALL TRANSFE
MOV A,COMH
CALL TRANSFE
SETB SS
RET
PLAY: MOV A,#0F0H
CLR SS
CALL TRANSFE
SETB SS
RET
STOP: MOV A,#30H
CLR SS
CALL TRANSFE
SETB SS
RET
STOPPWD: MOV A,#10H
CLR SS
CALL TRANSFE
SETB SS
RET
REC: MOV A,#0B0H
CLR SS
CALL TRANSFE
SETB SS
RET
POWERUP: MOV A,#20H
CLR SS
CALL TRANSFE
SETB SS
CALL DEL25ms
RET
TRANSFE: MOV R7,#8
BITOUT: CLR SCLK
RRC A
MOV MOSI,C
SETB SCLK
DJNZ R7,BITOUT
RET
DELAY: MOV R0,#20
DELY0: MOV R7,#100
DELY1: MOV R6,#250
DJNZ R6,$
DJNZ R7,DELY1
DJNZ R0,DELY0
RET
DEL25ms: MOV R7,#25
DEL25: MOV R6,#250
DJNZ R6,$
DJNZ R7,DEL25
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -