⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isr.lst

📁 用keil c和vb开发的单片机通用usb键盘
💻 LST
字号:
C51 COMPILER V7.06   ISR                                                                   11/03/2006 10:24:17 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN Isr.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Isr.c OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          
   3          #include <stdio.h>
   4          #include <string.h>
   5          #include <reg51.h>                /* special function register declarations   */
   6          #include "isr.h"
   7          #include "mainloop.h"
   8          #include "protozlg.h"
   9          
  10          /*
  11          //*************************************************************************
  12          //  Public static data
  13          //*************************************************************************
  14          */
  15          
  16          EPPFLAGS bEPPflags;
  17          CONTROL_XFER ControlData;
  18          unsigned int data d12_addr;
  19          extern byte_count byte_cnt;
  20          unsigned int data D12_DATA;
  21          unsigned int data D12_COMMAND;
  22          
  23          
  24          /* ISR static vars */
  25          unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  26          unsigned char idata EpBuf[EP2_PACKET_SIZE];
  27          IO_REQUEST idata ioRequest;
  28          
  29          //厂商请求入口地址
  30          code void (*VendorDeviceRequest[])(void) =
  31          {
  32                  reserved,
  33                  reserved,
  34                  reserved,
  35                  reserved,
  36                  reserved,
  37                  reserved,
  38                  reserved,
  39                  reserved,
  40                  reserved,
  41                  reserved,
  42                  reserved,
  43                  reserved,
  44                  read_write_register,
  45                  reserved,
  46                  reserved,
  47                  reserved
  48          };
  49          
  50          //USB总线重新连接(先断开,再连接)子程序
  51          void reconnect_USB(void)
  52          {
  53   1              unsigned long clk_cnt;
  54   1              
  55   1      
C51 COMPILER V7.06   ISR                                                                   11/03/2006 10:24:17 PAGE 2   

  56   1              D12SUSPD = 0;
  57   1              disconnect_USB();
  58   1              for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++) {}
  59   1              connect_USB();
  60   1      
  61   1      
  62   1      }
  63          
  64          //断开USB总线连接
  65          void disconnect_USB(void)
  66          {
  67   1              D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
  68   1      }
  69          
  70          //连接到USB总线
  71          void connect_USB(void)
  72          {
  73   1              DISABLE;
  74   1              bEPPflags.value = 0;
  75   1              ENABLE;
  76   1              D12_SetDMA(0x0);//设置D12工作模式
  77   1              D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
  78   1      }
  79          
  80          //总线复位服务子程序
  81          void D12_busreset(void)
  82          {
  83   1      //可添加用户代码(进行检测到总线复位的操作)
  84   1      }
  85          
  86          //DMA操作结束中断服务子程序
  87          void dma_eot(void)
  88          {
  89   1      //可添加用户代码(进行检测DMA操作结束的操作)
  90   1      }
  91          
  92          //D12挂起服务子程序
  93          void d12_suspend(void)
  94          {
  95   1      //可添加用户代码
  96   1      }
  97          
  98          //端点1输出中断操作
  99          void ep1_txdone(void)
 100          {
 101   1              D12_ReadLastTransactionStatus(3);//复位中断寄存器
 102   1              //可添加用户代码(进行检测端点号3IN令牌的操作)
 103   1      }
 104          
 105          //端点1输入中断操作
 106          void ep1_rxdone(void)
 107          {
 108   1              unsigned char len;
 109   1              D12_ReadLastTransactionStatus(2);//复位中断寄存器
 110   1              len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//读取端点1接收数据
 111   1              if (len != 0)
 112   1                      bEPPflags.bits.ep1_rxdone = 1;//标志端点1接收到数据
 113   1      }
 114          
 115          //端点2输出中断操作
 116          void ep2_txdone(void)
 117          {
C51 COMPILER V7.06   ISR                                                                   11/03/2006 10:24:17 PAGE 3   

 118   1              D12_ReadLastTransactionStatus(5);//复位中断寄存器
 119   1              //可添加用户代码(进行检测端点号5IN令牌的操作)
 120   1              if(byte_cnt.word>0)
 121   1              {
 122   2                      if(byte_cnt.word<64)
 123   2                      {
 124   3                              D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
 125   3                              byte_cnt.word=0;
 126   3                      }
 127   2                      else
 128   2                      {
 129   3                              byte_cnt.word=byte_cnt.word-64;
 130   3                              D12_WriteEndpoint(5, 64, EpBuf);
 131   3                      }
 132   2              }
 133   1      }
 134          
 135          //端点2输入中断操作
 136          void ep2_rxdone(void)
 137          {
 138   1              unsigned char len;
 139   1              D12_ReadLastTransactionStatus(4);//复位中断寄存器
 140   1              len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
 141   1              if (bEPPflags.bits.ep2buf_full)
 142   1                      len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
 143   1              if (len != 0)
 144   1                      bEPPflags.bits.ep2_rxdone = 1;//标志端点2接收到数据
 145   1      }
 146          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    281    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     31       6
   IDATA SIZE       =     86    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -