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

📄 x25045.c

📁 开锁程序,可以通过DA1990a打开门的锁
💻 C
字号:
/*
;-----------------------------------------
;程序文件名称:25045.C
;软件标题:25045操作标准子程序集
;软件说明:25045串行EEPROM 驱动
;程序最后修改时间: 2007-11-02 20:10
;-----------------------------------------
;原作者:   张  鑫    
;程序修改人:张  鑫
;版本号:	  V1.0.0
;-----------------------------------------
*/
#include <zx.h> 
//typedef unsigned char uchar;
//typedef unsigned int uint;
/* 
Status register(状态寄存器),他的意义在于第5,第4位为WDI1,WDI0代表DOG的时间,00为1.4秒,01为600毫秒,10为200毫秒,
11为disabled第3位和第2位为BL1,BL0,是写保护设置位,00为无保护,01为保护180-1FF,10为保护100-1FF,11为保护000-1FF.
第1位为WEL,当他为1时代表已经"写使能"设置了,现在可以写了,只读位.第0位为WIP,当他为1时代表正在进行写操作,是只读.
*/

/* 25045芯片的指令定义 */
#define WREN 0x06    //写使能指令。
#define WRDI 0x04    //写复位指令。
#define RDSR 0x05    //读状态寄存器指令。
#define WRSR 0x01    //写状态寄存器指令。
#define READ0 0x03   //读低位数据前导指令。
#define READ1 0x0b   //读高位数据前导指令。
#define WRITE0 0x02	 //写低位数据前导指令。
#define WRITE1 0x0a	 //写高位数据前导指令。

/*以下各个管脚,需要根据实际连接情况来定义*/
sbit SO = P1^2;/*25045输出*/   
sbit SI = P1^4;/*25045输入*/
sbit SK = P1^5;/*25045时钟*/
sbit CS = P1^3;/*25045片选*/
sbit WP = P1^0;/*25045写保护*/
//*********************************************
//函数功能:读一个字节数据。
//入口: 无。
//出口: 返回一个字节数据。
//*********************************************
uchar Read8() 
{
 bit bData;
 uchar cloop;
 uchar cData;
 for(cloop=0;cloop<8;cloop++)
 {
  SK=1;
  SK=0;
  bData=SO;
  cData<<=1;
  if( bData )
   cData|=0x01;
 }
 return cData;
}


//*********************************************
//函数功能:写一个字节数据。
//入口: 给出一个字节数据。
//出口: 无。
//*********************************************  
void Write8( uchar cData )
{
 uchar cloop;
 for(cloop=0;cloop<8;cloop++)
 {
  if ((cData&0x80)==0)
   SI=0;
  else
   SI=1;
  SK=0;
  SK=1;
  cData<<=1;
 }
}


//*********************************************
//函数功能:读状态寄存器。
//入口: 无。
//出口: 返回状态寄存器状态。
//*********************************************
uchar ReadSR() //
{
 uchar cData;
 CS=0;
 Write8(RDSR);
 cData=Read8();
 CS=1;
 return cData;
}


//*********************************************
//函数功能:写状态寄存器。
//入口: 给出状态寄存器状态。
//出口: 正确写入返回0,没有写入返回1。
//*********************************************
uchar WriteSR( uchar cData )
{
 uchar cTemp;
 cTemp=ReadSR();
 if((cTemp&0x01)==1)
  return 0;
 CS=0;
 Write8(WREN);
 CS=1;
 CS=0;
 Write8(WRSR);
 Write8(cData);
 CS=1;
 return 1;
}

//*********************************************
//函数功能:复位看门狗。
//入口:
//出口: 
//*********************************************
void RST_WDog()
{
 CS=0;
 CS=0;
 CS=1;
 CS=1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -