?? flash.asm
字號(hào):
//============================================================
// 文件名稱(chēng):Flash.asm
// 實(shí)現(xiàn)功能: SPCE061 32K flash 的讀寫(xiě)
// 日期: 2003/6/9
//============================================================
.INCLUDE hardware.inc
.DEFINE C_FLASH_SIZE 0x8000
.DEFINE C_FLASH_BLOCK_SIZE 0x100 //256個(gè)字節(jié)
.DEFINE C_FLASH_MATCH 0xAAAA //識(shí)別字
.DEFINE C_FLASH_PAGE_ERASE 0x5511 //命令字_擦除一頁(yè)
.DEFINE C_FLASH_MASS_ERASE 0x5522 //命令字_整體擦除
.DEFINE C_FLASH_1WORD_PGM 0x5533 //命令字_寫(xiě)一個(gè)字
.DEFINE C_FLASH_SEQUENT_PGM 0x5544 //命令字_寫(xiě)多個(gè)字
.DEFINE C_FLASH_MAIN_BLOCK 0x5555
.DEFINE C_FLASH_INFORM_BLOCK 0x5566
.DEFINE P_Flash_Ctrl 0x7555 //控制FLASH單元
.CODE
//============================================================
//函數(shù): F_FlashWrite1Word()
//語(yǔ)法:void F_FlashWrite1Word(int addr,int Value)
//描述:寫(xiě)一個(gè)字到FLASH中
//參數(shù):1、被寫(xiě)數(shù)據(jù)的存儲(chǔ)地址
// 2、被寫(xiě)數(shù)據(jù)
//返回:無(wú)
//============================================================
.PUBLIC _F_FlashWrite1Word
_F_FlashWrite1Word: .proc
push bp to [sp]
bp = sp+1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_1WORD_PGM //5533
[P_Flash_Ctrl] = r1
r1 = [bp+3] //flash address
r2 = [bp+4] //data
[r1] = r2
pop bp from [sp]
retf
.ENDP
//============================================================
//函數(shù):F_FlashWrite()
//語(yǔ)法:F_FlashWrite(int sector,int &num,int size)
//描述:順序?qū)懚鄠€(gè)字
//參數(shù):1、被寫(xiě)數(shù)據(jù)的起始地址
// 2、被寫(xiě)數(shù)據(jù)
// 3、寫(xiě)數(shù)據(jù)的數(shù)量
//返回:無(wú)
//============================================================
.PUBLIC _F_FlashWrite
_F_FlashWrite: .proc
push bp to [sp]
bp = sp+1
r1 = [bp+3] //flash base address
r2 = [bp+4] //data
r3 = [bp+5] //多個(gè)字節(jié)
r4 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r4
L_FlashWriteLoop:
r4 = C_FLASH_SEQUENT_PGM //5544
[P_Flash_Ctrl] = r4
r4 = [r2++]
[r1++] = r4
r3 -= 1
jnz L_FlashWriteLoop
[P_Flash_Ctrl] = r3 //寫(xiě)結(jié)束
pop bp from [sp]
retf
.ENDP
// ===========================================================
//函數(shù):F_FlashErase()
//語(yǔ)法:void F_FlashErase(sector)
//描述:擦除256字節(jié)
//參數(shù): 擦除頁(yè)的起始地址
//返回:無(wú)
// ===========================================================
.PUBLIC _F_FlashErase
_F_FlashErase: .proc
push bp to [sp]
bp = sp + 1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_PAGE_ERASE //5511
[P_Flash_Ctrl] = r1
r1 = [bp+3] //擦除一頁(yè)
[r1] = r1
pop bp from [sp]
retf
.ENDP
.PUBLIC _F_FlashRead
_F_FlashRead:
push bp to [sp]
bp = sp + 1
r1 = [bp+3] //讀一個(gè)字
r2 = [r1]
r1 = r2
pop bp from [sp]
retf
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -