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

📄 d12ci.lst

📁 这是USBD12芯片与PC机通讯的单片机固件程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   D12CI                                                                 11/16/2007 15:11:12 PAGE 1   


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

line level    source

   1          /****************************************Copyright (c)**************************************************
   2          **                               广州周立功单片机发展有限公司
   3          **                                     研    究    所
   4          **                                        产品一部 
   5          **
   6          **                                 http://www.zlgmcu.com
   7          **
   8          ** 文   件   名: D12CI.c
   9          ** 最后修改日期: 2004年11月15日
  10          ** 描        述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 接口控制驱动层
  11          ** 版        本: V5.0
  12          **********************************************************************************************************
             -/
  13          
  14          #include <reg922.h>
  15          #include "D12Config.h"
  16          #include "D12HAL.h"
  17          #include "D12CI.h"
  18          #include "Chap_9.h"
  19          
  20                          /*****************************************
  21                                  与CPU 无关, 与 USB相关的函数
  22                          *****************************************/
  23          
  24          /************************************************************
  25          ** 函数名称: D12_ReadChipID()
  26          ** 功能描述: 读取芯片ID
  27          ** 输   入: 无
  28          ** 输   出: 芯片的ID号
  29          ************************************************************/
  30          INT16U D12_ReadChipID(void)
  31          {
  32   1              INT16U i,j;
  33   1      
  34   1              if(bEPPflags.bits.in_isr == 0)
  35   1                      DISABLE();
  36   1      
  37   1              outportb(D12_COMMAND, 0xFD);            //发送读PDIUSBD12芯片ID号命令   
  38   1              i=inportb(D12_DATA);                            //读取ID号低字节
  39   1              j=inportb(D12_DATA);                            //读取ID号高位字节
  40   1              i += (j<<8);                                            //组成16位的PDIUSBD12芯片ID号
  41   1      
  42   1              if(bEPPflags.bits.in_isr == 0)
  43   1                      ENABLE();
  44   1      
  45   1              return i;
  46   1      }
  47          
  48          
  49          /************************************************************
  50          ** 函数名称: D12_SetAddressEnable()
  51          ** 功能描述: 设置地址/使能
  52          ** 输   入: INT8U bAddress:  地址
  53                           INT8U bEnable :  0 --- 禁止
  54                                                    1 --- 使能
C51 COMPILER V7.20   D12CI                                                                 11/16/2007 15:11:12 PAGE 2   

  55          ** 输   出: 无
  56          ************************************************************/
  57          void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable)
  58          {
  59   1              if(bEPPflags.bits.in_isr == 0)
  60   1                      DISABLE();
  61   1      
  62   1              outportb(D12_COMMAND, 0xD0);    //输出设置地址/使能指令
  63   1              if(bEnable)
  64   1                      bAddress |= 0x80;                       //bit7置1,使能
  65   1              outportb(D12_DATA, bAddress);   //输出设置值
  66   1      
  67   1              if(bEPPflags.bits.in_isr == 0)
  68   1                      ENABLE();
  69   1      }
  70          
  71          
  72          /************************************************************
  73          ** 函数名称: D12_SetEndpointEnable()
  74          ** 功能描述: 设置端点使能
  75          ** 输   入: INT8U bEnable :  0 --- 禁止
  76                                                    1 --- 允许
  77          ** 输   出: 无
  78          ************************************************************/
  79          void D12_SetEndpointEnable(INT8U bEnable)
  80          {
  81   1              if(bEPPflags.bits.in_isr == 0)
  82   1                      DISABLE();
  83   1      
  84   1              outportb(D12_COMMAND, 0xD8);    //输出设置端点使能指令
  85   1              if(bEnable)
  86   1                      outportb(D12_DATA, 1);          //设置端点允许
  87   1              else
  88   1                      outportb(D12_DATA, 0);          //设置端点禁止
  89   1      
  90   1              if(bEPPflags.bits.in_isr == 0)
  91   1                      ENABLE();
  92   1      }
  93          
  94          /************************************************************
  95          ** 函数名称: void D12_SetMode()
  96          ** 功能描述: 模式设置
  97          ** 输   入: INT8U bConfig:  配置字节信息
  98                           INT8U bClkDiv:  分频系数
  99          ** 输   出: 无
 100          ************************************************************/
 101          void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
 102          {
 103   1              if(bEPPflags.bits.in_isr == 0)
 104   1                      DISABLE();
 105   1      
 106   1              outportb(D12_COMMAND, 0xF3);            //输出设置模式指令
 107   1              outportb(D12_DATA, bConfig);            //输出配置字节信息
 108   1              outportb(D12_DATA, bClkDiv);            //输出时钟分频因数字节
 109   1      
 110   1              if(bEPPflags.bits.in_isr == 0)
 111   1                      ENABLE();       
 112   1      }
 113          
 114          /************************************************************
 115          ** 函数名称: void D12_SetDMA()
 116          ** 功能描述: 设置DMA工作方式设置
C51 COMPILER V7.20   D12CI                                                                 11/16/2007 15:11:12 PAGE 3   

 117          ** 输   入: INT8U bMode:       设置值
 118          ** 输   出: 无
 119          ************************************************************/
 120          void D12_SetDMA(INT8U bMode)
 121          {
 122   1              if(bEPPflags.bits.in_isr == 0)
 123   1                      DISABLE();
 124   1      
 125   1              outportb(D12_COMMAND, 0xFB);    //设置DMA工作方命令
 126   1              outportb(D12_DATA, bMode);              //输出设置值
 127   1      
 128   1              if(bEPPflags.bits.in_isr == 0)
 129   1                      ENABLE();                       
 130   1      }
 131          
 132          /************************************************************
 133          ** 函数名称: D12_ReadInterruptRegister()
 134          ** 功能描述: 读取中断寄存器值
 135          ** 输   入: 无
 136          ** 输   出: 中断寄存器值
 137          ************************************************************/
 138          INT16U D12_ReadInterruptRegister(void)
 139          {
 140   1              INT8U b1;
 141   1              INT16U j;
 142   1      
 143   1              outportb(D12_COMMAND, 0xF4);    //读取中断寄存器命令
 144   1              b1 = inportb(D12_DATA);                 //读取低8位字节
 145   1              j = inportb(D12_DATA);                  //读取高8位字节
 146   1      
 147   1              j <<= 8;
 148   1              j += b1;                                                //组合为16位
 149   1      
 150   1              return j;
 151   1      }
 152          
 153          /************************************************************
 154          ** 函数名称: D12_SelectEndpoint()
 155          ** 功能描述: 端点选择,将内部指针初始化到选择的缓冲区起始位置
 156          ** 输   入: INT8U bEndp:   端点索引号,取值0 ~ 5
 157          ** 输   出: 读出的字节
 158          ************************************************************/
 159          INT8U D12_SelectEndpoint(INT8U bEndp)
 160          {
 161   1              INT8U c;
 162   1      
 163   1              if(bEPPflags.bits.in_isr == 0)
 164   1                      DISABLE();
 165   1      
 166   1              outportb(D12_COMMAND, bEndp);   //端点选择
 167   1              c = inportb(D12_DATA);                  //读出一个字节
 168   1      
 169   1              if(bEPPflags.bits.in_isr == 0)
 170   1                      ENABLE();
 171   1      
 172   1              return c;
 173   1      }
 174          
 175          /************************************************************
 176          ** 函数名称: D12_ReadEndpointStatus()
 177          ** 功能描述: 读取端点状态
 178          ** 输   入: INT8U bEndp:   端点索引号,取值0 ~ 5
C51 COMPILER V7.20   D12CI                                                                 11/16/2007 15:11:12 PAGE 4   

 179          ** 输   出: 端点状态
 180          ************************************************************/
 181          #if D12_ReadEndpointStatus_EN
              INT8U D12_ReadEndpointStatus(INT8U bEndp)
              {
                      INT8U c;
              
                      if(bEPPflags.bits.in_isr == 0)
                              DISABLE();
              
                      outportb(D12_COMMAND, 0x80 + bEndp);    //读取端点状态命令
                      c = inportb(D12_DATA);                                  //读取端点状态
              

⌨️ 快捷键说明

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