为什么我做的单片机串口数据读取程序不能正常接收?

用ch340c,在9600波特率下(再高就无法正常接收)。
接口置'1'
等待接收'0'
等待定时器标志位
接收8位数据到数组
等待定时器标志位
等待接收'1'
循环接收10个字节
把接收到的数据发送出去(发送函数绝对正确)

你做单片机串口通信程序,CH340是用于USB转串口的,与你写程序无关,但是在电脑上要安装驱动程序,电脑上可用串口调试助手发送数据。而单片机接收数据程序,只要对串口和定时器T1初始化就行了,就可以等待接收数据了,哪有你说的那么复杂,哪有那些步骤,什么置1又置0,那是在干嘛?
单片机是有现成的串口的,你是用IO口模拟串口接收吗?追问

模拟接收,就是不知道两个字节之间到底是不是2进制'1'连接起来的,我接收到的数据中间数据对但ch340发过来数据头和尾不对,头应该是0尾应该是1但是乱码了

追答

两个字节之间的空闲时间为1。模拟串口接收的波特率很难控制准确,利用定时器定时方法需要用中断,可中断也会带来误差,波特率再高确实就难做了。

这是作业要求的吗,必须要模拟串口接收,即麻烦又难做,何苦呢,有现成的串口不用,图什么?

温馨提示:答案为网友推荐,仅供参考
相似回答