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

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

?? batmodes.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, Corporation.                 *
 * All Rights Reserved.                                                    *
 ***************************************************************************/
//**************************************************************************
//  DESCRIPTION: 71M65xx POWER METER - Battery modes.  The actual
//  switching of modes is handled by the initialization in main ().  It's
//  there so that it is centralized, integrated with initialization, and 
//  automatically treats resets and non-reset start-ups in the same way.
// 
//  AUTHOR:  RGV
//
//  HISTORY: See end of file
//**************************************************************************
// File: BATMODES.C
//
#include "options.h"
#if BROWNOUT_BATMODE
#include "meter.h"
#include "defaults.h"       // default data tables
#include "delay.h"          // shared delay loop
#include "main.h"
#include "lcd.h"  // initialized for the meter's display
#include "eeprom.h"  // initialized for the meter's display
#include "wh.h"  // watt-hour display for brownout
#include "batmodes.h"

uint8_t batmode;
uint8_t batmode_valid;
uint8_t wake_count = 1;
#if M6520
#define IN_BROWNOUT_MODE (COMP0 != 0x41)
#endif

#pragma save
#pragma noaregs
bool batmode_is_brownout (void) small reentrant
{
#if M6520
    return IN_BROWNOUT_MODE;
#elif TRACE10
    return FALSE;
#else
#error unkown device
#endif
}
#pragma restore

#if LCD_ACTIVE && AUTOSLEEP
void batmode_display (void)
{
    // any other needed system initalization goes here
    LCD_Init();  // initialize the LCD interface
    eeprom_enable();  // initialize the EEPROM interface
    meter_brownout_lcd();  // meter\meter.c's logic to display the data
}
#endif

// does the right thing if there was a transition from
// brownout to power mode and vice-verse, which in this case
// is to simulate a reset, because the startup logic
// copes with power transitions.
// This is a separate routine because in the past there have
// been needs to insert debug code, etc.
#pragma save
#pragma noaregs
static void batmode_change (void) small reentrant
{
    EA = 0;
    CONFIG0 = 0;    // Make sure we are running as fast as we can.
    IFLAGS = (~IE_PLLFALL_) & (~IE_PLLRISE_);  // force an edge to occur

    // if entering brownout mode, and there's no battery, hang
    while(!BATTERY_MODE_ENABLE && IN_BROWNOUT_MODE)
        RESET_WD(); // wait for the power to die, OK due to slow MPU.

    main_soft_reset ();
}
#pragma restore

#pragma save
#pragma noaregs
void pll_isr (void) small reentrant interrupt PLL_IV
{
    EA = 0;
    batmode_change ();
}
#pragma restore

#pragma save
#pragma noaregs
void batmode_background (void) small reentrant
{
#if 0
    // if the PLL_OK bit -changes- from the state at reset,
    // then do something.
    if (batmode != IN_BROWNOUT_MODE 
            || batmode_valid != YES
            || (IFLAGS & (IE_PLLFALL_ | IE_PLLRISE_))
       )
    { 
        EA = 0;
        batmode_change ();
    }
#endif
}
#pragma restore

// start a wake timer in seconds.
#if AUTOSLEEP || CLI
void batmode_wait_seconds (uint16_t cs)
{
#if M6520
    delay_clks (3);
    cs = ((cs * 10) + 13)/25;
    cs = max (1, cs);
    cs = min ((WAKE_PRD), cs);
    cs &= WAKE_PRD;
    cs |= _2P5_SECONDS;
    wake_count = cs;
    cs |= WAKE_ARM;
    WAKE = cs;
#elif TRACE10
#else
#error unknown device
#endif
}
#endif

// start a wake timer in seconds.
#if CLI
void batmode_wait_minutes (uint16_t cs)
{
#if M6520
    delay_clks (3);
    cs = max (1, cs);
    cs = min ((WAKE_PRD), cs);
    cs &= WAKE_PRD;
    cs |= _1_MINUTE;
    wake_count = cs;
    cs |= WAKE_ARM;
    WAKE = cs;
#elif TRACE10
#else
#error unknown device
#endif
}
#endif

