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

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

?? uwrdio.c

?? TDK 6521 SOC 芯片 DEMO程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
    PUT_BIT_TF(_b_,16); \
    PUT_BIT_TF(_b_,8); \
    PUT_BIT_TF(_b_,4); \
    PUT_BIT_TF(_b_,2); \
    PUT_BIT_TF(_b_,1)

// The loops are unrolled in these macros to get the best possible speed.
#define PUT_BYTE_HIZ_TF(_b_) \
    PUT_BIT_TF(_b_,128); \
    PUT_BIT_TF(_b_,64); \
    PUT_BIT_TF(_b_,32); \
    PUT_BIT_TF(_b_,16); \
    PUT_BIT_TF(_b_,8); \
    PUT_BIT_TF(_b_,4); \
    PUT_BIT_TF(_b_,2); \
    PUT_BIT_HIZ_TF(_b_,1)

#define GET_BIT_TF(_b_,_bit_) \
    SCL_ONE; \
    SCL_ZERO; \
    if (SDI != 0) \
    { \
        _b_ |= _bit_; \
    }

// The loops are unrolled in these macros to get the best possible speed.
#define GET_BYTE_TF(_b_) \
    GET_BIT_TF(_b_,128); \
    GET_BIT_TF(_b_,64); \
    GET_BIT_TF(_b_,32); \
    GET_BIT_TF(_b_,16); \
    GET_BIT_TF(_b_,8); \
    GET_BIT_TF(_b_,4); \
    GET_BIT_TF(_b_,2); \
    GET_BIT_TF(_b_,1)


// wait for programming complete; This is probably only useful
// on microwire EEPROMs.
#pragma save
#pragma NOAREGS
void uwr_busy_wait(void) small reentrant
{
    mode |= BUSY_WAIT_MODE;
}
#pragma restore

// The clock polarity should be selected before the device is selected.
// rising edge of leading clock edge is data to device,
// falling edge of trailing clock edge is data from device
// Used on microwire eeproms, and this is the default
#pragma save
#pragma NOAREGS
static void uwr_leading_rising (void) small reentrant
{
    SCL_ZERO;
    SDO_ZERO;
    mode |= LEADING_OUT;
}
#pragma restore

#if SPI_POLARITIES
// The clock polarity should be selected before the device is selected.
// falling edge of leading clock edge is data to device,
// rising edge of trailing clock edge is data from device
#pragma save
#pragma NOAREGS
static void uwr_leading_falling (void) small reentrant
{
    SCL_ONE;
    SDO_ZERO;
    mode |= LEADING_OUT;
}
#pragma restore

// The clock polarity should be selected before the device is selected.
// rising edge of trailing clock edge is data to device,
// falling edge of leading clock edge is data from device
#pragma save
#pragma NOAREGS
static void uwr_trailing_rising (void) small reentrant
{
    SCL_ZERO;
    SDO_ZERO;
    mode &= ~LEADING_OUT;
}
#pragma restore

// The clock polarity should be selected before the device is selected.
// falling edge of trailing clock edge is data to device,
// rising edge of leading clock edge is data from device
#pragma save
#pragma NOAREGS
static void uwr_trailing_falling (void) small reentrant
{
    SCL_ONE;
    SDO_ZERO;
    mode &= ~LEADING_OUT;
}
#pragma restore
#endif // SPI_POLARITIES

