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

📄 hal4d12.lst

📁 D12 USB源代码 硬盘
💻 LST
字号:
C51 COMPILER V7.06   HAL4D12                                                               02/17/2004 14:42:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE HAL4D12
OBJECT MODULE PLACED IN Hal4d12.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Hal4d12.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*这是固件最底层的代码,可以完成硬件访问PDIUSBD12相关I/O口的功能
   2             //*************************************************************************
   3             //
   4             //                  P H I L I P S   P R O P R I E T A R Y
   5             //
   6             //           COPYRIGHT (c)   1999 BY PHILIPS SINGAPORE.
   7             //                     --  ALL RIGHTS RESERVED  --
   8             //
   9             // File Name:            Hal4D12.C
  10             // Author:           Hilbert Zhang ZhenYu
  11             // Created:          Nov. 19, 99
  12             // Modified:
  13             // Revision:                 0.0.
  14             //
  15             //*************************************************************************
  16             //
  17             //*************************************************************************
  18             */
  19          #include <reg51.h>                /* special function register declarations   */
  20          #undef   GLOBAL_EXT
  21          #include "SysCnfg.h"
  22          #include "BasicTyp.h"
  23          #include "common.h"
  24          #include "Hal4Sys.h"
  25          #include "Hal4d12.h"
  26          /*
  27             //*************************************************************************
  28             // Functions
  29             //*************************************************************************
  30          */
  31          void Hal4D12_SetAddressEnable(INT8 bAddress, bit bEnable)               //设置地址使能
  32          {
  33   1              Hal4Sys_D12CmdPortOutB( 0xD0);
  34   1              if(bEnable)
  35   1              bAddress |= 0x80;
  36   1          Hal4Sys_D12DataPortOutB( bAddress);
  37   1      }
  38          
  39          
  40          void Hal4D12_SetEndpointEnable(bit bEnable)                                             //设置端点使能
  41          {
  42   1              Hal4Sys_D12CmdPortOutB( 0xD8);
  43   1              if(bEnable)
  44   1                      Hal4Sys_D12DataPortOutB( 1);
  45   1              else
  46   1                      Hal4Sys_D12DataPortOutB( 0);
  47   1      }
  48          
  49          
  50          void Hal4D12_SetMode(INT8 bConfig, INT8 bClkDiv)                        //设置模式
  51          {
  52   1              Hal4Sys_D12CmdPortOutB( 0xF3);
  53   1              Hal4Sys_D12DataPortOutB( bConfig);//0x02
  54   1              Hal4Sys_D12DataPortOutB( bClkDiv);//0x1f
  55   1      }
