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

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

?? ch375451.lst

?? USB接口芯片測試程序
?? LST
字號:
C51 COMPILER V7.06   CH375451                                                              02/21/2008 17:32:43 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CH375451
OBJECT MODULE PLACED IN CH375451.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CH375451.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*; CH375/CH372/CH451 EVT
   2          ; U2(AT89C51) Program
   3          ;
   4          ; Website:  http://winchiphead.com
   5          ; Email:    tech@winchiphead.com
   6          ; Author:   W.ch 2003.12
   7          ;
   8          ;****************************************************************************
   9          */
  10          
  11          /* MCS-51單片機C語言的示例程序 */
  12          
  13          #include <reg52.h>
  14          #include <string.h>
  15          #include "CH375INC.H"
  16          
  17          typedef struct  _COMMAND_PACKET {       /* 自定義的命令包結(jié)構(gòu) */
  18                  unsigned char   mCommandCode;           /* 命令請求碼,見下面的定義 */
  19                  unsigned char   mCommandCodeNot;        /* 命令碼的反碼,用于校驗命令包 */
  20                  union   {
  21                          unsigned char   mParameter[5];  /* 參數(shù) */
  22                          struct {
  23                                  unsigned char   mBufferID;  /* 緩沖區(qū)識別碼,本程序針對MCS51單片機定義: 1-專用功能寄存器SFR, 2-內(nèi)部RAM, 3-
             -外部RAM, 不過本程序?qū)嶋H只演示內(nèi)部RAM */
  24                                  unsigned int    mBufferAddr;    /* 讀寫操作的起始地址,尋址范圍是0000H-0FFFFH,低字節(jié)在前 */
  25                                  unsigned int    mLength;        /* 數(shù)據(jù)塊總長度,低字節(jié)在前 */
  26                          } buf;
  27                  } u;
  28          }       mCOMMAND_PACKET,        *mpCOMMAND_PACKET;
  29          
  30          #define         CONST_CMD_LEN           0x07    /* 命令塊的長度 */
  31          /* 由于命令與數(shù)據(jù)都是通過數(shù)據(jù)下傳管道(USB端點2的OUT)下傳, 為了防止兩者混淆,
  32           我們可以在計算機應用程序與單片機程序之間約定, 命令塊的長度總是7, 而數(shù)據(jù)塊的長度肯定不是7, 例如64,32等
  33           另外, 可以約定, 命令塊的首字節(jié)是命令碼, 等等
  34           本程序約定命令碼: 80H-0FFH是通用命令,適用于各種應用
  35                             00H-7FH是專用命令,針對各種應用特別定義 */
  36          /* 通用命令 */
  37          #define         DEF_CMD_GET_INFORM              0x90    /* 獲取下位機的說明信息,長度不超過64個字符,字符串以00H結(jié)束 */
  38          #define         DEF_CMD_TEST_DATA               0x91    /* 測試命令,下位機將PC機發(fā)來的命令包的所有數(shù)據(jù)取反后返回 */
  39          #define         DEF_CMD_CLEAR_UP                0xA0    /* 在上傳數(shù)據(jù)塊之前進行同步,實際是讓下位機清除上傳緩沖區(qū)的已有內(nèi)容 */
  40          #define         DEF_CMD_UP_DATA                 0xA1    /* 從下位機的指定地址的緩沖區(qū)中讀取數(shù)據(jù)塊(上傳數(shù)據(jù)塊) */
  41          #define         DEF_CMD_DOWN_DATA               0xA2    /* 向下位機的指定地址的緩沖區(qū)中寫入數(shù)據(jù)塊(下傳數(shù)據(jù)塊) */
  42          /* 專用命令 */
  43          #define         DEMO_CH451_CMD                  0x56    /* PC發(fā)送命令給CH451,用于演示CH451的功能 */
  44          /* 對于MCS51單片機在使用通用命令時,還需要指定緩沖區(qū)識別碼 */
  45          #define         ACCESS_MCS51_SFR                1               /* 讀寫51單片機的SFR */
  46          #define         ACCESS_MCS51_IRAM               2               /* 讀寫51單片機的內(nèi)部RAM */
  47          #define         ACCESS_MCS51_XRAM               3               /* 讀寫51單片機的外部RAM */
  48          
  49          unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1;                /* CH375命令端口的I/O地址 */
  50          unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0;                /* CH375數(shù)據(jù)端口的I/O地址 */
  51          
  52          /* 有關(guān)CH451的定義,演示板的連接方式 */
  53          sbit   CH451_dclk=P1^7;      /* 串行數(shù)據(jù)時鐘上升延激活 */
  54          sbit   CH451_din=P1^6;       /* 串行數(shù)據(jù)輸出,接CH451的數(shù)據(jù)輸入 */
