亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iic.c

?? DG128 飛思卡爾dg128芯片上實現IIC功能
?? C
字號:
//[IIC.c]IIC總線通信-------------------------------------------------------*
//外部函數:                                                                *
//    (1)IICinit:IIC模塊初始化                                             *
//    (2)IICread1:MCU從從機讀1個字節                                       *
//    (3)IICwrite1:MCU向從機寫1個字節                                      *
//    (4)IICreadN:MCU從從機讀N個字節                                       *
//    (5)IICwriteN:MCU向從機寫N個字節                                      *
//內部函數:                                                                *
//    (1) SendSignal:在IIC總線上發送起停信號                               *
//    (2) Wait:等待應答或一個字節數據的傳送完成                            *
//硬件連接:                                                                *
//    MCU的IIC接口與從機的IIC接口相連,DG128的IIC模塊的引腳SDA和SCL分別與   *
//    PTC2和PTC3引腳復用,這兩個引腳應分別與從機的IIC模塊的SDA和SCL相連     *
//說明:本文件與具體的芯片型號有關                                          *
//-------------------------------------------------------------------------*

//頭文件                       
#include "IIC.h"    //IIC通信頭文件

//IICinit:IIC模塊初始化----------------------------------------------------*
//功   能:對IIC模塊進行初始化,默認為允許IIC,IIC總線頻率:62.5KHz,禁止IIC中  *
//        斷,從機接收模式,不發送應答信號                                   *
//參   數:無                                                               *
//返   回:無                                                               *
//-------------------------------------------------------------------------*
void IICInit(void)
{
    IBFD = 0x60;//總線頻率:20MHz,IIC總線頻率:62.5KHz,SDA保持時間:2.45us
         
    IBAD = 0xF0;      //D7-D0位是MCU作為從機時的地址,最低位不使用
	//不發送應答信號
           //接收模式
           //從機模式
           //禁止IIC中斷
           //使能IIC模塊
    IBCR = 0x88;     
}

//SendSignal:在IIC總線上發送起停信號---------------------------------------*
//功 能:根據需要產生開始或停止信號                                         *
//參 數:Signal = 'S'(Start),產生開始信號;Signal = 'O'(Over),產生停止信號   *
//返 回:無                                                                 *
//-------------------------------------------------------------------------*
void SendSignal(INT8U Signal)
{
    if (Signal == 'S')    
        IBCR |= 0x20;     //主機模式選擇位MST由0變為1,可以產生開始信號
    else if (Signal == 'O')
        IBCR &= ~0x20;    //主機模式選擇位MST由1變為0,可以產生停止信號
}

//Wait:等待應答或一個字節數據的傳送完成------------------------------------*
//功能:在時限內,循環檢測接收應答標志位,或傳送完成標志位,判斷MCU是否接收到應*
//     答信號或一個字節是否已在總線上傳送完畢                              *
//參數:x = 'A'(Ack),等待應答;x = 'T'(Transmission),等待一個字節數據傳輸完成*
//返回:0:收到應答信號或一個字節傳送完畢;1:未收到應答信號或一個字節沒傳送完 *
//-------------------------------------------------------------------------*
INT8U Wait(INT8U x)
{
    INT8U ErrTime, i;
    ErrTime = 255;    //定義查詢超時時限
    for (i = 0;i < ErrTime;i++)
    {
        if (x == 'A')          //等待應答信號
        {
            if ((IBSR & 0x01) == 0)
            SCISend1('c');    
                return 0;    //傳送完一個字節后,收到了從機的應答信號
        }
        else if (x == 'T')     //等待傳送完成一個字節信號
        {
            if ((IBSR & 0x02) != 0)    
            {
                IBSR |= 0x02;    //清IICIF標志位
                SCISend1('d'); 
                return 0;        //成功發送完一個字節
            }       
        }
    }
    if (i >= ErrTime)
        SCISend1('f'); 
        return 1;     //超時,沒有收到應答信號或發送完一個字節
}

