📄 flash.c
字号:
U16 u_temp;
U16 u_dq7;
U16 u_dq61;
U16 u_dq62;
//------------------------------------------------
void Flash_Ready();
void Flash_Erase_ALL();
void Flash_Write_OneWord(U16 U_Addr, U16 U_Val)
U16 Flash_Read_OneWord(U16 U_Addr);
//------------------------------------------------
void Flash_Ready()
{
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xD555)= 0xAA ;
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xAAAA)=0x55 ;
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xD555)=0xF0 ; // Ready Command
u_temp = *(U16*)(0xFFFE) ;
}
//------------------------------------------------
void Flash_Erase_ALL()
{
u_temp = portFFFE ;
portD555 = 0xAA ;
u_temp = portFFFE ;
portAAAA = 0x55 ;
u_temp = portFFFE ;
portD555 = 0x80 ; // Erase0 Command
u_temp = portFFFE ;
portD555 = 0xAA ;
u_temp = portFFFE ;
portAAAA = 0x55 ;
u_temp = portFFFE ;
portD555 = 0x10 ; // Erase1 Command
u_temp = portFFFE ;
u_temp = portFFFE ;
do
{
portFFFE = 0x11 ;
u_dq7 = portD555 ;
}while((u_dq7 & 0x0080)==0x0000);
}
//------------------------------------------------
void Flash_Write_OneWord(U16 U_Addr, U16 U_Val)
{
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xD555)= 0xAA ;
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xAAAA)=0x55 ;
u_temp = *(U16*)(0xFFFE) ;
*(U16*)(0xD555)=0xA0 ; // Write Command
u_temp = *(U16*)(0xFFFE) ;
// port8000 = 0x123A ;
*(U16*)(U_Addr)=U_Val ; // Write DATA to U_Addr
u_temp = *(U16*)(0xFFFE) ;
do
{
*(U16*)(0xFFFE)=0x11 ;
u_dq61 = *(U16*)(0x8000) ;
*(U16*)(0xFFFE)=0x11 ;
// u_dq62 = port8000 ;
u_dq62 = *(U16*)(0x8000) ;
*(U16*)(0xFFFE)=0x11 ;
}while((u_dq61 & 0x0040)!=(u_dq62 & 0x0040));
}
//------------------------------------------------
U16 Flash_Read_OneWord(U16 U_Addr)
{
/* portFFFE = 0x11 ;
u_a = port8000;
portFFFE = 0x11 ;
*/
// OK
/* portFFFE = 0x11 ;
u_a = port8000;
portFFFE = 0x11 ;
*/
// OK
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -