ATmega64 的I/O 空间定义见 P329“ 寄存器概述” 。
ATmega64所有的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。 ATmega64并行单元超过 64个,对于0x60 - 0xFF的扩展I/O空间,只能使用ST/STS/STD 与LD/LDS/LDD 指令。在ATmega103 兼容模式下,不存在扩展I/O 空间。
为了与后续产品兼容,保留未用的未应写"0",而保留的I/O 寄存器则不应进行写操作。
一些状态标志位的清除是通过写"1" 来实现的。要注意的是,与其他大多数AVR 不同, CBI 和SBI 指令只能对某些特定的位进行操作,因而可以用于包含这些状态标志的寄存 器。CBI 与SBI 指令只对0x00 到0x1F 的寄存器有效。
I/O 和外设控制寄存器在后续其他章节进行介绍。
上一篇:ATmega64 外部存储器接口
下一篇:ATmega64 EEPROM数据存储器
推荐阅读
史海拾趣
请大家看下下面打问号几行代码,抛开其功能不说,真的是奇怪了,我都看了又看,头都大了,就是不知道为什么,请朋友们指点下 #include<reg52.h> &nbs ...… 查看全部问答∨ |
|
error C2065: \'GetRunningObjectTable\' : undeclared identifier error C2065: \'CreateItemMoniker\' : undeclared identifier 我用的是EVC 4.0+SP4… 查看全部问答∨ |
|
STM32的驱动库好用吗?效率高吗?优化的吗?准备上STM32 N多年没买过开发板了,也没用过仿真器了。都是用软件编译调试好,直接ISP,然后通过串口命令开启调试信息的输出。 昨天买了块STM32F103全功能型开发板,他们的办事效率真低(深圳到广州通常当 ...… 查看全部问答∨ |
求IAR Embedded Workbench for MCS-51 完整版 各位高手,小弟求IAR Embedded Workbench for MCS-51完整版,有哪位高人有,能否分享一下。我的邮箱jinghongchen@126.com… 查看全部问答∨ |
还是说说今天参加安富利的“ARM研讨会”,参观展台时,逛到了英蓓特(EMBEST)那里。大家可能知道,这家公司就是专门围绕ARM生存的,有很多ARM开发板。我在看到英蓓特展台的易拉宝时,楞了一下,原来上面罗列的产品线时,赫然有“Luminary系列”。 ...… 查看全部问答∨ |