//IICread1:從從機讀1個字節數據---------------------------------------------*
//功    能:從從機讀1個字節數據                                             *
//參    數:                                                                *
//    (1) DeviceAddr:設備地址                                              *
//    (2) AccessAddr:訪問地址                                              *
//    (3) Data:帶回收到的一個字節數據                                      *
//返    回:為0,成功讀一個字節;為1,讀一個字節失敗                           *
//內部調用:SendSignal,Wait                                                 *
//-------------------------------------------------------------------------*
INT8U IICread1(INT8U DeviceAddr, INT8U AccessAddr, INT8U *Data)
{      
    IBCR |= 0x10;                //TX = 1,MCU設置為發送模式
    SendSignal('S');             //發送開始信號    
    IBDR = DeviceAddr & 0xfe;    //發送設備地址,并通知從機接收數據    
    if (Wait('T'))               //等待一個字節數據傳送完成        
        return 1;                //沒有傳送成功,讀一個字節失敗    
    if (Wait('A'))               //等待從機應答信號        
        return 1;                //沒有等到應答信號,讀一個字節失敗    
    IBDR = AccessAddr;           //發送訪問地址    
   if (Wait('T'))               //等待一個字節數據傳送完成    
        return 1;                //沒有傳送成功,讀一個字節失敗
    if (Wait('A'))               //等待從機應答信號    
        return 1;                //沒有等到應答信號,讀一個字節失敗       
    IBCR |= 0x04;                //主機模式下,RSTA位置1,產生重復開始信號    
    IBDR = DeviceAddr | 0x01;    //通知從機改為發送數據    
    if (Wait('T'))               //等待一個字節數據傳送完成    
        return 1;                //沒有傳送成功,讀一個字節失敗    
    if (Wait('A'))               //等待從機應答信號   
        return 1;                //沒有等到應答信號,讀一個字節失敗
    IBCR &= 0xef;                //TX = 0,MCU設置為接收模式    
    *Data = IBDR;                //讀出IBDR,準備接收數據 
       
       if (Wait('T'))               //等待從機應答信號   
        return 1;                //沒有等到應答信號,讀一個字節失敗   
    SendSignal('O');             //發送停止信號    
    *Data = IBDR;                //讀出接收到的一個數據
    return 0;                    //正確接收到一個字節數據
}

//IICwrite1:向從機寫1個字節數據--------------------------------------------*
//功     能:向從機寫1個字節數據                                            *
//參     數:                                                               *
//    (1) DeviceAddr:設備地址                                              *
//    (2) AccessAddr:訪問地址                                              *
//    (3) Data:要發給從機的1個字節數據                                     *
//返     回:為0,成功寫一個字節;為1,寫一個字節失敗                          *
//內部調用 :Start, SendByte, WaitAck, Stop                                 *
//-------------------------------------------------------------------------*
INT8U IICwrite1(INT8U DeviceAddr, INT8U AccessAddr, INT8U Data)
{
    IBCR |= 0x10;                //TX = 1,MCU設置為發送模式
    SendSignal('S');             //發送開始信號
    IBDR = DeviceAddr & 0xfe;    //發送設備地址,并通知從機接收數據
    if (Wait('T'))               //等待一個字節數據傳送完成
        return 1;                //沒有傳送成功,寫一個字節失敗
    if (Wait('A'))               //等待從機應答信號
        return 1;                //沒有等到應答信號,寫一個字節失敗   
    IBDR = AccessAddr;           //發送訪問地址
    if (Wait('T'))               //等待一個字節數據傳送完成
        return 1;                //沒有傳送成功,寫一個字節失敗
    if (Wait('A'))               //等待從機應答信號
        return 1;                //沒有等到應答信號,寫一個字節失敗   
    IBDR = Data;                 //寫數據
    if (Wait('T'))               //等待一個字節數據傳送完成
        return 1;                //沒有傳送成功,寫一個字節失敗
    if (Wait('A'))               //等待從機應答信號
        return 1;                //沒有等到應答信號,寫一個字節失敗   
    SendSignal('O');             //發送停止信號
    return 0;
}

