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

📄 d12driver.lst

📁 USB芯片PDIUSBD12的挂起与恢复源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 136   1      }
 137          
 138          /*******************************************************************
 139          ** 函数名称: ep1_txdone()
 140          ** 功能描述: 端点1 OUT(接收)处理处理函数
 141          ** 输    入: 无
 142          ** 输    出: 无
 143          ********************************************************************/
 144          void ep1_rxdone(void)
 145          {
 146   1              unsigned char len;
 147   1      
 148   1              D12_ReadLastTransactionStatus(2);                //清中断标志位
 149   1              len = D12_ReadEndpoint(2,sizeof(GenEpBuf),GenEpBuf);    //读取数据
 150   1              if(len != 0)
 151   1                      bEPPflags.bits.ep1_rxdone = 1;          //标志接收到数据
 152   1      }
 153          
 154          /*******************************************************************
 155          ** 函数名称: ep2_txdone()
 156          ** 功能描述: 端点2 IN(发送)处理处理函数
 157          ** 输    入: 无
 158          ** 输    出: 无
 159          ********************************************************************/
 160          void ep2_txdone(void)
 161          {
 162   1              D12_ReadLastTransactionStatus(5);               //清中断标志位
 163   1      }
 164          
 165          /*******************************************************************
 166          ** 函数名称: ep2_rxdone()
 167          ** 功能描述: 端点2 OUT(接收)处理处理函数
 168          ** 输    入: 无
 169          ** 输    出: 无
 170          ********************************************************************/
 171          void ep2_rxdone(void)
 172          {
 173   1              INT8U len;
 174   1              
 175   1              D12_ReadLastTransactionStatus(4);                                       //清中断标志位
 176   1              len = D12_ReadEndpoint(4,EP2_PACKET_SIZE,EpBuf);        //读取缓冲区中的数据
 177   1              if (len != 0)
 178   1                      bEPPflags.bits.ep2_rxdone = 1;
C51 COMPILER V7.06   D12DRIVER                                                             12/03/2004 14:38:17 PAGE 4   

 179   1      }
 180          
 181          /***********************************************************************
 182          ** 函数名称: void Usb_Exception(void)
 183          ** 功能描述: D12中断服务程序
 184          *************************************************************************/
 185          void Usb_Exception(void)  interrupt 0
 186          {
 187   1              INT16U i_st;
 188   1              
 189   1              DISABLE();                                              //进入D12中断服务程序时关中断
 190   1      
 191   1              bEPPflags.bits.in_isr = 1;
 192   1              i_st = D12_ReadInterruptRegister();                             //读取PDIUSBD12中断寄存器值
 193   1              if(i_st != 0) {
 194   2                      if(i_st & D12_INT_BUSRESET)
 195   2                              bEPPflags.bits.bus_reset = 1;                   //USB总线复位标志
 196   2                      if(i_st & D12_INT_EOT)
 197   2                              dma_eot();                                                              //DMA传输技术处理
 198   2                      if(i_st & D12_INT_SUSPENDCHANGE)
 199   2                              bEPPflags.bits.suspend = 1;                             //挂起改变标志置1
 200   2                      if(i_st & D12_INT_ENDP0IN)
 201   2                              ep0_txdone();                                                   //控制端点发送数据处理
 202   2                      if(i_st & D12_INT_ENDP0OUT)
 203   2                              ep0_rxdone();                                                   //控制端点接收数据处理
 204   2                      if(i_st & D12_INT_ENDP1IN)
 205   2                              ep1_txdone();                                                   //端点 1发送数据处理
 206   2                      if(i_st & D12_INT_ENDP1OUT)
 207   2                              ep1_rxdone();                                                   //端点 1接收数据处理
 208   2                      if(i_st & D12_INT_ENDP2IN)
 209   2                              ep2_txdone();                                                   //端点 2发送数据处理
 210   2                      if(i_st & D12_INT_ENDP2OUT)
 211   2                              ep2_rxdone();                                                   //端点 2接收数据处理
 212   2              }
 213   1              bEPPflags.bits.in_isr = 0;
 214   1              
 215   1              ENABLE();                                                       //退出D12中断服务程序时开中断
 216   1      }
 217          
 218          
 219          /************************************************************
 220          ** 函数名称: disconnect_USB() 
 221          ** 功能描述: 断开USB总线
 222          ************************************************************/
 223          void disconnect_USB(void)
 224          {
 225   1              // Initialize D12 configuration
 226   1              D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
 227   1      }       //SoftConnect 断开
 228          
 229          
 230          /************************************************************
 231          ** 函数名称: connect_USB()
 232          ** 功能描述: 连接USB总线
 233          ************************************************************/
 234          void connect_USB(void)
 235          {
 236   1              // Initialize D12 configuration
 237   1              D12_SetDMA(0x00);
 238   1              D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
 239   1      }       //SoftConnect 连接上,并设置为无LazyClock,模式为非同步模式
 240          
C51 COMPILER V7.06   D12DRIVER                                                             12/03/2004 14:38:17 PAGE 5   

 241          
 242          /************************************************************
 243          ** 函数名称: reconnect_USB()
 244          ** 功能描述: 重新连接USB总线
 245          ************************************************************/
 246          void reconnect_USB(void)
 247          {
 248   1              INT16U clk_cnt;
 249   1      
 250   1              disconnect_USB();                                                          //断开芯片与USB总线连接
 251   1          for (clk_cnt = 0;clk_cnt<= 0x9000;clk_cnt++); //延时处理
 252   1          connect_USB();                                                                 //连接到USB总线
 253   1      }
 254          
 255          
 256          /************************************************************
 257          ** 函数名称: Get_D12_FirmwareVer()
 258          ** 功能描述: 重新连接USB总线
 259          ** 输    入: 无
 260          ** 输    出: 16bit整数,如0x0500表示D12固件软件版本号为5.00
 261          ************************************************************/
 262          INT16U Get_D12_FirmwareVer(void)
 263          {
 264   1              return 0x0500;                                  //D12固件软件版本号为5.00
 265   1      }


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