📄 feedis_flash.c
字号:
#include <include.h>
uchar hantemp[32];
void flash_read(uchar column,uint page,uint length,uchar fors) //fors 表示是第一或者第二区段
{
uchar temp,temp1;
uint num;
DDRA = 0xff; //PORTA 变成输出口
// P1.4 ;RB置高
SETBIT(PORTF, RW_4245_1);
//RW_4245_1 = 1; //设置第一个4245方向为写
CLEARBIT(PORTF, OE_4245_1);
//OE_4245_1 = 0; //第一个4245使能输出
SETBIT(PORTF, RW_4245_2 );
//RW_4245_2 = 1; //设置第二个4245方向为写
CLEARBIT(PORTF, OE_4245_2);
//OE_4245_2 = 0; //第二个4245使能输出
SETBIT(PORTE, RE_4245);
//RE_4245 = 1; //RE置高
CLEARBIT(PORTE, ALE_4245);
//ALE_4245 = 0; //ALE置低
CLEARBIT(PORTE, WE_4245);
//WE_4245 = 0; //WE置低
SETBIT(PORTE, CLE_4245);
//CLE_4245 = 1; //CLE置高
PORTA = fors;
//P0 = fors; //命令字,'00'从前面为读 '01'从后面读
SETBIT(PORTE, WE_4245);
//WE_4245 = 1; //WE置高
CLEARBIT(PORTE, CLE_4245);
//CLE_4245 = 0; //CLE置低
SETBIT(PORTE, ALE_4245);
//ALE_4245 = 1; //ALE置高
CLEARBIT(PORTE, WE_4245);
//WE_4245 = 0; //WE置低
PORTA = column;
//P0 = column; //地址0-7位
SETBIT(PORTE, WE_4245);
//WE_4245 = 1; //WE置高
CLEARBIT(PORTE, WE_4245);
//WE_4245 = 0; //WE置低
temp = (uchar)((page>>1) & 0x00ff);
PORTA = temp;
//P0 = temp; //地址8-15位
SETBIT(PORTE, WE_4245);
//WE_4245 = 1; //WE置高
CLEARBIT(PORTE, WE_4245);
//WE_4245 = 0; //WE置低
temp = (uchar)((page>>9) & 0x00ff);
PORTA = temp;
//P0 = temp; //地址16-23位
SETBIT(PORTE, WE_4245);
//WE_4245 = 1; //WE置高
CLEARBIT(PORTE, ALE_4245);
//ALE_4245 = 0; //ALE置低
for(temp = 0;temp < 20;temp++)
NOP();
/*
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();*/
CLEARBIT(PORTF, RW_4245_1);
//RW_4245_1 = 0; //设置第一个4245方向为读l
PORTA = 0XFF;
DDRA = 0x00; //PORTA 变成输入口
//P0 = 0xff; //清理P0口
for(num = 1;num <= length; num++)
{
CLEARBIT(PORTE, RE_4245);
//RE_4245 = 0;
SETBIT(PORTE, RE_4245);
//RE_4245 = 1;
temp = PINA;
hantemp[num-1] = temp;
// ramadd++;
WDR();
//WDOG;
if((num % 512) == 0)
{
for(temp1 = 0;temp1 <16;temp1++ )
{
//WDOG;
WDR();
CLEARBIT(PORTE, RE_4245);
//RE_4245 = 0;
SETBIT(PORTE, RE_4245);
//RE_4245 = 1;
}
// page +=2;
// column = 0x00;
PORTA = 0XFF;
//P0 = 0xff;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -