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

📄 pdiusbd12.lst

📁 HID 设备测试程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PDIUSBD12
OBJECT MODULE PLACED IN PDIUSBD12.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE PDIUSBD12.c BROWSE DEFINE(__DEBUG__) DEBUG OBJECTEXTEND

line level    source

   1          /*===============================================================================//
   2          //== 文 件 名:PDIUSBD12.c
   3          //== author      :gnsusn
   4          //== 说    明:对PDIUSBD12芯片的操作
   5          //== 修改日志:2008.8.13 创建文件
   6          //== 
   7          //===============================================================================*/
   8          #include "PDIUSBD12.h"
   9          #include "USB.h"
  10          #include "functions.h"
  11          
  12          //***************************************************************************************
  13          //=======================================================================================
  14          #define D12_COMMAND_ADD (*(unsigned char volatile xdata*)0x6001)
  15          #define D12_DATA_ADD    (*(unsigned char volatile xdata*)0x6000)
  16          
  17          extern unsigned char            usb_transmit_buf[8];    //== 用于给USB发送数据的缓冲区,在USB.c中定义
  18          extern EPPFLAGS                         bEPPflags;                              //== 程序运行状态标志,在USB.c中定义
  19          extern CONTROL_DATA_BUFF        Control_Data;                   //== setup 包,在USB.c中定义
  20          
  21          D12_INTERRUPT_REGISTER          D12_interrupt_register; //== D12中断寄存器的标志
  22          D12_LAST_STATUS                         D12_last_status;                //== 端点的最后处理状态
  23           
  24          /****************************** PDIUSBD12硬件提取层 ******************************/
  25          //===============================================================================//
  26          //== 函 数 名:write_D12_command
  27          //== 功    能:向D12写入一个字节的命令
  28          //== 说    明:
  29          //== 时    间:2008.8.13 创建函数
  30          //== 入口参数:D12_command:向D12写入的命令
  31          //== 返 回 值:0
  32          //===============================================================================//
  33          unsigned char write_D12_command(unsigned char D12_command)
  34          {
  35   1              D12_COMMAND_ADD = D12_command;  
  36   1              return 0;
  37   1      }
  38          
  39          //===============================================================================//
  40          //== 函 数 名:write_a_D12_data
  41          //== 功    能:向D12写入一个字节的命令
  42          //== 说    明:
  43          //== 时    间:2008.8.13 创建函数
  44          //== 入口参数:D12_data:向D12写入的数据
  45          //== 返 回 值:0
  46          //===============================================================================//
  47          unsigned char write_a_D12_data(unsigned char D12_data)       
  48          {
  49   1              D12_DATA_ADD = D12_data;
  50   1              return 0;
  51   1      }
  52          
  53          //===============================================================================//
  54          //== 函 数 名:read_a_usb_data
  55          //== 功    能:从D12读出一个字节
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 2   

  56          //== 说    明:
  57          //== 时    间:2008.8.13 创建函数
  58          //== 入口参数:无
  59          //== 返 回 值:ret:从D12读出的数据
  60          //===============================================================================//
  61          unsigned char read_a_D12_data(void)
  62          {
  63   1              unsigned char ret;
  64   1      
  65   1              ret = D12_DATA_ADD;
  66   1              return ret;
  67   1      }
  68          
  69          /**************************** PDIUSBD12硬件提取层结束 ****************************/
  70          
  71          
  72          /****************************** PDIUSBD12硬件命令层 ******************************/
  73          //===============================================================================//
  74          //== 函 数 名:set_usb_addr
  75          //== 功    能:设置D12的地址
  76          //== 说    明:开机后单片机设置D12的地址,并使能这个地址,这个地址默认为0
  77          //==             :设置地址使能写入一个字节
  78          //==             :D7:置1使能该功能
  79          //==             :D6~D0:写入的字节即为地址
  80          //== 时    间:2008.8.13 创建函数
  81          //== 入口参数:无
  82          //== 返 回 值:0
  83          //===============================================================================//
  84          unsigned char set_usb_addr(unsigned char addr)
  85          {
  86   1              #ifdef __DEBUG__
  87   1                      Print_Msg("Runing set_usb_addr()!\r\n");
  88   1              #endif
  89   1      
  90   1              write_D12_command(Set_Address);
  91   1              write_a_D12_data(Address_Enable|addr);                                  //== Address_Enable:0x80 使能这个地址
  92   1      
  93   1              #ifdef __DEBUG__
  94   1                      Print_Msg("     设置地址.....................!\r\n");
  95   1                      Print_Msg("             地址为:");
  96   1                      Print_Long(addr);
  97   1                      Print_Msg("!\r\n");
  98   1              #endif
  99   1      
 100   1              return 0;
 101   1      }
 102          
 103          //===============================================================================//
 104          //== 函 数 名:set_endpoint_enable
 105          //== 功    能:使能端点0
 106          //== 说    明:通过设置设置地址(设备地址)/使能命令后才可使能(端点0)普通/同步端点
 107          //== 时    间:2008.8.13 创建函数
 108          //== 入口参数:无
 109          //== 返 回 值:0
 110          //===============================================================================//
 111          unsigned char set_endpoint_enable(void)
 112          {
 113   1              #ifdef __DEBUG__
 114   1                      Print_Msg("Runing set_endpoint_enable()!\r\n");
 115   1              #endif
 116   1              #ifdef __DEBUG__
 117   1                      Print_Msg("     使能端点0!\r\n");
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 3   

 118   1              #endif
 119   1      
 120   1              write_D12_command(Set_Endpoint_Enable);
 121   1              write_a_D12_data(0x01);                                                                 //== 值1 表示普通/同步端点使能
 122   1              return 0;
 123   1      }
 124          
 125          //===============================================================================//
 126          //== 函 数 名:set_endpoint_disable
 127          //== 功    能:禁止端点0
 128          //== 说    明:通过设置设置地址(设备地址)/使能命令后才可使能(端点0)普通/同步端点
 129          //== 时    间:2008.8.13 创建函数
 130          //== 入口参数:无
 131          //== 返 回 值:0
 132          //===============================================================================//
 133          unsigned char set_endpoint_disable(void)
 134          {
 135   1              #ifdef __DEBUG__
 136   1                      Print_Msg("Runing set_endpoint_disable()!\r\n");
 137   1              #endif
 138   1              #ifdef __DEBUG__
 139   1                      Print_Msg("     禁止端点0!\r\n");
 140   1              #endif
 141   1              write_D12_command(Set_Endpoint_Enable);
 142   1              write_a_D12_data(0x00);                                                                 //== 值1 表示普通/同步端点使能
 143   1              return 0;
 144   1      }
 145          //===============================================================================//
 146          //== 函 数 名:read_interrupt_register
 147          //== 功    能:从D12读出中断状态寄存器
 148          //== 说    明:
 149          //== 时    间:2008.8.13 创建函数
 150          //== 入口参数:无
 151          //== 返 回 值:0
 152          //===============================================================================//
 153          unsigned char read_interrupt_register(void)
 154          {
 155   1              #ifdef __DEBUG__
 156   1                      Print_Msg("Runing read_interrupt_register()!\r\n");
 157   1              #endif
 158   1      
 159   1              write_D12_command(Read_Interrupt_Register);
 160   1              D12_interrupt_register.Register[0] = read_a_D12_data();
 161   1              D12_interrupt_register.Register[1] = read_a_D12_data();
 162   1      
 163   1              #ifdef __DEBUG__
 164   1                      Print_Msg("     中断寄存器数据是:");
 165   1                      Print_Hex(D12_interrupt_register.Register, 2);
 166   1                      Print_Msg("\r\n");
 167   1              #endif
 168   1              return 0;
 169   1      }
 170          
 171          //===============================================================================//
 172          //== 函 数 名:select_endpoint
 173          //== 功    能:选择端点
 174          //== 说    明:
 175          //== 时    间:2008.8.13 创建函数
 176          //== 入口参数:endp:端点索引号(0-5)
 177          //== 返 回 值:bit0--1表示缓冲区满,0表示缓冲区空
 178          //             bit1--1表示端点处于停止状态,0表示运行
 179          //===============================================================================//
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 4   

 180          unsigned char select_endpoint(unsigned char endp)
 181          {
 182   1              unsigned char ret;
 183   1              #ifdef __DEBUG__        //== 打印调试信息
 184   1                      Print_Msg("Runing select_endpoint()!\r\n");
 185   1              #endif
 186   1      
 187   1              write_D12_command(Select_EndPoint+endp);
 188   1              ret = read_a_D12_data();
 189   1      
 190   1              #ifdef __DEBUG__
 191   1                      Print_Msg("     选择了端点:");
 192   1                      Print_Long(endp);
 193   1                      Print_Msg("     端点状态:");
 194   1                      Print_Hex(&ret, 1);
 195   1                      Print_Msg("!\r\n");
 196   1              #endif
 197   1      
 198   1              return ret;
 199   1      }
 200          
 201          //===============================================================================//
 202          //== 函 数 名:read_last_status
 203          //== 功    能:读取端点最后处理状态,命令为0x40+endp
 204          //== 说    明:该命令同时复位中断寄存器中的相应位,并将状态清零,表示已读取。
 205          //== 时    间:2008.8.13 创建函数
 206          //== 入口参数:endp:端点索引号(0-5)
 207          //== 返 回 值:端点最后处理状态寄存器
 208          //===============================================================================//
 209          unsigned char read_last_status(unsigned char endp)
 210          {
 211   1              unsigned char ret;
 212   1              #ifdef __DEBUG__        //== 打印调试信息
 213   1                      Print_Msg("Runing read_last_status()!\r\n");
 214   1              #endif
 215   1      
 216   1              write_D12_command(Read_Last_Status+endp);
 217   1              ret = read_a_D12_data();
 218   1      
 219   1              #ifdef __DEBUG__
 220   1                      Print_Msg("     读取端点 ");
 221   1                      Print_Long(endp);
 222   1                      Print_Msg(" 最后处理状态状态,");
 223   1                      Print_Msg("     端点状态是:");
 224   1                      Print_Hex(&ret, 1);
 225   1                      Print_Msg("!\r\n");
 226   1              #endif
 227   1      
 228   1              return ret;
 229   1      }
 230          
 231          //===============================================================================//
 232          //== 函 数 名:set_endpoint_status
 233          //== 功    能:设置端点状态,停止或运行端点,命令为0x40+endp

⌨️ 快捷键说明

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