⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tts_send.c

📁 一种电话遥控板的原程序
💻 C
字号:
/*************************************************
******文字转语音芯片驱动程序
******波特率   9600
******1位起始位  8位数据  1位停止位  无效验
*************************************************/

//sbit TTSTXD		= P2^1 ;

//	11.0592 MHZ晶振  0xff  0xa0
//	22.1184 MHZ晶振  0xff  0x40
#define T1BAUDH	0xa0							//波特率   9600
#define T1BAUDL	0xa0
#define TTS_MAXSENDBUFLEN	60

uchar idata TTS_SendBitIndex ;					//发送一字节中的N位  位索引
uchar idata TTS_SendBitData ;					//正在发送的数据字节缓存
uchar idata TTS_Sendbuf[TTS_MAXSENDBUFLEN] ;	//要发送的命令 发送缓存
uchar idata TTS_Sendbuflen ;					//发送缓存的长度
uchar idata TTS_SendbufOutIndex ;				//指向出数据地址
//bit Sended_flag ;								//正在发送状态标志   1 表示发送  0 表示空闲

extern bit ToneFlag ;

/***************************************************
  Name     :  TTS_Timer_Enable
  Descrip  :  开启定时器 使能发送
  Input    :  flag	1 使能	0 禁止
  Output   :  no
****************************************************/
void TTS_Timer_Enable(uchar flag)
{
	EA = 0 ;						// CPU Close all INT
	TR1 = 0 ;						// Close T1
	TMOD = (TMOD & 0x0f) | 0x20 ; 	//方式2
	TH1 = T1BAUDH ;
	TL1 = T1BAUDL ;
//	Sended_flag = 0 ;
	TTS_SendBitIndex = 0 ;
	TTS_SendbufOutIndex = 0 ;
	TF1 = 0 ; 						// Reset
	PT1 = flag ; 					// High Priority
	ET1 = flag ; 					// Permit T1 INT
	TR1 = flag ; 					// Start T1
	
	ES = !flag ;					// Close or start ES
	ET0 = !flag ;					// Close or start ET0
	
	EA = 1 ; 						// CPU Open INT
}

/***************************************************
  Name     :  TTS_Send_BIT
  Descrip  :  发送一字符中的1位 到 TTS
  			  每波特率时间到时调用此函数
  Input    :  no
  Output   :  no
****************************************************/
void TTS_Send_BIT()
{
	if(TTS_SendBitIndex == 0)
	{
		if(TTS_SendbufOutIndex == TTS_Sendbuflen)	//SerialSBuf Empty
	    {
	    	TTS_Sendbuflen = 0 ;
	    	TTS_Timer_Enable(0) ;
			Phone_ToneCtrl(TRUE) ;
	    	return ;
	    }
	    TTS_SendBitData = TTS_Sendbuf[TTS_SendbufOutIndex] ;
	    TTS_SendbufOutIndex++ ;
		TTS_SendBitIndex = 1 ;
	}
	if(TTS_SendBitIndex == 1)				//send start bit
	{
		TTSTXD = 0 ;	TTSTXD = 0 ;				//out low
		TTS_SendBitIndex = 2 ;
	}
	else if(TTS_SendBitIndex == 10)			//send stop bit
	{
		TTSTXD = 1 ;	TTSTXD = 1 ;				//out high
		TTS_SendBitIndex = 0 ;
	}
	else									//send data bit
	{
		if(TTS_SendBitData&0x01 == 1)		//out from low bit start
		{
			TTSTXD = 1 ;	TTSTXD = 1 ;			//out high
		}
		else
		{
			TTSTXD = 0 ;	TTSTXD = 0 ;			//out low
		}
		TTS_SendBitData >>= 1 ;
		TTS_SendBitIndex++ ;
	}
}

/***************************************************
  Name     :  TTS_SendString
  Descrip  :  发送一字符串到TTS
  Input    :  sendbuf	发送的字符串首地址
  			  len		发送的字符串长度
  Output   :  TRUE  	发送成功
  			  FLASE 	发送失败
****************************************************/
uchar TTS_SendString(uchar *sendbuf,uchar len)
{
	uchar i ;
	for(i=0;i<len;i++)
	{
		TTS_Sendbuf[TTS_Sendbuflen++] = *(sendbuf+i) ;
	}
	return TRUE ;
}

/***************************************************
  Name     :  TTS_Send_Timer_INT
  Descrip  :  发送波特率定时器中断程序
  Input    :  no
  Output   :  no
****************************************************/
void TTS_Send_Timer_INT() interrupt 3 using 3
{
	EA = 0 ;
//	TH1 = T1BAUDH ;
//	TL1 = T1BAUDL ;
	TTS_Send_BIT() ;
	EA = 1 ;
}

/***************************************************
  Name     :  Send_Play_Play
  Descrip  :  发送放音命令
  Input    :  indata	要放音的内容
  			  len		放音内容长度
  Output   :  TRUE  	发送成功
  			  FLASE 	发送失败
****************************************************/
uchar Send_Play_Play(uchar len,uchar *indata)
{
	uchar buf[5]  ;
	EA = 0 ;
	buf[0] = 0xfe ;
	buf[1] = 0x01 ;
	buf[2] = 0x00 ;
	buf[3] = len  ;
	TTS_Sendbuflen = 0 ;
	TTS_SendString(buf,4) ;
	TTS_SendString(indata,len) ;
	ToneFlag = FALSE ;
	TTS_Timer_Enable(1) ;
	EA = 1 ;
	return TRUE ;
}

/***************************************************
  Name     :  Send_Stop_Play
  Descrip  :  发送停止放音命令
  Input    :  no
  Output   :  TRUE  :发送成功
  			  FLASE	:发送失败
****************************************************/
uchar Send_Stop_Play()
{
	uchar buf[2] ;
	EA = 0 ;
	TTS_Sendbuflen = 0 ;
	buf[0] = 0xfe ;
	buf[1] = 0x02 ;
	TTS_SendString(buf,2) ;
	TTS_Timer_Enable(1) ;
	EA = 1 ;
	return TRUE ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -