C语言 单片机IO口赋值

想把一十六进制数如0xfffe
的低八位送C51的P1口,高八位送P2口
P1=a;
a=a>>8;
P2=a;
这样写好像不对啊。得不到想要的结果
位上面不对,应该如何写呢?
小弟新手,请各位大大说详细些
我定义的是unsigned int a;

首先要弄清楚IO口的赋值!!
使用并行输数据只能八位。所有,Oxfffe要取出高八位和低八位!!
因为不存在取单独某位的问题,所有可以使用简单的移位语句
P1=(oxfffe<<8); //左移八位,得P1=oxfe
P2=(oxfffe>>8); //右移8位,得P2=oxff
你这个程序的错误在于,P1口使用并行方法输送数据只能一次传输8位,而oxfffe位十六位,溢出错误!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-27
先定义字长啊
第2个回答  2009-03-27
P1 = a & 0x0f;

C语言 单片机IO口赋值
首先要弄清楚IO口的赋值!!使用并行输数据只能八位。所有,Oxfffe要取出高八位和低八位!!因为不存在取单独某位的问题,所有可以使用简单的移位语句 P1=(oxfffe<<8); \/\/左移八位,得P1=oxfe P2=(oxfffe>>8); \/\/右移8位,得P2=oxff 你这个程序的错误在于,P1口使用并行方法输送数据只...

单片机如何用c语言来设置I\/O口,使I\/O口进入到输入或输出模式?
单片机的IO口缺省时一般都是双向,既可以是输入又可以是输出,C语言中判断这个口是输入还是输出要看表达式的形式,比如:sbit key=P1^0;if(key==1)...这里是作为输入的,因为是读入,再判断值 key=1;这里是作为输出,因为直接给其赋值。

单片机怎么用c语言设置I\/O口输入或输出
P3M0=0;P3M1=127;\/\/0-6推挽输出 P1M0=0;P1M1=255; \/\/all 推挽输出 而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。

如何对单片机IO口赋二进制的值
c语言中好像没有表示2进制的前缀。再说,16进制和2进制是一一对应的,转化时,只要将2进制4位一组划分开来,看每组分别对应哪个16进制数即可(不行还可以用windows自带的计算器进行转化)。0xff就是代表11111111。直接用16进制赋值,不仅书写起来简便,而且也不容易出错。所以建议楼主以后多用16进制对寄存...

单片机C语言中p2=0x
在51单片机的C语言编程中,使用p2=0xFF进行赋值,实际上是在操作P2组的I\/O端口。这里的0xFF是16进制数,转换成二进制就是1111 1111。由于51单片机是8位单片机,每组I\/O端口有8个数据位,所以16进制的FF刚好对应这8个二进制位。在单片机中,电平用高低电平表示,0代表低电平,1代表高电平。因此,当...

单片机C语言编程时能否合并多个IO口赋值?
这个不可以呀。。。三个不同端口,,,而且每个端口有8个位。怎么可能一起赋值 同一个端口,不同位还是可以的 如:P1=0x07 \/\/低三位为1

C语言 如何将单片机6个管脚位的值赋给一个字符型变量
可以用这个字符型变量的每一个bit代表一个IO状态,比如:Var=P0_0 | (P0_1<<1) | (P04<<2) | (P0_5<<3) | (P0_6 <<4) | (P0_6<<5);使用时要注意:如果每次要更新不同IO状态,要先清除当前值,然后再赋新值,比如:Var &=~ 0x01; \/\/ 先将P0_1所在的bit位清0;Var |...

51单片机c语言编程能合并不同的IO口来赋值吗
你有两种方法可以达到这个目的,一种是用定义宏的方式,另外一种就是写一个赋值函数。我个人建议用函数的方法,宏容易出错误。

单片机中 c语言编程 能不能给P0的某一位直接赋值 如P0^0=5
可以的,必须先定义,再用 sbit led=P1^1;led = 0;单个io是只可以负值1或0

开始编程时单片机的端口为什么要赋值?电路接好了那么单片机的端口电压应 ...
如果单片机的端口是做输出用的话,一开始是没有电压的,需要初始化。0x05是16进制的表示方法,二进制就是00000101,然后就可以看哪一位是0哪一位是1了。

相似回答