ATmega128具有128K字节的在线编程Flash。因为所有的AVR指令为16位或32位,故尔FLASH 组织成64K x 16 的形式。考虑到软件安全性, Flash 程序存储器分为两个区:引导程序区和应用程序区。
Flash存储器至少可以擦写10,000 次。ATmega128的程序计数器PC为16位,因此可以寻址64K 的程序存储器。
RAMPZ 寄存器用于选择Z 指针访问的是哪一个64K RAM。由于ATmega128 不支持超过64K的存储器,因此RAMPZ只用来协助ELPM/SPM指令决定访问哪一个程序存储器页。不同的RAMPZ0 的作用如下:
RAMPZ0 = 0: ELPM/SPM 可以访问程序存储器地址$0000 - $7FFF ( 低64K 字节)
RAMPZ0 = 1: ELPM/SPM 可以访问程序存储器地址$8000 - $FFFF ( 高64K 字节)
从上面说明中可以知道:AVR128的程序存储器的地址位宽为16位(可寻址64K个地址,而程序存储器有128K个字节,所以一个地址对应一个字节是不够的,要一个地址对应两个字节),而且一个16位地址对应的存储数据也是16位的,即双字节也称半字,由此可知,程序存储器的数据位宽也为16位。
常数可以保存于整个程序存储器地址空间
文章评论(0条评论)
登录后参与讨论