?? 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 + -