ATmega168 I/O存储器

来自丢石头百科
Admin讨论 | 贡献2019年11月18日 (一) 16:36的版本 (ATmega168的 I/O P311“ 寄存器概述 ” 。ATmega168 的所有 I/O 和外设都被放置在 I/O 空间。 所有的 I/O地址都可以通过LD/LDS/LDD和ST/STS/STD指令来访问,在32个通用工作寄存器和I/O之间传输数据。 地址为0x00 - 0 ...)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
<tbody></tbody>

ATmega168的 I/O P311“ 寄存器概述 ” 。

ATmega168 的所有 I/O 和外设都被放置在 I/O 空间。 所有的 I/O地址都可以通过LD/LDS/LDD和ST/STS/STD指令来访问,在32个通用工作寄存器和I/O之间传输数据。 地址为0x00 - 0x1F的I/O寄存器还可用SBI和CBI指令直接进行位寻址,而SBIS和SBIC则用来检查单个位置位与否。使用 IN 和 OUT 指令时地址必须在 0x00 - 0x3F之间。如果要象 SRAM 一样通过 LD 和 ST 指令访问 I/O 寄存器,相应的地址要加上 0x20。 ATmega168 是一个复杂的微处理器,其支持的外设要比预留的 64 个 I/O( 通过IN OUT 指令访问 ) 所能支持的要多。对于扩展的 I/O 空间0x60 - 0xFF,只能使用ST/STS/STD 和 LD/LDS/LDD 指令。

为了与后续产品兼容,保留未用的位应写"0",而保留的 I/O 寄存器则不应进行写操作。

一些状态标志位的清除是通过写"1" 来实现的。 CBI 和 SBI 指令可以操作 I/O寄存器所有的位,并给置位的位回写"1",因此会清除这些标志位。CBI和SBI指令只对0x00 to 0x1F之间的寄存器有效。

I/O 和外设控制寄存器在后续其他章节进行介绍。