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

ATMEGA48PA-CCU 参数 Datasheet PDF下载

ATMEGA48PA-CCU图片预览
型号: ATMEGA48PA-CCU
PDF下载: 下载PDF文件 查看货源
内容描述: [RISC Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PBGA32, 4 X 4 MM, 0.60 MM HEIGHT, 0.50 MM PITCH, GREEN, PLASTIC, UFBGA-32]
分类和应用: 闪存微控制器
文件页数/大小: 349 页 / 2752 K
品牌: ATMEL [ ATMEL ]
 浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第249页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第250页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第251页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第252页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第254页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第255页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第256页浏览型号ATMEGA48PA-CCU的Datasheet PDF文件第257页  
ATmega48/88/168  
Simple Assembly Code  
Example for a Boot Loader  
Note that the RWWSB bit will always be read as zero in ATmega48. Nevertheless, it is  
recommended to check this bit as shown in the code example, to ensure compatibility  
with devices supporting Read-While-Write.  
;-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  
;PAGESIZEB is page size in  
BYTES, not words  
.org SMALLBOOTSTART  
Write_page:  
;
Page Erase  
ldi  
rcall  
spmcrval, (1<<PGERS) | (1<<SELFPRGEN)  
Do_spm  
;
re-enable the RWW section  
ldi  
rcall  
spmcrval, (1<<RWWSRE) | (1<<SELFPRGEN)  
Do_spm  
;
ldi  
ldi  
transfer data from RAM to Flash page buffer  
looplo, low(PAGESIZEB)  
;init loop variable  
;not required for PAGESI-  
loophi, high(PAGESIZEB)  
ZEB<=256  
Wrloop:  
ld  
r0, Y+  
ld  
r1, Y+  
ldi  
rcall  
adiw  
spmcrval, (1<<SELFPRGEN)  
Do_spm  
ZH:ZL, 2  
sbiw  
loophi:looplo, 2  
;use  
subi  
for  
PAGESI-  
ZEB<=256  
brne  
Wrloop  
;
execute Page Write  
subi  
sbci  
ZL, low(PAGESIZEB)  
ZH, high(PAGESIZEB)  
;restore pointer  
;not required for PAGESI-  
ZEB<=256  
ldi  
rcall  
spmcrval, (1<<PGWRT) | (1<<SELFPRGEN)  
Do_spm  
;
re-enable the RWW section  
ldi  
rcall  
spmcrval, (1<<RWWSRE) | (1<<SELFPRGEN)  
Do_spm  
;
read back and check, optional  
ldi  
ldi  
looplo, low(PAGESIZEB)  
loophi, high(PAGESIZEB)  
;init loop variable  
;not required for PAGESI-  
ZEB<=256  
subi  
sbci  
Rdloop:  
lpm  
ld  
cpse  
rjmp  
YL, low(PAGESIZEB)  
YH, high(PAGESIZEB)  
;restore pointer  
r0, Z+  
r1, Y+  
r0, r1  
Error  
253  
2545D–AVR–07/04  
 复制成功!