端口寄存器允许在Arduino板上更低级和更快地操纵微控制器的i / o引脚。Arduino板上使用的芯片(ATmega8和ATmega168)有三个端口:
每个端口由三个寄存器控制,这三个寄存器也是arduino语言中定义的变量。DDR寄存器确定引脚是INPUT还是OUTPUT。PORT寄存器控制引脚是高电平还是低电平,PIN寄存器通过pinMode()读取设置为输入的INPUT引脚的状态。ATmega8 和ATmega168芯片的地图显示了端口。较新的Atmega328p芯片完全遵循Atmega168的引脚排列。 DDR和PORT寄存器可以写入和读取。PIN寄存器对应于输入状态,只能读取。 PORTD映射到Arduino数字引脚0到7
PORTB映射到Arduino数字引脚8到13两个高位(6和7)映射到晶体引脚,不可用
PORTC映射到Arduino模拟引脚0到5.引脚6和7只能在Arduino Mini上访问
这些寄存器的每一位对应一个引脚; 例如,DDRB,PORTB和PINB的低位指的是引脚PB0(数字引脚8)。有关Arduino引脚编号到端口和位的完整映射,请参见芯片图:ATmega8,ATmega168。(注意,端口的某些位可用于除i / o之外的其他位;请注意不要更改与它们对应的寄存器位的值。) 例子参考上面的引脚图,PortD寄存器控制Arduino数字引脚0到7。 但是,您应该注意,引脚0和1用于串行通信以编程和调试Arduino,因此通常应避免更改这些引脚,除非需要串行输入或输出功能。请注意,这可能会干扰程序下载或调试。 DDRD是端口D的方向寄存器(Arduino数字引脚0-7)。该寄存器中的位控制PORTD中的引脚是否配置为输入或输出,例如: DDRD = B11111110; //将Arduino引脚1至7设置为输出,将引脚0设置为输入 DDRD = DDRD | B11111100; //这样更安全,因为它将引脚2到7设置为输出 //不改变引脚0和1的值,即RX和TX
PORTD是输出状态的寄存器。例如;
如果使用DDRD寄存器或pinMode()将引脚设置为输出,则只能在这些引脚上看到5伏电压。 PIND是输入寄存器变量它将同时读取所有数字输入引脚。 为何使用端口操作?一般来说,做这类事并不是一个好主意。为什么不?原因如下:
所以你可能会对自己说,很好,为什么我会想要使用这些东西呢?以下是直接端口访问的一些积极方面:
|
|
来自: 青樓滿座wu0pn9 > 《待分类》