?? x25045用法完全公開.txt
字號:
C51編程:X25045用法完全公開! ( 2 ) [ylx] [76次] 01-9-4 下午 11:31:39
/******************************************************************************
向 X25045 寫1個字節
void Cwrite_EEPROM( uint addr, uchar n )
輸入: addr 地址范圍 0x000-0x1FF [512B]
n 數據(uchar,char)
******************************************************************************/
void Cwrite_EEPROM( uint addr, uchar n )
{
uchar i;
/* 訪問看門狗 */
SCS = 0; /* 清看門狗 */
SCS = 1; /* 恢復看門狗 */
if ( Cread_EEPROM( addr ) == n ) return;
i = 0x02; /* 0000 (A8)010 WRITE */
if ( ( addr & 0x0100 ) != 0 ) i = ( i | 0x08 );
wren_X25045();
SCLK = 0;
SCS = 0;
sent_X25045( i ); /* WRITE => X25045 */
sent_X25045( (uchar)(addr) ); /* addr => X25045 */
sent_X25045( n ); /* n => X25045 */
SCLK = 0;
SCS = 1;
wrok_X25045();
wrdi_X25045();
}
/******************************************************************************
向 X25045寫數據 整型數(2B)
void Iwrite_EEPROM( uint addr, uint n )
輸入: addr 地址范圍0x000-0x1FF [512B]
n = 寫入數值(uint, int)
******************************************************************************/
void Iwrite_EEPROM( uint addr, uint n )
{
Cwrite_EEPROM( addr, (uchar)(n>>8) );
Cwrite_EEPROM( addr+1, (uchar)(n & 0x00FF) );
}
/******************************************************************************
從 X25645 讀1個字節
uchar Cread_EEPROM( uint addr )
輸入: addr 地址范圍 0x000-0x1FF [512B]
輸出: 數據 (uchar,char)
******************************************************************************/
uchar Cread_EEPROM( uint addr )
{
uchar n;
/* 訪問看門狗 */
SCS = 0; /* 清看門狗 */
SCS = 1; /* 恢復看門狗 */
n = 0x03; /* 0000 (A8)011 READ */
if ( ( addr & 0x0100 ) != 0 ) n = ( n | 0x08 );
SCLK = 0;
SCS = 0;
sent_X25045( n ); /* READ => X25045 */
sent_X25045( (uchar)(addr) ); /* addr => X25045 */
n = get_X25045( ); /* X25045 => n */
SCLK = 0;
SCS = 1;
return( n );
}
/******************************************************************************
從 X25045 讀數據 整型(2B)
uint Iread_EEPROM( uint addr )
輸入: addr 地址范圍0x000-0x1FF [512B]
輸出: 數值(uint,int)
******************************************************************************/
uint Iread_EEPROM( uint addr )
{
return( ( (uint)( Cread_EEPROM( addr ) )<<8 ) | Cread_EEPROM( addr+1 ) );
}
點擊這里回復這篇貼子>>
_____________________________________________________________________________
Copyright?,C51BBS論壇 2000-2001
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -