|
我在用串口通信的时候,
我想让他实现的是:在输入口中输入abck+12,在回显中显示+12。
我的思路是:在串口中断中将输入的字符赋值到数组中去,当检测到数组中有'k'这个字符的时候,再次将检测的字符赋值到一个新的数组中去,最后在主函数中让他显示新数组中的字符。
现在的现象是:会显得字符为kkk(三个字符k)。
求大神帮我看看代码。
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit led1=P1^0;
unsigned char flag,i=0,j=0,t;
uchar table[10];
uchar a[3];
void init()
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
TI=0;
RI=0;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(j=0;j<3;j++)
{
SBUF=a[j];
while(!TI);
TI=0;
}
ES=1;
flag=0;
}
}
}
void ser()interrupt 4
{
RI=0;
table[i]=SBUF;
i++;
if(table[i-1]=='k')
{
for(t=0;t<3;t++)
{a[t]=SBUF; }
flag=1;
}
}
|
|