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

📄 d12ci.lst

📁 飞利浦usb D12芯片fireware 源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 110   1              c = inportb(D12_DATA);
 111   1      
 112   1              if(bEPPflags.bits.in_isr == 0)
 113   1                      ENABLE;
 114   1      
 115   1              return c;
 116   1      }
 117          
 118          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 119          {
 120   1              outportb(D12_COMMAND, 0x40 + bEndp);
 121   1              return inportb(D12_DATA);
 122   1      }
 123          
 124          unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
 125          {
 126   1              unsigned char c;
 127   1      
 128   1              if(bEPPflags.bits.in_isr == 0)
 129   1                      DISABLE;
 130   1      
 131   1              outportb(D12_COMMAND, 0x80 + bEndp);
 132   1              c = inportb(D12_DATA);
 133   1      
 134   1              if(bEPPflags.bits.in_isr == 0)
 135   1                      ENABLE;
C51 COMPILER V8.02   D12CI                                                                 07/27/2007 11:10:49 PAGE 11  

 136   1      
 137   1              return c;
 138   1      }
 139          
 140          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 141          {
 142   1              if(bEPPflags.bits.in_isr == 0)
 143   1                      DISABLE;
 144   1      
 145   1              outportb(D12_COMMAND, 0x40 + bEndp);
 146   1              outportb(D12_DATA, bStalled);
 147   1      
 148   1              if(bEPPflags.bits.in_isr == 0)
 149   1                      ENABLE;
 150   1      }
 151          
 152          void D12_SendResume(void)
 153          {
 154   1              outportb(D12_COMMAND, 0xF6);
 155   1      }
 156          
 157          unsigned short D12_ReadCurrentFrameNumber(void)
 158          {
 159   1              unsigned short i,j;
 160   1      
 161   1              if(bEPPflags.bits.in_isr == 0)
 162   1                      DISABLE;
 163   1      
 164   1              outportb(D12_COMMAND, 0xF5);
 165   1              i= inportb(D12_DATA);
 166   1              j = inportb(D12_DATA);
 167   1      
 168   1              i += (j<<8);
 169   1      
 170   1              if(bEPPflags.bits.in_isr == 0)
 171   1                      ENABLE;
 172   1      
 173   1              return i;
 174   1      }
 175          
 176          unsigned short D12_ReadChipID(void)
 177          {
 178   1              unsigned short i,j;
 179   1      
 180   1              if(bEPPflags.bits.in_isr == 0)
 181   1                      DISABLE;
 182   1      
 183   1              outportb(portbase+D12_COMMAND, 0xFD);
 184   1              i=inportb(portbase+D12_DATA);
 185   1              j=inportb(portbase+D12_DATA);
 186   1              i += (j<<8);
 187   1      
 188   1              if(bEPPflags.bits.in_isr == 0)
 189   1                      ENABLE;
 190   1      
 191   1              return i;
 192   1      }
 193          
 194          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
 195          {
 196   1              unsigned char i, j;
 197   1      
C51 COMPILER V8.02   D12CI                                                                 07/27/2007 11:10:49 PAGE 12  

 198   1              if(bEPPflags.bits.in_isr == 0)
 199   1                      DISABLE;
 200   1      
 201   1              outportb(D12_COMMAND, endp);
 202   1              if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
 203   2                      if(bEPPflags.bits.in_isr == 0)
 204   2                              ENABLE;
 205   2                      return 0;
 206   2              }
 207   1      
 208   1              outportb(D12_COMMAND, 0xF0);
 209   1              j = inportb(D12_DATA);
 210   1              j = inportb(D12_DATA);
 211   1      
 212   1              if(j > len)
 213   1                      j = len;
 214   1      
 215   1              for(i=0; i<j; i++)
 216   1                      *(buf+i) = inportb(D12_DATA);
 217   1      
 218   1              outportb(D12_COMMAND, 0xF2);
 219   1      
 220   1              if(bEPPflags.bits.in_isr == 0)
 221   1                      ENABLE;
 222   1      
 223   1              return j;
 224   1      }
 225          
 226          // D12_ReadMainEndpoint() added by V2.2 to support double-buffering.
 227          // Caller should assume maxium 128 bytes of returned data.
 228          unsigned char D12_ReadMainEndpoint(unsigned char * buf)
 229          {
 230   1              unsigned char i, j, k = 0, bDblBuf = 1;
 231   1      
 232   1              if(bEPPflags.bits.in_isr == 0)
 233   1                      DISABLE;
 234   1      
 235   1              outportb(D12_COMMAND, 0x84);
 236   1              if( (inportb(D12_DATA) & 0x60) == 0x60)
 237   1                      bDblBuf = 2;
 238   1      
 239   1              while(bDblBuf) {
 240   2                      outportb(D12_COMMAND, 4);
 241   2                      if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
 242   2                              break;
 243   2      
 244   2                      outportb(D12_COMMAND, 0xF0);
 245   2                      j = inportb(D12_DATA);
 246   2                      j = inportb(D12_DATA);
 247   2      
 248   2                      for(i=0; i<j; i++)
 249   2                              *(buf+i+k) = inportb(D12_DATA);
 250   2      
 251   2                      k += j;
 252   2      
 253   2                      outportb(D12_COMMAND, 0xF2);
 254   2      
 255   2                      bDblBuf --;
 256   2              }
 257   1      
 258   1              if(bEPPflags.bits.in_isr == 0)
 259   1                      ENABLE;
C51 COMPILER V8.02   D12CI                                                                 07/27/2007 11:10:49 PAGE 13  

 260   1      
 261   1              return k;
 262   1      }
 263          
 264          unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
 265          {
 266   1              unsigned char i;
 267   1      
 268   1              if(bEPPflags.bits.in_isr == 0)
 269   1                      DISABLE;
 270   1      
 271   1              outportb(D12_COMMAND, endp);
 272   1              inportb(D12_DATA);
 273   1      
 274   1              outportb(D12_COMMAND, 0xF0);
 275   1              outportb(D12_DATA, 0);
 276   1              outportb(D12_DATA, len);
 277   1      
 278   1              for(i=0; i<len; i++)
 279   1                      outportb(D12_DATA, *(buf+i));
 280   1      
 281   1              outportb(D12_COMMAND, 0xFA);
 282   1      
 283   1              if(bEPPflags.bits.in_isr == 0)
 284   1                      ENABLE;
 285   1      
 286   1              return len;
 287   1      }
 288          
 289          void D12_AcknowledgeEndpoint(unsigned char endp)
 290          {
 291   1              outportb(D12_COMMAND, endp);
 292   1              outportb(D12_COMMAND, 0xF1);
 293   1              if(endp == 0)
 294   1                      outportb(D12_COMMAND, 0xF2);
 295   1      }
 296          
 297          #ifndef __C51__
              unsigned char D12Eval_inportb(void)
              {
                      return inportb(D12_EVAL_PORT_I);
              }
              
              void D12Eval_outportb(unsigned char val, unsigned char mask)
              {
                      static unsigned char last_val = 0;
              
                      val = (val & mask) | (last_val & (~mask));
                      outportb(D12_EVAL_PORT_O, val);
                      last_val = val;
              }
              #endif
