Arduino I/O口如何快速读写-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6063|回复: 4

[未解决] Arduino I/O口如何快速读写

[复制链接]
发表于 2020-8-6 22:24 | 显示全部楼层 |阅读模式
5金币
因为要用一总线,所以就用一个I/O口,像51里面感觉可以直接用寄存器读取写入控制,Arduino也有类似的方案吧?

 楼主| 发表于 2020-8-6 22:59 | 显示全部楼层
我看了一下,貌似
DDR?
寄存器就是干这个的。但我置高电平,然后再低电平,然后进入读取状态,就只能反复往DDRB里面改数据是吗。。。?
发表于 2020-8-7 00:39 | 显示全部楼层
AVR 不是 51,直接 IO 操作的话有这么几点:
每个 IO 由 PORTx, PINx, DDRx 三个寄存器中第 y 位控制,分别对应输出电平、输入电平、方向控制。

以 PB0 为例(对应 UNO 的 D8),由 PORTB,PINB,DDRB 的第 0 位控制。
输出高电平:DDRB|=0x1, PORTB|=0x1;
输出低电平:DDRB|=0x1, PORTB&=~0x1;
高阻输入模式:DDRB&=~0x1, PORTB&=~0x1;
上拉输入模式:DDRB&=~0x1, PORTB|=0x1;
读取PB0:byte dat= PINB&0x1;

多看看 AVR 的手册,就明白了
发表于 2020-8-7 01:21 | 显示全部楼层
支持楼上,并附上引脚图连接供参考
https://arduino.nxez.com/pinout-diagram-of-arduino-versions
发表于 2021-5-29 10:53 | 显示全部楼层
端口直接读写操作是最直接明了的;
俺在瞎整一个航模遥控器时就需要使用读取两组端口(16个IO)来用作开关量,如果用dightread这些端口再转给一个变量,dightwrite再把接收端的变量操作端口,很麻烦;但直接读写端口寄存器就简单多了,一次写两组共16个端口控制16个设备的启停,所以在使用mega1280、2560等很多端口的MCU时,用端口寄存器直接读写是非常方便的!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 05:40 , Processed in 0.075938 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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