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

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

?? eepromp3.c

?? TDK 6521 SOC 芯片 DEMO程序
?? C
字號:
/***************************************************************************
 * This code and information is provided "as is" without warranty of any   *
 * kind, either expressed or implied, including but not limited to the     *
 * implied warranties of merchantability and/or fitness for a particular   *
 * purpose.                                                                *
 *                                                                         *
 * Copyright (C) 2005 Teridian Semiconductor Corp. All Rights Reserved.    *
 ***************************************************************************/
//**************************************************************************
//  DESCRIPTION: 71M651x POWER METER - Serial EEPROM Routines. 
// 
//  AUTHOR:  RGV
//
//  HISTORY: See end of file
//**************************************************************************
// File: eepromp3.c
//**************************************************************************
// High speed polling eeprom API for a Microchip 93C76C
// This can use either:
// uwreep.c, a fast, less flexible interface that uses the
// chip's on-board uwire hardware.
// uwrdio.c a bit-banging interface with more clock polarities, and
// provisions to drive SPI devices.
// Both have the same interface, uwr.h
//
#include "options.h"
#if EEPROM && (UWR_FAST || UWR_SW)
#include "stm.h"
#include "eeprom.h"
#include "uwr.h" // polling microwire interface.

static uint16x_t page_size, time_to_write;
enum EEPROM_RC data eeprom_state;

// Initialize the EEPROM interface for polling access
#pragma save
#pragma NOAREGS
void EEProm_Config (uint8_t access, uint16_t spg, uint8_t tWr) small reentrant
{
    eeprom_state = _OK;
    if (access)
    {
       page_size = spg;
       time_to_write = tWr;
   
       uwr_init();  // initialize the microwire bus
    }
    else
    {
       EX_EEPROM  = FALSE;           // Disable EEPROM non-busy interrupt.
       #if TRACE10 || M6520
       DIO &= ~DIO_EEX;              // Disconnect from external EEPROM.
       #else
       #error unhandled device type
       #endif
    }    
}
#pragma restore

#if EXTRAS
// Copy four (4) bytes to eeprom; 
enum EEPROM_RC data *memset_pr  (uint32_t dst, int32_t src)
{
    int32_t xdata xsrc = src;

    return (memcpy_prx (dst, (uint8x_t *) &xsrc, 4));
}
#endif

// manages the write enable/disable 
#pragma save
#pragma NOAREGS
static uint8_t lock(uint8_t locked) small reentrant
{
    uint8_t ok;
    static uint8_t xdata cmd[2];
    // form a 93C76C write disable or enable command:
    // Where a is the address, d is the data
    if (locked)
        cmd[0] = 0x20;  // 0010000x.xxxxxxxx == write disable
    else
        cmd[0] = 0x26;  // 0010011x.xxxxxxxx == write enable
    uwr_select (UWR_93C76C_0);
    ok = uwr_write(&cmd[0], 2);
    uwr_select (UWR_NO_DEVICE);
    return ok;
}
#pragma restore

// copy a number of bytes from xdata to eeprom; 
#pragma save
#pragma NOAREGS
enum EEPROM_RC data *memcpy_prx(uint32_t dst, 
    uint8x_t *src, int16_t len) small reentrant
{
    static uint8_t xdata cmd[3];

    if (eeprom_state != _OK)
        return &eeprom_state;

    eeprom_state = _PENDING; 

    if ( 0 == lock (0) ) // write-enable the chip
    {
        lock (1);
        eeprom_state = _ERR_NACK; 
        return &eeprom_state;
    }
    
    while (len > 0 && eeprom_state == _PENDING)
    {
//        int c;
//        for (c = 1000; c > 0; --c)
//            ;
        // form a 93C76C write command:
        // 00101xaa aaaaaaaa dddddddd
        // Where a is the address, d is the data
        cmd[0] = 0x28;
        cmd[0] |= ((dst >> 8) & 0x3);
        cmd[1] = dst & 0xff;
        cmd[2] = *src++;
        uwr_busy_wait ();
        uwr_select (UWR_93C76C_0);
        if (0 == uwr_write(&cmd[0], 3))
            eeprom_state = _ERR_PENDING;
        uwr_select (UWR_NO_DEVICE);
        --len;
        ++dst;
    }
    lock (1); // relock the chip
    if (eeprom_state == _PENDING)
        eeprom_state = _OK; 

    return &eeprom_state;
}
#pragma restore

