📄 pageprogram.asm
字号:
#include <def21262.h>
.global FLASH_PROGRAM_Command;
.extern page_program_cmds;
.extern BYTE_PPDMA;
.extern PP_DMA_WRITE;
//delay funcntions
.extern CLE_delay_func;
.extern ALE_delay_func;
.extern AFTER_RD_WR_delay_func;
.extern Delay_Before_Return_func;
//
.section/pm seg_dmda;
.var Write_Row_Addr[1] = 0;
.section/pm seg_pmco;
//PAGE PROGRAM Command
FLASH_PROGRAM_Command:
//Generate page address from r12, r13, r14 and r15
r11 = 0;//Initialize to "0"
r13 = LSHIFT r13 by 8; //left shift by 8
r14 = LSHIFT r14 by 16; //left shift by 16
r15 = LSHIFT r15 by 24; //left shift by 24
r11 = r12 or r13;
r11 = r11 or r14;
r11 = r11 or r15;//r11 has the generated block address
//
bit clr FLAGS FLG0; //enable chip - FLASH CS# asserted here
bit set FLAGS FLG1; //Drive CLE "HI" for the command phase
//First byte - command "0x80"
i0 = page_program_cmds;
r7 = i0;
r8 = 1;//external memory byte transfer count
m0 = 1;//modifier to select next byte of command
CALL BYTE_PPDMA;
idle;//wait for PP Interrupt
//Drive CLE "LO"
CALL CLE_delay_func;//call CLE delay
bit clr FLAGS FLG1;
//Drive ALE "HI" - address phase
bit set FLAGS FLG2;
//Write "column", "rox_1_2_3" address
i1 = Write_Row_Addr;
dm(i1,0) = r11;
r7 = i1;
r8 = 4;//external memory byte transfer count
CALL BYTE_PPDMA;
idle;//wait for PP Interrupt
//Drive ALE "LO"
CALL ALE_delay_func;//call ALE delay
bit clr FLAGS FLG2;
//write data DN, DN+1......DN+527
r8 = 528;//external memory byte transfer count
r7 = i4;
r6 = 132;//internal packed word count = r8 / 4
CALL PP_DMA_WRITE;
idle;//wait for PP Interrupt
CALL AFTER_RD_WR_delay_func;
//Give 0x10 command
bit set FLAGS FLG1; //Drive CLE "HI"
//Command "0x10"
modify(i0,m0);
r7 = i0;
r8 = 1;//external memory byte transfer count
m0 = 1;//modifier to select next byte of command
CALL BYTE_PPDMA;
idle;//wait for PP Interrupt
//Drive CLE "LO"
CALL CLE_delay_func;//call CLE delay
bit clr FLAGS FLG1;
idle;//wait for Interrupt / BUSY (R/B#) from NAND FLASH
bit set FLAGS FLG0;//Disable chip - FLASH CS# de-asserted
CALL Delay_Before_Return_func;
RTS;
FLASH_PROGRAM_Command.end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -