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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? iic_drv.cpp

?? IC卡的wince驅(qū)動(dòng)程序;支持AT24C01等芯片;在FS2410與wince 4.2環(huán)境中調(diào)試通過(guò)。
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    return;
}

#if 0
BOOL IIC_WriteByte(unsigned short uAddr, unsigned char ucData)
{
    int i,delay = 0;
    int iStatus;
    unsigned long dwLoop1,dwLoop2;

    if( v_pIICReg == NULL )
    {
        return FALSE;
    }
    
    /* output salve device address */
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xf0;

    /* output address */
    v_pIICReg->rIICDS  = uAddr;
    for( i = 0; i < 10; i++);
    {
        delay++;
    }
    v_pIICReg->rIICCON = 0xe0;     //resumes IIC operation

    /* output data */
    v_pIICReg->rIICDS  = ucData;
    for( i = 0; i < 10; i++);
    {
        delay++;
    }
    v_pIICReg->rIICCON = 0xe0;     //resumes IIC operation
    
    /* stop */
    v_pIICReg->rIICSTAT = 0xd0;                //stop MasTx condition 
    v_pIICReg->rIICCON  = 0xe0;                //resumes IIC operation.
    Delay(1);                       //wait until stop condtion is in effect.

    /* confire ack */
    dwLoop2 = 0;
    while( TRUE )
    {
        v_pIICReg->rIICDS     = SLAVE_IIC_ADDR;
        iStatus               = 0x100;             //To check if _iicStatus is changed 
        v_pIICReg->rIICSTAT   = 0xf0;              //Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
        v_pIICReg->rIICCON    = 0xe0;              //Resumes IIC operation. //hzh

        dwLoop1 = 0;
        while( (iStatus == 0x100) )
        {
            iStatus = v_pIICReg->rIICSTAT;
            dwLoop1++;
            if( dwLoop1 >= 32 )
            {
                return FALSE;
            }
        }

        if( !(iStatus & 0x1) )
            break;                      //When ACK is received

        dwLoop2++;
        if( dwLoop2 >= 3)
        {
            return FALSE;
        }
    }
    v_pIICReg->rIICSTAT = 0xd0;             //Master Tx condition, Stop(Write), Output Enable
    v_pIICReg->rIICCON  = 0xe0;             //Resumes IIC operation.
    Delay(1);        

    return TRUE;
    
}

BOOL IIC_ReadByte(unsigned short uAddr, unsigned char* pucData )
{
    int				i,delay = 0;
    unsigned char   aucData[4] = {0};
    
    if( v_pIICReg == NULL || pucData == NULL )
    {
        return FALSE;
    }

    /* output salve device address */
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xf0;                    //MasTx,Start // read cmd = 0xa1, write = 0xa0

    /* output address */
    v_pIICReg->rIICDS = uAddr;
    for( i = 0; i < 10; i++ )          //for setup time until rising edge of IICSCL
    {
        delay++;
    }
    v_pIICReg->rIICCON = 0xe0;          //resumes IIC operation.

                
    /* output salve address and stop */    
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xb0;                    //Master Rx,Start
    v_pIICReg->rIICCON  = 0xe0;                    //Resumes IIC operation.

    aucData[0] = v_pIICReg->rIICDS;
    //The last data has to be read with no ack.
    v_pIICReg->rIICCON = 0x60;                  //Resumes IIC operation with NOACK.
    
    aucData[1] = v_pIICReg->rIICDS;
    v_pIICReg->rIICSTAT = 0x90;                 //Stop MasRx condition 
    v_pIICReg->rIICCON  = 0xe0;                 //Resumes IIC operation.
    Delay(1);                       //Wait until stop condtion is in effect.
    //Too long time... 
    //The pending bit will not be set after issuing stop condition.
    *pucData = aucData[1];
    return TRUE;
}
#endif