#if CLI
// copy a number of bytes from xdata to eeprom; 
enum EEPROM_RC data *memclr_pr(void)
{
    uint8_t xdata cmd[2];

    if (eeprom_state != _OK)
        return &eeprom_state;

    eeprom_state = _PENDING; 

    if ( 0 == lock (0) ) // write-enable the chip
    {
        lock (1);
        eeprom_state = _ERR_NACK; 
        return &eeprom_state;
    }
    
    // form a 93C76C erase-all command:
    // 10010xxx
    cmd[0] = 0x24;
    cmd[1] = 0x00;
    uwr_busy_wait ();
    uwr_select (UWR_93C76C_0);
    if (0 == uwr_write(&cmd[0], 2))
        eeprom_state = _ERR_PENDING;
    uwr_select (UWR_NO_DEVICE);

    lock (1); // relock the chip
    if (eeprom_state == _PENDING)
        eeprom_state = _OK; 

    return &eeprom_state;
}
#endif

#if EXTRAS
// Read four (4) bytes; A return of nonzero is a failure.
enum EEPROM_RC data *memget_pr (int32x_t *dst, uint32_t src)
{
    return (memcpy_xpr((uint8x_t *) dst, src, 4));
}
#endif

// read bytes; a return of nonzero is a fail.
#pragma save
#pragma NOAREGS
enum EEPROM_RC data *memcpy_xpr(
    uint8x_t *dst, 
    uint32_t src, 
    int16_t len
    ) small reentrant
{
    static uint8_t xdata cmd[2];

    if (eeprom_state != _OK)
        return &eeprom_state;

    eeprom_state = _PENDING; 

    // form a 93C76C read command:
    // 00110xaa aaaaaaaa
    // Where a is the address
    cmd[0] = 0x30;
    cmd[0] |= ((src >> 8) & 0x3);
    cmd[1] = src & 0xff;
    uwr_select (UWR_93C76C_0);
    uwr_write(&cmd[0], 2);
    uwr_read(dst, len);
    uwr_select (UWR_NO_DEVICE);

    if (eeprom_state == _PENDING)
        eeprom_state = _OK; 

    return &eeprom_state;
}
#pragma restore

#if CAL_SAVE  && NV_SELECT == NV_EEPROM
// returns 1 if it worked, 0 if it timed out or failed
#pragma save
#pragma NOAREGS
bool eeprom_ok (enum EEPROM_RC data *pstatus) small reentrant
{
    RESET_WD();
    return (_OK == *pstatus);
}
#pragma restore
#endif // extras

