久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1846|回復: 0
打印 上一主題 下一主題
收起左側

24CXXXIIC的單片機驅動程序(原創可用)

[復制鏈接]
跳轉到指定樓層
樓主
ID:130230 發表于 2020-1-8 11:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*********************************************************************
功能:產生IIC起始信號
備注:時鐘數據線拉高進入空閑狀態,然后再時鐘線高電平情況下
        拉低數據局限進入起始狀態,拉低時鐘線鉗位總線準備發送
wx:mcu6666(單片機項目交流合作)
***********************************************************************/
void IIC_Start(void)
{
        SDAH();
        SCLH();
        I2CWait();
           SDAL();
        I2CWait();
        SCLL();
}
/*********************************************************************
功能:產生停止信號
備注:  時鐘高電平期間數據線向高電平方向跳變
***********************************************************************/
void IIC_Stop(void)
{
        SDAL();
        SCLL();
        I2CWait();
        SCLH();
        I2CWait();
        SDAH();
        I2CWait();
}
/********************************************************************
功能:檢測應答信號
返回:1:失敗
         0 :成功
備注:作為發送方的時候等待接收的應答信號
**********************************************************************/
unsigned char IIC_Wait_Ack(void)
{
        unsigned char flag;
        SDAH();
        I2CWait();
        SCLH();
        I2CWait();
        if(SDA)
                flag=1;
        else
                flag=0;
        SCLL();
        return flag;
}

/**********************************************************************
功能:產生應答信號
備注:數據線低電平應答
***********************************************************************/
void IIC_Ack(void)
{
        SCLL();
        SDAL();
        I2CWait();
        SCLH();
        I2CWait();
        SCLL();
}

#if 0
/***************************************************************************
功能:產生非應答信號
備注:數據線高電平非應答
***************************************************************************/
void IIC_NAck(void)
{
        SCLL();
        SDAH();
        I2CWait();
        SCLH();
        I2CWait();
        SCLL();
}
#endif

/****************************************************************************
功能:發送一個字節
入口:要發送的字節備注:
****************************************************************************/
void IIC_Send_Byte(unsigned    char txd)
{
        unsigned char t;
        SCLL();
        for(t=0;t<8;t++)
        {
                if((txd&0x80)>>7)//MSB:高位在前
            SDAH();
        else
                        SDAL();
                txd<<=1;
                I2CWait();
                SCLH();
                I2CWait();
                SCLL();
        }
}
/****************************************************************************
功能:讀一個字節

備注:讀成功發送ack信號
*****************************************************************************/
unsigned char  IIC_Read_Byte(void)
{
        unsigned char i,receive=0;
        for(i=0;i<8;i++ )
        {
                SCLL();
                I2CWait();
                SCLH();
                I2CWait();
                receive<<=1; //MSB:高位在前
                if(SDA)
                        {
                                receive += 1;
                        }
        }
        IIC_Ack(); //發送ACK
        return receive;
}

/******************************************************************************
功能:再eep中讀出一個字節
入口:16字節的地址  
*******************************************************************************/
unsigned char AT24CXX_ReadOneByte(unsigned          int ReadAddr)
{
        unsigned char  temp;
        unsigned char  addrH,addrL;

        addrH=ReadAddr>>8;
        addrL=ReadAddr&0xff;

        IIC_Start();

        IIC_Send_Byte(0xa0); //進入寫模式

        IIC_Wait_Ack();
        IIC_Send_Byte(addrH);   //發送高地址
        IIC_Wait_Ack();
           IIC_Send_Byte(addrL);   //發送低地址
        IIC_Wait_Ack();
        IIC_Start();
        IIC_Send_Byte(0xa1);   //進入讀模式

        IIC_Wait_Ack();
        temp=        IIC_Read_Byte();
        IIC_Stop();//產生一個停止條件
        return temp;
}
/**************************************************************************
功能:向地址中寫一個數據
入口:1,地址          2,數據
作者:jzb 2020年1月6日
備注:
******************************************************************************/
void AT24CXX_WriteOneByte(unsigned int        WriteAddr,unsigned char DataToWrite)
{
        unsigned char addrH,addrL;

        addrH=WriteAddr>>8;
        addrL=WriteAddr&0xff;

        IIC_Start();

        IIC_Send_Byte(0xa0);

        IIC_Wait_Ack();
        IIC_Send_Byte(addrH);   //發送高地址
        IIC_Wait_Ack();
        IIC_Send_Byte(addrL);   //發送低地址
        IIC_Wait_Ack();
        IIC_Send_Byte(DataToWrite);     //發送字節
        IIC_Wait_Ack();
        IIC_Stop();//產生一個停止條件
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久综合九九 | 国产成人在线一区二区 | 午夜精品一区二区三区在线视 | 免费黄色大片 | 婷婷在线网站 | 欧美男人的天堂 | 欧美精品久久久久 | 一区二区三区视频在线 | 日韩欧美国产精品一区 | 一级毛片大全免费播放 | 成人一级片在线观看 | 久久亚洲国产精品日日av夜夜 | 91视视频在线观看入口直接观看 | 网站一区二区三区 | 亚洲另类视频 | 日韩精品久久久久 | 国产女人与拘做受视频 | 国产欧美精品一区二区 | 日韩资源 | 亚洲欧美视频 | 超碰97免费在线 | 欧州一区二区 | 亚洲啪啪| 国产区在线观看 | 日韩成人免费视频 | 成人精品视频在线观看 | 91欧美| 高清一区二区三区 | 亚洲精品 在线播放 | 日韩欧美一级片 | 欧美激情在线观看一区二区三区 | 国产免费观看一区 | 日韩精品一区二区三区视频播放 | 欧美一区二区三区在线观看 | 欧美成人精品一区二区三区 | 国产精品99999999 | 日本一区二区三区免费观看 | 国产亚洲欧美日韩精品一区二区三区 | 超碰在线播 | 国产免费观看久久黄av片涩av | 日韩精品一区二区三区久久 |