zix 发表于 2016-5-31 22:02:53

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

比如8个引脚,高电平按1表示,低电平按0表示。
那么1-8引脚状态可以表示为:
10110000
我现在的思路是先读取每个引脚的状态,然后用按位或操作赋值。
比如第一个按钮为高电平那么就x|00000001,
可是这样要用很多次的操作,感觉效率不高啊。有没有什么简便的办法?

liuxue4503 发表于 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了。希望对你有帮助,我也只学着玩学了一点点。共同进步!

pumpitup 发表于 2016-6-1 10:17:48

位操作应该挺快的,而且如果你说的是程序的优雅性的话,一个循环搞定,也不是很难看吧。

164335413 发表于 2016-6-1 14:23:18

读取引脚的值应该是x&0B00000001,至于怕麻烦,应该没有你说的这么麻烦,本身按钮就需要一个个的读,8个按钮你也可以只用6个引脚完成。
楼上说的方法都对,怎么着你也得多次判断。

zix 发表于 2016-6-2 11:39:15

已解决 有现成的海曙 bitwrite()
页: [1]
查看完整版本: 如何读取引脚状态并按二进制保存?