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

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

?? sys_main.c

?? NEC9222參考代碼
?? C
字號:
/****************************************************************************************************************
 **  IIII  NN     NN  VV       VV  EEEEEE  NN     NN  TTTTTTTT  RRRRRR     OOOOO    NN     NN  IIII    CCCCCC  **
 **   II   NN N   NN   VV     VV   EE      NN N   NN     TT     RR   RR   OO   OO   NN N   NN   II    CC       **
 **   II   NN  N  NN    VV   VV    EEEEEE  NN  N  NN     TT     RRRRRR   OO     OO  NN  N  NN   II   CCC       **
 **   II   NN   N NN     VV VV     EE      NN   N NN     TT     RR  RR    OO   OO   NN   N NN   II    CC       **
 **  IIII  NN     NN      VVV      EEEEEE  NN     NN     TT     RR   RR    OOOOO    NN     NN  IIII    CCCCCC  **
 ****************************************************************************************************************/
#include "includes.h"

unsigned short get_Meter_ID(void);

const EVENT_PROC_PTR _sys_evt_proc[]=
{ 
    _on_seconds,    
    _on_key_down,
    _on_key_press,
};


#define MAX_DETECTION_VOLTAGE           10          //2.2V + 10 = 3.2V

unsigned char AD_conv_phase = 0;
unsigned char AD_conv_times = 0;
unsigned long AD_conv_result[AD_MAX_CHANNEL] = {0};
unsigned char report_status = 0; 
unsigned short meter_id = 0;
unsigned char battery_voltage = 0;


unsigned char system_switch = 1;
unsigned char check_dog_timer_flag = 0;
unsigned char start_check_dog_flag = 0;



__directmap const METER_ID_INFO _id_info = {0x0f00};



unsigned char Convert2ProgramMode(void)
{
    unsigned char i = 0;
    do{
        PFS = 0;
        PFCMD = 0xA5;
        FLPMC = 0x01;
        FLPMC = 0xFE;
        FLPMC = 0x01;
        if(i++ > 5)
            return 1;
    }while(PFS & 0x01);

    return 0;
    
}

unsigned char Convert2UserMode(void)
{
    unsigned char i = 0;
    do{
        PFS = 0;
        PFCMD = 0xA5;
        FLPMC = 0x00;
        FLPMC = 0xFF;
        FLPMC = 0x00;
        if(i++ > 5)
            return 1;
    }while(PFS & 0x01);

    return 0;
    
}

unsigned char flash_erase_block(unsigned short addr)
{
    unsigned char i = 0;
    do{
        
        FLCMD = 0x03;
        FLAPH = addr >> 8;
        FLAPL = 0x00;
        FLAPHC = addr >> 8;
        FLAPLC = 0x00;
        PFS = 0;
        HALT();
        if(i++ > 5)
            return 1;
    }while(PFS & 0x06);

    return 0;
    
}

unsigned char flash_program_byte(unsigned short addr, unsigned char value)
{

    FLCMD = 0x05;
    FLAPH = addr >> 8;
    FLAPL = addr & 0xff;
    FLW = value;
    PFS = 0;
    HALT();
    if(PFS & 0x06)
        return 1;
    return 0;
}

unsigned char verify_meter_id()
{
    unsigned short new_id, i = 0, errno = 1;
    meter_id = 0xFFFF;

    if(!ID_10X)
    {
        if(_id_info.rom_meter_id_status == METER_ID_STATUS_WORD)
        {
            meter_id = _id_info.rom_meter_id_value;
            return 0;
        }
    }
    
    if(Convert2ProgramMode())
        return 1;

    
    
    new_id = get_Meter_ID();
    if(new_id == 0xffff)
        new_id = 0x2143;
    while(1)
    {
        if(flash_program_byte( (unsigned short)(&(_id_info.rom_meter_id_status))+1, 0xFE))
            goto fl_err_proc;
        if(flash_program_byte( (unsigned short)(&(_id_info.rom_meter_id_status)), 0xCA))
            goto fl_err_proc;
        if(flash_program_byte( (unsigned short)(&(_id_info.rom_meter_id_value))+1, new_id>>8))
            goto fl_err_proc;
        if(flash_program_byte( (unsigned short)(&(_id_info.rom_meter_id_value)), new_id))
            goto fl_err_proc;
        
        errno = 0;
        break;
        
fl_err_proc:    
        if(flash_erase_block((unsigned short)(&(_id_info.rom_meter_id_status))))
        {
            break;
        }
        else
        {
            if(i++ > 5)
                break;
            continue;
        }
    }
    
    Convert2UserMode();

    if(errno)
        return 1;
    
    meter_id = _id_info.rom_meter_id_value;
    return 0;
}