C51 COMPILER V8.02   D12CI                                                                 07/27/2007 11:10:49 PAGE 14  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _D12_SetAddressEnable (BEGIN)
                                           ; SOURCE LINE # 33
0000 900000      R     MOV     DPTR,#bAddress
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
0005 A3                INC     DPTR
0006 ED                MOV     A,R5
0007 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 35
0008 900000      E     MOV     DPTR,#bEPPflags
000B E0                MOVX    A,@DPTR
000C C4                SWAP    A
000D 13                RRC     A
000E 5407              ANL     A,#07H
0010 20E002            JB      ACC.0,?C0001
                                           ; SOURCE LINE # 36
0013 C2AF              CLR     EA
0015         ?C0001:
                                           ; SOURCE LINE # 38
0015 7DD0              MOV     R5,#0D0H
0017 7F03              MOV     R7,#03H
0019 120000      E     LCALL   _outportb
                                           ; SOURCE LINE # 39
001C 900000      R     MOV     DPTR,#bEnable
001F E0                MOVX    A,@DPTR
0020 6007              JZ      ?C0002
                                           ; SOURCE LINE # 40
0022 900000      R     MOV     DPTR,#bAddress
0025 E0                MOVX    A,@DPTR
0026 4480              ORL     A,#080H
0028 F0                MOVX    @DPTR,A
0029         ?C0002:
                                           ; SOURCE LINE # 41
0029 900000      R     MOV     DPTR,#bAddress
002C E0                MOVX    A,@DPTR
002D FD                MOV     R5,A
002E 7F02              MOV     R7,#02H
0030 120000      E     LCALL   _outportb
                                           ; SOURCE LINE # 43
0033 900000      E     MOV     DPTR,#bEPPflags
0036 E0                MOVX    A,@DPTR
0037 C4                SWAP    A
0038 13                RRC     A
0039 5407              ANL     A,#07H
003B 20E002            JB      ACC.0,?C0004
                                           ; SOURCE LINE # 44
003E D2AF              SETB    EA
                                           ; SOURCE LINE # 45
0040         ?C0004:
0040 22                RET     
             ; FUNCTION _D12_SetAddressEnable (END)

             ; FUNCTION _D12_SetEndpointEnable (BEGIN)
                                           ; SOURCE LINE # 47
0000 900000      R     MOV     DPTR,#bEnable
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 48
C51 COMPILER V8.02   D12CI                                                                 07/27/2007 11:10:49 PAGE 15  

                                           ; SOURCE LINE # 49
0005 900000      E     MOV     DPTR,#bEPPflags
0008 E0                MOVX    A,@DPTR
0009 C4                SWAP    A
000A 13                RRC     A
000B 5407              ANL     A,#07H
000D 20E002            JB      ACC.0,?C0005
                                           ; SOURCE LINE # 50
0010 C2AF              CLR     EA
0012         ?C0005:
                                           ; SOURCE LINE # 52
0012 7DD8              MOV     R5,#0D8H
0014 7F03              MOV     R7,#03H
0016 120000      E     LCALL   _outportb
                                           ; SOURCE LINE # 53
0019 900000      R     MOV     DPTR,#bEnable
001C E0                MOVX    A,@DPTR
001D 6004              JZ      ?C0006
                                           ; SOURCE LINE # 54
001F 7D01              MOV     R5,#01H
0021 8002              SJMP    ?C0061
0023         ?C0006:
                                           ; SOURCE LINE # 56
0023 E4                CLR     A
0024 FD                MOV     R5,A
0025         ?C0061:
0025 7F02              MOV     R7,#02H
0027 120000      E     LCALL   _outportb
002A         ?C0007:
                                           ; SOURCE LINE # 58
002A 900000      E     MOV     DPTR,#bEPPflags
002D E0                MOVX    A,@DPTR
002E C4                SWAP    A

⌨️ 快捷键说明

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