📄 x5045.h
字号:
#define True 1;
#define Fault 0;
sbit CCS = P1^3; //;X5045--CS 片选端
sbit SCK = P1^7; //;X5045--SCK
sbit SSI = P1^5; //;X5045--SI
sbit SSO = P1^6; //;X5045--SO
/*
******************************************************************
* *
* 函数功能: 短延时程序 *
* *
******************************************************************
*/
void Wait_X45(unsigned int Us1)
{
unsigned int U1=0;
while(U1<Us1) {U1++;U1++;U1--;}
}
//============== 写一个字节 ========================
void Out_Bit(uint8 Out1)
{
uint8 t1,t2;
for(t1=0;t1<8;t1++)
{
t2=Out1&0x80;
if(t2==0x80) SSI=1;
else SSI=0;
Wait_X45(1);
SCK=1; //上升沿打入数据
Wait_X45(1);
SCK=0;
Out1=Out1<<1; //左移一位
}
}
//============ 读一个字节 ==================
uint8 In_Bit(void)
{
uint8 t1,i1,Out1;
Out1=0;
for(t1=0;t1<8;t1++)
{
Wait_X45(1);
SCK=1;
Wait_X45(1);
if(SSO==1) i1=0x01;
else i1=0;
Out1=Out1<<1; //左移一位
Out1=Out1+i1;
SCK=0; //下降沿打入数据
}
return Out1;
}
//============ 读状态字 =====================
uint8 Rd_Sr(void)
{
uint8 Rd;
SCK=0;
CCS=0;
Out_Bit(0x05);//输出--RDSR=#05H
Rd=In_Bit();
SCK=0;
CCS=1;
return Rd;
}
//============== 等写完成 =====================
uint8 Wipoll(void)
{
uint8 w1,w2=0;
w1=0x01; // 保留D0
for(w2=0;w2<100;w2++)
{
Wait_X45(1); //延时
w1=Rd_Sr()&0x01; //读状态字
if(w1==0x00) return True; //正常写入,返回
w1=w1&&0x01;//保留D0
}
return Fault; //出错退出
}
//============ X5045 初始化 ==================
void Rst_X45(void)
{
SSO=1;
CCS=1;
Wait_X45(10);
SCK=0;
CCS=0;
Out_Bit(0x06);//输出06代码,允许写
CCS=1;
Wait_X45(10);
CCS=0;
Out_Bit(0x01); //输出01
Out_Bit(0x30); //关看门狗
CCS=0;
Wait_X45(10);
CCS=1;
Wipoll(); //等X5045写完成
}
/*
******************************************************************
* *
* 函数功能: *
* *
******************************************************************
*/
//;#################################################
//; 向X5045中A所对应的地址写入一个字节
//;#################################################
void X45_Wr(uint16 add1,uint8 Num)
{
uint8 w1,w2;
w1=add1/256;
w2=add1%256;
SCK=0;
CCS=0;
Out_Bit(0x06);//写使能
CCS=1;
Wait_X45(1);
CCS=0;
Wait_X45(1);
w1=w1*8+2; //XXXX,a8,0,1,0=写数据控制字,
Out_Bit(w1);//送A8及控制字
Out_Bit(w2);//送低8位在址
Out_Bit(Num);//送数据
SCK=0;
CCS=1;
Wipoll();//等写完成
}
/*
******************************************************************
* *
* 函数功能: 向X5045 所对应的地址读出一个字节 *
* *
******************************************************************
*/
uint8 X45_Rd(uint16 add1)
{
uint8 w1,w2;
w1=add1/256;
w2=add1%256;
SCK=0;
CCS=0;
Out_Bit(0x06);//写使能
CCS=1;
Wait_X45(10);
CCS=0;
Wait_X45(10);
w1=w1*8+3; //XXXX,a8,0,1,0=写数据控制字,
Out_Bit(w1);//送A8及控制字
Out_Bit(w2);//送低8位在址
w1=In_Bit();//读数据
SCK=0;
CCS=1;
return w1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -