广东速佑半导体有限公司 版权所有 粤ICP备20043378号
电话:0755-81796865 传真:0755-28171850 邮箱:stchip@stchip.com
广东速佑半导体有限公司
电 话:0755-81796865
400-160-3880
传 真:0755-28171850
手 机:13823368981
15889550163
Q Q:1321386535
邮 编:518109
Email:stchip@stchip.com
网 址:www.stchip.com
****************************************************
;http://www.stchip.com
;OTP语音芯片串行三线模式测试程序
;主芯片:MPC82L52(1T)
;工作频率:6MHz
;适用型号:SC5020,SC5040,SC5060,SC5080
;亿矽特科技 400-160-3880
;****************************************************
include "REG_MPC82L52.H"
sbit SC_DATA=P3^1; ;P3.1是脉冲数据脚
sbit SC_BUSY=P3^2; ;P3.2是放音BUSY脚
SP0 DATA 20H ;组合第1语音
SP1 DATA 21H ;组合第2语音
SP2 DATA 22H ;组合第3语音
ORG 0000H
MOV P3M1,#00000100B ;设置P3.1为输出,P3.2为输入
MOV P3M0,#11111011B ;其他为默认的
CLR A
MOV SP1,A ;清第1语音数据
MOV SP2,A ;清第2语音数据
MOV SP3,A ;清第3语音数据
LOOP:
MOV SP1,#05H
MOV SP2,#08H
MOV SP3,#02H ;组合放5,8,2地址段语音
LCALL SPEECHS ;调用组合语音放音子程序
; LCALL Delay5S ;延时5秒等声音放完
SJMP LOOP
;**************************************
;组合语音放音
;入口参数:SP0,SP1,SP2
;出口参数:无
;**************************************
SPEECHS:
MOV R0,SP1 ;发第1语音数据
LCALL SCDATA ;调用放音子程序
LCALL Delay15MS ;调节放音间隔
LCALL BUSYWAIT ;等待放音BUSY信号变高电平
MOV R0,SP2 ;发第2语音数据
LCALL SCDATA ;调用放音子程序
LCALL Delay15MS ;调节放音段间隔
LCALL BUSYWAIT ;等待放音BUSY信号变高电平
MOV R0,SP3 ;发第3语音数据
LCALL SCDATA ;调用放音子程序
CLR A
MOV SP1,A ;清第1语音数据
MOV SP2,A ;清第2语音数据
MOV SP3,A ;清第3语音数据
RET
;**************************************
;等待放音BUSY信号变高电平
;入口参数:无
;出口参数:无
;**************************************
BUSYWAIT:
MOV R3,#200
LCALL Delay15MS
LCALL Delay15MS
DJNZ R3,BOUT ;等待时间超过6秒BUSY脚信号没变高自动退出
JBC SC_BUSY,BUSYWAIT ;等待BUSY脚信号变高
BOUT: RET
;**************************************
;控制放音子程序
;入口参数:R0
;出口参数:无
;**************************************
SCDATA:
CLR SC_RST ;复位低电平
LCALL Delay5MS: ;延时5MS
MOV R1,#08H ;发送8BIT数据低位先发
MOV A,R0
CLR C
LOOP0:
RRC A
JC DATA1
DATA0:
SETB SC_DATA ;高电平
LCALL Delay400US ;延时400uS,
CLR SC_DATA ;低电平
LCALL Delay1200US ;延时1200uS
JMP LOOPDATA:
DATA1:
SETB SC_DATA ;高电平
LCALL Delay1200US ;延时12000uS
CLR SC_DATA ;低电平
LCALL Delay400US ;延时400uS
LOOPDATA:
DJNZ R1,LOOP0
SETB SC_DATA ;高电平
LCALL Delay100US: ;延时100US
RET
;**************************************
;延时100微秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay100US: ;延时100uS
MOV R5,#150
DJNZ R5,$
RET
;**************************************
;延时400微秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay400US:
MOV R4,#4 ;延时400US
L4: LCALL Delay100US
DJNZ R4,L4
RET
;**************************************
;延时1200微秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay1200US:
MOV R4,#120 ;延时1200US
L12: LCALL Delay100US
DJNZ R4,L12
RET
;**************************************
;延时15毫秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay15MS:
MOV R4,#150 ;延时15MS
L150: LCALL Delay100US
DJNZ R4,L150
RET
;**************************************
;延时3毫秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay5MS:
MOV R4,#50 ;延时5MS
L30: LCALL Delay100US
DJNZ R4,L30
RET
;延时5秒
;不同的工作环境,需要调整此函数
;入口参数:无
;出口参数:无
;**************************************
Delay5S: ;延时5秒钟
MOV R3,#200
D3: MOV R4,#250 ;25MS
D5: MOV R5,#150
DJNZ R5,$
DJNZ R4,D5
DJNZ R3,D3
RET
;--------------------------------
END