#endif // EEPROM
/***************************************************************************
 *  $Log: eepromp3.c,v $
 *  Revision 1.21  2006/10/13 00:47:28  tvander
 *  Removed compile options for 6530, 6515;
 *  renamed 6511 and 6513 to trace11 and trace13;
 *  Binary verified unchanged from previous version.
 *
 *  Revision 1.20  2006/09/09 01:09:24  gmikef
 *  *** empty log message ***
 *
 *  Revision 1.19  2006/08/09 00:56:33  tvander
 *  *** empty log message ***
 *
 *  Revision 1.18  2006/06/15 16:36:55  tvander
 *  Fixed reentrancy on iiceep.c and eepromp.c
 *  Made parallel code changes to microwire eeprom drivers.
 *
 *  Revision 1.17  2006/06/12 21:18:06  tvander
 *  Verified compilation
 *
 *  Revision 1.16  2006/05/25 03:24:12  tvander
 *  Added timeouts to EEPROMs.  Tested all three.
 *  Newly ported calibration loader, compiles without error.
 *  RTC setting uses a software timer (less code, also frees tmr1)
 *
 *  Revision 1.15  2006/05/18 23:18:44  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.14  2006/04/14 20:11:23  tvander
 *  Fixed, integrated with phased calibration
 *
 *  Revision 1.13  2006/04/06 21:00:04  tvander
 *  Maintained so microwire EEPROM driver still builds.
 *
 *  Revision 1.12  2006/03/08 00:00:56  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.11  2006/03/06 03:31:07  Michael T. Fischer
 *  More 6530 prep.
 *
 *  Revision 1.10  2006/03/03 11:25:45  Michael T. Fischer
 *  Prep for 6530 LCD, etc.
 *
 *  Revision 1.9  2006/02/08 22:38:11  gmikef
 *  *** empty log message ***
 *
 *  Revision 1.8  2006/02/08 03:43:18  tvander
 *  Made "import" the default power measurement mode, rather than net-metering
 *
 *  Revision 1.7  2006/01/16 20:11:22  tvander
 *  Clean Keil build, all versions
 *
 *  Revision 1.6  2006/01/10 03:57:35  gmikef
 *  Added PDATA support for CE Outputs.
 *
 *  Revision 1.4  2005/11/19 00:38:37  tvander
 *  Working 3-wire EEPROM interface
 *
 *  Revision 1.3  2005/11/05 02:14:00  tvander
 *  Fixed build
 *
 *  Revision 1.2  2005/11/05 01:56:26  tvander
 *  Added EEPROM erase; Note uwreep.c is not working; don't know why.
 *
 *  Revision 1.1  2005/10/26 23:52:21  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一区二区三区免费野_久草精品视频
99精品欧美一区二区三区小说 | 久久久精品免费免费| k8久久久一区二区三区| 偷拍一区二区三区四区| 亚洲国产精品av| 51午夜精品国产| 91免费版在线| 国产曰批免费观看久久久| 亚洲国产日日夜夜| 国产精品激情偷乱一区二区∴| 日韩网站在线看片你懂的| 在线观看www91| 成人综合在线视频| 久久成人免费网| 亚洲无人区一区| √…a在线天堂一区| 久久综合视频网| 3atv一区二区三区| 欧美亚洲国产怡红院影院| 粉嫩欧美一区二区三区高清影视| 国产一区在线精品| 欧美高清一级片在线观看| 欧美一卡二卡三卡| 欧美伊人久久大香线蕉综合69| 成人a级免费电影| 国产一区二三区好的| 麻豆久久久久久| 婷婷综合五月天| 亚洲午夜影视影院在线观看| 日韩美女视频一区二区 | 国产精品美女久久久久久 | 欧美久久久久久蜜桃| 91浏览器在线视频| 99精品欧美一区| av毛片久久久久**hd| 国产精品自产自拍| 国产一区视频网站| 国产一区二区三区免费播放| 黄一区二区三区| 极品尤物av久久免费看| 免费高清在线视频一区·| 成人激情动漫在线观看| 99久久精品国产导航| 国产精品激情偷乱一区二区∴| 91精品免费观看| 欧美日韩免费视频| 欧美日韩黄色影视| 制服丝袜激情欧洲亚洲| 在线成人免费观看| 56国语精品自产拍在线观看| 91精品国产综合久久精品性色| 91精品国产手机| 精品久久久久久久久久久久久久久久久 | 亚洲最新在线观看| 夜夜亚洲天天久久| 午夜精品久久久久久久久久久 | 亚洲丶国产丶欧美一区二区三区| 亚洲精品欧美在线| 亚洲精品中文字幕乱码三区| 激情欧美日韩一区二区| 久久精品视频一区| 91黄视频在线| 91久久线看在观草草青青| 欧美揉bbbbb揉bbbbb| 91精品国产乱| 久久免费视频一区| 日韩美女久久久| 性做久久久久久免费观看| 免费av成人在线| 国产麻豆成人传媒免费观看| 成人av先锋影音| 欧美午夜在线观看| 日韩欧美国产麻豆| 国产精品网站在线观看| 一区二区三区四区在线| 日本在线不卡一区| 国产成人在线视频免费播放| 91色|porny| 欧美成人video| 国产精品乱人伦| 三级亚洲高清视频| 丁香一区二区三区| 欧美日韩一区成人| 久久久久国产精品麻豆| 亚洲伦理在线免费看| 日本一二三不卡| 日韩精品一区二区三区在线播放 | 风间由美中文字幕在线看视频国产欧美| jlzzjlzz亚洲女人18| 欧美区视频在线观看| 久久久久97国产精华液好用吗| 亚洲免费大片在线观看| 久久精品国产亚洲一区二区三区| 成人18视频在线播放| 欧美一区二区黄| 亚洲欧美日韩小说| 国产一区美女在线| 欧美日韩国产综合一区二区| 中文字幕成人av| 另类小说一区二区三区| 一本色道综合亚洲| 国产日韩欧美综合在线| 日韩成人精品在线观看| 91黄色免费看| 国产精品久久影院| 国产美女精品一区二区三区| 91麻豆精品国产91久久久资源速度| 国产精品麻豆久久久| 国产在线视频不卡二| 欧美日韩国产小视频| 亚洲精品五月天| jlzzjlzz欧美大全| 国产亚洲污的网站| 免费人成在线不卡| 欧美色窝79yyyycom| 专区另类欧美日韩| 成人h动漫精品一区二区| 久久众筹精品私拍模特| 奇米四色…亚洲| 欧美日本一道本| 亚洲一区在线视频| 91日韩在线专区| 亚洲欧洲综合另类| 99re亚洲国产精品| 国产精品女主播在线观看| 国产一区二区三区综合| 精品国产一区二区三区久久久蜜月| 亚洲va欧美va人人爽| 欧美无乱码久久久免费午夜一区 | 91精品婷婷国产综合久久性色| 亚洲男同性恋视频| 91视视频在线观看入口直接观看www | 精一区二区三区| 日韩一区二区三区av| 午夜a成v人精品| 欧美肥妇毛茸茸| 免费成人小视频| 日韩精品在线一区二区| 久久黄色级2电影| 精品国产乱码久久| 国内精品不卡在线| 久久夜色精品国产噜噜av| 国内精品视频一区二区三区八戒| 精品动漫一区二区三区在线观看| 久久se精品一区二区| 精品国产麻豆免费人成网站| 韩国毛片一区二区三区| wwwwxxxxx欧美| 成人国产亚洲欧美成人综合网| 国产精品亲子乱子伦xxxx裸| aaa国产一区| 亚洲制服丝袜av| 欧美蜜桃一区二区三区| 日韩 欧美一区二区三区| 欧美精品一区男女天堂| 国产精品 欧美精品| 亚洲欧洲国产日本综合| 99精品偷自拍| 亚洲国产精品一区二区www| 制服丝袜亚洲色图| 国产麻豆成人精品| 国产精品久久国产精麻豆99网站| 99精品视频一区二区| 丝袜亚洲另类欧美| 精品国产一区a| youjizz国产精品| 香蕉影视欧美成人| 精品久久免费看| 9人人澡人人爽人人精品| 亚洲国产成人精品视频| 欧美成人a在线| 91色在线porny| 麻豆成人在线观看| 国产精品国产三级国产aⅴ中文| 色天天综合色天天久久| 蜜桃视频在线一区| 国产精品久久久久久久久久久免费看| 一本色道久久综合亚洲91| 免费在线观看成人| 综合久久久久综合| 91精品国产综合久久久久久久久久 | 国产成人小视频| 一区二区三区加勒比av| 日韩精品一区二区三区在线播放| 福利电影一区二区三区| 亚洲bt欧美bt精品| 久久久国产一区二区三区四区小说 | 国产精品66部| 亚洲成va人在线观看| 国产欧美综合色| 欧美日韩电影一区| 成人黄色av电影| 美女视频黄a大片欧美| 亚洲乱码国产乱码精品精的特点| 精品久久久久久最新网址| 91福利资源站| 成人小视频在线| 麻豆一区二区三| 亚洲国产精品久久人人爱蜜臀| 亚洲国产精品二十页|