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

📄 isr.lst

📁 MCU 通过i2c 总线读写eeprom, i2c 读写程序是软件仿真方式来实现
💻 LST
字号:
C51 COMPILER V7.50   ISR                                                                   06/01/2006 10:40:36 PAGE 1   


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

line level    source

   1          /*
   2             //*************************************************************************
   3             //
   4             //                     ZLGMCU
   5             //       www.zlgmcu.com
   6             // File Name:  isr.C
   7             // Revision:   0.4(2002-07-08)
   8             // Author:   Liu Ying Bin
   9             // Use library:  USB51S.LIB
  10             // Note:     USB51S.LIB has not DMA function
  11             //*************************************************************************
  12             */
  13          
  14          
  15          #include <stdio.h>
  16          #include <string.h>
  17          #include <reg51.h>    
  18          #include "isr.h"
  19          
  20          /*
  21          //*************************************************************************
  22          //  Public static data
  23          //*************************************************************************
  24          */
  25          
  26          EPPFLAGS bEPPflags;
  27          CONTROL_XFER ControlData;
  28          unsigned int data d12_addr;
  29          byte_count byte_cnt;
  30          unsigned int data D12_DATA;
  31          unsigned int data D12_COMMAND;
  32          
  33          
  34          /* ISR static vars */
  35          unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  36          unsigned char idata EpBuf[EP2_PACKET_SIZE];
  37          IO_REQUEST idata ioRequest;
  38          
  39          //vendor request input address
  40          code void (*VendorDeviceRequest[])(void) =
  41          {
  42            reserved,
  43            reserved,
  44            reserved,
  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.50   ISR                                                                   06/01/2006 10:40:36 PAGE 2   

  56            reserved,
  57            reserved
  58          };
  59          
  60          //USB bus reconnect(first disconnect then connect)
  61          void reconnect_USB(void)
  62          {
  63   1        unsigned long clk_cnt;
  64   1      
  65   1        D12SUSPD = 0;
  66   1        disconnect_USB();
  67   1        for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++) {}
  68   1        connect_USB();
  69   1      }
  70          
  71          //disconnect usb bus 
  72          void disconnect_USB(void)
  73          {
  74   1        D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
  75   1      }
  76          
  77          //connect usb bus
  78          void connect_USB(void)
  79          {
  80   1        DISABLE;
  81   1        bEPPflags.value = 0;
  82   1        ENABLE;
  83   1        D12_SetDMA(0x0);//set D12 work mode
  84   1        D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
  85   1      }
  86          
  87          //bus reset server sub-program
  88          void D12_busreset(void)
  89          {
  90   1      //add program (check the bus reset operate)
  91   1      }
  92          
  93          //DMA operate end, interrupt server sub-system
  94          void dma_eot(void)
  95          {
  96   1      //add program (check the bus reset operate)
  97   1      }
  98          
  99          //D12 to hang up server sub-program
 100          void d12_suspend(void)
 101          {
 102   1      //add program
 103   1      }
 104          
 105          //endpoint1 output interrupt operate
 106          void ep1_txdone(void)
 107          {
 108   1        D12_ReadLastTransactionStatus(3);//reset interrupt register
 109   1        //add program 
 110   1      }
 111          
 112          //endpoint1 input interrupt operate
 113          void ep1_rxdone(void)
 114          {
 115   1        unsigned char len;
 116   1        D12_ReadLastTransactionStatus(2);//reset interrupt register
 117   1        len = D12_ReadEndpoint(2, sizeof(GenEpBuf), GenEpBuf);//read endpoint1 receive data
C51 COMPILER V7.50   ISR                                                                   06/01/2006 10:40:36 PAGE 3   

 118   1        if (len != 0)
 119   1          bEPPflags.bits.ep1_rxdone = 1;//flag endpoint1 receive data
 120   1      }
 121          
 122          //endpoint2 output interrupt operate
 123          void ep2_txdone(void)
 124          {
 125   1        D12_ReadLastTransactionStatus(5);//reset interrupt register
 126   1        //add program(check endpoint5 IN token-ring operate)
 127   1        if(byte_cnt.word>0)
 128   1        {
 129   2          if(byte_cnt.word<64)
 130   2          {
 131   3            D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
 132   3            byte_cnt.word=0;
 133   3          }
 134   2          else
 135   2          {
 136   3            byte_cnt.word=byte_cnt.word-64;
 137   3            D12_WriteEndpoint(5, 64, EpBuf);
 138   3          }
 139   2        }
 140   1      }
 141          
 142          //endpoint2 input interrupt operate
 143          void ep2_rxdone(void)
 144          {
 145   1        unsigned char len;
 146   1        D12_ReadLastTransactionStatus(4);//reset int
 147   1        len = D12_ReadEndpoint(4, 64, EpBuf);//read endpoint2 receive data
 148   1        if (bEPPflags.bits.ep2buf_full)
 149   1          len = D12_ReadEndpoint(4, 64, EpBuf);//read endpoint2 receive data
 150   1        if (len != 0)
 151   1          bEPPflags.bits.ep2_rxdone = 1;//flag endpoint2 receive data
 152   1      }
 153          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    281    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       6
   IDATA SIZE       =     78    ----
   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 + -