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

📄 93lc46b.c

📁 eeprom 93LC46 SPI接口程序
💻 C
字号:
//******************************************************************************
//                     93LC46B EEPROM读写程序 eepm.c
//    This program illustrates the following operations:
//          - EWEN commmand
//          - WRITE commmand
//          - READ commmand
//          - EWDS commmand
//    注意:93LC46B为16位存储结构,ORG脚无作用
//    时间:2006.3.30
//    作者:肖 鹏
//******************************************************************************
#include <msp430x14x1.h>
#include "eepm.h" 

#define SB_CMD       0x01          
#define EWEN_CMD     0x30          // EWEN command  0000 0001 0011 XXXX
#define EWDS_CMD     0x00          // EWDS command  0000 0001 0000 XXXX
#define WRITE_CMD    0x40          // WRITE command 01A5A4 A3A2A1A0
#define READ_CMD     0x80          // READ command  10A5A4 A3A2A1A0
#define ERASE_CMD    0xC0

extern void SPI_Send(unsigned char);
extern unsigned char SPI_Receive(void);

void delay_5us(void)
{
  _NOP();
  _NOP();
  _NOP();
  _NOP();
}

void delay_ms(unsigned int ms)
{
  unsigned int i,j;
  for(i = 0;i < ms;i ++)
  {
    for(j = 0;j < 1000;j++);
  }
}

void EWEN(void)               //enable eeprom read/write
{
  P4OUT |= 0x08;                                        //P4.3/CSEEP
  delay_5us();
	SPI_Send( SB_CMD );
	SPI_Send( EWEN_CMD );
	P4OUT &= ~0x08;
}

void EWDS(void)              //disable eeprom read/write
{
	P4OUT |= 0x08;
	delay_5us();
	SPI_Send( SB_CMD );
	SPI_Send( EWDS_CMD );
	P4OUT &= ~0x08;
}
 
//*********************************************************
// write 16 bit data at specified address at eeprom
// 发送数据发送格式:
//   0000 0001 01A5A4 A3A2A1A0 D15~D0
//   X16address:0x00~0x3f
//*********************************************************
void WriteX16(unsigned char X16address,unsigned int WX16data)
{
	unsigned char hibit;
	unsigned char lowbit;
	
	hibit = (unsigned char) WX16data / 256;
	lowbit = (unsigned char) WX16data % 256;
		
  P4OUT |= 0x08;                                        //P4.3/CSEEP
	SPI_Send( SB_CMD );
	SPI_Send( WRITE_CMD + X16address );
	SPI_Send( hibit );
	SPI_Send( lowbit );
	P4OUT &= ~0x08;
  delay_ms(5);
//	poll();                          //wait till the eeprom self programme
}

//***************************************************
// read 16 bit data from eeprom
// 发送数据格式: 0000 0001 10A5A4 A3A2A1A0 
// 接收数据格式: D15~D0
// X16address:0x00~0x3f
//***************************************************
unsigned int ReadX16( unsigned char X16Address )    
{
  unsigned char hidata;
	unsigned char lowdata;
	
	P4OUT |= 0x08;
  delay_5us();
	SPI_Send( SB_CMD );
	SPI_Send( READ_CMD + X16Address );
	hidata = SPI_Receive();
	lowdata = SPI_Receive();
	P4OUT &= ~0x08;
	return( hidata*256 + lowdata );
}

⌨️ 快捷键说明

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