📄 x25045.h
字号:
//#include <89c52.h>
#ifndef _X25045_H_
#define _X25045_H_
#define X25WREN 0x06
#define X25WRDI 0x04
#define X25RDSR 0x05
#define X25WRSR 0x01
#define X25READL 0x03
#define X25READH 0x0b
#define X25WRITEL 0x02
#define X25WRITEH 0x0a
#define NODOG 3
#define T1_4s 0
#define T0_6s 1
#define T0_2s 2
#define RST_DOG 4
unsigned char bdata X25_bx;
sbit X25_bx7=X25_bx^7;
sbit X25_bx0=X25_bx^0;
void x25cs(unsigned char v);
void X25out(void);
void X25in(void);
void X25Busy(void);
void watchdog(unsigned char Action);
unsigned char X25045(unsigned char Command,unsigned char Address,unsigned char Dataa);
void X25writeable(unsigned char Action);
void writebyte(unsigned char dta,unsigned char addr);
unsigned char readbyte(unsigned char addr);
void writebyte(unsigned char dta,unsigned char addr)
{
X25045(X25WRITEL,addr,dta);
}
unsigned char readbyte(unsigned char addr)
{
uchar temp;
temp=X25045(X25READL,addr,0);
return(temp);
}
void x25cs(uchar v)
{
if(v)
{
x25045cs=1;
x25045cs=1;
}
else
{
x25045cs=0;
x25045cs=0;
}
}
void X25out(void)
{
unsigned char j;
unsigned char i;
for (j=0;j!=8;j++)
{
X25045Si=X25_bx7;
X25_bx=X25_bx<<1;
for(i=0;i<8;i++)X25045Sck=1;
for(i=0;i<8;i++)X25045Sck=0;
}
}
void X25in(void)
{ unsigned char j;
unsigned char i;
for (j=0;j!=8;j++)
{
for(i=0;i<8;i++)X25045Sck=1;
X25_bx=X25_bx<<1;
X25_bx0=X25045So;
for(i=0;i<8;i++)X25045Sck=0;
}
}
void X25Busy(void)
{
uchar a=0xff;
while((a&0x01)==1)
{
/*RDSR 0000 0101*/
X25045Sck=0;
x25cs(0);
X25_bx=0x05;
X25out();
X25_bx=0;
X25in();
x25cs(1);
a=X25_bx;
}
}
void X25writeable(unsigned char Action)
{
X25045Sck=0;
x25cs(0);
X25_bx=Action;
X25out();
x25cs(1);
}
uchar X25045(unsigned char Command,unsigned char Address,unsigned char Dataa)
{
unsigned char j;
unsigned char Result=0;
switch(Command)
{
case 0x06: /*WREN 0000 0110*/
case 0x04: /*WRDI 0000 0100*/
X25writeable(Command);
break;
case 0x05: /*RDSR 0000 0101*/
X25045Sck=0;
x25cs(0);
X25_bx=Command;
X25out();
X25_bx=Dataa;
X25in();
x25cs(1);
Result=X25_bx;
break;
case 0x01: /*WRSR 0000 0001*/
//dly1ms(5);//
X25Busy();
X25writeable(X25WREN);
X25045Sck=0;
x25cs(0);
X25_bx=Command;
X25out();
X25_bx=Dataa;
X25out();
x25cs(1);
X25writeable(X25WRDI);
//dly1ms(5);//
X25Busy();
break;
case 0x03: /*READ 0000 0011 lowpage*/
case 0x0b: /*READ 0000 1011 highpage*/
X25045Sck=0;
x25cs(0);
X25_bx=Command;
X25out();
X25_bx=Address;
X25out();
X25_bx=Dataa;
X25in();
x25cs(1);
Result=X25_bx;
break;
case 0x02: /*WRITE 0000 0010 lowpage*/
case 0x0a: /*WRITE 0000 1010 highpage*/
//dly1ms(5); //
X25Busy();
X25writeable(X25WREN);
X25045Sck=0;
x25cs(0);
X25_bx=Command;
X25out();
X25_bx=Address;
X25out();
X25_bx=Dataa;
X25out();
x25cs(1);
X25writeable(X25WRDI);
//dly1ms(10);//
X25Busy();
break;
defalut:break;
}
return(Result);
}
void watchdog(unsigned char Action)
{
switch(Action)
{
case 0: //1.4s
X25045(X25WRSR,0,0);
break;
case 1: //0.6s
X25045(X25WRSR,0,0x10);
break;
case 2: //0.2s
X25045(X25WRSR,0,0x20);
break;
case 3: //No dog
X25045(X25WRSR,0,0x30);
break;
case 4:
x25cs(0);
x25cs(1);
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -