【发布时间】:2017-12-10 13:42:47
【问题描述】:
我想知道如何编写接收特定字符串的代码。例如,这个 OK ,这里我只需要“OK”字符串。
另一个字符串也一样OK 我已经在 keil c51 中为 at89s52 微控制器编写了代码,它可以工作,但我需要更可靠的代码。
我正在对来自 rs232 串行的 rx 数据使用中断。
void _esp8266_getch() interrupt 4 //UART Rx.{
if(TI){
TI=0;
xmit_bit=0;
return ;
}
else
{
count=0;
do
{
while(RI==0);
rx_buff=SBUF;
if(rx_buff==rx_data1) //rx_data1 = 0X0D /CR
{
RI=0;
while(RI==0);
rx_buff=SBUF;
if(rx_buff==rx_data2) // rx_data2 = 0x0A /LF
{
RI=0;
data_in_buffer=1;
if(loop_conti==1)
{
if(rec_bit_flag==1)
{
data_in_buffer=0;
loop_conti=0;
}
}
}
}
else
{
if(data_in_buffer==1)
{
received[count]=rx_buff; //my buffer in which storing string
rec_bit_flag=1;
count++;
loop_conti=1;
RI=0;
}
else
{
loop_conti=0;
rec_bit_flag=0;
RI=0;
}
}
}
while(loop_conti==1);
}
rx_buff=0;
}
【问题讨论】:
-
不同的是,您不应该在中断例程中实现 do-while(任何循环)。中断程序应尽可能简洁
-
你的意思是 uart 而不是 rs232?
-
是的,rs 232 表示 uart
-
是的@Sudhee。我不应该使用do-while。比我怎么写呢?有什么例子吗?
标签: embedded microcontroller 8051