#if AUTOSLEEP || CLI
// enter LCD_only mode, a power-down mode that continues to display
// the LCD
void batmode_lcd (void)
{
#if M6520
    uint8_t tmp;
    delay_clks (3);
    tmp = LCD_ONLY | wake_count;
    wake_count = 1;
    WAKE = tmp;
#elif TRACE10
#else
#error unknown device
#endif
}
#endif // autosleep or cli

#if AUTOSLEEP || CLI
// enter sleep mode, a power-down mode that does nothing.
// but can be exited by either a wake timer, or a pushbutton
void batmode_sleep (void)
{
#if M6520
    uint8_t tmp;
    delay_clks (3);
    tmp = SLEEP | wake_count;
    wake_count = 1;
    WAKE = tmp;
#elif TRACE10
#else
#error unknown device
#endif
}
#endif // autosleep or cli

// initialize the battery mode
void batmode_init (void)
{
#if M6520
    bool ea = EA;                       // save interrupt state
    EA = 0;                             // disable interrupts
    wake_count = 1;
    WAKE = 0;                           // disable preceding wake stuff
    CLR_IE_WAKE();                      // clear the flags
    CLR_IE_PB();
    batmode = IN_BROWNOUT_MODE;
    batmode_valid = YES;
    // Interrupt priorities are set in main.
    CONFIG2 |= EX_PLL;                  // Enable PLL interrupts.  
    EX_PLL_OK   = TRUE;                 // Enable PLL state change interrupts.
    //batmode_background ();            // cope with a change...
    // if the PLL_OK bit -changes- from the state at reset,
    // then do something.
    if (batmode != IN_BROWNOUT_MODE 
            || batmode_valid != YES
            || (IFLAGS & (IE_PLLFALL_ | IE_PLLRISE_))
       )
    { 
        EA = 0;
        batmode_change ();
    }
    EA = ea;                            // restore interrupt state
#elif TRACE10
#else
#error unknown device
#endif
}

