📄 sectorerase.asm
字号:
/* This program erases the sector and updates the sector addresses until
all the sectors are erased
Input - None
Output - None */
#include <def21369.h>
#include "flashprogrammer.h"
.global SECTOR_ERASE;
.extern External_Sector_Address;
.extern FLASH_ERASED,my_file;
.section/dm seg_dmda;
//these are the SECTOR ERASE Command for the AMD 29LV081B
.var erase_command[] = {0xaa, 0x55, 0x80, 0xaa, 0x55, 0x30};
.section/pm seg_pmco;
SECTOR_ERASE:
r1=SECTOR_SIZE-1;//Calculate second to last address of sector
r2=FLASH_START_ADDRESS;
r2=r2+r1; //create address within 1st sector
dm(External_Sector_Address) = r2; //first sector address
i3 = r2; //first sector address
m3 = 0;
r0=NUMBER_SECTORS;
lcntr=r0, do sectors until lce; //this loop erases and verifies one sector per iteration
i2=erase_command;
m2 = 1;
lcntr = 6, do send_erase_command until lce;
r0=dm(i2,m2);
send_erase_command: dm(i3,m3)=r0;
nop;nop;
call FLASH_ERASED; //check if sector is erased
r1 = SECTOR_SIZE;
r0 = dm(External_Sector_Address);
r0=r0+r1; //add for next sector
dm(External_Sector_Address) = r0;
i3 = r0;
sectors:nop;
SECTOR_ERASE.END:
rts;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -