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

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

?? io_merge.c

?? TDK 6521 SOC 芯片 DEMO程序
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/***************************************************************************
 * 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: 71M652x POWER METER - IO Merge Utility.
// 
//  AUTHOR:  MTF/RGV
//
//  HISTORY: 2003 NOVEMBER 24; First Version. 
//           2004 JANUARY  16; Prevent CE from turning ON.
//           2004 MARCH    18; Added I1=.. and I3=.. commands.
//             2005 AUGUST   19; Added MPU parameters.
//             2005 AUGUST   20; Added Serial Port (including 'echo') and DIO commands.
//
//**************************************************************************
//               
// File:  IO_MERGE.C
//               
/*
    File: io_merge.c
    ---- io_merge ver 0.3 March 18, 2004 ----

    io_merge old.hex io.txt new.hex

    Merges Intel hex files "old.hex" w/ "io.txt" file.

    Outputs: Merged Intel hex file new.hex
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/timeb.h>

typedef unsigned char  Bbool;
typedef unsigned char  U08;
typedef unsigned short U16;
typedef unsigned long  U32;

typedef signed char  S08;
typedef signed short S16;
typedef signed long  S32;

#define MAX_ROM_KSIZE   64
unsigned char Rom[ MAX_ROM_KSIZE * 1024 ];

/*** Public functions declared within this module ***/
S32  get_long (void);             // Convert ascii decimal (or hex) long  to binary number.
S32  get_long_decimal (U08 c);    // Convert ascii decimal long  to binary number.
U32  get_long_hex (void);         // Convert ascii hexdecimal long  to binary number.

S16  get_short (void);            // Convert ascii decimal (or hex) short to binary number.
S16  get_short_decimal (void);    // Convert ascii decimal short to binary number.
U16  get_short_hex (void);        // Convert ascii hexdecimal short to binary number.

S08  get_num (void);              // Convert ascii decimal (or hex) number to binary number.
S08  get_num_decimal (void);      // Convert ascii decimal byte to binary number.
U08  get_num_hex (void);          // Convert ascii hexdecimal byte to binary number.

U08  get_digit (U08 *d);          // Get next decimal (or hex) digit from CLI buffer.   
U08  get_char_d (U08 *d);         // Get next character from CLI buffer and allow unget.
U08  get_char (void);             // Get next character from CLI buffer.

/*** Public variables declared within this module ***/
// None.

/*** Private variables used within this module ***/
#define CLI_BASE 0
#define CLI_BUFF_SIZE 256               // 256 byte CLI buffer, no wrap;
U08 cli_buff[ CLI_BUFF_SIZE ];
U08 cli_index;
U08 cli_result;

#define OK_ID            1
#define ERROR_ID         2
#define CASE_         0x20

#define CE_CODE      0x1000             // Start address of CE_CODE image.
#define CE_CODE_SIZE 0x1000             // 4K bytes.
#define IO_DATA      0x0900             // Start address of IO_DATA image.
#define MPU_DATA     (IO_DATA + 0x31)   // Start address of MPU r_Parms data
#define DEMO_VERSION (IO_DATA + 0x78)   // Start address of MPU r_demo_version
#define CE_DATA      0x0A00             // Start address of CE_DATA image.
#define CE_DATA_SIZE 0x0200             // 512 bytes.

#define SELECT_TOTAL  (IO_DATA + 0x1F)
#define SELECT_OUTPUT (IO_DATA + 0x20)
#define SELECT_RMS    (IO_DATA + 0x21)
#define TEMPERATURE   (IO_DATA + 0x22)  // Alternate MUX sequence each XFER cycle.
#define SELECT_PORT   (IO_DATA + 0x23)
#define RESERVED      (IO_DATA + 0x24)
#define DIO21_16_DIR  (IO_DATA + 0x25)
#define DIO15_08_DIR  (IO_DATA + 0x26)
#define DIO07_00_DIR  (IO_DATA + 0x27)
#define DIO21_16_VAL  (IO_DATA + 0x28)
#define DIO15_08_VAL  (IO_DATA + 0x2A)
#define DIO07_00_VAL  (IO_DATA + 0x2B)
#define serial_rate_0 (IO_DATA + 0x2C)
#define SERIAL_PARM0  (IO_DATA + 0x2D)
#define serial_rate_1 (IO_DATA + 0x2E)
#define SERIAL_PARM1  (IO_DATA + 0x2F)
#define  ECHO           0x10
#define  PARITY_NONE    0x08
#define  PARITY_ODD 0x04
#define  STOP_BIT2      0x02
#define  XON_XOFF       0x01

enum SERIAL_PORT { SERIAL0, SERIAL1 };
enum SERIAL_SPD { _RATE_300, _RATE_600, _RATE_1200, _RATE_2400, _RATE_4800, _RATE_9600, _RATE_19200, _RATE_38400 };
U08 dio2bit[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };

/*** Private functions declared within this module ***/
static void cmd_ce_data_access (void);   // ']' CE data access.
static void cmd_mpu_data_access (void); // ')' MPU data access.
static void cmd_sfr (void);             // 'R' Special Function (R)egisters.
static void cmd_sfr_xdata (void);       // 'RI' IO data access.
static void cmd_serial (void);
static void cmd_width_parity (void);    // '8' Serial port width, parity, stop bit controls.
static void cmd_rate (void);
static void cmd_meter (void);
static void cmd_io (void);              // 'O' User I(O) controls.
static void cmd_io_pin (enum USER_PIN pin);     // 'OP' I(O) (P)in controls.

static Bbool done (U08 *c);
static Bbool cli (void);

/*performs fopen on fname with type.  If result is NULL, exits with error*/
FILE *fopenorelse (char *fname, char *type)
{
    FILE *fn;

    fn = fopen (fname, type);

    if (fn == NULL)
    {
       printf ("Could not open '%s'.\n", fname);
       exit(0);
    }

    return(fn);
}

void Error (char *filename, int err, int ln)
{
    if (ln) 
       fprintf (stderr, "\nERROR %d at line %d in %s\n", err, ln, filename);
    else
       fprintf (stderr, "\nUsage: io_merge old_demo.hex io.txt new_demo.hex\n");

    exit(1);
}

int main (int argc, char * argv[])
{
    unsigned int    AddrH, AddrL, RecTyp, Byte;
    unsigned int    Addr, AddrMax, i, ByteCnt, ln, LnCSRd;
    unsigned char   LnCSCal;

    FILE *in_api, *in_io;               // Input files.
    FILE *out_api;                      // Output file.
    char *versionstring="ver 2.0";
    char *in_api_name, *in_io_name, *out_api_name;
    char *cptr;

    if (argc != 4) Error ("Arguments", 1, 0);

    in_api_name    = argv[1];
    in_io_name     = argv[2];
    out_api_name   = argv[3];

    printf ("\n---io_merge %s%s---\n", versionstring, __DATE__);
    printf ("Beginning merge of DEMO w/ new IO data\n");

    cptr = &in_api_name[ strlen (in_api_name) - 4 ];

    if (strcmp (cptr, ".hex"))
    {  
       printf("Error: %s file must end with .hex suffix\n", in_api_name);
       exit(0);
    }

    cptr = &in_io_name[ strlen (in_io_name) - 4 ];

    if (strcmp (cptr, ".txt"))
    {  
       printf("Error: %s file must end with .txt suffix\n", in_io_name);
       exit(0);
    }

    cptr = &out_api_name[ strlen (out_api_name) - 4 ];

    if (strcmp (cptr, ".hex"))
    {  
       printf("Error: %s file must end with .hex suffix\n", out_api_name);
       exit(0);
    }

    in_api  = fopenorelse (in_api_name,  "r");
    in_io   = fopenorelse (in_io_name, "r");
    out_api = fopenorelse (out_api_name, "w");

    /* Initially fill Rom with FFs */
    for (i = 0; i < sizeof (Rom); i++)
       Rom[ i ] = 0xFF;

    /* Read the input LAPIE hex file */
    AddrMax = 0;
    ln = 1;
    do
    {
       i = fscanf (in_api, ":%2x%2x%2x%2x", &ByteCnt, &AddrH, &AddrL, &RecTyp);

       if (i != 4)
          Error (in_api_name, 1, ln);

       if (RecTyp > 1)
          Error (in_api_name, 2, ln);

       Addr = (AddrH << 8) + AddrL;
       LnCSCal = ByteCnt + AddrH + AddrL + RecTyp;

       for (i = 0; i < ByteCnt; i++)
       {
          if (fscanf (in_api, "%2x", &Byte) != 1)
             Error (in_api_name, 4, ln);

          if (Addr < sizeof (Rom))      /* Ignore higher addresses. */
             Rom[ Addr++ ] = Byte;

          LnCSCal += Byte;
       }
       
       if (Addr > AddrMax)
           AddrMax = (Addr - 1);

       if (fscanf (in_api, "%2x\n", &LnCSRd) != 1)
          Error (in_api_name, 5, ln);

       LnCSCal += LnCSRd;

       if (LnCSCal)
       {
         printf ("%2x %2x %2x %2x %2x %2x\n", ByteCnt, AddrH, AddrL, RecTyp, LnCSRd, LnCSCal);
         Error (in_api_name, 6, ln);
       }

       ln++;
    } while (RecTyp != 1);

    printf ("Read thru line# %d in file %s\n", ln - 1, in_api_name);

    /* Read the input IO data file */
    ln = 1;
    while (fgets (cli_buff, 120, in_io))
    {
       if (!cli ())
          Error (in_io_name, 5, ln);

       ln++;
    }

    printf ("Read thru line# %d in file %s\n", ln - 1, in_io_name);

    ln = 1;
    /* Output new hex file for whole Rom */
    for (Addr = 0; Addr <= AddrMax;)
    {
       fprintf (out_api, ":20%4.4X00", Addr);
       LnCSCal = 0x20 + (Addr >> 8) + (Addr & 0xFF);

       for (i = 0; i < 0x20; i++)
       {
          fprintf (out_api, "%2.2X", Rom[ Addr ]);
          LnCSCal += Rom[ Addr++ ];
       }

       LnCSCal = 0x100 - LnCSCal;
       fprintf (out_api, "%2.2X\n", LnCSCal);
       ln++;
    }
    fprintf (out_api, ":00000001FF\n");

    printf ("Wrote thru line# %d in file %s\n", ln, out_api_name);

    fclose (in_api);
    fclose (in_io);
    fclose (out_api);
    printf ("Completed merge of DEMO w/ new IO data\n");

    return (0);
}


