打印

51串口问题

[复制链接]
2061|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DK521|  楼主 | 2012-4-6 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
海川先生| | 2012-4-6 20:49 | 只看该作者
配置好寄存器,允许接受,开中断,中断中取数据

使用特权

评论回复
板凳
海川先生| | 2012-4-6 20:50 | 只看该作者
呵呵,不知道说的对不对

使用特权

评论回复
地板
ningling_21| | 2012-4-6 21:02 | 只看该作者
用字符数组做缓冲,中断收到就放数组,搞定...

使用特权

评论回复
5
NE5532| | 2012-4-6 21:39 | 只看该作者
一个字节一个字节的收啊,不要说收2个字节,收1GByte都收得下来~!

使用特权

评论回复
6
zhourulin123| | 2012-4-6 23:24 | 只看该作者
单个字节接受吧

使用特权

评论回复
7
DK521|  楼主 | 2012-4-7 08:23 | 只看该作者
5# NE5532
用sbuf连续接受2次吗

使用特权

评论回复
8
DK521|  楼主 | 2012-4-7 08:24 | 只看该作者
4# ningling_21
能详细点么??

使用特权

评论回复
9
NE5532| | 2012-4-7 08:29 | 只看该作者
SBUF每次收一个字节,然后程序把数据取出来,放到其他地方去,再收下一个,再取。楼主要反思一下,这么顺理成章的事情,为什么没想出来啊。

使用特权

评论回复
10
joyme| | 2012-4-7 09:50 | 只看该作者
SBUF是字节型的,即收到一个字节就要处理(可通过查询或中断方式将其移到自己的缓冲区),如果不能及时移走,下一个接收到的字节会把前一个字节覆盖

使用特权

评论回复
11
DK521|  楼主 | 2012-4-7 09:53 | 只看该作者
9# NE5532

在PC机上调试,可是显示2个字符。  在51上,用ch1=sbuf,ch2=sbuf接收,发现ch1和ch2的值是一样,是不是8位的sbuf在接受16位数据时 会丢掉高8位或低八位

使用特权

评论回复
12
yipeng| | 2012-4-7 10:23 | 只看该作者
学习了

使用特权

评论回复
13
NE5532| | 2012-4-7 10:25 | 只看该作者
晕啊,看来楼主彻底没搞懂串口是怎么工作的。再伟大的数据接口,都是以基本单位(一般是字节)来传输的,你在PC上看到2个字节,是因为串口先后来了两个字节,串口助手把他们顺次读出来,显示在屏幕上。串口上每一个字节是一个完整的帧格式,无论多少数据,都是按照这个格式顺次传输的。你ch1=ch2是因为没有等下一字节接收完成就在读了。

楼主需要仔细看一下单片机数据手册里面对串口帧的介绍,以现在这个状态没有办法往下做。

使用特权

评论回复
14
zyx_nj| | 2012-4-7 11:31 | 只看该作者
就是,一个byte一个byte的收,就行了;在收到下一个字节前,将第一个收到的字节转存就行.

使用特权

评论回复
15
海川先生| | 2012-4-7 11:56 | 只看该作者
把第一个送走了,等第二个到来,存储第二个,ok

使用特权

评论回复
16
hahalz| | 2012-4-7 12:57 | 只看该作者
打开接收 会自动接到  直接去读就行

使用特权

评论回复
17
gx_huang| | 2012-4-7 14:19 | 只看该作者
前几天,一个开口就所谓新手的人,我让他看书去,就跟我没完的。
如果LZ有空,在这里问这个基础问题,还是看看书比较好。
你说呢?
如果碗里有2口碗,每次只能吃一口饭,你说怎么吃饭?一口一口吃呗。
大不了,吃着碗里的,看着锅里的。

使用特权

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

本版积分规则

3

主题

56

帖子

1

粉丝