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

📄 d12ci.lst

📁 vC++读写HID_USB设备,包含hid_usb的固件程序和上位机程序
💻 LST
字号:
C51 COMPILER V7.50   D12CI                                                                 03/24/2008 11:06:13 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE D12CI.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "D12HAL.h"
   2          #include "d12ci.h"
   3          #include "mytype.h"
   4          #include "uart0.h"
   5          
   6          /************************************************************
   7          ** 函数名称: uint16 readchipid(void)
   8          ** 功能描述: 读取芯片ID
   9          ** 输   入: 无
  10          ** 输   出: 芯片的ID号
  11          ************************************************************/
  12          uint16 readchipid(void)
  13          {
  14   1              uint8 idata i;
  15   1              uint16 idata chipid;
  16   1              
  17   1              WriteUsbCommand(0xfd);                          //发送读PDIUSBD12芯片ID号命令                   
  18   1              i = ReadUsbData();                              //读取ID号低字节
  19   1              chipid = ReadUsbData();                 //读取ID号高位字节
  20   1              chipid = (chipid << 8) + i;             //组成16位的PDIUSBD12芯片ID号
  21   1      #ifdef debug
                      PutString0("Read D12's ChipID. ID is: 0x",200);
                      PutUint320((uint32)chipid,16);
                      if(0 == chipid)
                              PutString0("0000. Error!",12);
                      NextLine0();
              #endif
  28   1              return chipid;
  29   1      }
  30          
  31                  /*****************************************
  32                          与CPU 无关, 与 USB相关的函数
  33                  *****************************************/
  34          
  35          
  36          /************************************************************
  37          ** 函数名称: void D12_SetAddressEnable(uint8 bAddress,uint8 bEnable)
  38          ** 功能描述: 设置地址/使能
  39          ** 输   入: uint8 bAddress:  地址
  40                           uint8 bEnable :  0 --- 禁止
  41                                                    1 --- 使能
  42          ** 输   出: 无
  43          ************************************************************/
  44          void D12_SetAddressEnable(uint8 idata bAddress, uint8 idata bEnable)
  45          {
  46   1              WriteUsbCommand(0xD0);                          //输出设置地址/使能指令
  47   1              if(bEnable)
  48   1              {
  49   2                      bAddress |= 0x80;               //bit7置1,使能
  50   2              #ifdef debug
                              PutString0("Set Address. Address : ",200);
                              if(bAddress != 0x80)
                                      PutUint320((uint32)(bAddress & 0x7f),10);
                              else
                                      PutChar0('0');
C51 COMPILER V7.50   D12CI                                                                 03/24/2008 11:06:13 PAGE 2   

                              NextLine0();
                      #endif
  58   2              }
  59   1              WriteUsbData(bAddress);                 //输出设置值
  60   1      }
  61          
  62          
  63          /************************************************************
  64          ** 函数名称: void D12_SetEndpointEnable(uint8 bEnable)
  65          ** 功能描述: 设置端点使能
  66          ** 输   入: uint8 bEnable :  0 --- 禁止
  67                                                    1 --- 允许
  68          ** 输   出: 无
  69          ************************************************************/
  70          void D12_SetEndpointEnable(uint8 idata bEnable)
  71          {
  72   1              WriteUsbCommand(0xD8);                          //输出设置端点使能指令
  73   1              if(bEnable)
  74   1              {
  75   2                      WriteUsbData(0x01);                     //设置端点允许
  76   2              #ifdef debug
                              PutString0("Set Endpoint enable.\r\n",200);
                      #endif
  79   2              }
  80   1              else
  81   1              {
  82   2                      WriteUsbData(0x00);                     //设置端点禁止
  83   2              #ifdef debug
                              PutString0("Set Endpoint disable.\r\n",200);
                      #endif
  86   2              }
  87   1      }
  88          
  89          /************************************************************
  90          ** 函数名称: void D12_SetMode(uint8 bConfig,uint8 bClkDiv)
  91          ** 功能描述: 模式设置
  92          ** 输   入: uint8 bConfig:  配置字节信息
  93                           uint8 bClkDiv:  分频系数
  94          ** 输   出: 无
  95          ************************************************************/
  96          void D12_SetMode(uint8 idata bConfig,uint8 idata bClkDiv)
  97          {
  98   1              WriteUsbCommand(0xF3);                  //输出设置模式指令
  99   1              WriteUsbData(bConfig);                  //输出配置字节信息
 100   1              WriteUsbData(bClkDiv);                  //输出时钟分频因数字节
 101   1      }
 102          
 103          /************************************************************
 104          ** 函数名称: void D12_SetDMA(uint8 bMode)
 105          ** 功能描述: 设置DMA工作方式设置
 106          ** 输   入: uint8 bMode:       设置值
 107          ** 输   出: 无
 108          ************************************************************/
 109          void D12_SetDMA(uint8 idata bMode)
 110          {
 111   1              WriteUsbCommand(0xFB);                          //设置DMA工作方命令
 112   1              WriteUsbData(bMode);                    //输出设置值
 113   1      }
 114          
 115          /************************************************************
 116          ** 函数名称: uint16 D12_ReadInterruptRegister(void)
 117          ** 功能描述: 读取中断寄存器值
C51 COMPILER V7.50   D12CI                                                                 03/24/2008 11:06:13 PAGE 3   

 118          ** 输   入: 无
 119          ** 输   出: 中断寄存器值
 120          ************************************************************/
 121          uint16 D12_ReadInterruptRegister(void)
 122          {
 123   1              uint8 idata b1;
 124   1              uint16 idata j;
 125   1      
 126   1              WriteUsbCommand(0xF4);                          //读取中断寄存器命令
 127   1              b1 = ReadUsbData();                             //读取低8位字节
 128   1              j = ReadUsbData();                              //读取高8位字节
 129   1      
 130   1              j = j << 8;                     
 131   1              j += b1;                                        //组合为16位
 132   1      #ifdef debug
                      PutString0("Interrupt Register : 0x",200);
                      PutUint320((uint32)j,16);       //以16进制显示中断寄存器
                      NextLine0();
              #endif
 137   1              return j;
 138   1      }
 139          
 140          /************************************************************
 141          ** 函数名称: uint8 D12_SelectEndpoint(uint8 bEndp)
 142          ** 功能描述: 端点选择,将内部指针初始化到选择的缓冲区起始位置
 143          ** 输   入: uint8 bEndp:   端点索引号,取值0 ~ 5
 144          ** 输   出: 读出的字节
 145          ************************************************************/
 146          uint8 D12_SelectEndpoint(uint8 idata bEndp)
 147          {
 148   1              uint8 idata c;
 149   1      
 150   1              WriteUsbCommand(bEndp);                 //端点选择
 151   1              c = ReadUsbData();                              //读出一个字节
 152   1      
 153   1              return c;
 154   1      }
 155          
 156          /************************************************************
 157          ** 函数名称: uint8 D12_ReadEndpointStatus(uint8 bEndp)
 158          ** 功能描述: 读取端点状态
 159          ** 输   入: uint8 bEndp:   端点索引号,取值0 ~ 5
 160          ** 输   出: 端点状态
 161          ************************************************************/
 162          uint8 D12_ReadEndpointStatus(uint8 idata bEndp)
 163          {
 164   1              uint8 c;
 165   1      
 166   1              WriteUsbCommand(0x80 + bEndp);          //读取端点状态命令
 167   1              c = ReadUsbData();                              //读取端点状态
 168   1              return c;
 169   1      }
 170          
 171          /************************************************************
 172          ** 函数名称: uint8 D12_ReadLastTransactionStatus(uint8 bEndp)
 173          ** 功能描述: 读取最后处理状态寄存器

⌨️ 快捷键说明

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