端口寄存器允许在Arduino板上更低级和更快地操纵微控制器的i / o引脚。Arduino板上使用的芯片(ATmega8和ATmega168)有三个端口:
B(数字引脚8到13)
C(模拟输入引脚)
D(数字引脚0到7)
每个端口由三个寄存器控制,这三个寄存器也是arduino语言中定义的变量。DDR寄存器确定引脚是INPUT还是OUTPUT。PORT寄存器控制引脚是高电平还是低电平,PIN寄存器通过pinMode()读取设置为输入的INPUT引脚的状态。ATmega8 和 ATmega168 芯片的地图显示了端口。较新的Atmega328p芯片完全遵循Atmega168的引脚排列。
DDR和PORT寄存器可以写入和读取。PIN寄存器对应于输入状态,只能读取。
PORTD映射到Arduino数字引脚0到7
DDRD - 端口D数据方向寄存器 - 读/写
PORTD - 端口D数据寄存器 - 读/写
PIND - 端口D输入引脚寄存器 - 只读
PORTB映射到Arduino数字引脚8到13两个高位(6和7)映射到晶体引脚,不可用
DDRB - 端口B数据方向寄存器 - 读/写
PORTB - 端口B数据寄存器 - 读/写
PINB - 端口B输入引脚寄存器 - 只读
PORTC映射到Arduino模拟引脚0到5.引脚6和7只能在Arduino Mini上访问
DDRC - 端口C数据方向寄存器 - 读/写
PORTC - 端口C数据寄存器 - 读/写
PINC - 端口C输入引脚寄存器 - 只读
这些寄存器的每一位对应一个引脚; 例如,DDRB,PORTB和PINB的低位指的是引脚PB0(数字引脚8)。有关Arduino引脚编号到端口和位的完整映射,请参见芯片图:ATmega8,ATmega168。(注意,端口的某些位可用于除i / o之外的其他位;请注意不要更改与它们对应的寄存器位的值。)
例子
参考上面的引脚图,PortD寄存器控制Arduino数字引脚0到7。
但是,您应该注意,引脚0和1用于串行通信以编程和调试Arduino,因此通常应避免更改这些引脚,除非需要串行输入或输出功能。请注意,这可能会干扰程序下载或调试。
B(数字引脚8到13)
C(模拟输入引脚)
D(数字引脚0到7)
每个端口由三个寄存器控制,这三个寄存器也是arduino语言中定义的变量。DDR寄存器确定引脚是INPUT还是OUTPUT。PORT寄存器控制引脚是高电平还是低电平,PIN寄存器通过pinMode()读取设置为输入的INPUT引脚的状态。ATmega8 和 ATmega168 芯片的地图显示了端口。较新的Atmega328p芯片完全遵循Atmega168的引脚排列。
DDR和PORT寄存器可以写入和读取。PIN寄存器对应于输入状态,只能读取。
PORTD映射到Arduino数字引脚0到7
DDRD - 端口D数据方向寄存器 - 读/写
PORTD - 端口D数据寄存器 - 读/写
PIND - 端口D输入引脚寄存器 - 只读
PORTB映射到Arduino数字引脚8到13两个高位(6和7)映射到晶体引脚,不可用
DDRB - 端口B数据方向寄存器 - 读/写
PORTB - 端口B数据寄存器 - 读/写
PINB - 端口B输入引脚寄存器 - 只读
PORTC映射到Arduino模拟引脚0到5.引脚6和7只能在Arduino Mini上访问
DDRC - 端口C数据方向寄存器 - 读/写
PORTC - 端口C数据寄存器 - 读/写
PINC - 端口C输入引脚寄存器 - 只读
这些寄存器的每一位对应一个引脚; 例如,DDRB,PORTB和PINB的低位指的是引脚PB0(数字引脚8)。有关Arduino引脚编号到端口和位的完整映射,请参见芯片图:ATmega8,ATmega168。(注意,端口的某些位可用于除i / o之外的其他位;请注意不要更改与它们对应的寄存器位的值。)
例子
参考上面的引脚图,PortD寄存器控制Arduino数字引脚0到7。
但是,您应该注意,引脚0和1用于串行通信以编程和调试Arduino,因此通常应避免更改这些引脚,除非需要串行输入或输出功能。请注意,这可能会干扰程序下载或调试。