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

📄 d12ci.lst

📁 基于PDIUSBD12芯片的USB开发板固件程序
💻 LST
字号:
C51 COMPILER V7.02a   D12CI                                                                09/20/2005 15:09:59 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: D:\Program Files\Keilc7\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 0xFB02
  13          #define D12_COMMAND 0xFB03
  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.02a   D12CI                                                                09/20/2005 15:09:59 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          /*设置端点状态命令:40~45H*/
 101          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 102          {
 103   1              if(bEPPflags.bits.in_isr == 0)
 104   1                      DISABLE;
 105   1              outportb(D12_COMMAND, 0x40 + bEndp);
 106   1              outportb(D12_DATA, bStalled);
 107   1              if(bEPPflags.bits.in_isr == 0)
 108   1                      ENABLE;
 109   1      }
 110          
 111          /*设置端点状态命令:40~45H,专用于中断函数中*/
 112          void D12_SetEndpointStatusIsr(unsigned char bEndp, unsigned char bStalled)
 113          {
 114   1              if(bEPPflags.bits.in_isr == 0)
 115   1                      DISABLE;
 116   1              outportb(D12_COMMAND, 0x40 + bEndp);
 117   1              outportb(D12_DATA, bStalled);
C51 COMPILER V7.02a   D12CI                                                                09/20/2005 15:09:59 PAGE 3   

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

 180   1              outportb(D12_DATA, 0);
 181   1              outportb(D12_DATA, len);
 182   1              for(i=0; i<len; i++)
 183   1                      outportb(D12_DATA, *(buf+i));
 184   1              outportb(D12_COMMAND, 0xFA);
 185   1              if(bEPPflags.bits.in_isr == 0)
 186   1                      ENABLE;
 187   1              return len;
 188   1      }
 189          
 190          /*应答SETUP命令:F1H*/
 191          void D12_AcknowledgeEndpoint(unsigned char endp)
 192          {
 193   1              outportb(D12_COMMAND, endp);
 194   1              outportb(D12_COMMAND, 0xF1);
 195   1              if(endp == 0)
 196   1                      outportb(D12_COMMAND, 0xF2);
 197   1      }
 198          
 199          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    834    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      26
   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 + -