C51 COMPILER V7.06   CH375451                                                              02/21/2008 17:32:43 PAGE 2   

  55          sbit   CH451_load=P1^5;      /* 串行命令加載,上升延激活 */
  56          sbit   CH451_dout=P3^3;      /* INT1,鍵盤中斷和鍵值數(shù)據(jù)輸入,接CH451的數(shù)據(jù)輸出 */
  57          unsigned char CH451_KEY;                                /* 存放鍵盤中斷中讀取的鍵值 */
  58          unsigned char LAST_KEY;                                 /* 保存上次的鍵值 */
  59          
  60          mCOMMAND_PACKET CMD_PKT;                                /* 命令包結(jié)構(gòu)緩沖區(qū) */
  61          unsigned char data *CurrentRamAddr;             /* 進行數(shù)據(jù)塊傳輸時保存被讀寫的緩沖區(qū)的起始地址 */
  62          unsigned char CurrentRamLen;                    /* 進行數(shù)據(jù)塊傳輸時保存剩余長度 */
  63          bit             FLAG_INT_WAIT;          /* 中斷等待標志,1指示有中斷數(shù)據(jù)正在CH375中等待發(fā)送 */
  64          unsigned char CH451_CMD_H;      /* PC機發(fā)給CH451的高4位命令,為0FFH則命令無效 */
  65          unsigned char CH451_CMD_L;  /* PC機發(fā)給CH451的低8位命令 */
  66          unsigned char code InformString[16] = "CH375/CH451\x0"; /* 信息字符串 */
  67          
  68          /* 延時2微秒,不精確 */
  69          void    Delay2us( )
  70          {
  71   1              unsigned char i;
  72   1      #define DELAY_START_VALUE       1  /* 根據(jù)單片機的時鐘選擇初值,20MHz以下為0,30MHz以上為2 */
  73   1              for ( i=DELAY_START_VALUE; i!=0; i-- );
  74   1      }
  75          
  76          /* 延時50毫秒,不精確 */
  77          void    Delay50ms( )
  78          {
  79   1              unsigned char i, j;
  80   1              for ( i=200; i!=0; i-- ) for ( j=250; j!=0; j-- );
  81   1      }
  82          
  83          /* 將PC機的低字節(jié)在前的16位字數(shù)據(jù)轉(zhuǎn)換為C51的高字節(jié)在前的數(shù)據(jù) */
  84          unsigned int    BIG_ENDIAN( unsigned int value )
  85          {
  86   1              unsigned int  in, out;
  87   1              in = value;
  88   1              ((unsigned char *)&out)[1] = ((unsigned char *)&in)[0];
  89   1              ((unsigned char *)&out)[0] = ((unsigned char *)&in)[1];
  90   1              return( out );
  91   1      }
  92          
  93          /* CH375初始化子程序 */
  94          void    CH375_Init( )
  95          {
  96   1              unsigned char i;
  97   1              FLAG_INT_WAIT = 0;  /* 清發(fā)送中斷等待標志 */
  98   1      /* 測試CH375是否正常工作,可選操作,通常不需要 */
  99   1      #ifdef TEST_CH375_FIRST
                      CH375_CMD_PORT = CMD_CHECK_EXIST;  /* 測試CH375是否正常工作 */
                      Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
                      CH375_DAT_PORT = 0x55;  /* 寫入測試數(shù)據(jù) */
                      Delay2us( );
                      i = ~ 0x55;  /* 返回數(shù)據(jù)應該是測試數(shù)據(jù)取反 */
                      if ( CH375_DAT_PORT != i ) {  /* CH375不正常 */
                              for ( i=80; i!=0; i-- ) {
                                      CH375_CMD_PORT = CMD_RESET_ALL;  /* 多次重復發(fā)命令,執(zhí)行硬件復位 */
                                      Delay2us( );
                              }
                              CH375_CMD_PORT = 0;
                              Delay50ms( );  /* 延時50ms */
                      }
              #endif
 114   1      #ifdef USE_MY_USB_ID
              /* 設(shè)置外部自定義的USB設(shè)備VID和PID,可選操作,不執(zhí)行該命令則使用默認的VID和PID */
                      CH375_CMD_PORT = CMD_SET_USB_ID;  /* 設(shè)置外部自定義的USB設(shè)備VID和PID,可選操作 */
C51 COMPILER V7.06   CH375451                                                              02/21/2008 17:32:43 PAGE 3   

                      Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
                      CH375_DAT_PORT = (unsigned char)MY_USB_VENDOR_ID;  /* 寫入廠商ID的低字節(jié) */
                      CH375_DAT_PORT = (unsigned char)(MY_USB_VENDOR_ID>>8);  /* 寫入廠商ID的高字節(jié) */
                      CH375_DAT_PORT = (unsigned char)MY_USB_DEVICE_ID;  /* 寫入設(shè)備ID的低字節(jié) */
                      CH375_DAT_PORT = (unsigned char)(MY_USB_DEVICE_ID>>8);  /* 寫入設(shè)備ID的高字節(jié) */
                      Delay2us( );
              #endif
 124   1      /* 設(shè)置USB工作模式, 必要操作 */
 125   1              CH375_CMD_PORT = CMD_SET_USB_MODE;
 126   1              Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
 127   1              CH375_DAT_PORT = 2;  /* 設(shè)置為使用內(nèi)置固件的USB設(shè)備方式 */
 128   1              for ( i=100; i!=0; i-- ) {  /* 等待操作成功,通常需要等待10uS-20uS */
 129   2                      if ( CH375_DAT_PORT==CMD_RET_SUCCESS ) break;
 130   2              }
 131   1      /*      if ( i==0 ) { CH372/CH375存在硬件錯誤 }; */
 132   1      /* 下述啟用中斷,假定CH375連接在INT0 */
 133   1              IT0 = 0;  /* 置外部信號為低電平觸發(fā) */
 134   1              IE0 = 0;  /* 清中斷標志 */
 135   1              EX0 = 1;  /* 允許CH375中斷 */
 136   1      }
 137          
 138          /* 加載上傳數(shù)據(jù) */
 139          void    LoadUpData( unsigned char data *Buf, unsigned char Len )
 140          {
 141   1              unsigned char i;
 142   1              CH375_CMD_PORT = CMD_WR_USB_DATA7;  /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
 143   1              Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
 144   1              CH375_DAT_PORT = Len;  /* 首先寫入后續(xù)數(shù)據(jù)長度 */
 145   1              for ( i=0; i<Len; i++ ) CH375_DAT_PORT = Buf[i];  /* 加載數(shù)據(jù) */
 146   1      }
 147          
 148          /* CH375中斷服務程序INT0,使用寄存器組1 */
 149          void    mCH375Interrupt( ) interrupt 0 using 1
 150          {
 151   1              unsigned char InterruptStatus;
 152   1              unsigned char length, c1, len1, len2, i;
 153   1      #define         cmd_buf         ((unsigned char data *)(&CMD_PKT))
 154   1              CH375_CMD_PORT = CMD_GET_STATUS;  /* 獲取中斷狀態(tài)并取消中斷請求 */
 155   1              Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
 156   1              InterruptStatus = CH375_DAT_PORT;  /* 獲取中斷狀態(tài) */
 157   1              IE0 = 0;  /* 清中斷標志,對應于INT0中斷 */
 158   1              if ( InterruptStatus == USB_INT_EP2_OUT ) {  /* 批量端點下傳成功 */
 159   2                      CH375_CMD_PORT = CMD_RD_USB_DATA;  /* 從當前USB中斷的端點緩沖區(qū)讀取數(shù)據(jù)塊,并釋放緩沖區(qū) */
 160   2                      Delay2us( );  /* 如果時鐘頻率低于16MHz則無需該指令延時 */
 161   2                      length = CH375_DAT_PORT;  /* 首先讀取后續(xù)數(shù)據(jù)長度 */
 162   2                      if ( length == CONST_CMD_LEN ) {  /* 命令塊長度總是CONST_CMD_LEN,分析并處理命令 */
 163   3      /* 分析通過USB接收到的命令塊,長度總是CONST_CMD_LEN,首字節(jié)為命令,其余為可選的參數(shù),這種命令結(jié)構(gòu)是由單片機和

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本人妖一区二区| 蜜桃视频一区二区三区在线观看| 欧美色图第一页| 精品一区二区三区视频| 亚洲欧美日韩成人高清在线一区| 日韩欧美一区二区在线视频| 国产一二精品视频| 午夜欧美电影在线观看| 国产精品久久久久久户外露出| 欧美美女一区二区| 91在线视频免费91| 国产伦精品一区二区三区免费| 亚洲mv大片欧洲mv大片精品| 最新成人av在线| 久久只精品国产| 欧美一区二区三级| 色婷婷综合久久久久中文一区二区 | 亚洲不卡在线观看| 国产精品美女久久久久久| 欧美成人乱码一区二区三区| 欧美性一级生活| 91麻豆123| 成人99免费视频| 国产一区二区三区四区五区入口| 人人爽香蕉精品| 一区二区免费在线| 日韩码欧中文字| 中国av一区二区三区| 精品国产污污免费网站入口| 日韩欧美国产一区二区三区| 欧美日韩精品福利| 欧美色涩在线第一页| 在线免费av一区| 色八戒一区二区三区| 91蜜桃免费观看视频| av毛片久久久久**hd| 高清不卡一二三区| 成人高清视频在线观看| 国产精品99久久久久久似苏梦涵 | 国产91丝袜在线18| 精品亚洲aⅴ乱码一区二区三区| 日韩在线a电影| 日本午夜一区二区| 欧美aaa在线| 免费高清成人在线| 成人小视频在线| 粉嫩aⅴ一区二区三区四区| 成人精品亚洲人成在线| 成人黄色国产精品网站大全在线免费观看 | 日韩一区二区三区视频在线 | 亚洲人成电影网站色mp4| 国产精品不卡视频| 成人免费在线视频| 一区二区三区四区在线免费观看 | 欧美tk—视频vk| 欧美精品一区在线观看| 久久久国产一区二区三区四区小说| 国产欧美日韩激情| 中文字幕亚洲不卡| 亚洲国产日韩在线一区模特| 日本欧美久久久久免费播放网| 久久99久久久久| 成人黄色在线网站| 91久久精品一区二区三| 欧美一区二区三区色| 精品国产区一区| 亚洲欧美色图小说| 午夜电影一区二区| 国产成人在线视频网址| 91久久精品日日躁夜夜躁欧美| 91精品国产色综合久久不卡蜜臀| 日韩精品一区二| 国产精品国模大尺度视频| 亚洲高清视频的网址| 国产精品18久久久久久vr| 91社区在线播放| 欧美一区二区大片| 中文字幕中文字幕中文字幕亚洲无线| 亚洲日本韩国一区| 六月婷婷色综合| 91香蕉视频在线| 日韩精品在线网站| 一级特黄大欧美久久久| 久久99国产精品成人| av一区二区三区黑人| 91精品国产91久久综合桃花| 日本一区二区三区高清不卡| 亚洲成av人片在线观看无码| 国产美女精品一区二区三区| 在线观看一区日韩| 欧美国产一区在线| 日韩高清在线一区| 色综合久久天天| 久久精品欧美日韩| 一二三四区精品视频| 国产99久久久精品| 日韩欧美一区二区在线视频| 一区二区三区在线观看国产| 国产不卡免费视频| 91精品午夜视频| 一区二区欧美国产| 成人av网址在线观看| 精品国精品国产| 午夜精品福利视频网站| 波波电影院一区二区三区| 欧美r级电影在线观看| 亚洲高清免费观看| 91啪九色porn原创视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲 | 成人免费毛片aaaaa**| 日韩三级在线免费观看| 天天av天天翘天天综合网| jizz一区二区| 国产亚洲福利社区一区| 久久99精品一区二区三区三区| 欧美日韩在线电影| 亚洲另类春色校园小说| 成人福利视频在线| 国产精品免费av| 国产成人午夜片在线观看高清观看| 欧美一区二区视频在线观看2022| 亚洲一卡二卡三卡四卡五卡| 一本在线高清不卡dvd| 一区在线中文字幕| av一二三不卡影片| 亚洲国产成人在线| 丁香激情综合五月| 国产午夜精品在线观看| 国产一区二区h| 精品久久人人做人人爱| 久久91精品久久久久久秒播| 欧美一级一区二区| 久久综合综合久久综合| 日韩一卡二卡三卡四卡| 久久91精品国产91久久小草| 日韩美女在线视频 | 美女脱光内衣内裤视频久久网站| 3d动漫精品啪啪1区2区免费| 亚洲高清久久久| 337p亚洲精品色噜噜| 人人爽香蕉精品| 精品国产乱码久久久久久图片 | 成人激情小说网站| 中文字幕在线播放不卡一区| 91伊人久久大香线蕉| 亚洲免费在线观看| 欧美巨大另类极品videosbest| 免费成人美女在线观看| 久久女同精品一区二区| 成人av在线资源| 亚洲精品ww久久久久久p站| 欧美日韩一区二区在线观看视频| 日韩精品一二三四| 精品国产一区二区三区久久久蜜月| 激情图片小说一区| 中文子幕无线码一区tr| 一本色道久久综合亚洲aⅴ蜜桃 | 一区二区三区自拍| 欧美日韩亚洲综合一区| 青青草原综合久久大伊人精品优势| 日韩你懂的在线播放| 国产成人精品免费视频网站| ...xxx性欧美| 6080日韩午夜伦伦午夜伦| 国产精品中文字幕欧美| 亚洲欧美日韩久久| 日韩一区二区三区免费看| 国产**成人网毛片九色| 一区二区三区在线高清| 精品国产乱码久久久久久影片| 99精品国产91久久久久久| 午夜激情综合网| 国产日韩精品一区二区三区 | 国产精品狼人久久影院观看方式| 国产目拍亚洲精品99久久精品| 99re成人在线| 捆绑调教一区二区三区| 中文字幕免费一区| 欧美精品v国产精品v日韩精品| 国产成人综合亚洲网站| 亚洲一区二区免费视频| 久久久久久久电影| 欧美日韩精品一区二区天天拍小说| 国产一区二区三区日韩 | 亚洲精品ww久久久久久p站| 日韩三级视频在线看| av不卡在线观看| 蜜臀va亚洲va欧美va天堂| 国产精品国产三级国产普通话蜜臀| 666欧美在线视频| 色婷婷一区二区三区四区| 韩国女主播一区二区三区| 亚洲一区二区三区影院| 久久精品人人做人人爽97 | 成人免费一区二区三区视频| 日韩免费看的电影| 欧美视频自拍偷拍| 91在线丨porny丨国产| 国产精品一区二区在线观看不卡 | 亚洲第一福利视频在线|