void test_LCDB(void)
{
    LCD_LIGHT_ON();
    _delay(8000);
    LCD_LIGHT_OFF();
}

unsigned short get_Meter_ID(void)
{
    unsigned short meterID = 0, *ram_start_addr = 0xfe80;
    unsigned char i;
    for(i = 0; i < 64; i++)
    {
        meterID += *ram_start_addr;
        ram_start_addr++;
    }
    return meterID;
    
    
}


void get_Battery_Voltage(void)
{
    unsigned short int_flag = 0, j;
    unsigned short test_voltage = (RF_TIME_CALIBR + 3);
    unsigned char intStatus = PMK1,test_flag = 1;

    PMK1 = 1;
    P12.1 = 1;
    
#ifndef RF_MCU_DELAY
    RFXX_WRT_CMD(0xD000);
#endif
    RFXX_WRT_CMD(test_voltage);
    RFXX_WRT_CMD(0xC007);
    
    j = 0;
    //LED = 0;
    

    while(test_flag)
    {
        if(j++ > 500)
        {
            if((test_voltage & 0x1f) < MAX_DETECTION_VOLTAGE)
            {
                test_voltage++;
                RFXX_WRT_CMD(test_voltage);
                _clr_wdt();
                _delay(100);
                j = 0;
            }
            else
                break;
        }
                                
        while(!RF_IRQ)
        {
            int_flag = RFXX_WRT_CMD(0xcc00);    
            _clr_wdt();
            if(int_flag & 0x04)
            {            
                test_flag = 0;
                break;
            }            
        }
        _clr_wdt();
    }

    RFXX_WRT_CMD(RF_TIME_CALIBR);
    //RFXX_WRT_CMD(0xC220);
    RFXX_WRT_CMD(RF_TIME_SET);
    
    battery_voltage = test_voltage & 0x1f;  
    
    //LED = 1;
    //RFXX_WRT_CMD(0xFE00);
    //RF_init();
#if 0    
    RFXX_WRT_CMD(0xC001);
    RFXX_WRT_CMD(0xC2A0);    
    RFXX_WRT_CMD(0xE219);
    RFXX_WRT_CMD(0xC003);
#endif

    PMK1 = intStatus;

#ifndef RF_MCU_DELAY
    RFXX_WRT_CMD(0xD040);
#endif

    P12.1 = 0;
               
}


/* mcu power up or reboot
*/
void _mcu_init(void)
{
    unsigned char temp_stabset, temp_stabwait;
    
    _disable_interrupt();

    //Cpu clock and Fxp are Fx/2
    PCC = 0;
    PPCC = 0;

    PMC2=0x0F;      //AD input mode
    PM2 = 0xFf;
    ADM = 0x10;  //2.8~4V: 15us

    PM3=P3DIR_VAL;
    P3=P3OUT_VAL;
    //PU3 = BIT0;

    PM4= BIT3; //P4DIR_VAL;
    P4=P4OUT_VAL;
    //PU4 = BIT1|BIT3|BIT5;

    PM12=P12DIR_VAL;
    P12=P12OUT_VAL;

    P13.0 = 0;
    
    LSRSTOP = 0;
    WDTM = 0x67;            
}

void _device_init(void)
{
    unsigned char i;
    _disable_interrupt();
    
    if(verify_meter_id())
    {        
        while(1)
        {
            LED = 0;
            _delay(2000);
            _clr_wdt(); 
            LED = 1;
            _delay(2000);
        }        
    }    
    
    _clr_wdt(); 
    RF_init();
    get_Battery_Voltage();
    memset(AD_conv_result, 0, AD_MAX_CHANNEL*sizeof(unsigned long));
    AD_conv_phase = AD_MAX_CHANNEL;
    _sys_time.seconds = 0;
    _clr_wdt();

    //enable H1 Timer to clear watchdog period
    TMHMD1 = 0x50;
    CMP01 = 234;        //125ms //234
    
    _enable_interrupt();
        
}

