搜索
bottom↓
回复: 6

查询方式接收字符串问题。

[复制链接]

出0入0汤圆

发表于 2013-5-21 07:07:24 | 显示全部楼层 |阅读模式
本帖最后由 anchoret 于 2013-5-21 15:19 编辑

我采用查询方式接收字符串,可每次只能接收到第一个字符,帮我看看怎么回事,谢谢!
unsigned int USART0_Rec( unsigned char *buf )
{
        unsigned int i;
        unsigned long int time;
        i = 0;
        time = 0;
        /* Wait for the first data to be received*/
        while(!( UCSR0A & (1<<RXC0)))
        ;
        buf = UDR0;
        while(!( UCSR0A & (1<<UDRE0)))    //等待读空,去掉也不行
        ;
        i++;
        do
        {
                while(!( UCSR0A & (1<<RXC0)))
                {
                        buf = UDR0;
                        while(!( UCSR0A & (1<<UDRE0))) //等待读空,去掉也不行
                        ;
                        i++;
                }
                time++;
        } while (time <= 5000000);
       
        return i;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-5-21 08:48:56 | 显示全部楼层
鉴于这一句while(!( UCSR0A & (1<<RXC0))) 可知寄存器名应该是取值的, 那么buf = UDR0; 把数值传给地址就不合理了。

出0入0汤圆

发表于 2013-5-21 08:49:46 | 显示全部楼层
接收字符最好用 状态机写

出0入12汤圆

发表于 2013-5-21 08:57:49 | 显示全部楼层
骚年,不要撞了南墙不回头
这货用查询,你做玩具啊??
中断,你唯一的选择

出0入0汤圆

 楼主| 发表于 2013-5-21 13:23:24 来自手机 | 显示全部楼层
lkm_unication 发表于 2013-5-21 08:48
鉴于这一句while(!( UCSR0A & (1

哦,我写错了,试试

出0入0汤圆

 楼主| 发表于 2013-5-21 15:17:32 来自手机 | 显示全部楼层
是贴过来[i]没了

出0入0汤圆

 楼主| 发表于 2013-5-22 07:40:30 | 显示全部楼层
本帖最后由 anchoret 于 2013-5-22 07:44 编辑

找到问题了,是do。。。while里那个while的问题,谢谢大家!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表