#include <STC12C5A.H>
#define uchar unsigned char
#define uint unsigned int
unsigned char a;//a用来存放串口接收到的数据(即模块识别后的返回值)
sbit LED=P2^0; //LED正极接5V;负极串联一个1K欧的电阻到单片机P0.0引脚
void Uart2Init() //9600bps@11.0592MHz
{
AUXR |= 0x08; //使能波特率倍速位S2SMOD:(波特率加倍)
S2CON = 0x50; //8位数据,可变波特率
AUXR &= 0xFB; //独立波特率发生器时钟为Fosc/12,即12T
BRT = 0xFA; //设定独立波特率发生器重装值
AUXR |= 0x10; //启动独立波特率发生器
IE2|=0X01; //允许串口2中断
//S2REN=1; //允许串口接收
}
main()
{
Uart2Init();
while(1)
{
if(a==0x01)//识别到人喊“开灯“,语音识别模块会从串口输出1(也就是十六进制0x01),判断如果是1的话,点亮LED灯。
{ //注意这个“1”是跟词条“开灯”的返回值“001”对应的,为了直观词条返回值是用十进制形式设置的,程序里面您用十进制判断也可以,数字前面不要“0x”即可。
LED=0;
}
else if(a==0x02)//识别到人喊“关灯“,语音识别模块会从串口输出2(也就是十六进制0x02),判断如果是2的话,熄灭LED灯
{ //注意这个“2”是跟词条“关灯”的返回值“002”对应的,为了直观词条返回值是用十进制形式设置的,程序里面您用十进制判断也可以,数字前面不要“0x”即可。
LED=1; //P0.0=1,LED灭,注意:P0口没接上拉电阻是没有电压输出的,不要用万用表测,如果你想测电压,将P0改成P1吧。
}
else ;
}
}
void UART_2Interrupt(void) interrupt 8 //串口中断函数
{
if(S2CON&S2RI)
{
S2CON&=~S2RI; //接收中断标志位标志
a=S2BUF;
}
if(S2CON&S2TI)
{
S2CON&=~S2TI; //发送中断标志位清零
}
}
12M晶振 波特率9600
|