void init_check_watch_dog_time()
{
    //unsigned char old_dog_value, new_dog_value;
    
    TMC00 = 0;
    CRC00 = 0xffff;
    PRM00 = 0x02;       // 8MHz/256
    start_check_dog_flag = 1;
    //check_dog_timer_flag = 1;
       
}

int main(void)
{
    unsigned char pos;
    _sys_evt_word_t int_event_mask;

    
    _mcu_init();
    _device_init();
    init_check_watch_dog_time();

    PMK0 = 0;
    //PMK1 = 0;
    TMMKH1 = 0;
    TMHE1 = 1;  //start watch timer


test_evt:
    int_event_mask = 1;
    for(pos=0; pos<SYS_EVENT_MAX; pos++)
    {
        if(int_event_mask & SYS_EVT_VAR)
        {
            SYS_EVT_PROC(pos);
            _sys_evt_del(int_event_mask);
            _clr_wdt();            
            goto test_evt;
        }
        if((SYS_EVT_VAR & SYS_EVENT_MASK) == 0) {
            break;
        }        

        int_event_mask <<= 1;    
    }
    _clr_wdt(); 

    if((AD_conv_phase < AD_MAX_CHANNEL) || _key_flag || check_dog_timer_flag)
    {
        HALT();
    }
    else     
    {
        STOP();
    }
    
 

    goto test_evt;
    
    return 0;
}

