极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14758|回复: 4

如何读取引脚状态并按二进制保存?

[复制链接]
发表于 2016-5-31 22:02:53 | 显示全部楼层 |阅读模式
比如8个引脚,高电平按1表示,低电平按0表示。
那么1-8引脚状态可以表示为:
10110000
我现在的思路是先读取每个引脚的状态,然后用按位或操作赋值。
比如第一个按钮为高电平那么就x|00000001,
可是这样要用很多次的操作,感觉效率不高啊。有没有什么简便的办法?
回复

使用道具 举报

发表于 2016-6-1 04:49:07 | 显示全部楼层
当然有方法,arduino语法用的是经过封装的了,原来没有ARDUINO的时候,学习AVR用的是AVR GCC,那时候的端口操作都是一组一组的,例如PORTA,PORTB,等等,所以那时候都有自己定义两个函数,作用跟你现在这个刚好相反,只操作其中的一个位。
ARDUINO也可以直接使用GCC语句的,就能够实现你所有功能。不过也是有一定限制的,如下:
以UNO为例:根据引用图和上面我说的每一组PORT一个操作,板子上0-7引脚刚好对应328p的PD0到PD7,这8个就可以为一组,直接用一条指令 a = PIND就可以,其它的还有好多只有看datasheet了。希望对你有帮助,我也只学着玩学了一点点。共同进步!
回复 支持 反对

使用道具 举报

发表于 2016-6-1 10:17:48 | 显示全部楼层
位操作应该挺快的,而且如果你说的是程序的优雅性的话,一个循环搞定,也不是很难看吧。
回复 支持 反对

使用道具 举报

发表于 2016-6-1 14:23:18 | 显示全部楼层
读取引脚的值应该是x&0B00000001,至于怕麻烦,应该没有你说的这么麻烦,本身按钮就需要一个个的读,8个按钮你也可以只用6个引脚完成。
楼上说的方法都对,怎么着你也得多次判断。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-2 11:39:15 | 显示全部楼层
已解决 有现成的海曙 bitwrite()
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 02:41 , Processed in 0.035813 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表