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

📄 isr.lst

📁 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   ISR                                                                   08/18/2005 15:30:29 PAGE 1   


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

stmt level    source

   1          
   2          #include <stdio.h>
   3          #include <string.h>
   4          #include <unistd.h>
*** WARNING C318 IN LINE 4 OF ISR.C: can't open file 'unistd.h'
   5          #include "BasicTyp.h"
   6          #include "common.h"
   7          #include "USB.h"
   8          #include "HAL4D13.h"
   9          #include "isr.h"
  10          #include "iso.h"
  11          #include "mainloop.h"
  12          #include "usb_irq.h"
  13          
  14          
  15          // ************************************************************************
  16          //  Public static data
  17          // ************************************************************************
  18          
  19          extern D13FLAGS bD13flags;
  20          extern USBCHECK_DEVICE_STATES bUSBCheck_Device_State;
  21          extern CONTROL_XFER ControlData;
  22          
  23          //extern unsigned short ioSize, ioCount;
  24          
  25          
  26          // ************************************************************************
  27          //  ISR Subroutine
  28          // ************************************************************************
  29          void usb_isr(void)
  30          {
  31   1              //disable();
  32   1        IOWR(PIO_0_BASE, 2, 0);//DIS INT1
*** ERROR C202 IN LINE 32 OF ISR.C: 'PIO_0_BASE': undefined identifier
  33   1        IOWR(PIO_0_BASE, 3, 0);//CLAER
*** ERROR C202 IN LINE 33 OF ISR.C: 'PIO_0_BASE': undefined identifier
  34   1        printf("interrupt \n");
  35   1              Hal4D13_LockDevice(0);
  36   1              fn_usb_isr();
  37   1      
  38   1        
  39   1        IOWR(PIO_0_BASE, 2, 2);//EN INT1
*** ERROR C202 IN LINE 39 OF ISR.C: 'PIO_0_BASE': undefined identifier
  40   1      //  enable();
  41   1      }
  42          
  43          void fn_usb_isr(void)
  44          {
  45   1              ULONG   i_st;
  46   1      
  47   1              bD13flags.bits.At_IRQL1 = 1;
  48   1      
  49   1              i_st = Hal4D13_ReadInterruptRegister();
  50   1      
  51   1              if(i_st != 0) 
C51 COMPILER V7.06   ISR                                                                   08/18/2005 15:30:29 PAGE 2   

  52   1              {
  53   2                      if(i_st & D13REG_INTSRC_BUSRESET)
  54   2                              Isr_BusReset();
  55   2                      else if(i_st & D13REG_INTSRC_SUSPEND)
  56   2                              Isr_SuspendChange();
  57   2                      else if(i_st & D13REG_INTSRC_EOT)
  58   2                              Isr_DmaEot();
  59   2                      else if(i_st & (D13REG_INTSRC_SOF|D13REG_INTSRC_PSEUDO_SOF))
  60   2                              Isr_SOF();
  61   2                      else if(i_st & D13REG_INTSRC_SHORT_PACKET)
  62   2                              Isr_SHORT_PACKET();
  63   2                      else if(i_st & D13REG_INTSRC_RESUME)
  64   2                      {
  65   3                              printf("RESUME\n");
  66   3                              Hal4D13_LockDevice(0);
  67   3                      }
  68   2      
  69   2                      else 
  70   2                      {
  71   3                              if(i_st & D13REG_INTSRC_EP0OUT)  
  72   3                                      Isr_Ep00RxDone();
  73   3                              if(i_st & D13REG_INTSRC_EP0IN)
  74   3                                      Isr_Ep00TxDone();
  75   3                              if(i_st & D13REG_INTSRC_EP03)
  76   3                                      Isr_Ep03Done();
  77   3                              if(i_st & D13REG_INTSRC_EP04)
  78   3                                      Isr_Ep04Done();
  79   3                              if(i_st & D13REG_INTSRC_EP05)
  80   3                                      Isr_Ep05Done();
  81   3                              if(i_st & D13REG_INTSRC_EP06)
  82   3                                      Isr_Ep06Done();
  83   3                      }
  84   2              }
  85   1      
  86   1              bD13flags.bits.At_IRQL1 = 0;
  87   1      }
  88          
  89          void Isr_BusReset(void)
  90          {
  91   1              printf("BUS RESET\n");
  92   1              bD13flags.bits.DCP_state = 0x00;
  93   1              bD13flags.bits.dma_disable=0x00;
  94   1      
  95   1              bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 1;
  96   1              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
  97   1              bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 0;
  98   1              config_endpoint();
  99   1      }
 100          
 101          void Isr_SuspendChange(void)
 102          {
 103   1              bD13flags.bits.suspend=1;
 104   1      }
 105          
 106          void Isr_SHORT_PACKET(void)
 107          {
 108   1              printf("SHORT PACKET INTERRUPT\n");
 109   1      }
 110          
 111          void Isr_DmaEot(void)
 112          {
 113   1              bD13flags.bits.dma_disable =0;
C51 COMPILER V7.06   ISR                                                                   08/18/2005 15:30:29 PAGE 3   

 114   1      
 115   1              if(bD13flags.bits.dma_state == DMA_PENDING)
 116   1                      bD13flags.bits.setup_dma = 1;
 117   1              else
 118   1                      bD13flags.bits.dma_state = DMA_IDLE;
 119   1              printf("EOT reached!!!\n");
 120   1              if(bD13flags.bits.verbose==1)
 121   1                      printf("dma_counter = %x\n", Hal4D13_GetDMACounter());
 122   1              printf("\n");           
 123   1      }
 124          
 125          
 126          void Isr_SOF(void)
 127          {
 128   1      
 129   1      }
 130          
 131          void Isr_Ep00RxDone(void)
 132          {
 133   1              UCHAR       ep_last, i;
 134   1      
 135   1              ep_last = Hal4D13_GetEndpointStatusWInteruptClear(EPINDEX4EP0_CONTROL_OUT); /* Clear interrupt flag */
 136   1      
 137   1              if (ep_last & D13REG_EPSTS_SETUP)
 138   1              {
 139   2                      if(bD13flags.bits.DCP_state == USBFSM4DCP_REQUESTPROC)
 140   2                      {
 141   3                              ControlData.Abort = 1;
 142   3                              bD13flags.bits.DCP_state = USBFSM4DCP_SETUPPROC;
 143   3                      }
 144   2                      else
 145   2                              bD13flags.bits.DCP_state = USBFSM4DCP_SETUPPROC;
 146   2              }
 147   1              else /* not a setup packet, just a Data Out Packet */
 148   1              {
 149   2                      switch (bD13flags.bits.DCP_state)
 150   2                      {
 151   3                      case USBFSM4DCP_DATAOUT:
 152   3      
 153   3                              i =     Hal4D13_ReadEndpoint(EPINDEX4EP0_CONTROL_OUT, ControlData.dataBuffer + ControlData.wCount,
 154   3                                      EP0_PACKET_SIZE);
 155   3      
 156   3                              ControlData.wCount += i;
 157   3                              if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength)
 158   3                              {
 159   4                                      bD13flags.bits.DCP_state = USBFSM4DCP_REQUESTPROC;
 160   4      
 161   4                              }
 162   3                              break;
 163   3                      case USBFSM4DCP_HANDSHAKE:
 164   3      
 165   3                              bD13flags.bits.DCP_state = USBFSM4DCP_IDLE;
 166   3                              break;
 167   3      
 168   3                      case USBFSM4DCP_STALL:          break;
 169   3      
 170   3                      case USBFSM4DCP_SETUPPROC:      break;
 171   3      
 172   3                      case USBFSM4DCP_REQUESTPROC:break;
 173   3      
 174   3                      case USBFSM4DCP_DATAIN:         break;
 175   3      
C51 COMPILER V7.06   ISR                                                                   08/18/2005 15:30:29 PAGE 4   

 176   3                      default:
 177   3                              printf("Fatal Error: Isr_Ep0RxDone ReadLastTranactionStatus=%x\n",ep_last);
 178   3                              bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
 179   3                              Hal4D13_StallEP0InControlWrite();
 180   3                              break;
 181   3                      }
 182   2              }
 183   1              return ;
 184   1      }
 185          
 186          void Isr_Ep00TxDone(void)
 187          {
 188   1              short i = ControlData.wLength - ControlData.wCount;
 189   1              UCHAR ep_last;
 190   1      
 191   1      
 192   1              Hal4D13_ReadInterruptRegister();
 193   1              ep_last = Hal4D13_GetEndpointStatusWInteruptClear(EPINDEX4EP0_CONTROL_IN); /* Clear interrupt flag */
 194   1      
 195   1              switch (bD13flags.bits.DCP_state)
 196   1              {
 197   2              case USBFSM4DCP_HANDSHAKE:
 198   2                      break;
 199   2              case USBFSM4DCP_DATAIN:
 200   2                      if( i >= EP0_PACKET_SIZE)
 201   2                      {
 202   3                              Hal4D13_WriteEndpoint(EPINDEX4EP0_CONTROL_IN,ControlData.Addr.pData + ControlData.wCount, EP0_PACKET_SI
             -ZE);
 203   3                              ControlData.wCount += EP0_PACKET_SIZE;
 204   3      
 205   3                              // State remains at USBFSM4DCP_DATAIN
 206   3      
 207   3                      }
 208   2                      else if( i != 0)
 209   2                      {
 210   3                              Hal4D13_WriteEndpoint(1, ControlData.Addr.pData + ControlData.wCount, i);
 211   3                              ControlData.wCount += i;
 212   3      
 213   3                              bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
 214   3                              LowerIRQL();
 215   3      
 216   3                      }
 217   2                      else if (i == 0)
 218   2                      {
 219   3                              Hal4D13_SingleTransmitEP0(0, 0);
 220   3                              bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
 221   3                      }
 222   2                      break;
 223   2              case USBFSM4DCP_REQUESTPROC: break;
 224   2              case USBFSM4DCP_IDLE:           break;
 225   2              case USBFSM4DCP_SETUPPROC:      break;
 226   2              case USBFSM4DCP_STALL:          break;
 227   2              case USBFSM4DCP_DATAOUT:        break;
 228   2              default:
 229   2                      printf("Fatal Error: Isr_Ep0TxDone Unexpected FSMState=%x\n",bD13flags.bits.DCP_state);
 230   2                      bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
 231   2      //              printf("bD13flags.bits.DCP_state = x%hx\n", bD13flags.bits.DCP_state);
 232   2                      Hal4D13_StallEP0InControlRead();
 233   2                      break;
 234   2              }
 235   1      }

⌨️ 快捷键说明

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