// Exit control.
Bbool done (U08 *c)
{
    U08 d;

    *c = get_char_d (&d);
    if (*c == '\0')
       cli_index = d;                // Unget last character.

    return (*c == '\0' || *c == ';');
}

Bbool cli (void)                     // Command Line Interpreter.
{
    U08 c, *vPtr;

    cli_result = 0;               // Default result code is NULL.
    
    while (!cli_result && (!done (&c)) )
    {                                // Command processing.
       switch (toupper (c))
       {
          case '/':                  // Comment, ignore.
          case 'C':
             cli_result = OK_ID;                                  
             break;

          case ' ':                  // Update Serial port bit rate.
             cmd_rate ();             
             break;

          case '8':
             cmd_width_parity ();    // '8' Serial port width, parity, stop bit controls.
             break;

          case ']':                  // ']' CE Data Access.
             cmd_ce_data_access ();
             break;

          case ')':                  // ')' MPU Data Access.
             cmd_mpu_data_access ();
             break;

          case 'A':
             Rom[ TEMPERATURE ] = get_num ();
             break;

          case 'I':
             if (!done (&c))
             {
                 if ('=' == c)
                 {
                     vPtr = &Rom[ DEMO_VERSION ];

                     while (!done(&c))
                     {
                         if (isprint(c))
                             *vPtr++ = c;
                     }

                     *vPtr = '\0';
                 }
             }
             break;

           case 'M':                  // 'M' (M)eter controls.
             cmd_meter ();

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品欧美二区三区中文字幕| 欧美乱妇15p| 色综合久久综合网97色综合| 欧美日韩在线亚洲一区蜜芽| 欧美成人伊人久久综合网| 国产亚洲欧美日韩在线一区| 亚洲日本在线看| 日韩电影在线免费观看| 国产不卡一区视频| 在线观看亚洲精品视频| 亚洲精品一区在线观看| 综合精品久久久| 久久黄色级2电影| 色吧成人激情小说| 精品日韩一区二区| 亚洲视频一区二区在线| 美女视频黄免费的久久| 91在线你懂得| 日韩欧美一级二级三级久久久| 亚洲欧洲精品一区二区三区不卡| 日韩1区2区日韩1区2区| av高清久久久| 欧美变态tickle挠乳网站| 一区二区三区不卡视频| 国产美女精品在线| 欧美日韩一卡二卡三卡 | 国产精品免费久久久久| 亚洲大型综合色站| 国产suv精品一区二区883| 在线观看欧美日本| 久久精品一区二区三区不卡| 亚洲国产成人tv| 成人激情免费网站| 日韩女优电影在线观看| 亚洲一二三四区不卡| 国产99久久久国产精品免费看| 欧美久久高跟鞋激| 日韩毛片一二三区| 国产精品一品视频| 日韩一级片网址| 亚洲成人动漫在线免费观看| 成人av一区二区三区| 日韩精品资源二区在线| 婷婷开心激情综合| 色呦呦国产精品| 国产午夜精品美女毛片视频| 免费不卡在线观看| 在线播放一区二区三区| 亚洲女同一区二区| 亚洲欧美色综合| 大桥未久av一区二区三区中文| 精品人在线二区三区| 婷婷中文字幕综合| 精品无人区卡一卡二卡三乱码免费卡| 欧美三级午夜理伦三级中视频| 国产精品久久午夜| 国产成人亚洲综合a∨婷婷| 精品日韩99亚洲| 蜜臀av一区二区三区| 欧美日韩亚洲另类| 亚洲一区二区三区不卡国产欧美| av动漫一区二区| 国产欧美日韩在线| 国产福利91精品一区二区三区| 精品少妇一区二区三区日产乱码 | 欧美日韩国产综合一区二区三区| 欧美色大人视频| 亚洲在线观看免费| 色狠狠色狠狠综合| 亚洲一区二区三区三| 色乱码一区二区三区88 | 欧美在线视频全部完| 日韩毛片一二三区| 一本色道久久综合精品竹菊| 最新国产成人在线观看| 99久久精品久久久久久清纯| 综合久久国产九一剧情麻豆| 日韩中文字幕麻豆| 7777精品伊人久久久大香线蕉的 | 欧美精品日韩精品| 日韩二区三区四区| 99久久伊人网影院| 中文字幕综合网| 91福利国产精品| 亚洲国产一区二区三区青草影视| 欧美午夜宅男影院| 日本女人一区二区三区| 日韩一区二区三区电影在线观看 | 欧美一级日韩免费不卡| 蜜臀久久久久久久| 成人app网站| 亚洲女同女同女同女同女同69| 色哟哟亚洲精品| 日韩精品午夜视频| 久久中文字幕电影| 风间由美一区二区av101| 亚洲视频免费在线| 欧美理论片在线| 九九热在线视频观看这里只有精品| 久久久久久久av麻豆果冻| 不卡区在线中文字幕| 亚洲一区二区三区自拍| 懂色一区二区三区免费观看 | 色婷婷一区二区| 亚洲国产精品自拍| 精品免费国产一区二区三区四区| 国产精品亚洲第一区在线暖暖韩国| 欧美国产日韩精品免费观看| 欧美中文字幕一区| 狠狠色狠狠色综合| 亚洲人成7777| 日韩免费看网站| 成人aa视频在线观看| 久久久噜噜噜久噜久久综合| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲午夜在线视频| 久久久久国色av免费看影院| 91视频com| 秋霞电影网一区二区| 国产精品私人影院| 欧美日韩国产综合一区二区| 国产一区二区三区四区五区美女| 亚洲免费在线看| 精品国产不卡一区二区三区| 色婷婷综合在线| 韩国成人在线视频| 欧美成人伊人久久综合网| 日韩中文字幕1| 国产精品久久久久三级| 欧美一区午夜精品| 91捆绑美女网站| 精品一区二区三区在线播放| 亚洲日本在线观看| 久久综合色婷婷| 欧美探花视频资源| 成人免费看的视频| 精品亚洲免费视频| 亚洲国产成人av好男人在线观看| 国产女人18毛片水真多成人如厕 | 亚洲h在线观看| 国产精品全国免费观看高清| 777久久久精品| 色欧美88888久久久久久影院| 国产美女精品一区二区三区| 午夜精品一区二区三区电影天堂 | 色美美综合视频| 国产99久久久国产精品潘金| 日韩中文字幕av电影| 悠悠色在线精品| 国产精品乱人伦| 久久久午夜精品| 日韩精品一区二区三区四区| 欧美亚洲国产怡红院影院| 国产 欧美在线| 韩国一区二区三区| 蜜芽一区二区三区| 午夜精品久久一牛影视| 依依成人综合视频| 国产精品二三区| 中文字幕av一区二区三区| 欧美电视剧免费全集观看| 欧美日韩一本到| 91国产福利在线| 日本韩国欧美一区二区三区| 成人激情黄色小说| 国产成人亚洲综合色影视| 精品夜夜嗨av一区二区三区| 蜜桃一区二区三区在线| 天堂成人免费av电影一区| 欧美一级在线免费| 国产成人精品一区二| 国内外成人在线视频| 青椒成人免费视频| 蜜臀av性久久久久av蜜臀妖精 | 国产精品一区二区男女羞羞无遮挡 | 国产天堂亚洲国产碰碰| 精品国产免费一区二区三区四区| 4438成人网| 欧美高清精品3d| 欧美一级搡bbbb搡bbbb| 日韩三级中文字幕| 欧美sm美女调教| 精品少妇一区二区三区免费观看| www.日韩精品| 97精品国产露脸对白| 成人av在线影院| 99久久99久久精品免费看蜜桃| www.日韩大片| 91高清视频免费看| 欧美日韩视频第一区| 7777精品伊人久久久大香线蕉完整版| 69成人精品免费视频| 日韩一区二区免费电影| 欧美一二三区在线| 日韩视频在线观看一区二区| 日韩女同互慰一区二区| 久久久久久久久久久久久夜| 国产精品视频一二三| 日韩情涩欧美日韩视频| 久久久欧美精品sm网站|