本帖最后由 164161297 于 2020-2-21 10:36 編輯
有一個任務要求用串口助手輸入一個字符串,單片機接收到后執(zhí)行相應動作。但是我不知道怎么接收字符串,我這個程序就是輸入m1然后單片機一個LED燈亮,為什么我在串口助手要點四次發(fā)送數(shù)據(jù)才能讓它亮?有什么辦法點一次就可以嗎?
#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;
}
}
|