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

📄 d12driver.lst

📁 PDIUSBD12开发实用源程序,该实例让你更快地掌握USB的开发
💻 LST
📖 第 1 页 / 共 2 页
字号:
 138   1              if(len != 0)
 139   1                      bEPPflags.bits.ep1_rxdone = 1;          //标志接收到数据
 140   1      }
 141          
 142          /*******************************************************************
 143          ** 函数名称: ep2_txdone()
 144          ** 功能描述: 端点2 IN(发送)处理处理函数
 145          ** 输    入: 无
 146          ** 输    出: 无
 147          ********************************************************************/
 148          void ep2_txdone(void)
 149          {
 150   1              D12_ReadLastTransactionStatus(5);               //清中断标志位
 151   1      }
 152          
 153          /*******************************************************************
 154          ** 函数名称: ep2_rxdone()
 155          ** 功能描述: 端点2 OUT(接收)处理处理函数
 156          ** 输    入: 无
 157          ** 输    出: 无
 158          ********************************************************************/
 159          void ep2_rxdone(void)
 160          {
 161   1              INT8U len;
 162   1              
 163   1              D12_ReadLastTransactionStatus(4);                                       //清中断标志位
 164   1              len = D12_ReadEndpoint(4,EP2_PACKET_SIZE,EpBuf);        //读取缓冲区中的数据
 165   1              if (len != 0)
 166   1                      bEPPflags.bits.ep2_rxdone = 1;
 167   1      }
 168          
 169          void timer_interrupt(void) interrupt 1
 170          {
 171   1          DISABLE();
 172   1              TL0 = 0XB0;
 173   1              TH0 = 0X3C;  
 174   1          time_count++;
 175   1      
 176   1          if(time_count == 10)
 177   1          {
 178   2             time_count = 0;
C51 COMPILER V7.06   D12DRIVER                                                             04/11/2007 07:18:06 PAGE 4   

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

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


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