#if 0
//*************************[ Wr24C080 ]****************************
BOOL IIC_WriteByte(unsigned short uAddr, unsigned char ucData)
{
    int iLoop1 = 0,iLoop2 = 0;
    
    g_dwI2CMode     = EN_I2C_WRDATA;
    g_ucI2CPt       = 0;
    g_ucI2CBuff[0]  = (unsigned char)uAddr;
    g_ucI2CBuff[1]  = ucData;
    g_iI2CDataCount = 2;
    
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;           //0xa0
    v_pIICReg->rIICSTAT = 0xf0;                     //MasTx,Start
      //Clearing the pending bit isn't needed because the pending bit has been cleared.

    iLoop1 = 0;
    while( g_iI2CDataCount!=-1 )
    {
        iLoop1++;
        if( iLoop1 >= I2C_WAIT_INT_MAX_COUNT )
        {
            v_pIICReg->rIICSTAT = 0xd0;             //Stop MasTx condition 
            v_pIICReg->rIICCON  = 0xe0;             //Resumes IIC operation.
            return (FALSE);
        }
        Sleep(5);
    }

    g_dwI2CMode = EN_I2C_POLLACK;

    iLoop1 = 0;
    while( TRUE )
    {
        v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
        g_iI2CStatus        = 0x100;
        v_pIICReg->rIICSTAT = 0xf0;              //MasTx,Start
        v_pIICReg->rIICCON  = 0xe0;             //0xaf;  Resumes IIC operation.

        iLoop2 = 0;   
        while( g_iI2CStatus == 0x100 );
        {
            iLoop2++;
            if( iLoop2 >= I2C_WAIT_INT_MAX_COUNT )
            {
                v_pIICReg->rIICSTAT = 0xd0;             //Stop MasTx condition 
                v_pIICReg->rIICCON  = 0xe0;             //Resumes IIC operation.
                return (FALSE);
            }
            Sleep(5);
        }
           
        if( !(g_iI2CStatus & 0x1) )
            break;                      //When ACK is received

        iLoop1++;
        if( iLoop1 >= I2C_WAIT_INT_MAX_COUNT )
        {
            v_pIICReg->rIICSTAT = 0xd0;             //Stop MasTx condition 
            v_pIICReg->rIICCON  = 0xe0;             //Resumes IIC operation.
            return (FALSE);
        }
        Sleep(5);
        
    }
    v_pIICReg->rIICSTAT = 0xd0;             //Stop MasTx condition 
    v_pIICReg->rIICCON  = 0xe0;             //Resumes IIC operation.
    Delay(1);                               //Wait until stop condtion is in effect.
    //Write is completed.

    return (TRUE);
}
        
//**********************[ Rd24C080 ] ***********************************
BOOL IIC_ReadByte(unsigned short uAddr, unsigned char* pucData )
{
    int iLoop1 = 0,iLoop2 = 0;
    
    g_dwI2CMode     = EN_I2C_SETRDADDR;
    g_ucI2CPt       = 0;
    g_ucI2CBuff[0]  = (unsigned char)uAddr;    
    g_iI2CDataCount = 1;

    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xf0;                    //MasTx,Start  
      //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while( g_iI2CDataCount != -1 )
    {
        iLoop1++;
        if( iLoop1 >= I2C_WAIT_INT_MAX_COUNT )
        {
            RETAILMSG(1,(TEXT("IIC1 Read Byte failed!\r\n")));
            return (FALSE);
        }
        Sleep(5);
    }

    g_dwI2CMode     = EN_I2C_RDDATA;
    g_ucI2CPt       = 0;
    g_iI2CDataCount = 1;
    
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xb0;               //MasRx,Start
    v_pIICReg->rIICCON  = 0xe0;//0xaf;               //Resumes IIC operation.	//hzh
    while( g_iI2CDataCount != -1 )
    {
        iLoop2++;
        if( iLoop2 >= I2C_WAIT_INT_MAX_COUNT )
        {
            RETAILMSG(1,(TEXT("IIC2 Read Byte failed!\r\n")));
            return (FALSE);
        }
        Sleep(5);
    }
    *pucData = g_ucI2CBuff[1];
    return (TRUE);
}

#endif

