下载:《ISD3340JL语音组合精灵板发码程序》 #include "REG2051.H" void init(void); //单片机初始化 void send_3340jl(unsigned char vocNO);//发码函数 void delay(int t); //延迟 unsigned char code buff[11]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b};//要发送的语音组合数据,放在buff[]数组里,最大不能超过40个数组. void main() { unsigned char a; //将需要发送的语音段数赋值到buff数组里即可。本例将01-0b,共11段发送出去。 init(); //初始化 for (a=0;a<3;a++) { while(RXD==0); //检测忙信号,等待340jl放音完毕 send_3340jl(0); //将语音组合数据发送出去,buff是发送的数组数据,11是数据的个数 delay(5000); } } void init(void) { TMOD=0x21; TH1=0xfa; TL1=0xfa; //4800波特率 with 11.0592 TR1=1; SCON=0x50;//串行口工作方式1 PCON=0x00; //SMOD=0; REN=1; EA=0; } //void send_3340jl(unsigned char addr_buff[40],vocNO) //发送子程序 void send_3340jl(unsigned char vocNO) { unsigned char i,temp; temp = vocNO; //形参addr_buff[40]接受数组数据,vocNO接受数据个数 i=1; SBUF=0xaa; while(TI==0); //发送起始码aaaa TI=0; SBUF=0xaa; while(TI==0); TI=0; for (i=0;i<10;i++) { SBUF=buff[vocNO]; while(TI==0); TI=0; vocNO++; } vocNO = temp; for (i=0;i<10;i++) { SBUF=buff[vocNO]; while(TI==0); TI=0; vocNO++; } SBUF=0xff; //发送结束码ffff while(TI==0); TI=0; SBUF=0xff; while(TI==0); TI=0; } void delay(int t) { while(t!=0) { t--; } } |