// transmit a counted string of bytes to a microwire bus
#pragma save
#pragma NOAREGS
uint8_t uwr_write(uint8x_t *pchOut, uint16_t cnt) small reentrant
{
    uint8_t data b;
    uint16_t timeout;

    SDO_POWERED;

#if SPI_POLARITIES
    if ( SCL == 0 )
    {
        if ( mode & LEADING_OUT )
        {
#endif
            RESET_WD();

            for(; cnt > 1; --cnt)
            {
                b = *pchOut++;
                PUT_BYTE_LR(b);
            }

            if (cnt == 1)
            {
                b = *pchOut++;
                PUT_BYTE_HIZ_LR(b);
        
                if (mode & BUSY_WAIT_MODE)
                {
                    uint8_t cs_index = last_cs_index;
                    uwr_select (UWR_NO_DEVICE);
                    // OSCOPE_INIT; OSCOPE_ONE;
                    uwr_select (cs_index);
                    // OSCOPE_ZERO;
                    mode &= ~BUSY_WAIT_MODE;
                    timeout = HALF_SECOND;
                    while (SDI == 0)
                    {
                       RESET_WD();
                       delay_clks (3);  

                       if (--timeout == 0)
                          return 0;
                    }
                }
            }

            return 1;
#if SPI_POLARITIES
        }
        else
        {
            RESET_WD();

            for(; cnt > 1; --cnt)
            {
                b = *pchOut++;
                PUT_BYTE_LF(b);
            }

            if (cnt == 1)
            {
                b = *pchOut++;
                PUT_BYTE_HIZ_LF(b);
        
                if (mode & BUSY_WAIT_MODE)
                {
                    uint8_t cs_index = last_cs_index;
                    uwr_select (UWR_NO_DEVICE);
                    uwr_select (cs_index);
                    mode &= ~BUSY_WAIT_MODE;
                    timeout = HALF_SECOND;

                    while (SDI == 0)
                    {
                       RESET_WD();
                       delay_clks (3);  

                       if (--timeout == 0)
                          return 0;
                    }
                }
            }
            return 1;
        }
    }
    else
    {
        if ( mode & LEADING_OUT )
        {
            RESET_WD();

            for(; cnt > 1; --cnt)
            {
                b = *pchOut++;
                PUT_BYTE_TR(b);
            }

            if (cnt == 1)
            {
                b = *pchOut++;
                PUT_BYTE_HIZ_TR(b);
        
                if (mode & BUSY_WAIT_MODE)
                {
                    uint8_t cs_index = last_cs_index;
                    uwr_select (UWR_NO_DEVICE);
                    uwr_select (cs_index);
                    mode &= ~BUSY_WAIT_MODE;
                    timeout = HALF_SECOND;

                    while (SDI == 0)
                    {
                       RESET_WD();
                       delay_clks (3);  

                       if (--timeout == 0)
                          return 0;
                    }
                }
            }
            return 1;
        }
        else
        {
            RESET_WD();

            for(; cnt > 1; --cnt)
            {
                b = *pchOut++;
                PUT_BYTE_TF(b);
            }

            if (cnt == 1)
            {
                b = *pchOut++;
                PUT_BYTE_HIZ_TF(b);
        
                if (mode & BUSY_WAIT_MODE)
                {
                    uint8_t cs_index = last_cs_index;
                    uwr_select (UWR_NO_DEVICE);
                    uwr_select (cs_index);
                    mode &= ~BUSY_WAIT_MODE;
                    timeout = HALF_SECOND;

                    while (SDI == 0)
                    {
                       RESET_WD();
                       delay_clks (3);  

                       if (--timeout == 0)
                          return 0;
                    }
                }
            }

            return 1;
        }
    }
#endif
}
#pragma restore

// receive a counted string of bytes from a microwire bus
#pragma save
#pragma NOAREGS
void uwr_read(uint8x_t *pchIn, uint16_t cnt) small reentrant
{
    uint8_t data b;
 
    SDI_UNPOWERED;  // insurance: can't write and read at the same time!
#if SPI_POLARITIES
    if ( SCL == 0 )
    {
        if ( mode & LEADING_OUT )
        {
#endif
            RESET_WD();

            for(; cnt != 0; --cnt)
            {
                b = 0;              // get_byte() ors bits in, so start with 0.
                GET_BYTE_LR(b);     // get a byte from the bus.
                *pchIn++ = b;       // store it.
            }

            RESET_WD();
#if SPI_POLARITIES
        }
        else
        {
            RESET_WD();

            for(; cnt != 0; --cnt)
            {
                b = 0;              // get_byte() ors bits in, so start with 0.
                GET_BYTE_LF(b);     // get a byte from the bus.
                *pchIn++ = b;       // store it.
            }

            RESET_WD();
        }
    }
    else
    {
        if ( mode & LEADING_OUT )
        {
            RESET_WD();

            for(; cnt != 0; --cnt)
            {
                b = 0;              // get_byte() ors bits in, so start with 0
                GET_BYTE_TR(b);     // get a byte from the bus
                *pchIn++ = b;       // store it
            }

            RESET_WD();
        }
        else
        {
            RESET_WD();

            for(; cnt != 0; --cnt)
            {
                b = 0;              // get_byte() ors bits in, so start with 0
                GET_BYTE_TF(b);     // get a byte from the bus
                *pchIn++ = b;       // store it
            }

            RESET_WD();
        }
    }
#endif
}
#pragma restore

#endif // UW_SW

