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

📄 isr.lst

📁 D12的驱动程序
💻 LST
字号:
C51 COMPILER V7.08   ISR                                                                   03/11/2005 10:39:59 PAGE 1   


C51 COMPILER V7.08, 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

line level    source

   1          /*
   2             //*************************************************************************
   3             //
   4             //                           ZLGMCU
   5             //                           www.zlgmcu.com
   6             // File Name:        ISR.C
   7             // Revision:         V0.2(2002-04-08)
   8             // Use library:      USB51S.LIB
   9             // Note:             USB51S.LIB不带DMA控制功能
  10             //*************************************************************************
  11             */
  12          
  13          #include <stdio.h>
  14          #include <string.h>
  15          #include <reg51.h>                /* special function register declarations   */
  16          #include "isr.h"
  17          #include "mainloop.h"
  18          #include "protozlg.h"
  19          #include "absacc.h"
  20          #include "D12ci.h"
  21          
  22          #define UINT unsigned int
  23          #define UCHAR unsigned char
  24          
  25          #define DAADDR XBYTE[0x7fff]
  26          UCHAR  xdata *ad_addr;
  27          UCHAR  xdata *da_addr;
  28          /*
  29          //*************************************************************************
  30          //  Public static data
  31          //*************************************************************************
  32          */
  33          
  34          EPPFLAGS bEPPflags;
  35          CONTROL_XFER ControlData;
  36          
  37          /* ISR static vars */
  38          unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  39          unsigned char idata EpBuf[EP2_PACKET_SIZE];
  40          IO_REQUEST idata ioRequest;
  41          
  42          //厂商请求入口地址
  43          code void (*VendorDeviceRequest[])(void) =
  44          {
  45                  reserved,
  46                  reserved,
  47                  reserved,
  48                  reserved,
  49                  reserved,
  50                  reserved,
  51                  reserved,
  52                  reserved,
  53                  reserved,
  54                  reserved,
  55                  reserved,
C51 COMPILER V7.08   ISR                                                                   03/11/2005 10:39:59 PAGE 2   

  56                  reserved,
  57                  read_write_register,
  58                  reserved,
  59                  reserved,
  60                  reserved
  61          };
  62          
  63          //USB总线重新连接(先断开,再连接)子程序
  64          void reconnect_USB(void)
  65          {
  66   1              unsigned long clk_cnt;
  67   1              //MCU_LED0 = 0;//亮LED显示(实际应用中可去掉)
  68   1      //      MCU_LED1 = 0;//(实际应用中可去掉)
  69   1      
  70   1              D12SUSPD = 0;
  71   1              disconnect_USB();
  72   1              
  73   1          
  74   1              for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++){}
  75   1          
  76   1              connect_USB();
  77   1          
  78   1      //      MCU_LED0 = 1;//灭LED显示(实际应用中可去掉)
  79   1      //      MCU_LED1 = 1;//(实际应用中可去掉)
  80   1      //for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++){}
  81   1      }
  82          
  83          //断开USB总线连接
  84          void disconnect_USB(void)
  85          {
  86   1              D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
  87   1      }
  88          
  89          //连接到USB总线
  90          void connect_USB(void)
  91          {
  92   1              DISABLE;
  93   1              bEPPflags.value = 0;
  94   1              ENABLE;
  95   1              D12_SetDMA(0x0);//设置D12工作模式
  96   1              D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
  97   1      //      report interupt add by zjl
  98   1      //      D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT |0x08, D12_SETTOONE | D12_CLOCK_12M); 
  99   1      //      set iso-io mode by zjl
 100   1      //      D12_SetMode(0x92, D12_SETTOONE | D12_CLOCK_12M); 
 101   1      }
 102          
 103          
 104          //总线复位中断服务子程序
 105          void bus_reset(void)
 106          { /*
 107   1         int a;
 108   1         for(a=0;a<=20000;a++)  ;
 109   1              MCU_LED0 = 0;//灭LED显示(实际应用中可去掉)
 110   1              MCU_LED1 = 0;
 111   1               for(a=0;a<=20000;a++)  ;
 112   1      MCU_LED0 = 1;//灭LED显示(实际应用中可去掉)
 113   1              MCU_LED1 = 1;           //dtftrtsu857d88rrydgfgggggggggggggggggggggggg
 114   1              
 115   1      */
 116   1      //可添加用户代码(进行检测到总线复位的操作)
 117   1      }
C51 COMPILER V7.08   ISR                                                                   03/11/2005 10:39:59 PAGE 3   

 118          
 119          //DMA操作结束中断服务子程序
 120          void dma_eot(void)
 121          {
 122   1      //可添加用户代码(进行检测DMA操作结束的操作)
 123   1      }
 124          
 125          //端点1输出中断操作
 126          void ep1_txdone(void)
 127          {
 128   1              D12_ReadLastTransactionStatus(3);//复位中断寄存器
 129   1              //可添加用户代码(进行检测端点号3IN令牌的操作)
 130   1      
 131   1      /*      ad_addr=&IN0;
 132   1              *ad_addr=0;     //启动转换*/
 133   1      
 134   1      }
 135          
 136          //端点1输入中断操作
 137          void ep1_rxdone(void)
 138          {
 139   1              unsigned char len;
 140   1      //      unsigned char temp;
 141   1              D12_ReadLastTransactionStatus(2);//复位中断寄存器
 142   1              len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//读取端点1接收数据
 143   1              da_addr=&DAADDR;
 144   1              *da_addr=GenEpBuf[3]; //这句话进行D/A转换
 145   1      
 146   1      //      GenEpBuf[3]&=0xbf;
 147   1      //      P1=0xb0|GenEpBuf[3];
 148   1              //P1=!GenEpBuf[3];      //modified by zoujl
 149   1              if (len != 0)
 150   1                      bEPPflags.bits.ep1_rxdone = 1;//标志端点1接收到数据
 151   1      }
 152          /*
 153          //端点2输出中断操作
 154          void ep2_txdone(void)
 155          {
 156          //      unsigned char Ep5_st;
 157          //      D12_ReadLastTransactionStatus(5);//复位中断寄存器
 158                  D12_COMMAND = 0x45;             //clear last treat status
 159          //      D12_WriteEndpoint(5, 64, EpBuf);
 160                  D12_COMMAND = 0x05;
 161                  D12_COMMAND = 0xFA;             //enable buffer sothat command in will be respond
 162                  //可添加用户代码(进行检测端点号5IN令牌的操作)
 163          }
 164          */
 165          //端点2输入中断操作
 166          void ep2_rxdone(void)
 167          {
 168   1              unsigned char len;
 169   1              D12_ReadLastTransactionStatus(4);//复位中断寄存器
 170   1              len = D12_ReadEndpoint(4, 64, EpBuf);//读取端点2接收数据
 171   1              //if (len != 0);
 172   1              //      bEPPflags.bits.ep2_rxdone = 1;//标志端点1接收到数据
 173   1      }
 174          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    189    ----
   CONSTANT SIZE    =     48    ----
C51 COMPILER V7.08   ISR                                                                   03/11/2005 10:39:59 PAGE 4   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     29       6
   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 + -