在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2112|回复: 4

[求助] 请教下串口通信的一个问题,急。。。

[复制链接]
发表于 2011-5-9 11:00:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
void putc(unsigned char c)
{
    while( ! (UTRSTAT0 & TXD0READY) );
    UTXH0 = c;
}
以上的是我有串口输出函数。

当C为一个字符如“a”时,可以正常输出,但当C为一个int ,float等类型时(此时putc的形参类型也做对应修改),要不输不出来,要不输出为乱码。

请着呢下这是什么原因造成的呢?该如何解决啊?
发表于 2011-5-9 19:06:38 | 显示全部楼层
串口发数据是以一个字符(8bit)为单位发送的,当你是其它类型的时候在送人缓冲区的时候会自动截取!要发送其它类型的时候你可以先拆分发送过去在组装!
 楼主| 发表于 2011-5-9 20:31:48 | 显示全部楼层
回复 2# xinchen


你这的种思想我懂了,不过具体落实到程序是怎么编写呢?我是个菜鸟,请指教。
发表于 2011-5-19 12:08:49 | 显示全部楼层
用下面的代码,把十进制数转换为字符串,然后保存到数组中,然后再一个一个发送,就可以了。
char *Des2Ch(const unsigned int Des, char *ch)
{
        int Ds = 0;
        int i = 0;
        int n = 0;
        int hg = 0;
        unsigned int dd = 0;
        char zstr[20] = {0};
        char bn[20] = {0};
        dd = Des;
        while (1)
        {
                Ds = dd%10;
                if (Ds == 0)
                {
                        break;
                }
                dd = dd/10;
                zstr[i] = (char)(Ds + 48);
                i++;
        }
        for (i--;i>=0;i--)
        {
                bn[n] = zstr[i];
                n++;
        }
        while (1)
        {
                ch[hg] = bn[hg];
                if (bn[hg] == 0)
                {
                        break;
                }
                hg++;
        }
        return bn;
}
发表于 2011-5-31 23:42:16 | 显示全部楼层
1楼正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:41 , Processed in 0.025944 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表