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

📄 d12driver.lst

📁 PDIUSBD12的固件源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 147          ** 功能描述: 端点2 IN(发送)处理处理函数
 148          ** 输    入: 无
 149          ** 输    出: 无
 150          ********************************************************************/
 151          void ep2_txdone(void)
 152          {
 153   1              D12_ReadLastTransactionStatus(5);               //清中断标志位
 154   1              //可添加用户代码(进行检测端点号5IN令牌的操作)
 155   1              if(byte_cnt.word>0)
 156   1              {
 157   2                      if(byte_cnt.word<64)
 158   2                      {
 159   3                              D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
 160   3                              byte_cnt.word=0;
 161   3                      }
 162   2                      else
 163   2                      {
 164   3                              byte_cnt.word=byte_cnt.word-64;
 165   3                              D12_WriteEndpoint(5, 64, EpBuf);
 166   3                      }
 167   2              }
 168   1              
 169   1              if ((D12_ReadEndpointStatus(5) & 0x60) != 0x60)
 170   1              {
 171   2                      if(byte_cnt.word>0)
 172   2                      {
 173   3                              if(byte_cnt.word<64)
 174   3                              {
 175   4                                      D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
 176   4                                      byte_cnt.word=0;
 177   4                              }
 178   3                              else
C51 COMPILER V7.06   D12DRIVER                                                             11/29/2007 09:43:56 PAGE 4   

 179   3                              {
 180   4                                      byte_cnt.word=byte_cnt.word-64;
 181   4                                      D12_WriteEndpoint(5, 64, EpBuf);
 182   4                              }
 183   3                      }
 184   2              }
 185   1      }
 186          
 187          /*******************************************************************
 188          ** 函数名称: ep2_rxdone()
 189          ** 功能描述: 端点2 OUT(接收)处理处理函数
 190          ** 输    入: 无
 191          ** 输    出: 无
 192          ********************************************************************/
 193          void ep2_rxdone(void)
 194          {
 195   1              INT8U len;
 196   1      
 197   1              D12_ReadLastTransactionStatus(4);                       //复位中断寄存器
 198   1              len = D12_ReadEndpoint(4, 64, EpBuf);           //读取端点2接收数据
 199   1              if (bEPPflags.bits.ep2buf_full)
 200   1                      len += D12_ReadEndpoint(4, 64, EpBuf);  //读取端点2接收数据
 201   1              if (len != 0)
 202   1                      bEPPflags.bits.ep2_rxdone = 1;                  //标志端点2接收到数据
 203   1      }
 204          
 205          /***********************************************************************
 206          ** 函数名称: void Usb_Exception(void)
 207          ** 功能描述: D12中断服务程序
 208          *************************************************************************/
 209          void Usb_Exception(void)  interrupt 0
 210          {
 211   1              DISABLE();                                              //进入D12中断服务程序时关中断
 212   1              fn_usb_isr();   
 213   1              ENABLE();                                                       //退出D12中断服务程序时开中断
 214   1      }
 215          
 216          
 217          /************************************************************
 218          ** 函数名称: disconnect_USB() 
 219          ** 功能描述: 断开USB总线
 220          ************************************************************/
 221          void disconnect_USB(void)
 222          {
 223   1              // Initialize D12 configuration
 224   1              D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
 225   1      }       //SoftConnect 断开
 226          
 227          
 228          /************************************************************
 229          ** 函数名称: connect_USB()
 230          ** 功能描述: 连接USB总线
 231          ************************************************************/
 232          void connect_USB(void)
 233          {
 234   1              // Initialize D12 configuration
 235   1              D12_SetDMA(0x00);
 236   1              D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
 237   1      }       //SoftConnect 连接上,并设置为无LazyClock,模式为非同步模式
 238          
 239          
 240          /************************************************************
C51 COMPILER V7.06   D12DRIVER                                                             11/29/2007 09:43:56 PAGE 5   

 241          ** 函数名称: reconnect_USB()
 242          ** 功能描述: 重新连接USB总线
 243          ************************************************************/
 244          void reconnect_USB(void)
 245          {
 246   1              INT16U clk_cnt;
 247   1      
 248   1              disconnect_USB();                                                          //断开芯片与USB总线连接
 249   1          for (clk_cnt = 0;clk_cnt<= 0x9000;clk_cnt++); //延时处理
 250   1          connect_USB();                                                                 //连接到USB总线
 251   1      }
 252          
 253          
 254          /************************************************************
 255          ** 函数名称: Get_D12_FirmwareVer()
 256          ** 功能描述: 重新连接USB总线
 257          ** 输    入: 无
 258          ** 输    出: 16bit整数,如0x0500表示D12固件软件版本号为5.00
 259          ************************************************************/
 260          INT16U Get_D12_FirmwareVer(void)
 261          {
 262   1              return 0x0500;                                  //D12固件软件版本号为5.00
 263   1      }
 264          
 265          /************************************************************
 266          ** 函数名称: D12_ReadChipID()
 267          ** 功能描述: 读取芯片ID
 268          ** 输   入: 无
 269          ** 输   出: 芯片的ID号
 270          ************************************************************/
 271          INT16U D12_ReadChipID(void)
 272          {
 273   1              INT16U i,j;
 274   1      
 275   1              if(bEPPflags.bits.in_isr == 0)
 276   1                      DISABLE();
 277   1      
 278   1              outportb(D12_COMMAND, 0xFD);            //发送读PDIUSBD12芯片ID号命令   
 279   1              i=inportb(D12_DATA);                            //读取ID号低字节
 280   1              j=inportb(D12_DATA);                            //读取ID号高位字节
 281   1              i += (j<<8);                                            //组成16位的PDIUSBD12芯片ID号
 282   1      
 283   1              if(bEPPflags.bits.in_isr == 0)
 284   1                      ENABLE();
 285   1      
 286   1              return i;
 287   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    539    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       3
   IDATA SIZE       =     80    ----
   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 + -