B001-Atmega16-汇编-地址空间分配

这篇博客详细介绍了Atmega16的地址空间规划,包括FlashROM、SRAM和EEPROM的分配。文章强调了在使用ld、st指令访问IO寄存器时需使用映射后的地址,并解释了如何通过堆栈指针SP进行RAM的FILO形式访问。在DEBUG模式下,堆栈指针SP初始设置为0x045F,位于RAM的末尾。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地址空间规划

打开m16def.inc、可以看到如下面的定义,它和手册里面描述的FlashROM、SRAM、EEPROM等的地址空间一一对应。

; ***** DATA MEMORY DECLARATIONS *****************************************
.equ	FLASHEND = 0x1fff    ; Note: Word address、这里一共是8K word的flash ROM
.equ	IOEND	    = 0x003f ; IO寄存器的地址空间是0x0000-0x003F、但它们被映射到0x0020-0x005F
.equ	SRAM_START  = 0x0060 ; 0x0060-0x0045F这1KB的地址空间是内部RAM使用的地址空间
.equ	SRAM_SIZE   = 1024   ;
.equ	RAMEND	= 0x045f     ;
.equ	XRAMEND	= 0x0000     ; 这里可能是为外部RAM预留的地址空间 - question-001
.equ	E2END	   = 0x01ff  ; EEPROM一共有512B,占据着0x0000-0x01FF的地址空间
.equ	EEPROMEND  = 0x01ff  ; 这个地址送到EEPROM控制寄存器使用
.equ	EEADRBITS  = 9       ; 512个单元需要9位地址线来访问
#pragma AVRPART MEMORY PROG_FLASH 16384    ; 8K word = 16K byte
#pragma AVRPART MEMORY EEPROM 512
#pragma AVRPART MEMORY INT_SRAM SIZE 1024
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值