📄 rom.c
字号:
#include "head.c"
/*
sbit ROM_CS=P0^1;//ROM CS
sbit ROM_CLE=P3^2;//ROM COMMAND SELECT PIN
sbit ROM_ALE=P3^0;//ROM ADDRESS SELECT PIN
sbit ROM_BUSY=P3^4;//--ROM R/B PIN
#define ROM_DATAPORT P2;//ROM PORT
sbit ROM_WR=P3^5;//WRITE
sbit ROM_RD=P3^7;//READ
*/
rom_send_com(unsigned char value)
{
ROM_RD=1;
ROM_CS=0;
ROM_CLE=1;//COMMAND
ROM_ALE=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;
//ROM_ALE=1;
}
rom_send_add(unsigned char value)
{
ROM_RD=1;
ROM_ALE=1;//ADDRESS
ROM_CLE=0;
ROM_CS=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;
}
rom_send_value(unsigned char value)
{
ROM_CLE=0; //value
ROM_ALE=0;//
ROM_RD=1;
ROM_CS=0;
ROM_DATAPORT=value;
ROM_WR=0;
ROM_WR=1;
ROM_CS=1;
//ROM_ALE=1;
}
void rom_check_busy() //NOT BUSY RETURN
{
unsigned char value;
value=0;
while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;
ROM_CLE=0; //read the data?!
ROM_ALE=0;//
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
//delay(1);
}
//ROM_ALE=1;
}
//-------------->Erase whole block data<--------------------
unsigned char rom_erase_block(unsigned int add)
{
unsigned char value;
rom_send_com(0x60);
/*
rom_send_add(add>>8);
rom_send_add((unsigned char )add);
*/
rom_send_add((add&0x7)<<5);
rom_send_add(add>>3);
rom_send_com(0xd0);
//--busy check!
ROM_BUSY=1;
while(ROM_BUSY==0);
//value=0;
//while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;
ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
delay(10);
}
//ROM_ALE=1;
/*
value=0;
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;
ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
delay(10);
EA=1;
printc(value);
EA=0;
*/
if((value&1)==0)
return 0;//erase ok
else
return 1;//erase error
}
//-------------->write whole block data------<--------------
void rom_write_block_start(unsigned char addcol,unsigned int addrow)
{
rom_send_com(0x80);//program
rom_send_add(addcol);
rom_send_add((unsigned char)addrow);
rom_send_add(addrow>>8);
ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);
//----after this can write data to flash.............---
}
unsigned char rom_write_block_end()
{
//unsigned char value;
rom_send_com(0x10);
//--busy check!
ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);
/*
value=0;
while((value&0x40)==0)//is busy? yes-->check again
{//read the status
rom_send_com(0x70);//get status
ROM_DATAPORT=0xff;
ROM_CLE=0; //read the data?!
ROM_ALE=0;//
ROM_WR=1;
ROM_CS=0;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
ROM_ALE=1;
//delay(10);
}
if((value&1)==0)
return 0;//erase ok
else
return 1;//erase error
*/
return 0;
}
void rom_read_block_start(unsigned char addcol,unsigned int addrow)
{
//unsigned char value;
rom_send_com(0x00);
rom_send_add(addcol);
rom_send_add((unsigned char)addrow);
//rom_send_add(addrow>>8);
ROM_CLE=0;
ROM_ALE=1;//ADDRESS
ROM_RD=1;
ROM_CS=0;
ROM_DATAPORT=addrow>>8;
ROM_WR=0;
ROM_WR=1;
ROM_BUSY=1;
while(ROM_BUSY==0);
ROM_BUSY=1;
while(ROM_BUSY==0);
//delay(1);
ROM_CS=1;
}
/*
void rom_read_write_lcm()//
{
unsigned char value;
unsigned int k,k2;
ROM_CLE=0; //read the data?!
ROM_ALE=0;
ROM_WR=1;
ROM_CS=0;
LCM_CS=0;
LCM_RS=1;
W_C(0x22);
for(k2=1800;k2>0;k2--)//动画的总的帧数,10/s,total 1800 frame,3分
for(k=32767;k>0;k--)
{
ROM_RD=0;
value=ROM_DATAPORT;//data read from flash
ROM_RD=1;
LCM_DATAPORT=value;//data write to lcm-----------xxxx-------------------------
LCM_WR=0;//write data to lcm---------------------xxxx-------------------------
LCM_WR=1;//write data to lcm---------------------xxxx-------------------------
}
ROM_CS=1;
}
*/
void putenter()
{
SBUF=0x0d;//send num
while(0==TI);
TI=0;
SBUF=0x0a;//send num
while(0==TI);
TI=0;
}
void putok()
{
SBUF=79;//send num
while(0==TI);
TI=0;
SBUF=75;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=62;//send num
while(0==TI);
TI=0;
}
void puterror()
{//ERROR-->
SBUF=69;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;
SBUF=79;//send num
while(0==TI);
TI=0;
SBUF=82;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=45;//send num
while(0==TI);
TI=0;
SBUF=62;//send num
while(0==TI);
TI=0;
}
void putspace()
{
SBUF=0x20;//send num
while(0==TI);
TI=0;
}
void putnum(unsigned char value)
{
SBUF=value|0x30;//send num
while(0==TI);
TI=0;
}
void printi(unsigned int value )
{
unsigned int a;
unsigned char temp;
a=value;
if(a>=10000)
{
temp=a/10000;
putnum(temp);
a=a%10000;
}
if(a>=1000)
{
temp=a/1000;
putnum(temp);
a=a%1000;
}else if(value>=10000)
putnum(0);
//---------------->>>>
if(a>=100)
{
temp=a/100;
putnum(temp);
a=a%100;
}else if(value>=1000)
putnum(0);
//---------------->>>>>>
if(a>=10)
{
temp=a/10;
putnum(temp);
a=a%10;
}else if(value>=100)
putnum(0);
if(a>0)
{
temp=a;
putnum(temp);
}
else
putnum(0);
putspace();
}
void printc(unsigned char value )
{
unsigned char a;
unsigned char temp;
a=value;
//---------------->>>>
if(a>=100)
{
temp=a/100;
putnum(temp);
a=a%100;
}
//---------------->>>>>>
if(a>=10)
{
temp=a/10;
putnum(temp);
a=a%10;
}else if(value>=100)
{
putnum(0);
}
if(a>0)
{
temp=a;
putnum(temp);
}
else
putnum(0);
putspace();
}
unsigned char rom_readID() //read the rom ID
{
unsigned char value;
//rom_send_com(0x90);
ROM_RD=1;
ROM_CS=0;
ROM_CLE=1;//COMMAND
ROM_ALE=0;
ROM_DATAPORT=0x90;
ROM_WR=0;
ROM_WR=1;
//rom_send_add(0x00);
ROM_CLE=0;
ROM_ALE=1;
ROM_DATAPORT=00;
ROM_WR=0;
ROM_WR=1;
ROM_CLE=0; //read the data?!
ROM_ALE=0;//
ROM_DATAPORT=0xff;
ROM_RD=0;
value=ROM_DATAPORT;
ROM_RD=1;
ROM_CS=1;
ROM_ALE=1;
return value;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -