想要通过串口控制led,但是串口每次中断只能发送一个字符,这样在控制的时候不太容易清楚各个命令是控制哪一部分,所以参考网上的资料,写了个简单的字符串收发函数。本程序的功能是:电脑串口助手发送数据给单片机,单片机接收后返回给电脑,在发送的时候,需要空两格再输入想要传送的内容,不然的话传输的数据会丢失,因为这个情况不影响串口控制LED,所以就没管了。
单片机源程序如下:
#include typedef unsigned char uchar; typedef unsigned int uint; sbit led=P2^0; void Usart_Init() { TMOD=0X20; PCON=0X80; SCON=0X50; TH1=0XF3; TL1=0XF3; TR1=1; ES=1; EA=1; } uchar strk[50]; void delay(unsigned int i){unsigned int j;for(i;i>0;i--)for(j=0;j<120;j++);}//延时函数 void sendbyte(unsigned char byt){SBUF=byt;while(!TI);TI=0;} //串口字符发送函数 void receivebyte() /*串口接收函数*/ { uchar shiftdata;//转移数据变量,将SBUF接收到的数据线存储到这个地方,再转存到数组当中 static uint i=0; if(RI){ RI=0;shiftdata=SBUF;strk[i]=shiftdata; i++; if(shiftdata=='