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

📄 d12ci.lst

📁 USB接口芯片pdiusbd12固件源程序
💻 LST
字号:
C51 COMPILER V7.06   D12CI                                                                 03/19/2006 13:40:24 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE D12CI.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*本文件定义了PDIUSBD12的命令函数,根据需要进行增减。*/
   2          #ifdef __C51__
   3          #include <reg51.h> /* special function register declarations */
   4          #else
              #include <absacc.h>
              #endif
   7          
   8          #include "mainloop.h"
   9          #include "d12ci.h"
  10          #include "epphal.h"
  11          
  12          #define D12_DATA 0x02
  13          #define D12_COMMAND 0x03
  14          
  15          extern EPPFLAGS bEPPflags;
  16          
  17          /*设置/使能地址命令:D0H*/
  18          void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
  19          {
  20   1          if(bEPPflags.bits.in_isr == 0)
  21   1               DISABLE;//EA=0
  22   1          outportb(D12_COMMAND, 0xD0);
  23   1              if(bEnable)
  24   1                      bAddress |= 0x80;
  25   1              outportb(D12_DATA, bAddress);
  26   1              if(bEPPflags.bits.in_isr == 0)
  27   1                      ENABLE;//EA=1
  28   1      }
  29          
  30          /*设置端点使能命令:D8H*/
  31          void D12_SetEndpointEnable(unsigned char bEnable)
  32          {
  33   1              if(bEPPflags.bits.in_isr == 0)
  34   1                      DISABLE;
  35   1              outportb(D12_COMMAND, 0xD8);
  36   1              if(bEnable)
  37   1                      outportb(D12_DATA, 1);
  38   1              else
  39   1                      outportb(D12_DATA, 0);
  40   1              if(bEPPflags.bits.in_isr == 0)
  41   1                      ENABLE;
  42   1      }
  43          
  44          /*设置模式命令:F3H*/
  45          void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
  46          {
  47   1              if(bEPPflags.bits.in_isr == 0)
  48   1                      DISABLE;
  49   1              outportb(D12_COMMAND, 0xF3);
  50   1              outportb(D12_DATA, bConfig);
  51   1              outportb(D12_DATA, bClkDiv);
  52   1              if(bEPPflags.bits.in_isr == 0)
  53   1                      ENABLE;
  54   1      }
  55          
