may902 发表于 2009-2-27 08:16:04

一个面试问题,怎样将一个float型的数据通单片机的P0口发送出去。

前两天去面试,主考官问了一个问题,我就傻了。工作自然也丢了,现在我把这个问题放到论坛,希望有人答出来,说不定下次你面试的时候也会问到哦

问题是:怎样将一个float型的数据通单片机的P0口发送出去。

以下蓝色文字由站长:armok 于:2009-02-27,08:26:16 加入。你的原标题:“<font color=black>一个面试问题,请高手回答.” 不合符规定。请更改成能说明帖子大意的标题
试想一下,如果本论坛的帖子标题清一色的‘帮助!’,‘ADC求救!’等笼统的标题,你在阅读的过程中会造成许多麻烦。
所以本论坛规定:一定要起一个能说明帖子大意的标题。不允许“关于 AVR 的 ADC 使用!”这种笼统标题。作为标题,必须说明清楚:
 ①你是在请教问题,还是在介绍有关的知识?
 ②ADC的问题有许多,你是想说那方面的内容?
注意以上两点,标题应该改成如:“请教:ADC 可以不使用中断吗?”。
起一个能说明帖子大意的标题,除了减轻我们的帖子分类整理工作,还方便其它人阅读,节省大家的时间。
注:使用合格的标题,对你来说只是举手之劳,但却会为我们的管理工作提供很大的便利。谢谢你的支持。
./bbs_upload/files_6/armok01122228.gif

armok 发表于 2009-2-27 08:24:00

honami520 发表于 2009-2-27 08:43:42

一个浮点数据,有效部分是32位!将这32位拆成4个8位就可以了,然后按高低顺序发送出去就可以了!很简单嘛!

yy945 发表于 2009-2-27 10:30:47

呵呵,楼主的问题可能是不知道怎么把一个float型拆开吧!

aozima 发表于 2009-2-27 10:35:38

丢得值...这个问题搞不定,去做这个工作也很痛苦...

aaron96031 发表于 2009-2-27 10:42:58

是呀,问题很简单呀,LZ用C的时间不长吧。

ssyniuej 发表于 2009-2-27 11:02:33

这也算是个问题啊。这个估计考的不是串行发送的问题吧,我想应该是考数据占用空间和如何改变数据类型的吧?用C语言和汇编一样,都很简单的。另外通过P0口发送出去?这个单片机是什么单片机?这个题本身还有点问题。普通51的P0口不带硬件串行通讯,那么要用软件时序来做,但对于C8051F类单片机,则硬件的串行通讯刚好就在P0口上,直接设置一下交叉开关就可以硬件发送了。估计出题的人没想考这方面的问题吧?

__stm32f100__ 发表于 2009-2-27 20:53:37

直接把二进制发出去就行了,
收到再变回浮点数。

lukeunderwood 发表于 2009-2-27 22:02:50

定义成共用体,float和另外一个数组共用,把数组发出去不就等于吧float发出去了吗

sywxm02 发表于 2009-3-4 21:48:31

长知识了。

zhangcuejun 发表于 2011-5-24 08:48:14

定义一个char型指针数组,把float数据的地址付给char型指针数组。再往外送char数组数据。类似结构体

majianjia 发表于 2011-5-24 10:00:24

好像理解错了吧…考官说的P0口发送数据,应该是指把数据拆开后,再按并行的方式发送数据吧?按这样说应该不是说串口通信…
难道是考怎么同步数据的问题??

ijlc1314 发表于 2011-5-24 10:04:14

呵呵,共用体,学习了

turf456 发表于 2011-5-24 10:07:10

关注。

generals 发表于 2011-5-24 11:09:42

这要求的是用P0口发送出去,
并没要求你也要解决接收的问题,
所以LZ只要把数据转换成4个八位的依次给P0应该就可以了吧!

wxwdxx 发表于 2011-5-24 11:54:28

mark,关键词:共用体。

keen9327 发表于 2011-5-24 16:26:52

p0口应该是要并口发送吧,自己定协议啊,实在不行转换成整型之后再换算回来
我记得浮点数可以换算成4字节16进制数,具体算法记不清了

sjssjs 发表于 2011-5-24 16:37:06

把浮点数拆开,然后一位一位的发出去

xiaxquan 发表于 2011-5-24 17:13:47

我觉得传送的都是0,1,浮点与否只是解释方式;传送时只要做到:告诉对方传送的数据类型,格式;传送0,1。即协议与数据。

laolu 发表于 2011-5-24 17:31:40

完全不理解主考官想考什么./emotion/em004.gif

caizijian 发表于 2011-5-24 18:10:06

主考官就是想考一下你FLOAT型数据是怎么存的!

fickle 发表于 2011-5-24 18:15:37

typedef union{
    uint32_t i;
    float    f;
}i2f;

i2f.f = xxx;
xmit_232(i2f.i >> 24);
xmit_232(i2f.i >> 16);
xmit_232(i2f.i >> 8);
xmit_232(i2f.i );

marshallemon 发表于 2011-5-24 18:38:06

定义一联合体,或用ftoa()

qq511153186 发表于 2013-6-24 10:09:54

我编程都没涉及这些,看样子自己的能力还很低级啊

ethan_free 发表于 2013-6-24 10:18:12

原来是用共用体啊,长知识了!

404710520 发表于 2013-6-24 11:01:31

要是我估计就是定协议发出去了

07071624 发表于 2013-6-24 14:25:58

我是一个菜鸟,如果我回答,我会想到把它转成整形的,然后再分8位依次发出去。。。。。。。。但是没有明白他的意思,P0口没有串口    高手勿拍

clarkewayne 发表于 2013-6-25 22:29:48

不錯 ,不錯,學習學習!

黎昕 发表于 2013-6-26 12:28:50

共用体,学习下

771494781 发表于 2013-6-26 14:29:14

没做过,又长知识了

xtian 发表于 2013-6-26 16:13:49

应该约定好先发高位或者先发低位就可以了
页: [1]
查看完整版本: 一个面试问题,怎样将一个float型的数据通单片机的P0口发送出去。