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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1861|回復: 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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜小电影 | 久久久精品网站 | 一区二区在线不卡 | 久亚州在线播放 | 成人免费在线视频 | 亚洲精品久久视频 | 国产精品一区二区av | 国产福利视频导航 | 91麻豆产精品久久久久久夏晴子 | 91九色婷婷 | 国产欧美一区二区三区日本久久久 | 最新国产福利在线 | a在线视频| 毛片一区二区三区 | 日韩精品一区二区三区中文在线 | 成人一区二区三区在线 | 日本一区二区高清不卡 | 欧美日韩精品一区二区三区蜜桃 | 伊人最新网址 | 欧美一区二区激情三区 | 日韩精品福利 | 免费精品一区 | 99久久夜色精品国产亚洲96 | 91国语清晰打电话对白 | 国产午夜精品久久久 | 99re视频在线观看 | 亚州春色 | 手机av在线| 国产成人99久久亚洲综合精品 | 国产精品久久久久久久久久久久久久 | 成人高清网站 | 色姑娘综合网 | 国产精品观看 | 日韩欧美在线免费观看 | 日韩国产欧美一区 | 日韩精品在线视频免费观看 | 欧美黑人国产人伦爽爽爽 | 亚洲精品久久久久久一区二区 | 青青久久久 | 99热在这里只有精品 | 午夜视频在线免费观看 |