//**********************[IicPoll ]**************************************
void IIC_Poll(void)
{
    unsigned long iicSt,i;

    if( !( v_pIICReg->rIICCON & 0x10 ) )
    {
        return;
    }
        
    iicSt = v_pIICReg->rIICSTAT; 
    if(iicSt & 0x8){}                   //When bus arbitration is failed.
    if(iicSt & 0x4){}                   //When a slave address is matched with IICADD
    if(iicSt & 0x2){}                   //When a slave address is 0000000b
    if(iicSt & 0x1){}                   //When ACK isn't received

    switch(g_dwI2CMode)
    {
        case EN_I2C_POLLACK:
            g_iI2CStatus = iicSt;
            break;

        case EN_I2C_RDDATA:
            if((g_iI2CDataCount--)==0)
            {
                g_ucI2CBuff[g_ucI2CPt++] = v_pIICReg->rIICDS;
            
                v_pIICReg->rIICSTAT = 0x90;             //Stop MasRx condition 
                v_pIICReg->rIICCON  = 0xe0;             //0xaf;                //Resumes IIC operation.	//hzh
                Delay(1);                       //Wait until stop condtion is in effect.
                                                //Too long time... 
                                                //The pending bit will not be set after issuing stop condition.
                break;    
            }      
            g_ucI2CBuff[g_ucI2CPt++] = v_pIICReg->rIICDS;
                        //The last data has to be read with no ack.
            if( (g_iI2CDataCount) == 0 )
                v_pIICReg->rIICCON = 0x60;//0x2f;                 //Resumes IIC operation with NOACK.  	//hzh
            else 
                v_pIICReg->rIICCON = 0xe0;//0xaf;                 //Resumes IIC operation with ACK	//hzh
            break;

        case EN_I2C_WRDATA:
            if( (g_iI2CDataCount--) == 0 )
            {
                v_pIICReg->rIICSTAT = 0xd0;                //stop MasTx condition 
                v_pIICReg->rIICCON  = 0xe0;//0xaf;                //resumes IIC operation.	//hzh
                Delay(1);                       //wait until stop condtion is in effect.
                       //The pending bit will not be set after issuing stop condition.
                break;    
            }
            v_pIICReg->rIICDS = g_ucI2CBuff[g_ucI2CPt++];        //_iicData[0] has dummy.
            for( i=0; i<10; i++ );                  //for setup time until rising edge of IICSCL
                v_pIICReg->rIICCON = 0xe0;          //0xaf;                     //resumes IIC operation.	//hzh
            break;

        case EN_I2C_SETRDADDR:
//            Uart_Printf("IicPoll() SETRADDR [S%d]",_iicDataCount);
            if( (g_iI2CDataCount--) == 0 )
            {
                break;                  //IIC operation is stopped because of IICCON[4]    
            }
            v_pIICReg->rIICDS = g_ucI2CBuff[g_ucI2CPt++];
            for( i=0; i<10; i++ );          //for setup time until rising edge of IICSCL
                v_pIICReg->rIICCON = 0xe0;  //0xaf;             //resumes IIC operation.	//hzh
            break;

        default:
            break;      
    }
}


//**************[ _Wr24C080 ]*****************************************
BOOL IIC_WriteByte(unsigned short uAddr, unsigned char ucData)
{

    g_dwI2CMode     = EN_I2C_WRDATA;
    g_ucI2CPt       = 0;
    g_ucI2CBuff[0]  = (unsigned char)uAddr;
    g_ucI2CBuff[1]  = ucData;
    g_iI2CDataCount = 2;
    
   
    
    v_pIICReg->rIICDS        = SLAVE_IIC_ADDR;            //0xa0
      //Master Tx mode, Start(Write), IIC-bus data output enable
      //Bus arbitration sucessful, Address as slave status flag Cleared,
      //Address zero status flag cleared, Last received bit is 0
    v_pIICReg->rIICSTAT      = 0xf0;      
      //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while( g_iI2CDataCount != -1 )
       IIC_Poll();

    g_dwI2CMode = EN_I2C_POLLACK;

    while(1)
    {
        v_pIICReg->rIICDS     = SLAVE_IIC_ADDR;
        g_iI2CStatus = 0x100;             //To check if _iicStatus is changed 
        v_pIICReg->rIICSTAT   = 0xf0;              //Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
        v_pIICReg->rIICCON    = 0xe0;//0xaf;              //Resumes IIC operation. //hzh
        while( g_iI2CStatus == 0x100 )  
            IIC_Poll();
              
        if( !(g_iI2CStatus & 0x1) )
            break;                      //When ACK is received
    }
    v_pIICReg->rIICSTAT = 0xd0;                    //Master Tx condition, Stop(Write), Output Enable
    v_pIICReg->rIICCON  = 0xe0;//0xaf;                    //Resumes IIC operation. 	//hzh
    Delay(1);                           //Wait until stop condtion is in effect.
      //Write is completed.
    return (TRUE);
}
        
