91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-16
  • 語言: 其他
  • 標簽: at24c1024??

資源簡介

at24c1024驅(qū)動函數(shù),解開屏蔽即可測試。

資源截圖

代碼片段和文件信息

/************************************
eeprom:at24c1024?128kBytewp接地。
XUXING?2011.7.13

************************************/
#include?
#include?“delay.h“


#define?uint8?unsigned?char
#define?uint16?unsigned?int
#define?uint32?unsigned?long?

//用單片機模擬iic
sbit?iic_sda=P1^2;
sbit?iic_scl=P1^1;?

/***********************************
iic開始傳送函數(shù),在scl是高電平且恢復
低電平之前sda由高電平變?yōu)榈碗娖?br/>************************************/
void?iic_start(void)
{?
??iic_sda=1;??
??iic_scl=1;??
??iic_sda=0;??
??iic_scl=0;?
??
}

/*******************************************
停止傳送函數(shù)
********************************************/
void?iic_stop()
{
??iic_scl=0;
??iic_sda=0;??
??iic_scl=1;
??iic_sda=1;?
}
/********************************************
發(fā)送確認(應答)信號?,即在第九個串行上升沿時
將sda置低電平


void?iic_ack()
{
?delay_n_us(10);
?iic_sda?=0;
?delay_n_us(10);
?iic_scl=1;
?delay_n_us(10);
?iic_scl=0;
?delay_n_us(10);
}
*********************************************/
/************************************************
非應答
*************************************************/

void?iic_nack()
{
??
??iic_sda=1;??
??iic_scl=1;
??iic_scl=0;
?;
}

/*******************************************
發(fā)送一個字節(jié)形參d為要發(fā)送的數(shù)據(jù)。
mcu向eeprom?寫數(shù)據(jù)的時候首先傳送數(shù)據(jù)
則調(diào)用該函數(shù)
********************************************/

bit?iic_send_byte(uint8?d)
{
?uint8?i=8;
?bit?bit_ack;
?while(i--)
???{
????
if(d&0x80)?
?????????iic_sda=1;
else?
?????iic_sda=0;??//最高有效位先發(fā)送,直至最低有效位
????
iic_scl=1;

iic_scl=0;
d<<=1;
???}

?? ???// ??test?ack
???iic_sda=1;??
???iic_scl=1;???
???bit_ack=iic_sda;
???iic_scl=0;???
???return?bit_ack; ??//?本段程序時用于檢測是否ack的狀態(tài)

}

/***********************************************
接收一個八位數(shù)據(jù)?,當單片機接收eeprom傳來的數(shù)據(jù)時,
則調(diào)用該函數(shù)
***********************************************/

uint8?iic_receive_byte(void)
{
??uint8?i=8d;
??
??iic_sda=1;
??while(i--)
???{
?????d<<=1;

?iic_scl=1;
?if(iic_sda)
?????d++;

?iic_scl=0;
???}
???return?d;
}

/***********************************************
?寫eeprom操作,輸入?yún)⒘繛閱纹瑱C內(nèi)部存儲單元,
?還有eeprom的地址,?unsigned?int?count?數(shù)據(jù)串的長度
??如果單片機存儲的數(shù)據(jù)的地址為data?,要向eeprom的0x30寫數(shù)據(jù)
??數(shù)據(jù)串長度為10?,則調(diào)用?at24c1024_write(data0x3010)
??從單片機想eeprom中連續(xù)寫n個字節(jié)數(shù)據(jù)
************************************************/
void?at24c1024_write(uint8*?mcu_addrbit?addr_p0uint16?*at24c1024_addruint8?count)
?{
???while(count--)
???{
????iic_start();
if(addr_p0==1)
{
??iic_send_byte(0xa2);
}
else
{
???iic_send_byte(0xa0);
}

iic_send_byte(*at2

評論

共有 條評論

相關(guān)資源