单片机C51汇编控制串行脉冲语音芯片参考程序

yumo6661个月前 (05-11)技术文章14


单片机C51汇编控制串行脉冲语音芯片参考程序。适用型号:SC8120B,SC8065B,SC8035B,SC8021B等串行脉冲控制语音芯片。

;****************************************************

;https://www.stchip.com

;STCHIP语音芯片串行脉冲三线模式测试程序

;主芯片:MPC82L52(1T)

;工作频率:6MHz

;适用型号:SC8120B,SC8065B,SC8035B......

;广东速佑半导体有限公司

;****************************************************

include "REG_MPC82L52.H"

sbit SC_RST=P3^0; ;P3.0是脉冲复位脚

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.0/P3.1为输出,P3.2为输入

MOV P3M0,#11111011B ;其他为默认的

CLR A

MOV SP1,A ;清第1语音数据

MOV SP2,A ;清第2语音数据

MOV SP3,A ;清第3语音数据

CLR SC_RST

CLR SC_DATA

LCALL SCRESET ;上电复位防止误触发放音



LOOP:


MOV SP1,#5

MOV SP2,#8

MOV SP3,#2 ;组合放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脚信号没变低自动退出

JB SC_BUSY,BUSYWAIT ;等待BUSY脚信号变低

BOUT: RET

;**************************************

;控制放音子程序

;入口参数:R0

;出口参数:无

;**************************************

SCDATA:

LCALL SCRESET ;复位脉冲计数

SCTG: LCALL TG ;发N个脉冲

DJNZ R0,SCTG

RET

;**************************************

;复位脉冲计数

;入口参数:无

;出口参数:无

;**************************************

SCRESET:

SETB SC_RST ;复位高电平

LCALL Delay100US ;延时100uS,DAC模式或大于32段延时时间=15mS

CLR SC_RST ;复位低电平

LCALL Delay100US ;延时100uS

RET

;**************************************

;发1个脉冲信号

;入口参数:无

;出口参数:无

;**************************************

TG:

SETB SC_DATA ;脉冲高电平

LCALL Delay100US ;延时100uS,延时时间>50uS

CLR SC_DATA ;脉冲低电平

LCALL Delay100US ;延时100uS 延时时间>50uS

RET

;**************************************

;延时100微秒

;不同的工作环境,需要调整此函数

;入口参数:无

;出口参数:无

;**************************************

Delay100US: ;延时100uS

MOV R5,#150

DJNZ R5,$

RET

;**************************************

;延时15毫秒

;不同的工作环境,需要调整此函数

;入口参数:无

;出口参数:无

;**************************************

Delay15MS:

MOV R4,#150 ;延时15MS

L0: MOV R5,#150

DJNZ R5,$

DJNZ R4,L0

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

相关文章

LCD汉字显示屏的硬件电路与汇编语言程序设计

一、电路原理图二、电路简介1、OCMJ2X8(128X32)引脚说明引脚名称方向说明引脚名称方向说明1VLED+I背光源正极(LED+5V)8DB1I数据12VLED-I背光源负极(LED-OV)9D...