//************************[ _Rd24C080 ]********************************
BOOL IIC_ReadByte(unsigned short uAddr, unsigned char* pucData )
{
    g_dwI2CMode     = EN_I2C_SETRDADDR;
    g_ucI2CPt       = 0;
    g_ucI2CBuff[0]  = (unsigned char)uAddr;
    g_iI2CDataCount = 1;

    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xf0;                    //MasTx,Start  
      //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while( g_iI2CDataCount != -1 )
        IIC_Poll();

    g_dwI2CMode     = EN_I2C_RDDATA;
    g_ucI2CPt       = 0;
    g_iI2CDataCount = 1;
    
    v_pIICReg->rIICDS   = SLAVE_IIC_ADDR;
    v_pIICReg->rIICSTAT = 0xb0;                    //Master Rx,Start
    v_pIICReg->rIICCON  = 0xe0;//0xaf;                    //Resumes IIC operation.	//hzh
    while( g_iI2CDataCount != -1 )
        IIC_Poll();

    *pucData = g_ucI2CBuff[1];
    return (TRUE);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级乱人伦电影| 日韩一区二区影院| 日日夜夜精品视频天天综合网| 欧美成人精品二区三区99精品| 国产**成人网毛片九色 | 亚洲欧美激情小说另类| 欧美日韩一二三区| av一本久道久久综合久久鬼色| 日本aⅴ精品一区二区三区 | 丝袜美腿亚洲色图| 亚洲免费在线电影| 国产日韩欧美精品电影三级在线 | 欧美日韩国产123区| av在线不卡电影| 国产一区二区三区| 免播放器亚洲一区| 日韩国产成人精品| 亚洲一二三区不卡| 亚洲激情五月婷婷| 日韩美女视频19| 亚洲国产精品成人综合色在线婷婷| 欧美一区二区视频在线观看2020 | 成人黄色电影在线| 国产毛片精品视频| 精品一区免费av| 日本成人在线网站| 日本vs亚洲vs韩国一区三区二区| 亚洲男女一区二区三区| 国产精品久久久久久久岛一牛影视 | 日韩激情中文字幕| 亚洲国产wwwccc36天堂| 一区二区三国产精华液| 亚洲精品高清在线观看| 亚洲日本电影在线| 亚洲免费在线电影| 夜夜爽夜夜爽精品视频| 亚洲午夜久久久久中文字幕久| 亚洲精品国产无天堂网2021| 亚洲六月丁香色婷婷综合久久| 国产精品国产精品国产专区不片| 欧美激情综合五月色丁香小说| 中文字幕精品一区二区精品绿巨人| 久久久国产午夜精品| 国产亚洲欧美一级| 国产精品色在线| 亚洲女人小视频在线观看| 亚洲午夜久久久久久久久电影院 | 欧美精品一级二级三级| 91精品国产麻豆国产自产在线 | 欧美成人乱码一区二区三区| 欧美成人精精品一区二区频| 精品国产乱码久久| 久久九九全国免费| 国产精品久久久久久久久免费相片| 亚洲天堂福利av| 亚洲一区二区三区四区的| 午夜精品久久久久久久久久| 久久精品久久99精品久久| 国产一区三区三区| 成人av在线资源网站| 在线精品视频免费播放| 在线综合亚洲欧美在线视频| 精品日韩欧美在线| 国产精品久久久久桃色tv| 亚洲精品写真福利| 人人精品人人爱| 成人做爰69片免费看网站| 欧美亚洲高清一区| 日韩情涩欧美日韩视频| 中文字幕国产一区二区| 亚洲影院在线观看| 国产一区二区三区蝌蚪| 91社区在线播放| 欧美一二三区精品| 亚洲视频一区二区免费在线观看| 日韩成人一级片| 国产成人鲁色资源国产91色综| 色综合天天综合网国产成人综合天| 欧美日韩在线不卡| 国产午夜亚洲精品午夜鲁丝片| 亚洲欧美日韩人成在线播放| 免费观看一级特黄欧美大片| 91在线免费播放| 精品精品国产高清a毛片牛牛| 亚洲天堂av一区| 激情亚洲综合在线| 欧美综合久久久| 国产亚洲一区二区三区在线观看| 一区二区久久久久久| 国产精品白丝jk白祙喷水网站| 欧美吻胸吃奶大尺度电影 | 精品第一国产综合精品aⅴ| 亚洲日本在线视频观看| 国产一区二区三区四区五区美女 | 在线一区二区三区四区五区| 日韩欧美国产wwwww| 亚洲精品中文字幕乱码三区| 国产精品夜夜爽| 日韩一级精品视频在线观看| 亚洲免费色视频| 国产一区二区91| 欧美一区国产二区| 亚洲成人综合网站| 99国产精品久久久久久久久久久| 精品久久久久一区二区国产| 亚洲高清久久久| 91美女精品福利| 中文字幕电影一区| 国产乱码精品1区2区3区| 欧美美女视频在线观看| 亚洲精品水蜜桃| jizzjizzjizz欧美| 亚洲国产精品高清| 国产精品77777| 2014亚洲片线观看视频免费| 免费成人av资源网| 欧美一区二区在线免费播放| 亚洲一级二级三级| 91成人免费网站| 夜夜精品浪潮av一区二区三区| 92精品国产成人观看免费| 国产欧美日韩麻豆91| 国产成a人亚洲精品| 久久午夜电影网| 国产精品资源网| 久久久久久久精| 国产在线日韩欧美| 久久蜜臀精品av| 精品一区二区综合| 精品国产精品网麻豆系列| 久久99精品国产麻豆婷婷| 日韩欧美资源站| 久久精品国产99| 久久影视一区二区| 国产河南妇女毛片精品久久久 | 91视频国产观看| 一区二区三区国产精品| 欧美亚洲综合另类| 亚洲国产精品尤物yw在线观看| 欧美午夜精品久久久久久孕妇| 亚洲一区视频在线观看视频| 欧美日韩综合在线| 奇米色一区二区三区四区| 欧美人伦禁忌dvd放荡欲情| 丝袜国产日韩另类美女| 日韩精品在线一区二区| 国产一区二区三区不卡在线观看 | 亚洲欧美综合色| 91亚洲大成网污www| 亚洲一区二区四区蜜桃| 欧美丰满少妇xxxxx高潮对白| 日本亚洲天堂网| 精品国产亚洲一区二区三区在线观看| 国产一级精品在线| 亚洲天天做日日做天天谢日日欢| 色综合久久久久| 三级不卡在线观看| 久久在线观看免费| 91首页免费视频| 欧美a一区二区| 国产精品区一区二区三| 91国产视频在线观看| 蜜臀a∨国产成人精品| 久久精品亚洲乱码伦伦中文 | 欧美日韩三级视频| 激情成人综合网| 国产精品久久久久久久久免费樱桃 | 午夜成人免费电影| 久久综合九色综合97婷婷女人| 成人sese在线| 天堂资源在线中文精品| 久久婷婷综合激情| 色94色欧美sute亚洲线路一ni| 视频一区中文字幕| 欧美极品xxx| 91麻豆精品国产91久久久更新时间| 国产乱码精品一区二区三区五月婷| 亚洲美女偷拍久久| 欧美刺激午夜性久久久久久久| 国产不卡在线一区| 亚洲18色成人| 国产精品亲子伦对白| 3d动漫精品啪啪一区二区竹菊| 成人免费黄色大片| 麻豆国产精品一区二区三区 | 国产综合一区二区| 一区二区三区高清不卡| 国产日韩精品一区二区三区| 欧洲精品一区二区| 国产传媒一区在线| 肉肉av福利一精品导航| 亚洲视频免费看| 久久久亚洲欧洲日产国码αv| 欧美艳星brazzers| 成人av电影在线| 久久99精品国产麻豆婷婷 | 亚洲成人一二三| 中文字幕制服丝袜成人av | 亚洲精品你懂的| 国产色产综合色产在线视频|