📄 x5043-moto.c
字号:
#define WREN 0x06 /*写使能*/
#define WRDI 0x04 /*写保护*/
#define WRSR 0x01 /*写状态寄存器*/
#define RDSR 0x05 /*读状态寄存器*/
#define WRITE 0x02 /*写数据*/
#define READ 0x03 /*读数据*/
//*******************************************
void Init25045(void)
{
// PortSPIWP=1;//5045的wp端置1,可写
Writestate(0x03) ; //1.4s
// Writestate(0x13) ; //600ms
//Writestate(0x23) ; //200ms
//Writestate(0x33) ; //disable
}
//*********************************************
void Writestate(byte data)
{
PortSPICS=0; //onchip
Writebyte(0x06); //enable write
PortSPICS=1; //offchip
asm nop;
asm nop;
asm nop;
PortSPICS=0;
Writebyte(0x01); //write state
Writebyte(data);
PortSPICS=1;
Delay1ms(20) ;
}
//********************************************************
void Writebyte(byte data)
{
byte i;
for(i=0;i<8;i++ )
{
PortSPISCK=0;
if(BIT7&data)
{
PortSPISI=1;
PortSPISI=1;
}
else
{
PortSPISI=0;
PortSPISI=0;
}
//
PortSPISCK=1;
data<<=1;
asm nop;
}
}
//
byte Readbyte(void)
{
byte i,data=0;
for(i=0;i<8;i++ )
{
PortSPISCK = 0 ;
data<<= 1 ;
if ( PortSPISO )
data|=BIT0;
else
data&=0xfe;
PortSPISCK=1;
}
return data;
}
void Writedata(word add,byte data)
{
PortSPICS=0; // ONCHIP
Writebyte(0x06); //enable write
PortSPICS=1; // OFFCHIP
asm nop;
asm nop;
asm nop;
PortSPICS=0;
if ((add>>8)==0) //A8λ= 1?0
{
Writebyte(0x02); //write 1 page
}
else
{
Writebyte(0x0A); //write 2 page
}
Writebyte((byte)add);
Writebyte(data);
PortSPICS=1; //OFFCHIP;
Delay1ms(20);
}
/*--------读一个字节的数据-------------------------------------*/
byte Readdata(word add)
{
byte data;
PortSPICS=0; // ONCHIP
asm nop;
if((add>>8)==0) //A8λ= 1?0
{
Writebyte(0x03); //read 1 page
}
else
{
Writebyte(0x0B); //read 2 page
}
asm nop;
Writebyte((byte)add);
asm nop;
data=Readbyte();
PortSPICS=1; // OFFCHIP ;
Delay1ms(20);
return data;
}
//
void Resetwatchdog(void)
{
__RESET_WATCHDOG();
PortSPICS=0;
asm nop;
asm nop;
PortSPICS=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -