一个面试问题,怎样将一个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 一个浮点数据,有效部分是32位!将这32位拆成4个8位就可以了,然后按高低顺序发送出去就可以了!很简单嘛! 呵呵,楼主的问题可能是不知道怎么把一个float型拆开吧! 丢得值...这个问题搞不定,去做这个工作也很痛苦... 是呀,问题很简单呀,LZ用C的时间不长吧。 这也算是个问题啊。这个估计考的不是串行发送的问题吧,我想应该是考数据占用空间和如何改变数据类型的吧?用C语言和汇编一样,都很简单的。另外通过P0口发送出去?这个单片机是什么单片机?这个题本身还有点问题。普通51的P0口不带硬件串行通讯,那么要用软件时序来做,但对于C8051F类单片机,则硬件的串行通讯刚好就在P0口上,直接设置一下交叉开关就可以硬件发送了。估计出题的人没想考这方面的问题吧? 直接把二进制发出去就行了,
收到再变回浮点数。 定义成共用体,float和另外一个数组共用,把数组发出去不就等于吧float发出去了吗 长知识了。 定义一个char型指针数组,把float数据的地址付给char型指针数组。再往外送char数组数据。类似结构体 好像理解错了吧…考官说的P0口发送数据,应该是指把数据拆开后,再按并行的方式发送数据吧?按这样说应该不是说串口通信…
难道是考怎么同步数据的问题?? 呵呵,共用体,学习了 关注。 这要求的是用P0口发送出去,
并没要求你也要解决接收的问题,
所以LZ只要把数据转换成4个八位的依次给P0应该就可以了吧! mark,关键词:共用体。 p0口应该是要并口发送吧,自己定协议啊,实在不行转换成整型之后再换算回来
我记得浮点数可以换算成4字节16进制数,具体算法记不清了 把浮点数拆开,然后一位一位的发出去 我觉得传送的都是0,1,浮点与否只是解释方式;传送时只要做到:告诉对方传送的数据类型,格式;传送0,1。即协议与数据。 完全不理解主考官想考什么./emotion/em004.gif 主考官就是想考一下你FLOAT型数据是怎么存的! 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 ); 定义一联合体,或用ftoa() 我编程都没涉及这些,看样子自己的能力还很低级啊 原来是用共用体啊,长知识了! 要是我估计就是定协议发出去了 我是一个菜鸟,如果我回答,我会想到把它转成整形的,然后再分8位依次发出去。。。。。。。。但是没有明白他的意思,P0口没有串口 高手勿拍 不錯 ,不錯,學習學習! 共用体,学习下 没做过,又长知识了 应该约定好先发高位或者先发低位就可以了
页:
[1]