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

📄 93lc46b.c

📁 MicroWire(微总线)串行EEROM93LC46B(64*16)程序
💻 C
字号:
/*=========================================================================================*/
/*张刚--最后修改于****年**月**日*/

/*-----MicroWire(微总线)串行EEROM93LC46B(64*16)程序,本程序主要实现以下功能-----*/
/*1、实现93LC46B读数据;*/
/*2、实现93LC46B写数据;*/
/*=========================================================================================*/
#include <Constdef.h>

//---写义数据长度,93LC46B的长度为一个字---//
#define DatLen  16

//---定义各引脚---//
sbit  CLK=P1^0;				//---时钟引脚---//
sbit  DI=P1^1;				//---数据输入引脚---//
sbit  DO=P1^2;				//---数据输出引脚---//

//---CS置为低电平---//
void LowCS()			
{
	P2&=0xc7;
		
	return;
}

//---CS置为高---//
void HighCS()				
{
	LowCS();
	P2|=0x28;

	return;
}

//---写入1位数据---//
void WriteBit(bit bData)
{
	CLK=0;
	DI=bData;
	CLK=1;

	return;
}

//---写入操作码---//
void WriteOp(uchar cData)	
{
	WriteBit((bit)(cData&0x02));
	WriteBit((bit)(cData&0x01));
	CLK=0;

	return;
}

//---写入地址---//
void WriteAddress(uchar cData)	
{
	uchar cTmp;
	
	cData<<=2;
	for (cTmp=0;cTmp<6;cTmp++)
	{
		WriteBit((bit)(cData&0x80));
		cData<<=1;
	}
	CLK=0;
	
	return;
}

//---写入数据---//
void WriteData(unsigned int iData)	
{
	uchar cTmp;

	for (cTmp=0;cTmp<16;cTmp++)
	{
		WriteBit((bit)(iData&0x8000));
		iData<<=1;
	}
	CLK=0;

	return;
}

//---读出一位数据---//
bit ReadBit()					
{
	bit bTmp;

	CLK=1;
	bTmp=DO;
	CLK=0;

	return(bTmp);
}

//---读出数据---//
uint ReadData()		
{
	uint iTmp=0;
	uchar cTmp;

	for (cTmp=0;cTmp<16;cTmp++)
	{
		iTmp<<=1;
		if (ReadBit())
		{
			iTmp++;
		}
	}

	return (iTmp);
}

//---置写入使能---//
void EnWrite()			
{
	DI=0;
	CLK=0;
	HighCS();
	WriteBit(1);            //---写入启动位---//
	WriteOp(0);             //---写入操作码---//
	WriteAddress(0x30);     //---写入地址码---//
	LowCS();
}

//---取消写入使能---//
void DisWrite()		
{
	DI=0;
	CLK=0;
	HighCS();
	WriteBit(1);            //---写入启动位---//
	WriteOp(0);             //---写入操作码---//
	WriteAddress(0);        //---写入地址码---//
	LowCS();
	
}

//---写入一个字---//
void WriteWord(uchar cAddress,uint iData)	
{
	DI=0;
	CLK=0;
	HighCS();
	WriteBit(1);            //---写入启动位---//
	WriteOp(1);             //---写入操作码---//
	WriteAddress(cAddress); //---写入地址码---//
	WriteData(iData);       //---写入数据---//
	LowCS();
	HighCS();

	while(!DO);             //---等待写入完成---//

	return;
}

//---读出一个字---//
uint ReadWord(uchar cAddress)
{
	uint iTmp;

	DI=0;
	CLK=0;
	HighCS();
	WriteBit(1);            //---写入启动位---//
	WriteOp(2);             //---写入操作码---//
	WriteAddress(cAddress); //---写入地址码---//
	iTmp=ReadData();        //---写入数据---//
	LowCS();

	return(iTmp);
}

⌨️ 快捷键说明

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