//IICreadN:從從機讀N個字節數據---------------------------------------------*
//功    能:從從機讀N個字節數據                                             *
//參    數:                                                                *
//    (1) DeviceAddr:設備地址                                              *
//    (2) AccessAddr:訪問地址                                              *
//    (3) Data:讀出數據的緩沖區                                            *
//    (4) N:從從機讀的字節個數                                             *
//返    回:為0,成功讀N個字節;為1,讀N個字節失敗                             *
//內部調用:IICread1                                                        *
//-------------------------------------------------------------------------*
INT8U IICreadN(INT8U DeviceAddr, INT8U AccessAddr, INT8U Data[], INT8U N)
{
    INT8U i, j;
    for (i = 0;i < N;i++)
    {
        for(j = 0;j < 15;j++);    //最小延時(發送的每個字節之間要有時間間隔)
        if (IICread1(DeviceAddr, AccessAddr + i, &Data[i]))  
            return 1;    //其中一個字節沒有接收到,返回失敗標志:1
    }
    if (i >= N)
        return 0;        //成功接收N個數據,返回成功標志:0
}

//IICwriteN:向從機寫N個字節數據--------------------------------------------*
//功     能:向從機寫N個字節數據                                            *
//參    數:                                                                *
//    (1) DeviceAddr:設備地址                                              *
//    (2) AccessAddr:訪問地址                                              *
//    (3) Data:要寫入的數據                                                *
//    (4) N:寫入數據個數                                                   *
//返    回:為0,成功寫N個字節;為1,寫N個字節失敗                             *
//內部調用:IICwrite1                                                       *
//-------------------------------------------------------------------------*
INT8U IICwriteN(INT8U DeviceAddr, INT8U AccessAddr, INT8U Data[], INT8U N)
{
    INT8U i, j;
    for (i = 0;i < N;i++)
    {
        for(j = 0;j < 15;j++);    //最小延時(發送的每個字節之間要有時間間隔)
        if (IICwrite1(DeviceAddr, AccessAddr + i, Data[i]))
            return 1;    //其中一個字節沒有發送出去,返回失敗標志:1
    }
    if (i >= N)
        return 0;        //成功發送N個數據,返回成功標志:0
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久网| 精品国产免费久久| 成人av电影观看| 成人开心网精品视频| 韩国精品一区二区| 国产精品自产自拍| 99视频一区二区| 欧洲精品一区二区三区在线观看| 色狠狠综合天天综合综合| 一本大道久久精品懂色aⅴ| 欧美伊人精品成人久久综合97| 在线看日本不卡| 欧美夫妻性生活| 亚洲精品一区二区三区香蕉| 国产欧美一区二区精品仙草咪| 国产三级精品在线| 国产精品成人一区二区艾草 | 在线观看免费亚洲| 欧美亚洲国产一区在线观看网站| 欧美少妇性性性| 欧美成人在线直播| 国产精品久久久久久久久免费丝袜| **性色生活片久久毛片| 五月天国产精品| 国产剧情一区二区| 欧美日本不卡视频| 欧美精品一区二区三区蜜臀| 国产精品久久久爽爽爽麻豆色哟哟| 一区二区久久久| 免费日本视频一区| eeuss鲁片一区二区三区在线看| 欧美久久久久久久久| 国产亚洲成av人在线观看导航| 亚洲欧美一区二区三区国产精品| 日韩在线卡一卡二| 成人91在线观看| 在线成人av网站| 中文字幕一区二区三区四区| 天堂av在线一区| 99re这里都是精品| 精品久久国产老人久久综合| 亚洲蜜臀av乱码久久精品蜜桃| 经典三级视频一区| 欧美综合在线视频| 中文字幕一区三区| 精品中文字幕一区二区| 色婷婷精品大在线视频| 久久精品一二三| 美女诱惑一区二区| 欧美日韩视频在线观看一区二区三区| 久久久综合精品| 免费高清成人在线| 欧美日韩国产小视频| 亚洲欧美日韩久久| 不卡的av在线播放| 国产视频一区二区在线| 狠狠网亚洲精品| 日韩欧美成人午夜| 亚洲成av人在线观看| 91久久一区二区| 欧美激情在线免费观看| 国产麻豆91精品| 欧美mv和日韩mv国产网站| 日韩中文字幕不卡| 欧美调教femdomvk| 亚洲自拍偷拍欧美| 91免费国产视频网站| 国产精品福利电影一区二区三区四区| 国模冰冰炮一区二区| 欧美成人性福生活免费看| 日韩激情av在线| 欧美精品777| 日本成人在线电影网| 欧美精选在线播放| 日本成人在线不卡视频| 日韩天堂在线观看| 久久99精品网久久| 久久久国产精品麻豆| 国产成人自拍网| 国产精品欧美久久久久一区二区 | a美女胸又www黄视频久久| 久久久www成人免费毛片麻豆 | 国产成人一区在线| 亚洲国产精品激情在线观看| a在线播放不卡| 亚洲一区在线免费观看| 欧美人妇做爰xxxⅹ性高电影| 视频在线在亚洲| 亚洲精品在线免费观看视频| 国产成人自拍在线| 亚洲一区二区精品视频| 日韩亚洲欧美一区| 国产精品一区在线| 亚洲精选免费视频| 欧美二区乱c少妇| 国产一区二区三区| 成人欧美一区二区三区视频网页| 91日韩一区二区三区| 日本最新不卡在线| 国产精品日韩成人| 欧美高清激情brazzers| 国产精品18久久久久| 亚洲精品乱码久久久久久久久 | 色综合天天综合网天天狠天天| 亚洲精品免费在线| 91精品国产综合久久香蕉麻豆| 国产一区二区免费看| 亚洲情趣在线观看| 日韩欧美一级精品久久| 成人午夜看片网址| 视频一区视频二区中文字幕| 中文字幕av在线一区二区三区| 在线观看亚洲精品视频| 国产在线视频一区二区三区| 一区二区三区四区中文字幕| 精品国产成人系列| 欧美揉bbbbb揉bbbbb| 国产高清成人在线| 日韩成人午夜电影| 亚洲毛片av在线| 久久伊人中文字幕| 欧美日韩视频在线一区二区 | 欧美日韩在线播| 成人自拍视频在线观看| 午夜成人免费视频| 亚洲美女视频一区| 国产精品久久久久四虎| 欧美草草影院在线视频| 欧美日韩亚洲不卡| 色综合久久综合网97色综合 | 免费在线看一区| 亚洲综合在线免费观看| 国产精品久久久久永久免费观看| 欧美大片拔萝卜| 欧美精品久久一区| 色欧美乱欧美15图片| 99久久综合精品| 国产mv日韩mv欧美| 国产麻豆欧美日韩一区| 蜜臀a∨国产成人精品| 视频精品一区二区| 亚洲在线观看免费| 一区二区成人在线| 一区二区免费看| 亚洲一区二区3| 亚洲成人综合视频| 午夜av一区二区三区| 亚洲地区一二三色| 午夜视频一区在线观看| 亚洲大型综合色站| 午夜精品久久久久久久蜜桃app| 一区二区三区中文字幕在线观看| 亚洲黄色免费网站| 亚洲自拍偷拍网站| 日韩 欧美一区二区三区| 免费观看一级特黄欧美大片| 美女视频黄免费的久久 | 欧美一区二区三区成人| 日韩欧美专区在线| 日韩精品在线看片z| 日韩欧美亚洲国产另类| 久久综合九色综合久久久精品综合 | 国产日产精品一区| 亚洲国产精品高清| 亚洲色欲色欲www| 亚洲一区在线观看免费观看电影高清 | 秋霞午夜鲁丝一区二区老狼| 久久国产欧美日韩精品| 国产一区二区在线视频| 成人国产免费视频| 一本大道久久a久久综合婷婷| 在线观看国产91| 日韩你懂的在线观看| 日本一区二区电影| 一区二区三区在线视频免费 | 亚洲综合免费观看高清完整版在线 | 成人免费一区二区三区视频| 国产精品麻豆久久久| 亚洲一区二区高清| 国产一区二区导航在线播放| hitomi一区二区三区精品| 欧美人体做爰大胆视频| 久久久久9999亚洲精品| 亚洲国产精品一区二区尤物区| 免费看日韩a级影片| 粉嫩蜜臀av国产精品网站| 日本精品一区二区三区四区的功能| 精品视频在线免费观看| 国产欧美一区二区三区鸳鸯浴| 一区二区三区 在线观看视频| 久久99精品久久久久久动态图 | 亚洲成国产人片在线观看| 麻豆视频观看网址久久| 色综合久久综合网97色综合| 精品久久久久久久久久久院品网| 成人欧美一区二区三区1314| 久久国产精品第一页| 色综合天天综合色综合av| 精品99999| 日本不卡视频在线|