📄 93lc46b.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 + -