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

📄 kd12ci.lst

📁 USB D12驱动源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  61   1              if(bEPPflags.bits.in_isr == 0)
  62   1                      ENABLE;
  63   1      }
  64          
  65          void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
  66          {
  67   1              if(bEPPflags.bits.in_isr == 0)
  68   1                      DISABLE;
  69   1              outportcmd(0xF3);
  70   1              outportdata(bConfig);
  71   1              outportdata(bClkDiv);
  72   1              if(bEPPflags.bits.in_isr == 0)
  73   1                      ENABLE;
  74   1      
  75   1      }
  76          
  77          void D12_SetDMA(unsigned char bMode)
  78          {
C51 COMPILER V7.06   KD12CI                                                                11/11/2003 20:11:03 PAGE 10  

  79   1      
  80   1              if(bEPPflags.bits.in_isr == 0)
  81   1                      DISABLE;
  82   1              outportcmd(0xFB);
  83   1              outportdata(bMode);
  84   1              if(bEPPflags.bits.in_isr == 0)
  85   1                      ENABLE;
  86   1      
  87   1      }
  88          /*
  89          unsigned char D12_GetDMA(void)
  90          {
  91           outportcmd(0xFB);
  92           return(inportb());
  93          }
  94          */
  95          /*
  96          unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
  97          {
  98                  unsigned char c;
  99          
 100                  if(bEPPflags.bits.in_isr == 0)
 101                          DISABLE;
 102          
 103                  outportcmd(0x80 + bEndp);
 104                  c = inportb();
 105          
 106                  if(bEPPflags.bits.in_isr == 0)
 107                          ENABLE;
 108          
 109                  return c;
 110          }
 111          */
 112          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 113          {
 114   1              if(bEPPflags.bits.in_isr == 0)
 115   1                      DISABLE;
 116   1      
 117   1              outportcmd(0x40 + bEndp);
 118   1              outportdata(bStalled);
 119   1      
 120   1              if(bEPPflags.bits.in_isr == 0)
 121   1                      ENABLE;
 122   1      }
 123          
 124          
 125          /*
 126          void D12_SendResume(void)
 127          {
 128           outportcmd(0xF6);
 129          }
 130          */
 131          
 132          unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
 133          {
 134   1              unsigned char i;
 135   1      
 136   1              if(bEPPflags.bits.in_isr == 0)
 137   1                      DISABLE;
 138   1              //---------------------
 139   1              outportcmd(endp);       //选择端点
 140   1              inportb();              //读入满/空状态
C51 COMPILER V7.06   KD12CI                                                                11/11/2003 20:11:03 PAGE 11  

 141   1      
 142   1              outportcmd(0xF0);       //写缓冲区命令
 143   1              outportdata(0);
 144   1              outportdata(len);
 145   1      
 146   1              for(i=0; i<len; i++)
 147   1                      outportdata(*(buf+i));
 148   1      
 149   1              outportcmd(0xFA);       //驶购冲区有效
 150   1              
 151   1              //--------------------------------
 152   1              if(bEPPflags.bits.in_isr == 0)
 153   1                      ENABLE;
 154   1      
 155   1              return len;
 156   1      }
 157          void D12_AcknowledgeEndpoint(unsigned char endp)
 158          {
 159   1              outportcmd(endp);       //选择端点
 160   1              outportcmd(0xF1);       //应答设置
 161   1              if(endp == 0)
 162   1                      outportcmd(0xF2);       //缓冲区清零
 163   1      }
 164          unsigned short D12_ReadInterruptRegister(void)
 165          {
 166   1              unsigned char b1;
 167   1              unsigned int j;
 168   1              //outportb(D12_COMMAND, 0xF4);
 169   1              outportcmd(0xF4);
 170   1              b1 = inportb();
 171   1              j = inportb();
 172   1              j <<= 8;
 173   1              j += b1;
 174   1              return j;
 175   1      }
 176          
 177          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 178          {
 179   1              //outportb(D12_COMMAND, 0x40 + bEndp);
 180   1              outportcmd(0x40 + bEndp);
 181   1              return inportb();
 182   1      }
 183          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
 184          {
 185   1              unsigned char i, j;
 186   1      
 187   1              if(bEPPflags.bits.in_isr == 0)
 188   1                      DISABLE;
 189   1              //--------------------------------
 190   1              outportcmd(endp);                       //选择端点
 191   1              if((inportb() & D12_FULLEMPTY) == 0) {  //如果缓冲区为空,则返回
 192   2                      if(bEPPflags.bits.in_isr == 0)
 193   2                              ENABLE;
 194   2                      return 0;
 195   2              }
 196   1      
 197   1              outportcmd(0xF0);                       //读缓冲区
 198   1              j = inportb();
 199   1              j = inportb();
 200   1      
 201   1              if(j > len)
 202   1                      j = len;
C51 COMPILER V7.06   KD12CI                                                                11/11/2003 20:11:03 PAGE 12  

 203   1      
 204   1              for(i=0; i<j; i++)
 205   1                      *(buf+i) = inportb();
 206   1      
 207   1              outportcmd(0xF2);                               //缓冲区清空
 208   1              //-------------------------------
 209   1              if(bEPPflags.bits.in_isr == 0)
 210   1                      ENABLE;
 211   1      
 212   1              return j;
 213   1      }
 214          
 215          unsigned char D12_SelectEndpoint(unsigned char bEndp)
 216          {
 217   1              unsigned char c;
 218   1      
 219   1              if(bEPPflags.bits.in_isr == 0)
 220   1                      DISABLE;
 221   1      
 222   1              outportcmd(bEndp);
 223   1              c = inportb();
 224   1      
 225   1              if(bEPPflags.bits.in_isr == 0)
 226   1                      ENABLE;
 227   1      
 228   1              return c;
 229   1      }
 230          