void AD_start()
{
    //P12.3 = 1;    
    ADCE = 1;    
    AD_conv_phase = 0;
    AD_conv_times = 0;
    ADS = AD_conv_phase;
    NOP();
    NOP();
    ADCS = 1;       //Start convert
    ADMK = 0;       //Enable interrupt
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级片在线观看| 中文字幕乱码一区二区免费| 久久久久88色偷偷免费| 亚洲青青青在线视频| 美女视频黄久久| 91免费视频网| 久久精品水蜜桃av综合天堂| 三级在线观看一区二区| 91伊人久久大香线蕉| 久久综合九色欧美综合狠狠| 亚洲国产成人高清精品| 91小视频在线观看| 国产亚洲欧美在线| 免费亚洲电影在线| 欧美视频三区在线播放| 亚洲欧洲精品一区二区精品久久久| 美日韩黄色大片| 欧美精品123区| 亚洲主播在线观看| 91国产成人在线| 亚洲国产高清不卡| 国产成人亚洲综合a∨婷婷| 日韩一级高清毛片| 日本免费在线视频不卡一不卡二| 91猫先生在线| 亚洲美女偷拍久久| 成人av在线看| 中文字幕一区在线| av福利精品导航| 中国色在线观看另类| 国产99精品国产| 国产女同互慰高潮91漫画| 国产伦精一区二区三区| 久久在线免费观看| 国产一区二区美女诱惑| 国产亚洲一区二区三区四区| 国内不卡的二区三区中文字幕| 日韩一级欧美一级| 精品亚洲成av人在线观看| 精品剧情v国产在线观看在线| 美脚の诱脚舐め脚责91| 欧美成人精品高清在线播放| 久久精品国产亚洲高清剧情介绍| 欧美剧情电影在线观看完整版免费励志电影| 亚洲六月丁香色婷婷综合久久| 99久久精品99国产精品| 亚洲精品视频免费观看| 欧美视频日韩视频在线观看| 琪琪久久久久日韩精品| 日韩欧美一级二级| 国产高清精品网站| 亚洲欧美视频在线观看视频| 色综合色综合色综合色综合色综合| 亚洲免费观看在线观看| 欧美喷水一区二区| 国产一区二区三区四区五区美女| 久久久久久免费毛片精品| 成人动漫一区二区三区| 亚洲亚洲精品在线观看| 精品日韩在线观看| 成人三级伦理片| 亚洲一级二级在线| 久久综合久久综合亚洲| 93久久精品日日躁夜夜躁欧美| 亚洲第一激情av| 2021国产精品久久精品| 91一区一区三区| 久久久一区二区| 欧美另类久久久品| 在线精品视频一区二区三四| 亚洲六月丁香色婷婷综合久久 | 中文字幕欧美三区| 91黄色免费看| 国产在线精品免费av| 亚洲精品国产视频| 精品成人免费观看| 色综合视频在线观看| 国产一区在线不卡| 亚洲综合色丁香婷婷六月图片| 欧美不卡一区二区| 日本韩国精品在线| 精品一区二区三区久久久| 亚洲美女少妇撒尿| 久久亚区不卡日本| 欧美日韩国产电影| 91丝袜美女网| 激情综合亚洲精品| 视频在线观看一区| 轻轻草成人在线| 亚洲视频免费在线| 久久一留热品黄| 在线电影一区二区三区| 91女厕偷拍女厕偷拍高清| 国产老肥熟一区二区三区| 爽好久久久欧美精品| 亚洲色图在线看| 欧美国产精品一区| 久久久久国产精品免费免费搜索| 欧美日本乱大交xxxxx| 色偷偷88欧美精品久久久| 成人av在线资源| 国产成人av福利| 激情综合色播五月| 蜜桃视频一区二区| 麻豆91精品91久久久的内涵| 亚洲福利电影网| 亚洲高清久久久| 一区二区三区国产豹纹内裤在线| 欧美高清在线视频| 日本一区免费视频| 中文字幕精品一区二区三区精品| 久久亚洲精品小早川怜子| 欧美一级在线观看| 日韩女优av电影在线观看| 在线成人av网站| 91麻豆精品国产91久久久资源速度 | 国产精品一区二区你懂的| 麻豆精品在线视频| 久久激情综合网| 国产伦理精品不卡| 成人午夜看片网址| 91社区在线播放| 91久久精品国产91性色tv | 91麻豆精品国产无毒不卡在线观看| 在线免费观看一区| 欧美手机在线视频| 欧美二区在线观看| 精品国精品自拍自在线| 精品国产亚洲在线| 国产精品嫩草影院com| 中文字幕一区二区三区在线观看 | 亚洲精品一区二区三区蜜桃下载| 欧美本精品男人aⅴ天堂| 国产欧美精品在线观看| 日本一区二区三区四区在线视频| 国产精品久久久久9999吃药| 亚洲免费观看高清完整版在线观看熊 | 亚洲一二三级电影| 美美哒免费高清在线观看视频一区二区| 蜜臀av性久久久久av蜜臀妖精 | 久久久久久电影| 国产精品福利一区| 亚洲成人一区在线| 国产激情偷乱视频一区二区三区| www.色精品| 日韩一区二区精品葵司在线| 久久久久久毛片| 亚洲夂夂婷婷色拍ww47| 狠狠色狠狠色综合系列| 99精品在线观看视频| 91.xcao| 国产丝袜在线精品| 亚洲电影你懂得| 国产一区二区免费在线| 欧美午夜寂寞影院| 久久精品欧美日韩| 天堂资源在线中文精品| 国产suv一区二区三区88区| 欧美日韩一二三区| 欧美高清在线一区| 免费人成在线不卡| 91国产精品成人| 国产色一区二区| 天天av天天翘天天综合网色鬼国产 | 久久一区二区三区四区| 一区二区三区四区蜜桃| 国产成人亚洲综合a∨猫咪| 欧美精品高清视频| √…a在线天堂一区| 韩国视频一区二区| 欧美日韩美女一区二区| 国产精品久久久久影院色老大| 蜜臀av一区二区三区| 色噜噜狠狠色综合中国| 国产精品视频你懂的| 国产在线精品免费| 日韩亚洲欧美在线观看| 亚洲综合清纯丝袜自拍| 欧美一区二区女人| 亚洲人成伊人成综合网小说| 国产精品99久久久久久久女警| 欧美一区二区久久久| 亚洲国产精品久久久久婷婷884 | 欧美色图第一页| 国产精品久久久久久户外露出 | 亚洲成人免费影院| 99久久99久久精品免费观看 | 日韩欧美国产午夜精品| 石原莉奈在线亚洲二区| 欧美日韩激情一区二区三区| 最新不卡av在线| www.成人在线| 自拍偷拍亚洲综合| av电影一区二区| **性色生活片久久毛片| 成人美女在线观看| 国产精品免费观看视频| 成人aa视频在线观看| 国产精品国产三级国产| www.在线欧美|