串口转换到P3.6 P3.7驱动TTS语音模块测试成功,
这样符合我的要求了,我用P3.0 3.1接收数据,
P3.6 P3.7驱动语音模块。播放结束再切换返回到P3.0 3.1。
时间紧张,下一步再摸索两个串口通讯
/*无线通讯语言模块测试·PAST 2020 1 8 L72 CODE1413**/
#include <REG52.H>
#include <intrins.H>
#include "stdio.h"
#define uint unsigned int
#define uchar unsigned char
sbit OUT1=P3^2; /****输出***/
sbit OUT2=P3^4; /****输出***/
sbit MD0MD1=P3^2;
uchar DAT2=0;
bit Receive_Flag;
/*---------------延时子程序----------------*/
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<200;j++)
;
}
/*------------初始化串口---------------------*/
void InitUart()
{
SCON=0X50; //8位数据,可变波特率
AUXR|=0x01; //串口1选择定时器2为波特率发生器
AUXR|=0X04; //定时器2时钟为Fosc,即1T
P_SW1=0x40; //RXD_2/P3.6, TXD_2/P3.7
T2L=0XE0; //设置定时器处置 110592》9600
T2H=0XFE; //设置定时器处置 110592》9600
AUXR|=0X10; //启动定时器2
TI=1;
EA=1;
}
/*--------UART 中断服务程序----Buff=SBUF---------------*/
void Uart() interrupt 4 using 1
{
if(RI)
{
DAT2=SBUF; //数组下标位置的数据等于j
RI=0; //
Receive_Flag=1; //接收数据标志置一
}
}
/*------------------主循环程序----------------*/
void main( ) /*主程序开始*/
{ /**加一**/
AUXR=0X80; //STC系列的1T 设置
TMOD=0X01;
InitUart(); //初始化串口
ES=1;
Receive_Flag=0; //接收到数据标志置零
MD0MD1=0; //
//Warning=0; //报警标志等于0
// Counter=0; //报警计数器等于0
// printf("报警标志");
printf("<Z>5"); //
printf("<V>2"); //
printf("<S>3"); //
while(1)
{
printf("不喝酒就没得朋友可是只要偶一喝酒就喝倒一代朋友人生真的很矛盾");
// printf("Please input up,dowm,high:\r\n");
OUT1=0;
OUT2=1;
delay1(2000);
delay1(2000);
OUT1=1;
OUT2=0;
delay1(2000);
delay1(2000);
////////////////////////////////
}
}