希望功能:在这里我想通过上位机向单片机发送2835,并通过串口返回,而我能通过数码管分别显示2835这四个数字。
现在的情况:四个数码管显示的都是5,她们都显示四个数字的最后一位,比如2834,就都显示4;
问题1:这里的RxdData数组里每个元素分别是字符2、8、3、5吗?如果不是那她们都是什么?
问题2:该怎么改才能实现上述功能?
还没有看懂,那你这样和下面有什么区别呢?还有为什么要在主函数里将count清0.
刚刚用你说的方法试了,真的可以!!但是我还是不明白为什么这样可以,我不用 将RxdData_Buffer[]的全部值赋给RxdData[] 也可以显示,这样好吗?
区别大呢,你的函数功能是,接收一个字符后,就对RxdData[]数组里的全部变量进行赋值,而且全部赋同一个值,这显然不是你要的,你期望的是:第一个字符接收后,就存在RxdData[0],第二个字符接收后,就存在RxdData[1],以此类推。全部接收完后,再调用RxdData[]数组,使数码管显示。
也可以在中断函数中清零count,不过你得想清楚逻辑,否则容易出错,清零count的原因:一、你定义的数组RxdData[]应该只有4个元素吧,当count=4时,RxdData[count]无意义;二、count的清零为下次接收4个字符数据做准备。
建议使用RxdData_Buffer[],它起一个缓冲作用,它保证了接收数据的完整性,这样的程序会更可靠。如果你不使用RxdData_Buffer[],而直接使用RxdData[],会存在一些问题,比如:当你输入2835时,数码管显示2835,没错,很正常,可是,当你再输入9124时呢?发送字符是有时间的,虽然时间很短,可能你才发送了91过去,而24还没来得及发送,这时,用RxdData[]中的数据应该是9135,所以数码管显示的是9135,而不是你的9124.
我只能这样解释了,你花点时间想想我说的话吧,多自己想,收获会更多,更有体会。加油。