优点
您可能需要能够非常快速地打开和关闭引脚,直接端口访问可以在更少的时钟周期内完成相同的工作。
有时您可能需要在同一时间设置多个输出引脚。
如果程序内存不足,可以使用这些技巧使代码更小。它需要更少的编译代码字节来同时通过端口寄存器同时写入一堆硬件引脚,而不是使用for循环分别设置每个引脚。
缺点
一般来说,不建议直接寄存器操作:
1.调试和维护代码要困难得多;
2.其他人理解起来要困难得多;
3.处理器执行代码只需几微秒,但您可能需要几个小时才能弄清楚它为什么不能正常工作并修复它;
4.代码不太便携,控制端口寄存器和端口寄存器在每种微控制器上都可以不同;
5.通过直接端口访问可以更容易地导致意外故障。
比如:引脚0是串行端口上的接收线(RX)。通过DDRD = B11111110将引脚0更改为输出引脚,很容易意外地导致串口停止工作!