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

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

?? flag0.c

?? TDK 6521 SOC 芯片 DEMO程序
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
                    error = max(error,MessageBad);
            log(0x90);
            log(error);
                }
            }
        } else {
            // interpret an input field
            (*flag_in_state_table[(msg_fld & 0x7f)])();
        }
    } while (msg_fld == BEGIN_BCC); // begin bcc doesn't use the char

    // at the end of the message, decide what to do next
    if (msg_fld_next == END) {
        #if TIMERS
        reset_session_timer (); // restart the session timer
        #endif
        flag_state (); // figure out what to do next
    }
    log(4);
}
#pragma restore


// start of logic for flag output state machine

#pragma save
#pragma NOAREGS
static void send_w_bcc (uint8_t ch) small reentrant
{
    ch &= 0x7f;
    bcc ^= ch;
    ser_xmit (ch);
}
#pragma restore

#pragma save
#pragma NOAREGS
// at the end! do not increment the field pointer!
static void end_out (void) small reentrant
{
    --msg_fld_index;
}
#pragma restore

// 
#pragma save
#pragma NOAREGS
// send field Z, the maximum possible baud rate
static void z_out (void) small reentrant
{
    switch(BAUD)
    {
    default: 
        error = max(error,CommandBad);
        log(0x91);
        log(error);
        break;
    case  _RATE_300: send_w_bcc('0'); break;
    case  _RATE_600: send_w_bcc('1'); break;
    case _RATE_1200: send_w_bcc('2'); break;
    case _RATE_2400: send_w_bcc('3'); break;
    case _RATE_4800: send_w_bcc('4'); break;
    case _RATE_9600: send_w_bcc('5'); break;
//    case 14400: send_w_bcc('6'); break;
    }
}
#pragma restore

#pragma save
#pragma NOAREGS
// send the communication mode
static void y_out (void) small reentrant
{
    send_w_bcc('1');
}
#pragma restore

#pragma save
#pragma NOAREGS
// send the command byte
static void c_out (void) small reentrant
{
    send_w_bcc(cmd);
}
#pragma restore

#pragma save
#pragma NOAREGS
// send the command subtype
static void d_out (void) small reentrant
{
    send_w_bcc(cmd_subtype);
}
#pragma restore

#pragma save
#pragma NOAREGS
// send a device address
static void device_address_out (void) small reentrant
{
    send_w_bcc('0'); // send a place-holder
}
#pragma restore

