⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x5045.h

📁 x5045,在P89V51RD2中用的
💻 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 + -