如题。 大概流程是利用串口助手发送一个字符串到单片机,在lcd1602上显示。 我原来的思路是定义一个全局数组,单片机每一次SBUF上的数据存放在数组里。 程序如下:
//每一次中断,把接收到的字符存放在数组里 void receive() interrupt 4 using 1 { if(RI) { input[t] = SBUF; t++; SBUF = input[t]; //返回接收值 if(TI) TI = 0; RI=0; } }
void main(void) { t = 0; initialLcd1602(); //1602初始化 serial(); //串口初始化函数 while(1) { if(t == 16) display_string(0,0,input); //1602显示字符串 } } 其中,input[16]和t为全局变量。 但结果要么没有显示,要么就显示第一个。我想应该是数组没有很好的赋值。
接收单个字符没有问题,但是字符串就是有问题了。SBUF不是每次中断只接收一个8位的字节吗?为什么不能把接收到的值存到那个全局数组呢? 还望高手大侠帮帮忙阿~~
|