打印

单片机与PC机的出口助手通信

[复制链接]
1645|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cshij2009|  楼主 | 2012-6-7 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序是这样设计的:单片机接收串口助手发送过来的数据。在单片机程序中,有一个按键中断的程序,按键之后,开接收中断,允许接收数据,在接收中断的程序中,接收一个字节数据,接收完成关闭中断,等待下一次按键开接收中断。
我现在的问题是:在串口助手发送区写入  0X01  0X02  0X03 ,手动发送,当我按键之后,让串口助手发送一次数据,单片机那边显示 0X01。这个时候,我想让单片机再次接收数据,那么我要按键,开接收中断,可是我按键之后,没有点击串口助手的手动发送(及串口助手没有发送数据),单片机那边显示了  0X03。单片机这边显示的都是我在发送区写入的最后字节的数据。
沙发
NE5532| | 2012-6-7 20:39 | 只看该作者
研究你用的单片机串口是否是双缓冲结构,这个问题非常有趣,如果我的猜测是正确的,楼主又想通了的话,就可以上一个台阶了。

使用特权

评论回复
板凳
cshij2009|  楼主 | 2012-6-8 09:18 | 只看该作者
2# NE5532 我的芯片是msp430f149,在串口模块中,有一个接收移位寄存器和一个接收缓冲寄存器,这是不是双缓冲结构呢?

使用特权

评论回复
地板
cshij2009|  楼主 | 2012-6-8 11:29 | 只看该作者
2# NE5532 在我每次按键的时候,清除接收缓存寄存器就可以啦。可是现在问题是:我按键之后,单片机等待接收四个字节,串口助手手动发送数据 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08,单片机我接收到的数据是 :0x01 0x02 0x04 0x05;或者0x01 0x03 0x04 0x05 ;或者0x01 0x04 0x05 0x06

使用特权

评论回复
5
cshij2009|  楼主 | 2012-6-8 18:12 | 只看该作者
2# NE5532 我用的单片机确实是双缓冲结构。你太厉害啦  !!!

使用特权

评论回复
6
NE5532| | 2012-6-8 22:17 | 只看该作者
呵呵,提示楼主,后面来数覆盖第一级缓冲,第二级缓冲装的是第一个字节的数据,猜的,楼主继续找证据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

73

帖子

0

粉丝