本帖最后由 164161297 于 2020-2-21 10:36 编辑
有一个任务要求用串口助手输入一个字符串,单片机接收到后执行相应动作。但是我不知道怎么接收字符串,我这个程序就是输入m1然后单片机一个LED灯亮,为什么我在串口助手要点四次发送数据才能让它亮?有什么办法点一次就可以吗?
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
sbit key_s2 = P3^0;
void UARTInit();
void main()
{
UARTInit();
while(1);
}
void UARTInit()
{
EA = 1;
ES = 1;
REN = 1;
TMOD = 0x20;
TR1 = 1;
SM0 = 0; SM1 = 1;
TH1 = 0xfd;
TL1 = 0xfd;
}
void UART() interrupt 4
{
uchar sz[] = {"m1"};
uchar *a;
if(RI)
{
RI = 0;
*a = SBUF;
while(!RI);
a++;
if(strcmp(sz,a)==0)
{
P1 = 0xfe;
}
}
if(TI)
{
TI = 0;
}
}
|