打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

今天有同学学习《手把手教你学51单片机》过程中遇到一个关于51单片机IO口操作的问题,可能有其他同学有类似疑问,或者是其他同学根本没有考虑过这个疑问问题,我简单提一下,今后有类似问题也欢迎大家留言,我会给大家解释。

问题很简单,但是对于初学者常犯。

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AD键盘
应广单片机-IO口的使用
IO口也要走极简路线!
单片机IO口直接驱动段式LCD的方法
单片机用一个IO口采集多个按键信号如何实现?
【没事瞎折腾,自焊单片机最小系统と各种外围电路】|我爱单片机
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服