中易网

一个操作51单片机某几个IO口的方法

答案:1  悬赏:60  
解决时间 2021-01-14 21:14
  • 提问者网友:我是女神我骄傲
  • 2021-01-14 04:30
一个操作51单片机某几个IO口的方法
最佳答案
  • 二级知识专家网友:不如潦草
  • 2021-01-14 05:13
对于51单片机的P口来说,我们习惯上的赋值是P1 = 0xXX。但是这样操作是一次性操作了8个IO口。而有些情况下,我们只需要操作其中的几个而不是全部的时候,我们如何操作呢?如下图注释上边的部分,是我写的程序代码。

这个是操作51单片机P1口的低4位对步进电机进行操作的程序,在这个操作过程中,我们只使用到了P1口的低4位,因此我们希望高4位保持不变,只改变P1的低4位。首先把P1进行一个备份到变量tmp中去,然后把变量tmp的经过两条语句,得到最终要赋值给P1的值以后,再一次性赋值给P0,这个方法大家都可以学习一下。
而注释下边的这段程序,是一位同学写的,这位同学的理由是下边这种写法,也没有改变P1的高4位。表面看也没什么问题,但是实际上如果不利用tmp这个变量,P1就会产生一个错误的中间值。
P1= P1&0xF0;这条语句执行完毕以后,P1 = 0xX0;其中X是未知的,保持了之前P1的高4位的原值,而低4位是0;
再然后P1= P1|BeatCode[index];这样操作后,P1得到了最终的值。
但是这中间,P1 = 0xX0;这个值是我们根本不需要的一个错误值。不要怕有问题,但是我也不希望没有经过思考的问题。而这个问题,就是同学经过思考的问题,我认为很好,写出来提供给同学们共同学习。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息