/***************************************************************************
 * $Log: batmodes.c,v $
 * Revision 1.30  2006/10/13 00:48:13  tvander
 * Removed compile options for 6530, 6515;
 * renamed 6511 and 6513 to trace11 and trace13;
 * Binary verified unchanged from previous version.
 *
 * Revision 1.29  2006/09/27 01:02:32  tvander
 * 6520 has a "Battery mode jumper" on DIO_8, added comments.
 * Changes baud rate depending on battery mode jumper.
 *
 * Revision 1.28  2006/09/20 23:50:26  tvander
 * Set interrupt priorities only once, during startup
 *
 * Revision 1.27  2006/09/19 16:55:17  tvander
 * The object is to reduce or handle a persistent hang in the PLL_OK interrupt.
 * Polling test looks for a hung PLL_OK interrupt, i.e. a set PLLRISING or PLLFALLING flag in IFLAGS.
 * Polling test is run as the last step of the start-up code, to speed recovery from
 * some hangs befor ethat point.
 * Also, initialization code disables interrupts.
 * The results are generally improved.
 *
 * Revision 1.26  2006/09/18 20:29:29  tvander
 * Combined common code, centralized interrupt priorities
 *
 * Revision 1.25  2006/09/09 01:10:42  gmikef
 * *** empty log message ***
 *
 * Revision 1.24  2006/09/06 02:16:25  tvander
 * Removed delay routine to its own file.
 *
 * Revision 1.23  2006/08/30 21:55:39  gmikef
 * *** empty log message ***
 *
 * Revision 1.22  2006/08/30 02:09:16  gmikef
 * *** empty log message ***
 *
 * Revision 1.21  2006/08/09 00:56:57  tvander
 * *** empty log message ***
 *
 * Revision 1.20  2006/07/11 22:31:03  tvander
 * Initialize flags
 *
 * Revision 1.19  2006/07/07 22:17:44  tvander
 * Restores data from EEPROM before displaying it in LCD mode.
 *
 * Revision 1.18  2006/07/07 01:13:06  tvander
 * Fixed reentrancy errors, build errors.
 * Added  untested code to hang brownout when batttery is not present.
 *
 * Revision 1.17  2006/06/24 04:43:23  tvander
 * Debugged the battery modes, especially the mission->brownout transition
 * Includes necessary changes for the reset hack needed for the 6521A03.
 *
 * Revision 1.16  2006/06/20 20:32:03  tvander
 * Incorporates logic to debounce the battery mode
 *
 * Revision 1.15  2006/06/15 20:57:10  tvander
 * Would display invalid power numbers.
 *
 * Revision 1.14  2006/06/14 02:59:05  tvander
 * Simplifiedthe brownout, regressing to 17april06 version, but with hang
 * removed, and a brownout display that always executes before entering sleep mode.
 *
 * Reduced the MPU clock 8x from 4.9mHz to 614kHz
 *
 * Revision 1.13  2006/06/09 00:21:32  tvander
 * Wrote, then commented-out the logic to blink an LCD segment.
 *
 * Revision 1.12  2006/05/30 17:17:40  tvander
 * Deprecated hardware dependencies
 *
 * Revision 1.11  2006/05/18 23:18:46  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/06 03:33:00  Michael T. Fischer
 * More 6530 prep.
 *
 * Revision 1.9  2006/02/08 03:43:19  tvander
 * Made "import" the default power measurement mode, rather than net-metering
 *
 * Revision 1.8  2006/01/10 03:59:30  gmikef
 * Added PDATA support for CE Outputs.
 *
 * Revision 1.6  2005/11/10 22:51:32  tvander
 * 6520 has battery mode commands.
 * Brownout always has decimal point 7.
 * LCD Mode always has decimal points 7 and 6.
 * Sag detection is disabled.
 *
 * Revision 1.5  2005/11/09 02:21:16  tvander
 * Added code to display watt hours from brownout mode.
 * Added code to clear EEPROM (lapie command "EEE")
 *
 * Revision 1.4  2005/11/05 01:57:24  tvander
 * Added code to clear pushbutton and wake flags.
 *
 * Revision 1.3  2005/11/03 19:20:53  tvander
 * Fixed initialization of PLL_FALLING interrupt.
 * Rolled date.
 *
 * Revision 1.2  2005/10/12 23:00:02  tvander
 * Includes demonstratable mission mode, brownout, LCD and sleep modes
 *
 * Revision 1.1  2005/10/06 20:55:02  tvander
 * Preliminary logic to manage the battery modes.
 *
 * 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.         *
 ***************************************************************************/
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品欧美一二99| 精品人在线二区三区| 亚洲免费在线看| 91免费版在线看| 亚洲精品日日夜夜| 91精品国产一区二区三区香蕉| 蜜臀av在线播放一区二区三区| 91精品国产欧美一区二区| 久久国产婷婷国产香蕉| 久久精品夜夜夜夜久久| 9久草视频在线视频精品| 亚洲男人的天堂在线aⅴ视频| 在线亚洲人成电影网站色www| 午夜精品久久久久久| 欧美大片在线观看| 国产99久久久国产精品潘金 | av动漫一区二区| 自拍偷拍亚洲激情| 欧美中文字幕不卡| 久久国产精品第一页| 国产精品久99| 91麻豆精品国产91久久久久| 国产精品羞羞答答xxdd| 日韩精品欧美精品| 精品国产免费久久| 91久久精品一区二区三| 久久精品免费观看| 日韩毛片在线免费观看| 日韩一二三区视频| 92国产精品观看| 五月激情丁香一区二区三区| 久久精品夜夜夜夜久久| 欧美色精品在线视频| 国产一区二区导航在线播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美日韩不卡一区二区| 国产传媒日韩欧美成人| 日本亚洲视频在线| 亚洲日本在线观看| 久久伊人中文字幕| 欧美日韩成人综合天天影院| 国产99久久久国产精品免费看| 亚洲v精品v日韩v欧美v专区 | 91行情网站电视在线观看高清版| 麻豆精品在线看| 一级做a爱片久久| 国产欧美日韩精品在线| 日韩一区二区三| 在线一区二区三区做爰视频网站| 国产成人免费av在线| 奇米影视在线99精品| 依依成人综合视频| 国产精品福利影院| 久久男人中文字幕资源站| 欧美日韩国产区一| 91日韩精品一区| 国产成人av电影在线| 久久99精品久久久久久久久久久久| 亚洲成av人**亚洲成av**| 亚洲色欲色欲www| 中文一区在线播放| 久久久久久久久久看片| 日韩三级视频在线观看| 欧美日韩极品在线观看一区| 91香蕉视频在线| 不卡欧美aaaaa| 福利91精品一区二区三区| 韩国午夜理伦三级不卡影院| 青娱乐精品视频| 日本亚洲天堂网| 日韩av电影天堂| 亚洲chinese男男1069| 一区二区三区欧美在线观看| 亚洲码国产岛国毛片在线| 国产精品免费看片| 中文字幕一区二区视频| 国产精品成人在线观看| 国产精品成人免费在线| 国产清纯白嫩初高生在线观看91| 久久伊人中文字幕| 国产亚洲欧美一级| 久久久亚洲午夜电影| 精品第一国产综合精品aⅴ| 日韩欧美一区在线| 日韩欧美二区三区| 欧美videossexotv100| 久久蜜臀精品av| 欧美激情综合网| 亚洲欧洲日产国产综合网| 亚洲六月丁香色婷婷综合久久| 亚洲精品视频自拍| 亚洲国产精品视频| 蜜桃在线一区二区三区| 91丨九色丨黑人外教| 99久免费精品视频在线观看 | 亚洲一区二区三区爽爽爽爽爽 | 日韩三级免费观看| 久久免费偷拍视频| 亚洲欧美偷拍卡通变态| 午夜日韩在线电影| 麻豆91小视频| 99re热这里只有精品免费视频| 色噜噜狠狠成人网p站| 69p69国产精品| 中文字幕第一区| 亚洲最大的成人av| 奇米精品一区二区三区在线观看| 韩国成人精品a∨在线观看| 不卡av电影在线播放| 欧洲视频一区二区| 欧美一区在线视频| 欧美极品另类videosde| 一区二区不卡在线播放 | 免费观看一级欧美片| 国产精品一区二区不卡| 色系网站成人免费| 日韩美女视频一区二区在线观看| 欧美国产一区二区| 午夜a成v人精品| 国产精品一区二区在线看| 91激情五月电影| 26uuu国产在线精品一区二区| 国产精品久久久久久久久久免费看| 夜夜嗨av一区二区三区网页| 国产麻豆精品久久一二三| 欧美性感一类影片在线播放| 久久久精品日韩欧美| 午夜精品一区二区三区免费视频 | 亚洲电影在线播放| 国内精品免费在线观看| 在线观看av一区| 国产喷白浆一区二区三区| 亚洲午夜激情av| 成人中文字幕在线| 日韩欧美一级二级| 亚洲国产精品精华液网站| 国产精品66部| 精品久久一区二区三区| 亚洲午夜电影在线观看| 成+人+亚洲+综合天堂| 欧美成人激情免费网| 午夜精品一区二区三区免费视频 | 久久久精品tv| 日本免费新一区视频| 在线亚洲一区二区| 欧美激情综合在线| 国产一区二区三区美女| 欧美一卡二卡三卡四卡| 亚洲国产精品嫩草影院| 色乱码一区二区三区88| 中文字幕一区二区在线观看 | 亚洲免费视频成人| 国产一区二区看久久| 欧美精品123区| 亚洲成人tv网| 欧美日韩国产小视频在线观看| 亚洲精品视频免费看| 91在线观看视频| 国产精品白丝在线| 成人av免费在线播放| 久久久久国产精品厨房| 国产精品99久久久久| 国产亚洲污的网站| 国产精品中文字幕日韩精品| 精品欧美乱码久久久久久1区2区| 美女任你摸久久| 日韩欧美一级片| 麻豆成人91精品二区三区| 日韩一级免费一区| 免费的成人av| 日韩免费福利电影在线观看| 激情丁香综合五月| 久久九九99视频| av在线不卡观看免费观看| 国产精品久久久久久久久动漫 | www.亚洲免费av| 国产精品欧美久久久久一区二区| av不卡在线播放| 一区二区三区四区激情| 欧美视频一区在线观看| 日韩av一区二区三区| 精品久久久久久久久久久久久久久| 精品一区二区在线免费观看| 久久精品一区二区三区四区| 99久久精品一区| 亚洲综合视频在线| 4438成人网| 国产乱色国产精品免费视频| 中文字幕二三区不卡| 91福利国产成人精品照片| 日韩专区欧美专区| 久久久久亚洲综合| 色欧美片视频在线观看在线视频| 亚洲成人免费视频| 精品国产1区二区| av爱爱亚洲一区| 丝袜美腿一区二区三区| 久久精品免费在线观看| 日本乱人伦一区| 久久国产麻豆精品|