include "REG_MPC82L52.H"
#include <stdio.h>
void delay_ms(unsigned int count) ;
void delay_us(unsigned int count);
void SC_Speech(unsigned char cnt);
/**************端口定义*****************/
sbit SC_RST=P3^0; //P3.0是脉冲复位脚
sbit SC_DATA=P3^1; //P3.1是脉冲数据脚
/*************主程序****************/
main (void)
{
SC_DATA=0;
SC_RST=1;
delay_us(100); //上电复位防止干扰发声芯片放音
SC_RST=0;
delay_us(100);
while(1)
{
SC_Speech(8); //发8个触发信号,发第8段声音
delay_ms(5000); //延时放音时间5秒
}
}
/**************************************
;延时X毫秒
;不同的工作环境,需要调整此函数
;入口参数:count
;出口参数:无
**************************************/
void delay_ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
{
for(j=0;j<500;j++);
}
}
/**************************************
;延时X微秒
;不同的工作环境,需要调整此函数
;入口参数:count
;出口参数:无
**************************************/
void delay_us(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
{
for(j=0;j<2;j++);
}
}
/**************************************
;控制地址段放音
;入口参数:cnt;
;出口参数:无
**************************************/
void SC_Speech(unsigned char cnt)
{
unsigned char i;
SC_RST=1;
delay_us(100); //DAC,大于32段为15MS
SC_RST=0;
delay_us(100);
for(i=0;i < cnt;i++)
{
SC_DATA=1; //数据脉冲高
delay_us(100); //延时100US
SC_DATA=0; //数据脉冲低
delay_us(100); //延时100US
}
}