C51 COMPILER V7.06   HAL4D12                                                               02/17/2004 14:42:21 PAGE 2   

  56          
  57          
  58          void Hal4D12_SetDMA(INT8 bMode)                                                         //配置DMA
  59          {
  60   1              Hal4Sys_D12CmdPortOutB( 0xFB);
  61   1              Hal4Sys_D12DataPortOutB( bMode);
  62   1      }
  63          
  64          
  65          void Hal4D12_ReadInterruptRegister( INT16 * pInterruptReg)              //读中断继承器
  66          {
  67   1              Hal4Sys_D12CmdPortOutB( 0xF4);
  68   1              ((PFLEXI_INT16) pInterruptReg)->chars.c0 = Hal4Sys_D12DataPortInB();
  69   1              ((PFLEXI_INT16) pInterruptReg)->chars.c1 = Hal4Sys_D12DataPortInB();
  70   1      }
  71          
  72          
  73          INT8 Hal4D12_ReadLastTransactionStatus(INT8 bEndp)      //读端点最后传输状态
  74          {
  75   1              Hal4Sys_D12CmdPortOutB( 0x40|bEndp);
  76   1              return Hal4Sys_D12DataPortInB();
  77   1      }
  78          
  79          
  80          INT8 Hal4D12_SelectEndpoint(INT8 bEndp)                         //选择端点
  81          {
  82   1              Hal4Sys_D12CmdPortOutB( bEndp);
  83   1              return Hal4Sys_D12DataPortInB();
  84   1      }
  85          
  86          
  87          /*
  88          INT8 Hal4D12_ReadEndpointStatus(INT8 bEndp)         //读端点状态
  89          {
  90                  Hal4Sys_D12CmdPortOutB( 0x80|bEndp);
  91                  return Hal4Sys_D12DataPortInB();
  92          }*/
  93          
  94          
  95          
  96          void Hal4D12_SetEndpointStatus(INT8 bEndp, INT8 bStalled)               //设置端点状态
  97          {
  98   1              Hal4Sys_D12CmdPortOutB( 0x40|bEndp);
  99   1              Hal4Sys_D12DataPortOutB( bStalled);
 100   1      }
 101          
 102          /*
 103          void Hal4D12_SendResume(void)           //  发送恢复
 104          {
 105                  Hal4Sys_D12CmdPortOutB( 0xF6);
 106          }*/
 107          
 108          
 109          INT8 Hal4D12_ReadEndpoint(INT8 endp, INT8 len, INT8 data * buf) //读取端点缓冲区数据
 110          {
 111   1              Hal4Sys_D12CmdPortOutB( endp);                          //选择端点
 112   1              if((Hal4Sys_D12DataPortInB() & D12_FULLEMPTY) == 0) 
 113   1              {
 114   2                      return D12_FIFOEMPTY;
 115   2              }
 116   1              Hal4Sys_D12CmdPortOutB( 0xF0);          //发读D12命令
 117   1              Hal4Sys_D12DataPortInB();
C51 COMPILER V7.06   HAL4D12                                                               02/17/2004 14:42:21 PAGE 3   

 118   1              endp = Hal4Sys_D12DataPortInB();
 119   1              if( endp > len)
 120   1              endp = len;
 121   1          else
 122   1              len = endp;
 123   1              for(; endp != 0 ; endp--, buf++ )
 124   1                      *(buf) = Hal4Sys_D12DataPortInB();
 125   1              Hal4Sys_D12CmdPortOutB( 0xF2);       //缓冲区清零
 126   1              return len ;
 127   1      }
 128          
 129          
 130          INT8 Hal4D12_ReadEPAtCode(INT8 endp, INT8 len)                  //读D12缓冲区到代码
 131          {
 132   1          // using endp, len, buf as var
 133   1              Hal4Sys_D12CmdPortOutB( endp);                  //选择端点,返回端点状态
 134   1              if((Hal4Sys_D12DataPortInB() & D12_FULLEMPTY) == 0) 
 135   1              {
 136   2                      return D12_FIFOEMPTY;   //返回缓冲区空
 137   2              }
 138   1              Hal4Sys_D12CmdPortOutB( 0xF0);      //发读数据指令
 139   1              Hal4Sys_D12DataPortInB();          
 140   1              endp = Hal4Sys_D12DataPortInB();        //读取缓冲区数据字节大小
 141   1              if( endp > len)
 142   1              endp = len;
 143   1          else
 144   1              len = endp;
 145   1              for(; endp != 0 ; endp-- )                              //读取数据
 146   1                      Hal4Sys_D12DataPortInB();
 147   1              Hal4Sys_D12CmdPortOutB( 0xF2);                  //清空缓冲区
 148   1              return len ;
 149   1      }
 150          
 151          /*
 152          void Hal4D12_ValidateBuffer(INT8 endp)       // 使缓冲区有效
 153          {
 154          
 155              // Select Endpoint
 156                  Hal4Sys_D12CmdPortOutB( endp);
 157          
 158              // Valiate Buffer
 159                  Hal4Sys_D12CmdPortOutB( 0xFA);
 160          
 161          }
 162          */
 163          
 164          
 165          /*
 166          void Hal4D12_ClearBuffer(INT8 endp)     //清除缓冲区
 167          {
 168              // Select Endpoint
 169                  Hal4Sys_D12CmdPortOutB( endp);
 170              // Clear Buffer
 171                  Hal4Sys_D12CmdPortOutB( 0xF2);
 172          
 173          }*/
 174          
 175          
 176          //Amend by Liu Ying Bin
 177          //INT8 Hal4D12_WriteEndpoint(INT8 endp, INT8 len, INT8 idata * buf)
 178          
 179          INT8 Hal4D12_WriteEndpoint(INT8 endp, INT8 len, INT8 data * buf)                //发送缓冲区数据