/***************************************************************************
 * $Log: uwrdio.c,v $
 * Revision 1.17  2006/10/13 00:47:29  tvander
 * Removed compile options for 6530, 6515;
 * renamed 6511 and 6513 to trace11 and trace13;
 * Binary verified unchanged from previous version.
 *
 * Revision 1.16  2006/09/09 01:10:19  gmikef
 * *** empty log message ***
 *
 * Revision 1.15  2006/09/06 02:12:02  tvander
 * Fixed too-long timeout.
 *
 * Revision 1.14  2006/08/30 21:55:11  gmikef
 * *** empty log message ***
 *
 * Revision 1.13  2006/08/09 00:56:37  tvander
 * *** empty log message ***
 *
 * Revision 1.12  2006/06/15 19:56:37  tvander
 * Coded fixes to enable operation from interrupts.
 *
 * Revision 1.11  2006/05/18 23:18:45  tvander
 * 16K and 32K
 * First cut at new requirements.
 * 32K 6521 is grossly tested.
 * All others have a clean compile with C51 8.02
 *
 * Revision 1.10  2006/03/08 03:06:54  gmikef
 * *** empty log message ***
 *
 * Revision 1.9  2006/03/08 00:00:57  tvander
 * Revised IO so that multiplexed interrupts are centralized in io65xx.c
 * Added default interrupts to io65xx.c
 * Clean build.
 * Tested CE, serial.
 * interrupting EEPROM driver fails.
 *
 * Revision 1.8  2006/03/06 03:32:40  Michael T. Fischer
 * More 6530 prep.
 *
 * Revision 1.7  2006/03/03 11:26:30  Michael T. Fischer
 * Prep for 6530 LCD, etc.
 *
 * Revision 1.6  2006/01/10 03:58:54  gmikef
 * Added PDATA support for CE Outputs.
 *
 * Revision 1.3  2005/11/19 00:38:37  tvander
 * Working 3-wire EEPROM interface
 *
 * Revision 1.2  2005/10/29 02:25:33  tvander
 * Working Microwire drivers
 *
 * Revision 1.1  2005/10/26 23:52:22  tvander
 * Microwire EEPROM access via DIO
 *
 *
 * Copyright (C) 2005 Teridian Semiconductor Corp. All Rights Reserved.    *
 * this program is fully protected by the United States copyright          *
 * laws and is the property of Teridian Semiconductor Corporation.         *
 ***************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区三区| 国产999精品久久久久久| 日本伊人午夜精品| 成人高清伦理免费影院在线观看| 欧美撒尿777hd撒尿| 亚洲国产成人在线| 精品一区二区三区香蕉蜜桃| 欧美色中文字幕| 最近日韩中文字幕| 国产一区二区三区美女| 欧美精品在线观看播放| 亚洲夂夂婷婷色拍ww47| 不卡电影一区二区三区| 久久久不卡影院| 久久成人久久爱| 91精品国产综合久久精品性色| 中文字幕在线不卡一区| 国产jizzjizz一区二区| 久久久不卡影院| 久久电影网站中文字幕| 欧美一区二区观看视频| 亚洲成人777| 欧美日韩亚洲综合一区二区三区| 亚洲男女毛片无遮挡| 91在线观看成人| 国产精品视频观看| 成人小视频在线观看| 欧美韩日一区二区三区| 国产suv精品一区二区6| 欧美国产1区2区| 国产a级毛片一区| 国产精品欧美一区二区三区| 成人深夜在线观看| 亚洲视频 欧洲视频| 91福利精品视频| 亚洲综合丝袜美腿| 欧美日韩夫妻久久| 美日韩一区二区| 久久久久久亚洲综合影院红桃| 国产在线观看一区二区| 国产欧美1区2区3区| 成人一区二区在线观看| 日韩一区欧美小说| 在线观看免费视频综合| 午夜不卡av在线| 精品国产免费久久| 国产99精品在线观看| 亚洲乱码国产乱码精品精小说| 91国产福利在线| 日本三级亚洲精品| 精品国产乱码久久久久久牛牛 | 国产精品原创巨作av| 国产欧美日韩精品一区| 菠萝蜜视频在线观看一区| 亚洲美女淫视频| 日韩免费视频一区| 高清beeg欧美| 亚洲国产日日夜夜| 26uuu国产日韩综合| 91在线免费看| 免费三级欧美电影| 欧美极品少妇xxxxⅹ高跟鞋| 欧美性做爰猛烈叫床潮| 久久99国产乱子伦精品免费| 国产精品传媒在线| 欧美日韩亚洲另类| 国产福利一区二区三区视频| 亚洲午夜免费视频| 久久日一线二线三线suv| 91亚洲午夜精品久久久久久| 天天影视色香欲综合网老头| 亚洲国产精品黑人久久久| 欧美午夜精品理论片a级按摩| 国产乱码精品1区2区3区| 亚洲嫩草精品久久| 久久婷婷国产综合国色天香| 欧美午夜精品理论片a级按摩| 精品一区二区国语对白| 亚洲综合在线第一页| 国产亚洲福利社区一区| 欧美精选午夜久久久乱码6080| 成人免费福利片| 久久99久久久久久久久久久| 一区二区三区在线视频播放 | 国内一区二区视频| 亚洲电影在线免费观看| 国产精品国产三级国产a| 精品美女在线播放| 欧美日韩美少妇| 色丁香久综合在线久综合在线观看| 久久爱www久久做| 亚洲韩国一区二区三区| 国产精品久久久久影院| 26uuu精品一区二区| 日韩一区二区三区视频| 欧美色涩在线第一页| 成人午夜精品在线| 精品亚洲porn| 看片的网站亚洲| 首页国产丝袜综合| 亚洲国产精品精华液网站| 亚洲色欲色欲www| 国产精品黄色在线观看| 中文乱码免费一区二区| 欧美激情一区二区三区四区| 国产日韩欧美麻豆| 久久综合网色—综合色88| 日韩欧美国产一区在线观看| 欧美一区二区三区免费在线看| 欧美日韩在线播| 5858s免费视频成人| 欧美日韩精品一区二区| 欧美精品99久久久**| 欧美精品一卡两卡| 欧美人妖巨大在线| 日韩一区二区精品葵司在线| 日韩小视频在线观看专区| 欧美一区二区三区日韩| 欧美变态凌虐bdsm| 精品国产乱码久久久久久老虎| 精品福利av导航| 国产女主播一区| ㊣最新国产の精品bt伙计久久| 亚洲日本在线天堂| 亚洲福利一二三区| 麻豆91在线观看| 国产成人8x视频一区二区| 99久久久免费精品国产一区二区| 一道本成人在线| 欧美日韩高清不卡| 久久综合国产精品| 欧美激情一区在线观看| 一区二区三区在线免费视频| 性做久久久久久免费观看| 捆绑变态av一区二区三区| 国产成人在线色| 日本韩国精品在线| 日韩一区二区免费在线电影| 国产三区在线成人av| 亚洲欧美日本韩国| 亚洲成人免费在线| 国产美女精品人人做人人爽| 色综合一个色综合亚洲| 欧美日韩不卡一区| 久久久久国产免费免费 | 欧美日韩国产高清一区| 日韩美女主播在线视频一区二区三区| 精品久久久久久久久久久久包黑料 | 97精品电影院| 欧美日韩1234| 国产女主播在线一区二区| 亚洲午夜精品一区二区三区他趣| 日本一不卡视频| 成人激情免费电影网址| 欧美日本一区二区三区四区| 久久久久久久久久久久久久久99 | 极品美女销魂一区二区三区| av影院午夜一区| 日韩一区二区三区在线观看| 国产精品系列在线| 男女性色大片免费观看一区二区| 成人综合在线观看| 欧美日韩国产一区| 综合久久给合久久狠狠狠97色 | 日产精品久久久久久久性色| 国产91在线|亚洲| 欧美大片在线观看一区二区| 亚洲激情综合网| 成人性生交大片| 精品福利av导航| 日本大胆欧美人术艺术动态 | 亚洲成人资源在线| 不卡的av网站| 国产三区在线成人av| 久久国产视频网| 欧美日韩不卡一区| 一区二区三区高清不卡| 成人亚洲精品久久久久软件| 2024国产精品视频| 免费人成精品欧美精品| 欧美区视频在线观看| 亚洲人成影院在线观看| 国产成人啪午夜精品网站男同| 欧美va亚洲va国产综合| 日韩av在线免费观看不卡| 欧美日韩一级大片网址| 亚洲高清免费观看高清完整版在线观看| 成人午夜电影网站| 久久无码av三级| 蜜桃免费网站一区二区三区 | 91在线一区二区| 国产网站一区二区| 国产毛片精品视频| 久久青草国产手机看片福利盒子| 强制捆绑调教一区二区| 欧美亚洲动漫精品| 一区二区在线观看av| 色av一区二区| 亚洲一二三四区| 欧美日韩国产首页在线观看|