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

📄 x5045.c

📁 说明在程序里
💻 C
字号:
#define __X5045_SOURCE__
#include <reg52.h>
#include "X5045.h"

/**********************************************************************
  模块名: X5045接口程序
  创建人: XX 
  日  期: 2002-11-14 
  说  明:     


  日期:  2002-11-14
  修改:
  说明:  版本定为1.02


  日期:
  修改:
  说明:


  日期:
  修改:
  说明:

 **********************************************************************/
 
// 函数名称:  _X5045_Byte_In()
// 函数说明:  读X5045一个字节的处理程序
// 返回值  :  BYTE:  X5045输出的一个字节
BYTE _X5045_Byte_In(void)
{ 
	BYTE bt_Bit_Count,bt_Result=0;
	// 读入8位
	for(bt_Bit_Count = 8; bt_Bit_Count > 0; bt_Bit_Count --)
	{
		X5045_SCLK  = 1;
		X5045_SO    = 1;
		X5045_SCLK  = 0;
		// 高位在前,低位在后
        bt_Result <<= 1;
		// 在下降沿读数据
        if( X5045_SO )
           	bt_Result  ++ ;
    }
    return bt_Result;
}

// 函数名称:  _X5045_Byte_Out
// 函数说明:  写入X5045一个字节的处理程序
// 返回值  :  void:  无 
// 参数说明:  BYTE:  写入X5045的一个字节       
void _X5045_Byte_Out(BYTE Data)
{
	BYTE bt_Bit_Count;
	// 写入8位
	for(bt_Bit_Count = 8 ;bt_Bit_Count > 0 ;bt_Bit_Count --)
	{
		// 高位在前,低位在后
		Data     <<= 1;
        X5045_SI   = CY;
		// 上升沿锁存数据
        X5045_SCLK = 0;			 
        X5045_SCLK = 1;
	}
}

// 函数名称:  _Byte_In
// 函数说明:  写入X5045的状态寄存器的处理程序
// 返回值  :  BYTE:  X5045状态寄存器的值         
BYTE X5045_Read_Reg()
{
	BYTE Result;
	X5045_SCLK = 0;
	X5045_CS   = 0;
	// 读状态寄存器命令
	_X5045_Byte_Out(0x05);   
	Result     = _X5045_Byte_In();
	X5045_SCLK = 0;
	X5045_CS   = 1;
	return Result;
}

// 函数名称:  _X5045_Wait
// 函数说明:  等待X5045写周期的结束的处理程序
// 返回值  :  void:  无         
void _X5045_Wait()
{
	BYTE i;
	// 防止死循环	
	for(i=0;i<0xff;i++)	
	{
		// X5045在写状态中,禁止对X5045进行操作,防止数据丢失,除查询状态寄存器
		// 状态寄存器的D1位为1时,表示还在写,0表示已完成写操作
		if(!(X5045_Read_Reg() & 1))
			break;
	}		
}

// 函数名称:  X5045_Write_Reg
// 函数说明:  向X5045写状态寄存器的处理程序
// 返回值  :  void:  无 
// 参数说明:  Data:  写状态寄存器的值      
void X5045_Write_Reg(BYTE Data)
{
	_X5045_Wait();
	X5045_CS = 0;
	//允许写操作命令
	_X5045_Byte_Out(0x06);  		
	X5045_CS = 1;
	X5045_CS = 0;
	//写寄存器命令
	_X5045_Byte_Out(0x01);  			
	_X5045_Byte_Out(Data);
	X5045_CS = 1;
	X5045_CS = 0;
	//禁止写操作命令
	_X5045_Byte_Out(0x04);  			
	X5045_CS = 1;
}

// 函数名称:  X5045_Read_Word
// 函数说明:  向X5045写状态寄存器的处理程序
// 返回值  :  void:  无 
// 参数说明:  Data:  写状态寄存器的值    
WORD X5045_Read_Word(WORD addr)
{
	union BYTES Result;
	_X5045_Wait();
	X5045_CS       = 0;
	if(addr > 0xff)
	{
		//读高256个字节
       	addr       -= 256;
        _X5045_Byte_Out(0x0b); 
	}
	else
	{
		//读低256个字节
		_X5045_Byte_Out(0x03); 		 
	}
	_X5045_Byte_Out(addr);
	Result.bytes.hi = _X5045_Byte_In();
	Result.bytes.lo = _X5045_Byte_In();
	X5045_CS        = 1;
	return(Result.word);
}

// 函数名称:  X5045_Write_Word
// 函数说明:  向X5045指定的一个地址写一个字的处理程序
// 返回值  :  void:  无 
// 参数说明:  addr:  X5045指定的地址
// 参数说明:  Data:  写X5045的一个字值  
void X5045_Write_Word(WORD addr,WORD DATA)
{
	union BYTES Result;
	Result.word=DATA;
	_X5045_Wait();
	X5045_CS  = 0;
	//允许写操作命令
	_X5045_Byte_Out(0x06); 	 		
	X5045_CS  = 1;
	X5045_CS  = 0;
	//写操作命令
	if(addr > 0xff)		 	
	{
		//写高256个字节A8 = 1
		addr  -= 256;
		_X5045_Byte_Out(0x0a); 		
	}
	else
	{
		//写低256个字节A8 = 0
		_X5045_Byte_Out(0x02);		
	}
	_X5045_Byte_Out(addr);
	_X5045_Byte_Out(Result.bytes.hi);
	_X5045_Byte_Out(Result.bytes.lo);
	X5045_CS  = 1;
	X5045_CS  = 0;
	//禁止写操作命令
	_X5045_Byte_Out(0x04); 	 	
	X5045_CS  = 1;
}

// 函数名称:  X5045_WatchDog
// 函数说明:  喂狗处理程序
// 返回值  :  void:  无 
void X5045_WatchDog()
{
	X5045_CS = 0;
	X5045_CS = 1;
}

⌨️ 快捷键说明

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