C51 COMPILER V7.06   HAL4D12                                                               02/17/2004 14:42:21 PAGE 4   

 180          {
 181   1              Hal4Sys_D12CmdPortOutB( endp);
 182   1              Hal4Sys_D12DataPortInB();
 183   1              Hal4Sys_D12CmdPortOutB( 0xF0);             // 发写D12缓冲区指令
 184   1          endp = len;
 185   1              Hal4Sys_D12DataPortOutB( 0);
 186   1              Hal4Sys_D12DataPortOutB( endp);            // 写进数据长度
 187   1              for( ; endp != 0; endp-- , buf++)
 188   1                      Hal4Sys_D12DataPortOutB( *(buf) );
 189   1              Hal4Sys_D12CmdPortOutB( 0xFA);             // 使缓冲区有效
 190   1              return len;
 191   1      }
 192          
 193          
 194          INT8 Hal4D12_WriteEPAtCode(INT8 endp, INT8 len, INT8 code * buf)        //发送代码区数据
 195          {
 196   1              Hal4Sys_D12CmdPortOutB( endp);                  //选择端点
 197   1              Hal4Sys_D12DataPortInB();                               //
 198   1          endp = len;
 199   1              Hal4Sys_D12CmdPortOutB( 0xF0);                  //发写缓冲区命令
 200   1              Hal4Sys_D12DataPortOutB( 0);                    //写每一字节(没效)
 201   1              Hal4Sys_D12DataPortOutB( endp);                 //写每二字节,发送数据长度
 202   1              for(; endp != 0; endp-- , buf++)                //发送数据
 203   1                      Hal4Sys_D12DataPortOutB( *(buf) );
 204   1              Hal4Sys_D12CmdPortOutB( 0xFA);                  // 使缓冲区有效
 205   1              return len;                                                             // 返回已发送字节长度
 206   1      }
 207          
 208          
 209          void Hal4D12_AcknowledgeEndpoint(INT8 endp)     //应答SETUP
 210          {
 211   1              Hal4Sys_D12CmdPortOutB( endp);                  //选择端点
 212   1              Hal4Sys_D12CmdPortOutB( 0xF1);                  //发应答命令
 213   1              if(endp == 0)
 214   1                      Hal4Sys_D12CmdPortOutB( 0xF2);          //如果是端点零,则清缓冲区
 215   1      }
 216          
 217          
 218          void Hal4D12_SingleTransmitEP0(INT8 * buf, INT8 len)
 219          {
 220   1                      Hal4D12_WriteEndpoint(1, len, buf);
 221   1      }
 222          
 223          
 224          void Hal4D12_AcknowledgeSETUP(void)
 225          {
 226   1                      Hal4D12_AcknowledgeEndpoint(0);
 227   1                      Hal4D12_AcknowledgeEndpoint(1);
 228   1      }
 229          
 230          
 231          void Hal4D12_StallEP0(void)
 232          {
 233   1              Hal4D12_SetEndpointStatus(0, 1);
 234   1              Hal4D12_SetEndpointStatus(1, 1);
 235   1      }
 236          
 237          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    449    ----
C51 COMPILER V7.06   HAL4D12                                                               02/17/2004 14:42:21 PAGE 5   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      21
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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