資料介紹
#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次閱讀
下載排行
本周
- 1如何正確測試電源的紋波
- 0.36 MB | 2次下載 | 免費
- 2550W充電機原理圖
- 0.13 MB | 2次下載 | 6 積分
- 3USB的PD快充協議電壓誘騙控制器FS312A中文手冊
- 1.51 MB | 2次下載 | 免費
- 4USB的PD和OC快充協議電壓誘騙控制器FS312B中文手冊
- 1.35 MB | 1次下載 | 免費
- 5USB Type_C PD快充協議智能觸發芯片FS8025B應用手冊
- 1.48 MB | 1次下載 | 免費
- 6基于三相二電平PFC和隔離DC-DC轉換器的11kW雙向電池充電器
- 618.10 KB | 1次下載 | 免費
- 7THS4541RGT EVM用戶指南
- 1.22MB | 次下載 | 免費
- 8熱電偶換算算法
- 0.01 MB | 次下載 | 1 積分
本月
- 1使用單片機實現七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 23314A函數發生器維修手冊
- 16.30 MB | 31次下載 | 免費
- 3美的電磁爐維修手冊大全
- 1.56 MB | 22次下載 | 5 積分
- 4使用TL431設計電源
- 0.67 MB | 8次下載 | 免費
- 5感應筆電路圖
- 0.06 MB | 8次下載 | 免費
- 6LZC3106G高性能諧振控制器中文手冊
- 1.29 MB | 7次下載 | 1 積分
- 7Keysight B1500A 半導體器件分析儀用戶手冊、說明書 (中文)
- 19.00 MB | 5次下載 | 免費
- 8SMD LED選型手冊 貼片燈珠
- 5.47 MB | 5次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多