 |
 |
培訓信息 |
|
|
|
 |
 |
贊助商 |
|
|
|
|
 |
 |
c51寫的24c02的讀寫程序 |
|
|
| c51寫的24c02的讀寫程序 |
| 作者:佚名 來源:不詳 錄入:Admin 更新時間:2008-7-27 16:07:45 點擊數(shù):2 |
【字體:
】 |
#include <reg51.h>
// 對24C02的讀、寫 // extern void DelayMs(unsigned int); // extern void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes); // extern void Write24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
/***************************************************************************/ #define WriteDeviceAddress 0xa0 #define ReadDviceAddress 0xa1
/***************************************************************************/ sbit SCL=P1^4; sbit SDA=P1^3; sbit DOG=P3^7;
/***************************************************************************/ void DelayMs(unsigned int number) { unsigned char temp; for(;number!=0;number--,DOG=!DOG) { for(temp=112;temp!=0;temp--) { } } }
/***************************************************************************/ void Start() { SDA=1; SCL=1; SDA=0; SCL=0; }
/***************************************************************************/ void Stop() { SCL=0; SDA=0; SCL=1; SDA=1; }
/***************************************************************************/ void Ack() { SDA=0; SCL=1; SCL=0; SDA=1; }
/***************************************************************************/ void NoAck() { SDA=1; SCL=1; SCL=0; }
/***************************************************************************/ bit TestAck() { bit ErrorBit; SDA=1; SCL=1; ErrorBit=SDA; SCL=0; return(ErrorBit); }
/***************************************************************************/ bit Write8Bit(unsigned char input) { unsigned char temp; for(temp=8;temp!=0;temp--) { SDA=(bit)(input&0x80); SCL=1; SCL=0; input=input<<1; } }
/***************************************************************************/ void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number) { Start(); Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(RomAddress); TestAck(); for(;number!=0;number--) { Write8Bit(*Wdata); TestAck(); Wdata++; } Stop(); DelayMs(10); }
/***************************************************************************/ unsigned char Read8Bit() { unsigned char temp,rbyte=0; for(temp=8;temp!=0;temp--) { SCL=1; rbyte=rbyte<<1; rbyte=rbyte|((unsigned char)(SDA)); SCL=0; } return(rbyte); }
/***************************************************************************/ void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes) { unsigned char temp,rbyte; Start(); Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(RomAddress); TestAck(); Start(); Write8Bit(ReadDviceAddress); TestAck(); while(bytes!=1) { *RamAddress=Read8Bit(); Ack(); RamAddress++; bytes--; } *RamAddress=Read8Bit(); NoAck(); Stop(); }
|
|
|
發(fā)表評論 告訴好友 打印此文 收藏此頁 關(guān)閉窗口 返回頂部 |
|
|
 |
 |
網(wǎng)友評論:(只顯示最新5條。) |
|
|
|
|
|