发布网友 发布时间:2022-04-19 23:40
共3个回答
热心网友 时间:2023-05-17 18:37
void init_ser(){ TMOD=0X20;//定时器1工作在方式2 TH1=0XFD; TL1=0XFD; //波特率9600 TR1=1; EA=1; SM0=0; SM1=1; REN=1;//允许串口接收 ES=1;//开串口 中断 }void delay(unint z){ unint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void ser() interrupt 4 //中断函数不用声明 { if(RI==1) { RI=0; ser_receive=SBUF; if(ser_receive=='a') { m=1; } if( m==1 && ser_receive!='z') { receive_data[i]=ser_receive; i++;// if(i==36)// {// i=0;// ser_flag=1;// } } else if (ser_receive=='z') { i=0; m=0; ser_flag=1; xianshi=1; } } }void uart(){ if(ser_flag==1) { ES=0; ser_flag=0; for(j=0;j<57;j++) { SBUF=receive_data[j]; while(!TI); TI=0; delay(10); } ES=1; }}我刚写的,接受以a开始,以z结束的字符串,测试没问题。热心网友 时间:2023-05-17 18:37
然后你根据你的命令改一下就行了热心网友 时间:2023-05-17 18:38
跟接收十六进制没啥区别