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

📄 isr.lst

📁 USB(即Universal Serial Bus)是一种通用串行总线。随着技术水平的提高
💻 LST
字号:
C51 COMPILER V7.06   ISR                                                                   12/25/2004 08:44:16 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 DEBUG OBJECTEXTEND

stmt level    source

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

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

 118   1      }
 119          
 120          //端点1输入中断操作
 121          void ep2_rxdone(void)
 122          {
 123   1              unsigned char len;
 124   1              D12_ReadLastTransactionStatus(4);//复位中断寄存器
 125   1              len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
 126   1              if (len != 0)
 127   1                      bEPPflags.bits.ep2_rxdone = 1;//标志端点1接收到数据
 128   1      }
 129          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    166    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25       4
   IDATA SIZE       =     74    ----
   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 + -