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

2022-04-15 教育 115阅读

对于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;这个值是我们根本不需要的一个错误值。不要怕有问题,但是我也不希望没有经过思考的问题。而这个问题,就是同学经过思考的问题,我认为很好,写出来提供给同学们共同学习。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com