看过郭天祥的视屏的朋友,第一讲2:21:45这个位置的二进制10111111换成十六进制为什么是FD?我换出来是BF.

看过郭天祥的视屏的朋友,第一讲2:21:45这个位置的二进制10111111换成十六进制为什么是FD?我换出来是BF.我反过来换的确却是FD.但他确实是说从低位到高位(顺序是P0位到P7位).我按BF输入,写入单片机,却是P1口第七个灯亮.为什么要反着译?

我好像看懂了。我按照你的思路给你解释一下:
点亮P11口的灯,从上往下是10111111.
——这个没错
而10111111转换成十六进制是BF
——这点有问题,在转换成十六进制时有个原则,要高位在前,地位在后,即p17在前,p10在后。你转成BF,是按照了p10 ……p17的顺序,自然是反了,这样不对的。这里的10111111只是一种看上去比较直观的排列,是告诉你想要从上到下的第二个灯亮的话,要这样排列,但真正给单片机这个序列时,要把p1口按照高位到低位的顺序转换成16进制的,即从下到上应该是FD。当然你也可以直接给单片机二进制,不用转成十六进制,可以更直观些。不过给二进制的话,你要想第二个灯亮,要反过来给11111101B,因为程序里默认首位为最高位,即p17位,对应你的开发板,就应该是最下面一位。说的这么罗嗦,我想应该明白了。
我写进单片机却是P16口的灯亮
——上面的明白了,这里肯定也明白!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-22
这是因为不同单片机管脚设置的原因以及外围电器连接的原因。

STC89系列单片机引脚默认为高电平,而在这个学习板上,外接的LED灯的负端和单片机引脚相连,当单片机的引脚为低电平时,LED灯导通,就会发亮,当相对应的引脚为高电平时,LED不会导通,所以不会亮。如果想让某个灯亮,就把对应引脚电平拉低,也就是赋值为0.不亮的地方都是1.

这里为什么要反正译?其实没有反,他列出10111111是从上往下列的,你看一下原理图,原理图中,单片机左上侧是P1口,最上面的那个脚是P10,最下面的是P17,从上往下的话,就是10111111了,如果反过来就是11111101了,这个才是我们给P1口赋的值。

做这种嵌入式开发,一定要看原理图中硬件的实际连接,如果连接不一样,结果肯定不一样。
希望能帮到你。如果还有疑问,请追问。追问

非还常感谢你回答得这么详细.但我还是没搞明白.
点亮P11口的灯,从上往下是10111111.
而10111111转换成十六进制是BF,我写进单片机却是P16口的灯亮.我的意思是二进制10111111转换成十六进制为什么是FD.

追答

最上面是低位啊,下面是高位,你输入的FB,F表示高四位,B表示的就是低四位。只是反过来了而已。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网