// hexadecimal digits
static uint8r_t hex_digits[] =
{ '0', '1', '2', '3', '4', '5', '6', '7', 
  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

// Sends a hex character
#pragma save
#pragma NOAREGS
static void hex_output (void) small reentrant
{
    cur_char = hex_digits[cur_char];
    send_w_bcc (cur_char);
    if (data_bit_index <= 0) {
        ++msg_fld_index; // digits are done
    }
}
#pragma restore

#pragma save
#pragma NOAREGS
// send a data address out
static void data_address_out (void) small reentrant
{
    --msg_fld_index; // stay in this field until the digits are done
    if (data_bit_index <= 0 || data_bit_index > 12)
        data_bit_index = 16;
    data_bit_index -= 4;
    cur_char = (uint8d_t)(0x0f & (address >> data_bit_index));
    hex_output (); // increments msg_fld_index
}
#pragma restore

#pragma save
#pragma NOAREGS
// Send a data count out
static void data_count_out (void) small reentrant
{
    --msg_fld_index; // stay in this field until the digits are done
    if (data_bit_index == 0) {
        data_bit_index = 4;
    } else {
        data_bit_index = 0;
    }
    cur_char = (uint8d_t)(0x0f & (char_cnt >> data_bit_index));
    hex_output (); // increments msg_fld_index
}
#pragma restore

#pragma save
#pragma NOAREGS
// Send hex data out
static void hex_data_out (void) small reentrant
{
    --msg_fld_index; // stay in this field until the digits are done
    if (data_bit_index == 0) {
        data_bit_index = 4;
    } else {
        data_bit_index = 0;
    }
    cur_char = (uint8d_t)(0x0f & ((data_buffer[data_index] >> data_bit_index)));
    cur_char = hex_digits[cur_char];
    send_w_bcc(cur_char);
    if (data_bit_index == 0) {
        data_index += 1;
    }
    if (--char_cnt <= 0) {
        ++msg_fld_index; // digits are done
    }
}
#pragma restore

#pragma save
#pragma NOAREGS
// Start the data protected by a block check character.
static void begin_bcc_out (void) small reentrant
{
    bcc = 0;
}
#pragma restore

#pragma save
#pragma NOAREGS
// Send a block check character
static void bcc_out (void) small reentrant
{
    ser_xmit (bcc);
}
#pragma restore

#pragma save
#pragma NOAREGS
// Send a block check character
static void error_out (void) small reentrant
{
    send_w_bcc (error_last_rcv);
}
#pragma restore

// table of data fields that can be sent
static code const void (*flag_out_state_table[MSG_FLD_COUNT])(void) small reentrant =
    {
    end_out, // END: last field- do not increment field pointer
    z_out, // field z- baud rate negotiation
    y_out, // field Y- baud rate negotiation
    c_out, // field c- command
    d_out, // field d- command subtype
    device_address_out, // DEVICE_ADDRESS: ignore a hexadecimal device address
    data_address_out, // DATA_ADDRESS: hexadecimal data address
    data_count_out, // DATA_COUNT: hexadecimal data count
    hex_data_out, // HEX_DATA: a string of bytes in hex.
    begin_bcc_out, // BEGIN_BCC: start of data protected by a BCC.
    bcc_out, // BCC: check the bcc (block check character).
    error_out // ERROR: send an error character.
    };

/* run a flag state machine for output to a serial port */
#pragma save
#pragma NOAREGS
#if PORT==0
void flag0_out (void) small reentrant
#endif
#if PORT==1
void flag1_out (void) small reentrant
#endif
{
    log(5);
    log(msg_fld_index);
    if (out != 1) { // do not send on the last interrupt
        // out == 0... so stop output
        ser_disable_xmit_rdy(); // disable transmit interrupt
    log(0xfc);
    } else {
        // the character level state machine
        // It reads fields in message templates.
        // The message templates are selected by the
        // protocol-level state machine.
        do {
            msg_fld = *(msg_ptr + msg_fld_index);
            ++msg_fld_index;
            msg_fld_next = *(msg_ptr + msg_fld_index);
            // if it's not an executable field value
            if (msg_fld < MSG_FLD_LOWER_LIMIT 
                || msg_fld > MSG_FLD_UPPER_LIMIT)
            {
                /* the output should be the same as the template */
                send_w_bcc(msg_fld);
            } else {
                // send a data field
                (*flag_out_state_table[(msg_fld & 0x7f)])();
            }
        } while (msg_fld == BEGIN_BCC); // begin bcc doesn't send anything
    
        // after the last character of the message is sent, 
    // decide what to do next
        if (msg_fld == END)
            flag_state ();
    }
    log(6);
}
#pragma restore


/* Run Flag */
#if PORT==0
void flag0_run (void)
#endif
#if PORT==1
void flag1_run (void)
#endif
{
    uint8_t cmd;


    // execute a command in the main
    if (cmd_main != 0) {
        EA = 0;
        cmd = cmd_main;
        cmd_main = 0;
        EA = 1;
    
        switch (cmd)
        {
        default: break;
        case 'U': REG_UPDATE(); break; // get a fresh copy, if possible
        #if CAL_SAVE
        case 'C': CALB_SAVE (); break; // save calibration data
        #endif
        }
    }

    #if TIMERS // if a 1.5 second timeout between received character
    if ( error == CharTimeout ) {
        log(0xe0);
        flag_state (); // perform error recovery
    }
    // if no message sent for a minute, end the session
    if ( error == SessionTimeout ) {
        log(0xe1);
        sign_on (); // return to the sign-out state
    }
    #endif
}

/* Initialize Flag */
#if PORT==0
void flag0_initialize (void)
#endif
#if PORT==1
void flag1_initialize (void)
#endif
{
    state = STATE_INVALID; // an invalid value forces the default state
    char_timer = NULL; // indicate that the timers are invalid
    session_timer = NULL;
    flag_state (); // an invalid state restarts the machine
    log(7);
}

#endif // FLAG.

/***************************************************************************
 *  $Log: flag0.c,v $
 *  Revision 1.33  2006/09/09 01:08:52  gmikef
 *  *** empty log message ***
 *
 *  Revision 1.32  2006/08/04 21:23:05  tvander
 *  Added a comment explaining the design.
 *
 *  Revision 1.31  2006/07/22 01:32:19  tvander
 *  Fopund some lurking xdata arrays that needed to be in code space.
 *
 *  Revision 1.30  2006/06/06 05:16:46  tvander
 *  clean build
 *
 *  Revision 1.29  2006/03/24 01:22:24  tvander
 *  Pretty-printed the code
 *
 *  Revision 1.28  2006/03/08 00:13:42  tvander
 *  Clean build
 *
 *  Revision 1.27  2006/03/06 03:30:00  Michael T. Fischer
 *  More 6530 prep.
 *
 *  Revision 1.25  2005/10/08 04:41:19  tvander
 *  Fixed priority inversion.
 *  Rewrote watchdog to work in brownout, but of course it doesn't work.
 *  Watchdog can now be defeated by clearing watchdog option to 0.
 *  Reorganized watt hour modules (at last!).
 *  Disabled reading of STATUS in 6521_cli because the CE's status is always SAG.
 *  Tested with 6521_CLI; measurements seem to work.
 *  Fixed other builds.
 *
 *  Revision 1.24  2005/09/22 23:45:00  tvander
 *  Clean build all models and unit tests, updated copyright to be fore Teridian
 *
 *  Revision 1.23  2005/09/01 02:03:05  gmikef
 *  Cleaned up the builds.
 *
 *  Revision 1.22  2005/08/29 17:55:51  tvander
 *  Restored SFR access.
 *
 *  Revision 1.20  2005/08/23 01:10:28  tvander
 *  Fixed baud rate
 *
 *  Revision 1.19  2005/08/22 22:30:54  tvander
 *  Clean build of FLAG system
 *  No pulse counting.
 *  No debug/CLI.
 *
 *  Revision 1.18  2005/08/22 21:20:55  tvander
 *  Added logic to read SFRs
 *
 *  Revision 1.17  2005/08/18 20:44:42  tvander
 *  Added temperature measurement to GUI-available fields.
 *  FIxed memory-space problem in add8_8
 *  Added temp_x, temp_nom, ppmc and ppmc2 to register def. file.,
 *  moved many other registers, whcih where in the way.
 *
 *  Revision 1.16  2005/07/14 20:15:47  tvander
 *  ce code concentrated in ce.c
 *  ce interface concentrated in ce652x.c, .h
 *  Fixed 0-length read or write using flag protocol.
 *  display.c is out of the build
 *  kwh_initialize now reads the LRC.
 *
 *  Revision 1.15  2005/07/01 00:23:29  tvander
 *  Modified to reduce the idata used.
 *
 *  Revision 1.14  2005/06/09 00:01:21  tvander
 *  Flag reads and writes work for power registers, the real time clock and CE RAM.
 *
 *  Revision 1.13  2005/06/04 01:24:41  tvander
 *  Fixed real time failure to read.  Added conditional debug code to log state transitions and routine boundaries.
 *
 *  Revision 1.12  2005/06/01 20:56:29  tvander
 *  Reworked to count characters rather than bytes.
 *
 *  Revision 1.11  2005/05/27 23:27:43  tvander
 *  Table-driven flag, verified large (64 byte) transfers and calibration command.
 *
 *  Revision 1.10  2005/05/26 21:54:36  tvander
 *  Flag is grossly working with GUI: signs on, reads, writes both xdata 
 *  and idata, interlocks with CE cycle, and timeouts work.
 *
 *  Revision 1.9  2005/05/21 01:47:39  gmikef
 *  *** empty log message ***
 *
 *  Revision 1.8  2005/05/19 00:49:04  tvander
 *  Flag0 verified to compile without calibration flag.
 *
 *  Revision 1.7  2005/05/18 22:42:52  tvander
 *  Added second FLAG interface
 *
 *  Revision 1.6  2005/05/18 22:23:55  tvander
 *  Successfully signed on with an HHU
 *
 *  Revision 1.5  2005/05/14 00:56:18  tvander
 *  Integrated flag0, ser0
 *  Regression tested and fixed 6521b
 *
 *  Revision 1.4  2005/04/22 21:40:08  tvander
 *  Major revision- it works pretty well.
 *
 *  Revision 1.3  2005/04/19 18:08:13  tvander
 *  First working flag interface.
 *
 *  Revision 1.2  2005/04/07 21:25:50  tvander
 *  Gotos removed
 *
 *  Revision 1.1  2005/04/06 23:02:49  tvander
 *  First valid compile of flag
 *
 * 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.         *
 ***************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲美州欧州综合国| 国产91在线|亚洲| 91老师国产黑色丝袜在线| 久久久久久久综合色一本| 蜜臀久久99精品久久久久宅男| 97精品视频在线观看自产线路二| 国产欧美精品区一区二区三区 | 亚洲图片激情小说| 国产成a人亚洲精| 久久精品无码一区二区三区| 激情文学综合插| www久久精品| 国产乱人伦偷精品视频免下载| 精品国产a毛片| 国产九色精品成人porny| 久久人人超碰精品| 国产成人综合精品三级| 欧美国产丝袜视频| 不卡欧美aaaaa| 亚洲欧美一区二区三区国产精品 | 国产麻豆精品95视频| 久久新电视剧免费观看| 国产精品一区二区91| 国产日产亚洲精品系列| 成人少妇影院yyyy| 亚洲色图一区二区三区| 色欧美乱欧美15图片| 亚洲va欧美va国产va天堂影院| 欧美日韩一区精品| 日本aⅴ精品一区二区三区| 日韩欧美精品在线视频| 韩国毛片一区二区三区| 国产欧美一区二区精品久导航 | 色老汉一区二区三区| 亚洲国产人成综合网站| 欧美挠脚心视频网站| 精品一区二区三区免费观看| 久久久亚洲综合| 99久久精品免费看国产免费软件| 亚洲蜜臀av乱码久久精品蜜桃| 欧美性猛交xxxxxx富婆| 日本不卡视频在线观看| 久久精品一区四区| 91碰在线视频| 日韩—二三区免费观看av| 精品国产乱码久久久久久图片| 丁香一区二区三区| 亚洲愉拍自拍另类高清精品| 欧美一级片在线观看| 国产尤物一区二区| 亚洲精品视频免费观看| 这里只有精品视频在线观看| 国产一区在线观看视频| 中文字幕一区二区在线播放| 欧美日韩一区二区在线观看| 极品少妇xxxx偷拍精品少妇| 成人免费在线播放视频| 在线成人免费观看| 国产精品99久久久久久久vr| 亚洲区小说区图片区qvod| 欧美一区二区三区喷汁尤物| 国产成人免费视频| 亚洲国产日韩精品| 国产欧美日韩综合| 91久久精品一区二区三| 久久精品国产一区二区三| 最新中文字幕一区二区三区| 8x8x8国产精品| 高清成人免费视频| 性感美女久久精品| 久久九九99视频| 欧美日韩电影在线| 福利91精品一区二区三区| 亚洲国产一二三| 国产亚洲综合性久久久影院| 欧美午夜一区二区| 高清国产一区二区三区| 日韩精品久久理论片| 国产精品色在线观看| 欧美精品aⅴ在线视频| 大桥未久av一区二区三区中文| 天天操天天综合网| 国产精品成人免费| 精品久久免费看| 在线看一区二区| 国产成人在线免费观看| 五月婷婷色综合| 国产精品福利影院| 日韩精品一区在线观看| 欧美视频自拍偷拍| 97成人超碰视| 国产在线精品一区二区不卡了| 亚洲第一福利视频在线| 国产精品视频免费看| 精品国产乱码久久久久久闺蜜| 欧美午夜精品久久久| 成人一区二区三区视频| 久久 天天综合| 亚洲v中文字幕| 亚洲精品成a人| 国产精品网友自拍| 精品毛片乱码1区2区3区| 欧美日韩国产综合一区二区| 94-欧美-setu| 国产成人在线电影| 国内精品伊人久久久久av影院| 污片在线观看一区二区| 亚洲乱码中文字幕综合| 亚洲国产精品激情在线观看| 日韩精品中文字幕一区二区三区| 欧美人xxxx| 欧美日韩亚洲综合在线| 一本久久精品一区二区| 成人爱爱电影网址| 国产精品正在播放| 精品一区二区三区免费播放| 日韩高清欧美激情| 亚洲成人免费在线观看| 亚洲精品视频在线观看网站| 中文字幕亚洲区| 国产精品白丝在线| 国产精品久99| 亚洲国产精品传媒在线观看| 2023国产精品视频| 精品久久久久久久久久久院品网 | 蜜桃视频在线观看一区| 婷婷成人激情在线网| 亚洲成人久久影院| 亚洲一区二区成人在线观看| 亚洲区小说区图片区qvod| 亚洲视频一区二区在线| 亚洲欧洲日韩av| 国产精品久久久久久久久果冻传媒 | 日韩不卡在线观看日韩不卡视频| 亚洲一区二区成人在线观看| 一区二区三区在线播放| 亚洲激情网站免费观看| 亚洲乱码精品一二三四区日韩在线| 中文字幕一区二区三区在线观看| 亚洲国产精品高清| 国产精品的网站| 亚洲欧美成人一区二区三区| 亚洲欧美偷拍卡通变态| 亚洲欧美经典视频| 亚洲综合在线第一页| 亚洲国产日韩精品| 日本不卡视频在线观看| 久久www免费人成看片高清| 极品瑜伽女神91| 国产精品一区二区在线看| 国产成人a级片| av电影天堂一区二区在线| 91欧美一区二区| 欧美三级电影网站| 欧美一区二区免费视频| 亚洲精品一区二区三区精华液 | 午夜欧美2019年伦理 | 亚洲精品视频自拍| 亚洲一区av在线| 免费国产亚洲视频| 国产呦萝稀缺另类资源| 成人免费看视频| 欧美午夜不卡在线观看免费| 欧美日本韩国一区| 精品少妇一区二区三区在线播放 | 日韩影院免费视频| 韩国av一区二区三区四区| 成人爽a毛片一区二区免费| 91玉足脚交白嫩脚丫在线播放| 欧美性生交片4| 26uuu亚洲| 亚洲图片欧美激情| 日韩精品一级二级| 国产精品一色哟哟哟| 一本一本久久a久久精品综合麻豆| 欧美午夜不卡视频| 精品国产一区二区精华| 国产精品美女久久久久久久网站| 亚洲一区自拍偷拍| 久久99精品国产麻豆婷婷| 国产.欧美.日韩| 欧美日韩国产成人在线免费| 精品国产乱码久久久久久免费| 日韩美女视频一区二区| 午夜精品一区二区三区免费视频| 久久99国产精品免费网站| av亚洲产国偷v产偷v自拍| 欧美日本在线观看| 久久精品亚洲国产奇米99| 亚洲一区二区三区在线播放| 久久99精品一区二区三区| 91美女福利视频| 欧美大胆一级视频| 亚洲精品亚洲人成人网在线播放| 久久超碰97中文字幕| 色哦色哦哦色天天综合| 精品久久久久香蕉网| 一区二区三区四区乱视频| 精品午夜一区二区三区在线观看| 91女神在线视频|