《串口接收字符串》由会员分享,可在线阅读,更多相关《串口接收字符串(8页珍藏版)》请在金锄头文库上搜索。
1、串口接收字符串串口接收字符串/串口接收以特定字符为开头的字符串并且保存特定字符之后的有效位#include#define uint unsigned char#define uchar unsigned intuchar ser_receive; /串口接收到的数据uchar ser_flag=0;uchar receive_number11=0;/接收串口发送来的数据的数组 uchar i=0;uchar j;uchar come=0;void init_ser()TMOD=0X20;/定时器 1 工作在方式 2 TH1=0XFD;TL1=0XFD; /波特率 9600 TR1=1;EA=1
2、;SM0=0;SM1=1;REN=1;/允许串口接收 ES=1;/开串口 中断 void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/* 程序目的:串口接收字符串,但是要以字符 a 为开头的后面的 11位字符,若开头不为 a 则接收不写入数组* 若开头为 a 但是发送有效位超过 11 位 就把后面的截断 只要前 11 位*补充:该程序也可以改为接受任意字符串 (但是字符串的长度 必须是大体确定的)*/void ser() interrupt 4 /中断函数不用声明 if(RI=1)RI=0;ser_receive=SBUF;if(
3、come=1)if(ser_receive!=0i+;if(i=11)i=0;ser_flag=1;come=0;else if(ser_receive=a) come=1;void main()init_ser();while(1)if(ser_flag=1)ES=0;ser_flag=0;for(j=0;j#define uint unsigned char#define uchar unsigned intuchar ser_receive; /串口接收到的数据uchar ser_flag=0;uchar receive_number12=0;uchar i=0;uchar j;void
4、 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(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void ser() interrupt 4 /中断函数不用声明 if(RI=1)RI=0;ser_receive=SBUF;if(ser_receive!=0)receive_numberi=ser_receive;i+;if(i=12)i=0;ser_flag=1;void main()init_ser();while(1)if(ser_flag=1)ES=0;ser_flag=0;for(j=0;j12;j+)SBUF=receive_numberj;while(!TI);TI=0;delay(10);ES=1;