xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 2 次
    發布日期: 2021-05-10
  • 語言: 其他
  • 標簽: STC15F2K60S2??

資源簡介

STC15F2K60S2 iic 驅動程序 它的驅動不同于51,略有變化,僅供參考

資源截圖

代碼片段和文件信息

#include?“reg52.h“
#include?“intrins.h“

#define?DELAY_TIME?5

/**?定義I2C總線時鐘線和數據線?*/
sbit?scl?=?P2^0;
sbit?sda?=?P2^1;

/**
*?@brief?I2C總線中一些必要的延時
*
*?@param[in]?i?-?延時時間調整.
*?@return?none
*/
void?i2c_delay(unsigned?char?i)
{
????do
????{
????????_nop_();
????}
????while(i--);????????
}

/**
*?@brief?產生I2C總線啟動條件.
*
*?@param[in]?none
*?@param[out]?none
*?@return?none
*/
void?i2c_start(void)
{
????sda?=?1;
????scl?=?1;
????i2c_delay(DELAY_TIME);
????sda?=?0;
????i2c_delay(DELAY_TIME);
????scl?=?0;????
}

/**
*?@brief?產生I2C總線停止條件
*
*?@param[in]?none
*?@param[out]?none.
*?@return?none
*/
void?i2c_stop(void)
{
????sda?=?0;
????scl?=?1;
????i2c_delay(DELAY_TIME);
????sda?=?1;
????i2c_delay(DELAY_TIME);???????
}

/**
*?@brief?I2C發送一個字節的數據
*
*?@param[in]?byt?-?待發送的字節
*?@return?none
*/
void?i2c_sendbyte(unsigned?char?byt)
{
????unsigned?char?i;
//
EA?=?0;
????for(i=0;?i<8;?i++){
????????scl?=?0;
????????i2c_delay(DELAY_TIME);
????????if(byt?&?0x80){
????????????sda?=?1;
????????}
????????else{
????????????sda?=?0;
????????}
????????i2c_delay(DELAY_TIME);
????????scl?=?1;
????????byt?<<=?1;
????????i2c_delay(DELAY_TIME);
????}
EA?=?1;
//
????scl?=?0;??
}

/**
*?@brief?等待應答
*
*?@param[in]?none
*?@param[out]?none
*?@return?none
*/
unsigned?char?i2c_waitack(void)
{
unsigned?char?ackbit;

????scl?=?1;
????i2c_delay(DELAY_TIME);
????ackbit?=?sda;?//while(sda);??//wait?ack
????scl?=?0;
????i2c_delay(DELAY_TIME);

return?ackbit;
}

/**
*?@brief?I2C接收一個字節數據
*
*?@param[in]?none
*?@param[out]?da
*?@return?da?-?從I2C總線上接收到得數據
*/
unsigned?char?i2c_receivebyte(void)
{
unsigned?char?da;
unsigned?char?i;
//
EA?=?0;
for(i=0;i<8;i++){???
scl?=?1;
i2c_delay(DELAY_TIME);
da?<<=?1;
if(sda)?
da?|=?0x01;
scl?=?0;
i2c_delay(DELAY_TIME);
}
EA?=?1;
//
return?da;????
}

/**
*?@brief?發送應答
*
*?@param[in]?ackbit?-?設定是否發送應答
*?@return?-?none
*/
void?i2c_sendack(unsigned?char?ackbit)
{
????scl?=?0;
????sda?=?ackbit;??//0:發送應答信號;1:發送非應答信號
????i2c_delay(DELAY_TIME);
????scl?=?1;
????i2c_delay(DELAY_TIME);
????scl?=?0;?
sda?=?1;
????i2c_delay(DELAY_TIME);
}

/**
*?@brief?讀寫操作過程中一些必要的延時
*
*?@param[in]?i?-?指定延時時間
*?@return?-?none
*/
void?operate_delay(unsigned?char?t)
{
unsigned?char?i;

while(t--){
for(i=0;?i<112;?i++);
}
}

#ifdef?EEPROM_AT24C02?/**?EEPROM?AT24C02操作函數?*/

/**
*?@brief?向AT24C02(add)中寫入數據val
*
*?@param[in]?add?-?AT24C02存儲地址
*?@param[in]?val?-?待寫入AT24C02相應地址的數據
*?@return?-?none
*/
void?write_eeprom(unsigned?char?addunsigned?char?val)
{
????i2c_start();
????i2c_sendbyte(0xa0);
????i2c_waitack();
????i2c_sendbyte(add);
????i2c_waitack();
????i2c_sendbyte(val);
????i2c_waitack();
????i2c_stop();
operate_delay(10);
}

/**
*?@brief?從AT24C02(add)中讀出數據da
*
*?@param[in]?add?-?AT24C02存儲地址
*?@param[out]?da?-?從AT24C02相應地址中讀取到的數據
*?@return?-?da
*/
unsigned?cha

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4108??2012-10-23?15:04??i2c.c

?????文件????????700??2012-08-21?14:00??i2c.h

-----------?---------??----------?-----??----

?????????????????4808????????????????????2


評論

共有 條評論