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 } }