資料介紹
#include "msp430x13x.h"
?? ??
void nop(void)
{
? _NOP();
? _NOP();
? _NOP();
}
void start(void)?? ??
{
? SCLEN &= (~(SDA+SCL));?
? _NOP();
? _NOP();
? _NOP();?
? SDAEN |= SDA; ??
? SCLEN |= SCL;??? ??
? return;
}
void stop(void)
{
? SDAEN |= SDA;???????? ?
? SCLEN &= (~SCL);??
? SDAEN &= (~SDA);??
? return;
}
unsigned char ControlByte(int AddressByte)
{
? unsigned char temp;
? _BIC_SR(0X0001);??//CLEAR SR 'C'
? temp = (char)(AddressByte>>8);
? temp <<= 1 ;
? temp &= 0X0E;
? temp += Code;
? return temp;
}
int shout( unsigned char data )?
{
?unsigned char mask,i,temp;
?unsigned char Value;
?Value = data;
?mask=0X80;
?for (i=0;i<=7;i++){
????? temp = (Value & mask);???????
????? if( temp !=0 ){??
????????? SDAEN &=? (~SDA);?
????????? SCLEN &=? (~SCL);?
???????? if( !( SDAIN & SDA ) ){
??????????? return 1;
????????? }
????? }
????? else {
??????? SDAEN |= SDA ; ??
??????? SCLEN &= (~SCL);?
????? }
???
??? mask>>=1;
??? SCLEN |= SCL; ???
?}
? SDAEN &= (~SDA);
? SCLEN &= (~SCL);
? if ( !(SDAIN & SDA )){
???? // return 1;
? }
?
? SCLEN |= SCL;
? return 0;
}
// 寫 Number 個字節到 E2 中
int WriteBlock(int number,unsigned char *dataadr,unsigned char *e2adr)
{
? unsigned char *p1;
? int i;
? unsigned char temp;
? unsigned int aaa;
? //unsigned char *temp1;
?
? _DINT();???
? SDADAT &= (~(SCL+SDA));?
? ????
? start();?????????????????????
? aaa = (int)(e2adr );
? temp = ControlByte(aaa);
? shout(temp);
? shout( (int)(e2adr));
? p1 = dataadr;
? for (i=1;i<=8;i++) {
???? shout(*p1);
???? p1++;
? }
? stop();?
? _EINT();?
?
//Write a block use the address and back..
?return 0;????????? ???//if error return 1? right return 0
}
// 寫N * 8個字節
int WriteN8Byte(int Number)
{
? unsigned char *e2adr,*dataadr;
? unsigned int i,j;
//int WriteBlock(int number,unsigned char *dataadr,unsigned char *e2adr)
? dataadr = (char*)0x200;
? e2adr = (char*)0x00;
? for( i=1;i<=Number;i++){
?
??? WriteBlock(8,dataadr,e2adr);
??? dataadr += 8;?
??? e2adr += 8;???
??? for (j=0;j<=3333;j++);???????????
???
? }
? return 0;
}
//; Clock out an acknowledge bit (low).
//; SCL expected low on entry. Return with SCL, SDA low.
void Ack(void)
{
? SDAEN |= SDA;
? SCLEN &= ~SCL;
? SCLEN |= SCL;
?
}
//; Clock out a negative acknowledge bit (high).
//; SCL expected low on entry. Return with SCL low, SDA high.
void Nak(void)
{
? SDAEN &= ~SDA;??????????????????? //; NAK bit
? SCLEN &= ~SCL;??????????????????? //; raise clock
? SCLEN |= SCL;???????????????????? //; drop clock
}
//由E2 中 讀8位 一個字節 數據
unsigned char shin(void)
{
? int i;
? unsigned char temp;
? unsigned char Mask;
? SDAEN &= ~SDA;????????????????? // make SDA an input
? temp =0;
//讀8位數據
? for( i=1;i<=8;i++) {
???
??? SCLEN &= ~SCL;??????????????? //SCL = H
??? Mask = 0;
??? if (SDAIN &SDA)
????? Mask = 1;
??? else
????? Mask =0;
//??? Mask = SDAIN & SDA;
??? Mask <<= (8 - i);
??? temp ^= Mask;
??? SCLEN |= SCL;???
? }
? return temp;
?}
// 24c256 512 頁 64字節 14-15bit Word Address!!!
//**********************************************************************
//? 讀取N 個字節 到RAM 中
//? 參數說明: number 讀取的個數,dataadr,讀到RAM 的地址?e2adr,E2地址
//**********************************************************************
int? ReadNByte(int number,unsigned char *dataadr,unsigned char *e2adr)
{
?int? i;?????????????
?unsigned char *p;?
?unsigned char temp;?????????????
?unsigned char temp1;
?
? _DINT(); ??
?SDADAT &= (~(SCL+SDA));
?
?p=dataadr;???
?start();???
? temp = ControlByte((int)(e2adr ));
? shout(temp);????
?
? shout((int)(e2adr ));????????
? start();
? temp |= 0X01;??????????
? shout(temp);?????????
? temp1=0;
? for (i=1;i<=number;i++){??????????????
??? temp1 = shin();
??? *p++ = temp1;
??? Ack();
? }
?Nak();
?stop();
?_EINT();
?return 0;
}
- stm32單片機讀寫EEPROM AT24C512
- AT24C01和24C256串行EEPROM的中文數據手冊免費下載 26次下載
- 模擬IIC讀寫總結之at24c512讀寫程序 93次下載
- Proteus之24C256開啟次數統計 0次下載
- 24c128/24c256 pdf datasheet
- 24C256中文資料,24C256中文數據資料
- 24c16/24c08/24c04中文資料
- 24c02/24c01/24c04讀寫程序
- 24c32/24c16/24c08讀寫程序
- 24c512中文資料下載
- at24c64讀寫程序
- AT24C32/AT24C56讀寫程序
- AT24C02/AT24C04/AT24C08/AT24C1
- at24c01程序(讀寫程序)
- at24c16 c程序
- AT28C256 EEPROM芯片簡單介紹 1573次閱讀
- 通過IIC總線讀寫AT24C512存儲器 1797次閱讀
- AT24C04芯片驅動程序原理 1827次閱讀
- 微雪電子EEPROM存儲模塊AT24C簡介 2242次閱讀
- AT24C系列芯片的驅動設計 4613次閱讀
- AT89S52單片機并行端口模擬I2C總線協議讀寫AT24C04的設計 2583次閱讀
- 如何使用單片機模擬讀寫24C01EEPROM數據 5054次閱讀
- 如何利用AVR單片機實現AT24C256的數據高速穩定的讀取 2888次閱讀
- 如何采用C51單片機讀寫CAT24C32 2514次閱讀
- at24c04中文資料匯總(at24c04引腳圖及功能_工作原理及電路圖) 7.9w次閱讀
- C51讀寫AT24C04源代碼及AT24C04測試程序 1.6w次閱讀
- 單片機STC12C5A60S2控制AT24C04的程序(C語言) 7432次閱讀
- AT24C256介紹_AT24C256燒錄的完整程序 1.2w次閱讀
- 單片機之IIC--AT24C256的讀寫程序 1.4w次閱讀
- 讀寫24LCxx系列的EEPROM的實例程序 2210次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 11次下載 | 免費
- 3嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 4DIY動手組裝LED電子顯示屏
- 0.98 MB | 3次下載 | 免費
- 5基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機PM2.5檢測系統程序
- 0.83 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191186次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多