C51 COMPILER V7.06   KD12CI                                                                11/11/2003 20:11:03 PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _outportcmd (BEGIN)
                                           ; SOURCE LINE # 8
;---- Variable 'value' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 9
                                           ; SOURCE LINE # 16
0000 90FF03            MOV     DPTR,#0FF03H
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 17
0005 22                RET     
             ; FUNCTION _outportcmd (END)

             ; FUNCTION _outportdata (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'value' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0000 90FF02            MOV     DPTR,#0FF02H
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 21
0005 22                RET     
             ; FUNCTION _outportdata (END)

             ; FUNCTION L?0045 (BEGIN)
0000 120000      R     LCALL   _outportcmd
             ; FUNCTION inportb (BEGIN)
                                           ; SOURCE LINE # 23
                                           ; SOURCE LINE # 24
                                           ; SOURCE LINE # 33
0003 90FF02            MOV     DPTR,#0FF02H
0006 A3                INC     DPTR
0007 E0                MOVX    A,@DPTR
0008 FF                MOV     R7,A
                                           ; SOURCE LINE # 34
0009         ?C0003:
0009 22                RET     
             ; FUNCTION inportb (END)

             ; FUNCTION _D12_SetAddressEnable (BEGIN)
                                           ; SOURCE LINE # 36
;---- Variable 'bAddress' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
;---- Variable 'bEnable' assigned to Register 'R5' ----
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 38
0002 AF00        E     MOV     R7,bEPPflags
0004 EF                MOV     A,R7
0005 C4                SWAP    A
0006 13                RRC     A
0007 5407              ANL     A,#07H
0009 20E002            JB      ACC.0,?C0004
                                           ; SOURCE LINE # 39
000C C2AF              CLR     EA
000E         ?C0004:
                                           ; SOURCE LINE # 41
000E 7FD0              MOV     R7,#0D0H
0010 120000      R     LCALL   _outportcmd
                                           ; SOURCE LINE # 42
C51 COMPILER V7.06   KD12CI                                                                11/11/2003 20:11:03 PAGE 14  

0013 ED                MOV     A,R5
0014 6003              JZ      ?C0005
                                           ; SOURCE LINE # 43
0016 430680            ORL     AR6,#080H
0019         ?C0005:
                                           ; SOURCE LINE # 44
0019 AF06              MOV     R7,AR6
001B 120000      R     LCALL   _outportdata
                                           ; SOURCE LINE # 46
001E AF00        E     MOV     R7,bEPPflags
0020 EF                MOV     A,R7
0021 C4                SWAP    A
0022 13                RRC     A
0023 5407              ANL     A,#07H
0025 20E002            JB      ACC.0,?C0007
                                           ; SOURCE LINE # 47
0028 D2AF              SETB    EA
                                           ; SOURCE LINE # 48
002A         ?C0007:
002A 22                RET     
             ; FUNCTION _D12_SetAddressEnable (END)

             ; FUNCTION _D12_SetEndpointEnable (BEGIN)
                                           ; SOURCE LINE # 50
;---- Variable 'bEnable' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
                                           ; SOURCE LINE # 51
                                           ; SOURCE LINE # 52
0002 AF00        E     MOV     R7,bEPPflags
0004 EF                MOV     A,R7
0005 C4                SWAP    A
0006 13                RRC     A
0007 5407              ANL     A,#07H
0009 20E002            JB      ACC.0,?C0008
                                           ; SOURCE LINE # 53
000C C2AF              CLR     EA
000E         ?C0008:

⌨️ 快捷键说明

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