C51 COMPILER V7.06   D12CI                                                                 03/19/2006 13:40:24 PAGE 2   

  56          /*设置DMA命令:FBH*/
  57          void D12_SetDMA(unsigned char bMode)
  58          {
  59   1              if(bEPPflags.bits.in_isr == 0)
  60   1                      DISABLE;
  61   1              outportb(D12_COMMAND, 0xFB);
  62   1              outportb(D12_DATA, bMode);
  63   1              if(bEPPflags.bits.in_isr == 0)
  64   1                      ENABLE;
  65   1      }
  66          
  67          /*读中断寄存器命令:F4H*/
  68          unsigned short D12_ReadInterruptRegister(void)
  69          {
  70   1              unsigned char b1;
  71   1              unsigned int j;
  72   1              outportb(D12_COMMAND, 0xF4);
  73   1              b1 = inportb(D12_DATA);
  74   1              j = inportb(D12_DATA);
  75   1              j <<= 8;
  76   1              j += b1;
  77   1              return j;
  78   1      }
  79          
  80          /*选择端点命令:00~05H*/
  81          unsigned char D12_SelectEndpoint(unsigned char bEndp)
  82          {
  83   1              unsigned char c;
  84   1              if(bEPPflags.bits.in_isr == 0)
  85   1                      DISABLE;
  86   1              outportb(D12_COMMAND, bEndp);
  87   1              c = inportb(D12_DATA);
  88   1              if(bEPPflags.bits.in_isr == 0)
  89   1                      ENABLE;
  90   1              return c;
  91   1      }
  92          
  93          /*读最后处理状态寄存器命令:40~45H*/
  94          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
  95          {
  96   1              outportb(D12_COMMAND, 0x40 + bEndp);
  97   1              return inportb(D12_DATA);
  98   1      }
  99          
 100          
 101          /*设置端点状态命令:40~45H*/
 102          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled) 
 103          {
 104   1              if(bEPPflags.bits.in_isr == 0)
 105   1                      DISABLE;
 106   1              outportb(D12_COMMAND, 0x40 + bEndp);
 107   1              outportb(D12_DATA, bStalled);
 108   1              if(bEPPflags.bits.in_isr == 0)
 109   1                      ENABLE;
 110   1      }
 111          
 112          
 113          /*设置端点状态命令:40~45H,专用于中断函数中*/
 114          void D12_SetEndpointStatusIsr(unsigned char bEndp, unsigned char bStalled)
 115          {
 116   1              if(bEPPflags.bits.in_isr == 0)
 117   1                      DISABLE;
C51 COMPILER V7.06   D12CI                                                                 03/19/2006 13:40:24 PAGE 3   

 118   1              outportb(D12_COMMAND, 0x40 + bEndp);
 119   1              outportb(D12_DATA, bStalled);
 120   1              if(bEPPflags.bits.in_isr == 0)
 121   1                      ENABLE;
 122   1      }
 123          
 124          
 125          /*读端点缓冲区同时清缓冲区,包含读缓冲区命令:F0H*/
 126          /*以及清缓冲区命令:F2H*/
 127          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len,unsigned char * buf)
 128          {
 129   1              unsigned char i, j;
 130   1              if(bEPPflags.bits.in_isr == 0)
 131   1                      DISABLE;
 132   1              outportb(D12_COMMAND, endp);
 133   1              if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) 
 134   1              {
 135   2                      if(bEPPflags.bits.in_isr == 0)
 136   2                              ENABLE;
 137   2                      return 0;
 138   2              }
 139   1              outportb(D12_COMMAND, 0xF0);
 140   1              j = inportb(D12_DATA);
 141   1              j = inportb(D12_DATA);
 142   1              if(j > len)
 143   1                      j = len;
 144   1              for(i=0; i<j; i++)
 145   1                      *(buf+i) = inportb(D12_DATA);
 146   1              outportb(D12_COMMAND, 0xF2);
 147   1              if(bEPPflags.bits.in_isr == 0)
 148   1                      ENABLE;
 149   1              return j;
 150   1      }
 151          
 152          
 153          /*写端点缓冲区同时使缓冲区有效,包含写缓冲区命令:F0H*/
 154          /*以及使缓冲区有效命令:FAH*/
 155          unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len,unsigned char * buf) 
 156          {
 157   1              unsigned char i;
 158   1              if(bEPPflags.bits.in_isr == 0)
 159   1                      DISABLE;
 160   1              outportb(D12_COMMAND, endp);
 161   1              inportb(D12_DATA);
 162   1              outportb(D12_COMMAND, 0xF0);
 163   1              outportb(D12_DATA, 0);
 164   1              outportb(D12_DATA, len);
 165   1              for(i=0; i<len; i++)
 166   1                      outportb(D12_DATA, *(buf+i));
 167   1              outportb(D12_COMMAND, 0xFA);
 168   1              if(bEPPflags.bits.in_isr == 0)
 169   1                      ENABLE;
 170   1              return len;
 171   1      }
 172          
 173          /*写端点缓冲区同时使缓冲区有效,专用于中断函数*/
 174          unsigned char D12_WriteEndpointIsr(unsigned char endp, unsigned char len,unsigned char * buf)
 175          {
 176   1              unsigned char i;
 177   1              if(bEPPflags.bits.in_isr == 0)
 178   1                      DISABLE;
 179   1              outportb(D12_COMMAND, endp);
C51 COMPILER V7.06   D12CI                                                                 03/19/2006 13:40:24 PAGE 4   

 180   1              inportb(D12_DATA);
 181   1              outportb(D12_COMMAND, 0xF0);
 182   1              outportb(D12_DATA, 0);
 183   1              outportb(D12_DATA, len);
 184   1              for(i=0; i<len; i++)
 185   1                      outportb(D12_DATA, *(buf+i));
 186   1              outportb(D12_COMMAND, 0xFA);
 187   1              if(bEPPflags.bits.in_isr == 0)
 188   1                      ENABLE;
 189   1              return len;
 190   1      }
 191          
 192          /*应答SETUP命令:F1H*/
 193          void D12_AcknowledgeEndpoint(unsigned char endp)
 194          {
 195   1              outportb(D12_COMMAND, endp);
 196   1              outportb(D12_COMMAND, 0xF1);
 197   1              if(endp == 0)
 198   1                      outportb(D12_COMMAND, 0xF2);
 199   1      }
 200          
 201          /*void D12_SendResume(void)
 202          {
 203                  outportb(D12_COMMAND, 0xF6);
 204          }
 205          
 206          unsigned short D12_ReadCurrentFrameNumber(void)
 207          {
 208                  unsigned short i,j;
 209                  if(bEPPflags.bits.in_isr == 0)
 210                          DISABLE;
 211                  outportb(D12_COMMAND, 0xF5);
 212                  i= inportb(D12_DATA);
 213                  j = inportb(D12_DATA);
 214                  i += (j<<8);
 215                  if(bEPPflags.bits.in_isr == 0)
 216                          ENABLE;
 217                  return i;
 218          }*/
 219          
 220          unsigned short D12_ReadChipID(void)
 221          {
 222   1              unsigned short i,j;
 223   1              if(bEPPflags.bits.in_isr == 0)
 224   1                      DISABLE;
 225   1              outportb(D12_COMMAND, 0xFD);
 226   1              i=inportb(D12_DATA);
 227   1              j=inportb(D12_DATA);
 228   1              i += (j<<8);
 229   1              if(bEPPflags.bits.in_isr == 0)
 230   1                      ENABLE;
 231   1              return i;
 232   1      }
 233          
 234          /*unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
 235          {
 236                  unsigned char c;
 237                  if(bEPPflags.bits.in_isr == 0)
 238                          DISABLE;
 239                  outportb(D12_COMMAND, 0x80 + bEndp);
 240                  c = inportb(D12_DATA);
 241                  if(bEPPflags.bits.in_isr == 0)
C51 COMPILER V7.06   D12CI                                                                 03/19/2006 13:40:24 PAGE 5   

 242                          ENABLE;
 243                  return c;
 244          }*/
 245          
 246          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    786    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      28
   IDATA SIZE       =   ----    ----
   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 + -