51串口问题

[复制链接]
2922|16
 楼主| DK521 发表于 2012-4-6 20:45 | 显示全部楼层 |阅读模式
GSM模块向51单片机发送2个字符,8位的sbuf如何接受这两个字符?
海川先生 发表于 2012-4-6 20:49 | 显示全部楼层
配置好寄存器,允许接受,开中断,中断中取数据
海川先生 发表于 2012-4-6 20:50 | 显示全部楼层
呵呵,不知道说的对不对
ningling_21 发表于 2012-4-6 21:02 | 显示全部楼层
用字符数组做缓冲,中断收到就放数组,搞定...
NE5532 发表于 2012-4-6 21:39 | 显示全部楼层
一个字节一个字节的收啊,不要说收2个字节,收1GByte都收得下来~!
zhourulin123 发表于 2012-4-6 23:24 | 显示全部楼层
单个字节接受吧
 楼主| DK521 发表于 2012-4-7 08:23 | 显示全部楼层
5# NE5532
用sbuf连续接受2次吗
 楼主| DK521 发表于 2012-4-7 08:24 | 显示全部楼层
4# ningling_21
能详细点么??
NE5532 发表于 2012-4-7 08:29 | 显示全部楼层
SBUF每次收一个字节,然后程序把数据取出来,放到其他地方去,再收下一个,再取。楼主要反思一下,这么顺理成章的事情,为什么没想出来啊。
joyme 发表于 2012-4-7 09:50 | 显示全部楼层
SBUF是字节型的,即收到一个字节就要处理(可通过查询或中断方式将其移到自己的缓冲区),如果不能及时移走,下一个接收到的字节会把前一个字节覆盖
 楼主| DK521 发表于 2012-4-7 09:53 | 显示全部楼层
9# NE5532

在PC机上调试,可是显示2个字符。  在51上,用ch1=sbuf,ch2=sbuf接收,发现ch1和ch2的值是一样,是不是8位的sbuf在接受16位数据时 会丢掉高8位或低八位
yipeng 发表于 2012-4-7 10:23 | 显示全部楼层
学习了
NE5532 发表于 2012-4-7 10:25 | 显示全部楼层
晕啊,看来楼主彻底没搞懂串口是怎么工作的。再伟大的数据接口,都是以基本单位(一般是字节)来传输的,你在PC上看到2个字节,是因为串口先后来了两个字节,串口助手把他们顺次读出来,显示在屏幕上。串口上每一个字节是一个完整的帧格式,无论多少数据,都是按照这个格式顺次传输的。你ch1=ch2是因为没有等下一字节接收完成就在读了。

楼主需要仔细看一下单片机数据手册里面对串口帧的介绍,以现在这个状态没有办法往下做。
zyx_nj 发表于 2012-4-7 11:31 | 显示全部楼层
就是,一个byte一个byte的收,就行了;在收到下一个字节前,将第一个收到的字节转存就行.
海川先生 发表于 2012-4-7 11:56 | 显示全部楼层
把第一个送走了,等第二个到来,存储第二个,ok
hahalz 发表于 2012-4-7 12:57 | 显示全部楼层
打开接收 会自动接到  直接去读就行
gx_huang 发表于 2012-4-7 14:19 | 显示全部楼层
前几天,一个开口就所谓新手的人,我让他看书去,就跟我没完的。
如果LZ有空,在这里问这个基础问题,还是看看书比较好。
你说呢?
如果碗里有2口碗,每次只能吃一口饭,你说怎么吃饭?一口一口吃呗。
大不了,吃着碗里的,看着锅里的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

56

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部