欢迎访问ic37.com |
会员登录 免费注册
发布采购

ATMEGA2560-16AU-SL383 参数 Datasheet PDF下载

ATMEGA2560-16AU-SL383图片预览
型号: ATMEGA2560-16AU-SL383
PDF下载: 下载PDF文件 查看货源
内容描述: [Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 16MHz, CMOS, PQFP100, 14 X 14 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, PLASTIC, MS-026AED, TQFP-100]
分类和应用: 时钟微控制器
文件页数/大小: 448 页 / 7518 K
品牌: ATMEL [ ATMEL ]
 浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第324页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第325页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第326页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第327页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第329页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第330页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第331页浏览型号ATMEGA2560-16AU-SL383的Datasheet PDF文件第332页  
29.6.13 Simple Assembly Code Example for a Boot Loader  
;-the routine writes one page of data from RAM to Flash  
; the first data location in RAM is pointed to by the Y pointer  
; the first data location in Flash is pointed to by the Z-pointer  
;-error handling is not included  
;-the routine must be placed inside the Boot space  
; (at least the Do_spm sub routine). Only code inside NRWW section can  
; be read during Self-Programming (Page Erase and Page Write).  
;-registers used: r0, r1, temp1 (r16), temp2 (r17), looplo (r24),  
; loophi (r25), spmcrval (r20)  
; storing and restoring of registers is not included in the routine  
; register usage can be optimized at the expense of code size  
;-It is assumed that either the interrupt table is moved to the Boot  
; loader section or that the interrupts are disabled.  
.equ PAGESIZEB = PAGESIZE*2  
.org SMALLBOOTSTART  
Write_page:  
;PAGESIZEB is page size in BYTES, not words  
; Page Erase  
ldi spmcrval, (1<<PGERS) | (1<<SPMEN)  
call Do_spm  
; re-enable the RWW section  
ldi spmcrval, (1<<RWWSRE) | (1<<SPMEN)  
call Do_spm  
; transfer data from RAM to Flash page buffer  
ldi looplo, low(PAGESIZEB)  
;init loop variable  
ldi loophi, high(PAGESIZEB) ;not required for PAGESIZEB<=256  
Wrloop:  
ld  
ld  
r0, Y+  
r1, Y+  
ldi spmcrval, (1<<SPMEN)  
call Do_spm  
adiw ZH:ZL, 2  
sbiw loophi:looplo, 2  
brne Wrloop  
;use subi for PAGESIZEB<=256  
; execute Page Write  
subi ZL, low(PAGESIZEB)  
sbci ZH, high(PAGESIZEB)  
;restore pointer  
;not required for PAGESIZEB<=256  
ldi spmcrval, (1<<PGWRT) | (1<<SPMEN)  
call Do_spm  
; re-enable the RWW section  
ldi spmcrval, (1<<RWWSRE) | (1<<SPMEN)  
call Do_spm  
; read back and check, optional  
ldi looplo, low(PAGESIZEB)  
;init loop variable  
ldi loophi, high(PAGESIZEB) ;not required for PAGESIZEB<=256  
subi YL, low(PAGESIZEB)  
sbci YH, high(PAGESIZEB)  
Rdloop:  
;restore pointer  
elpm r0, Z+  
ld  
r1, Y+  
cpse r0, r1  
jmp Error  
sbiw loophi:looplo, 1  
brne Rdloop  
;use subi for PAGESIZEB<=256  
328  
ATmega640/1280/1281/2560/2561  
2549L–AVR–08/07  
 复制成功!