1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
SC50X0語音芯片C51單片機一線控制程序帶BUSY
[打印本頁]
作者:
hello_johy
時間:
2017-6-29 10:27
標題:
SC50X0語音芯片C51單片機一線控制程序帶BUSY
/****************************************************
;OTP語音芯片串行一線串口模式組合語音測試程序
;主芯片:MPC82L52(1T)
;工作頻率:6MHz
;適用型號:SC3010,SC3020,SC3040,SC3060,SC3080,SC5020,SC5040,SC5060,SC5080,SC5B01
;億矽特科技:400-160-3880
****************************************************/
include "REG_MPC82L52.H"
#include <stdio.h>
void delay_ms(unsigned int count) ;
void delay_us(unsigned int count);
void SC_Speech(unsigned char spdata);
void SC_WBusy(void);
void SC_Speechs(void);
/**************端口定義*****************/
sbit SC_DATA=P3^1; //P3.1是脈沖數據腳
sbit SC_BUSY=P3^2; //P3.2是放音BUSY腳
unsigned int sp[3]; //定義一個組合語音用的數組變量
/*************主程序****************/
main (void)
{
SC_DATA=1;
sp[0]=0X00;
sp[1]=0X00;
sp[2]=0X00;
while(1)
{
sp[0]=0X08;
sp[1]=0X05;
sp[2]=0X09;
SC_Speechs(); //組合8,5,9地址段放音
//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++);
}
}
/**************************************
;控制SC30X0命令
;入口參數:data;
;出口參數:無
**************************************/
void SC_Speech(unsigned char spdata)
{
unsigned char i;
SC_DATA=0;
delay_ms(6);
for(i=0;i < 8;i++)
{
SC_DATA = 1;
if(spdata&0x01)
{
delay_us(1500);
SC_DATA = 0;
delay_us(500);
}
else
{
delay_us(500);
SC_DATA = 0;
delay_us(1500);
}
spdata >>= 1;
}
SC_DATA =1;
delay_us(200);
}
/**************************************
;控制地址段組合放音
;入口參數:無
;出口參數:無
**************************************/
void SC_Speechs(void)
{
SC_Speech(sp[0]);
SC_WBusy(); //等待BUSY信號變高
SC_Speech(sp[1]);
SC_WBusy();
SC_Speech(sp[2]);
sp[0]=0X00;
sp[1]=0X00;
sp[2]=0X00;
}
/**************************************
;等待BUSY信號變高;
;入口參數:無
;出口參數:無
**************************************/
void SC_WBusy(void)
{
unsigned int times;
for(times=0;times<50;times++) //等待超過5秒最長語音段自動退出;
{
delay_ms(100); //調節組合語音間隔
if(SC_BUSY==1) break;
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1