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

📄 init.lst

📁 该代码是基于菲利普ISP1581USB接口芯片与STC89C51单片机的USB2.0开发代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   INIT                                                                  10/30/2007 16:17:28 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE INIT
OBJECT MODULE PLACED IN init.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE init.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************Copyright (c)**************************************************
   2          
   3          ** 文   件   名: init.c
   4          ** 最后修改日期: 2006年10月19日
   5          ** 描        述: USB驱动程序软件包: D14 设备端驱动程序 初始化程序
   6          ** 版        本: V1.0
   7          **********************************************************************************************************
             -/
   8          
   9          
  10          #include "standard.h"
  11          #include "Kernel.h"
  12          #include "D14.h"
  13          
  14          //外部函数
  15          extern void Start_mSEC_Timer(Data);
  16          extern void Start_SEC_Timer(Data);
  17          extern KERNEL Kernel_Flag;
  18          extern USB_INT_FLAG     USB_Int_Flag;
  19          extern USB_DEVICE USB_Device;
  20          extern UI Temp,PIO_Count;
  21          extern UC Device_Config_Value;
  22          extern UC idata Endpt_FIFO[MAX_BUF];
  23          extern void DMA_Init(void);
  24          extern ULI bytecount;
  25          extern UC Address_Count;
  26          extern UC xdata Address[20];
  27          
  28          //内部函数
  29          void Init_D14_SFR(void);
  30          void Init_Endpoint(void);
  31          
  32          void Init_Main(void);
  33          void Init_8051(void);
  34          void Init_D14(void);
  35          
  36          //变量定义
  37          TIMER Timer;
  38          DATA_SWAP       idata   Data_Swap;
  39          DMA_INT_FLAG    DMA_Int_Flag;
  40          
  41          UI      count;
  42          UC      Device_Config_Value;
  43          UC      Type;
  44          
  45          UI      idata   Init_Count;
  46          
  47          volatile D14_CNTRL_REG  xdata   D14_Cntrl_Reg   _at_    0x0000;
  48          
  49          D14_CNTRL_REG xdata *D14_Cntrl_Ptr = &D14_Cntrl_Reg;
  50          
  51          
  52          //////////////////////////////////////////////////////////
  53          
  54          
C51 COMPILER V7.50   INIT                                                                  10/30/2007 16:17:28 PAGE 2   

  55          
  56          //初始化主函数 
  57          void Init_Main(void)
  58          {
  59   1      
  60   1              ISP1581_CS = 1;         //关1581片选
  61   1              bytecount = 0;
  62   1              PIO_Count = 64;
  63   1              
  64   1          Type = 0;
  65   1              USB_Device.BITS.DMA_Test_Mode = PIO_Test;
  66   1              
  67   1              //初始化8051
  68   1              Init_8051();                                                    
  69   1              
  70   1              ISP1581_CS = 0;         //片选ISP1581
  71   1      
  72   1              D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 0; 
  73   1              LED=1;
  74   1      
  75   1              //检查是否连接了ISP1581
  76   1              do
  77   1              {
  78   2                      //复位 ISP1581                  
  79   2                      ISP1581_RESET = 0;
  80   2                      Start_mSEC_Timer(100);
  81   2                      ISP1581_RESET = 1;
  82   2                      Start_mSEC_Timer(100);
  83   2                      
  84   2                      //读取接口器件是否ISP1581            
  85   2                      if(D14_Cntrl_Ptr->D14_CHIP_ID_MBYTE == 0x81 && D14_Cntrl_Ptr->D14_CHIP_ID_MSB == 0x15)
  86   2                              break;
  87   2              }while(1);
  88   1              LED=0;
  89   1              
  90   1              //初始化标志寄存器
  91   1              USB_Int_Flag.VALUE = 0;//USB中断标志寄存器
  92   1              DMA_Int_Flag.VALUE = 0;//DMA中断标志寄存器
  93   1              Kernel_Flag.VALUE = 0;//ISP1581状态标志寄存器
  94   1              
  95   1              //设置为设备默认状态
  96   1              Kernel_Flag.BITS.HS_FS_State = FULL_SPEED;//设置为全速状态
  97   1              HS_FS_LED = FULL_SPEED_LED;
  98   1              
  99   1              //初始化ISP1581
 100   1              Init_D14();
 101   1      }
 102          
 103          
 104          
 105          //初始化8051
 106          void Init_8051(void)
 107          {
 108   1              
 109   1              //定义定时器方式-定时器0方式1
 110   1              TMOD = 0x01;
 111   1              AUXR|=0x03;
 112   1              //初始化定时器时间
 113   1              Timer.mSEC_Scale = 4000;
 114   1              Timer.Hundred_mSEC_Scale = 40000;
 115   1              
 116   1      
C51 COMPILER V7.50   INIT                                                                  10/30/2007 16:17:28 PAGE 3   

 117   1              //开定时器中断
 118   1              ET0=1;                  
 119   1              PT0 = 1;  //定时器高优先级
 120   1      
 121   1              EA = 1;//开总中断                               
 122   1      }
 123          
 124          
 125          //D14初始化函数
 126          void Init_D14(void)
 127          {
 128   1              //初始化ISP1581寄存器
 129   1              Init_D14_SFR();
 130   1              
 131   1              //初始化ISP1581端点
 132   1              Init_Endpoint();                
 133   1              
 134   1              //初始化ISP1581工作标志寄存器
 135   1              USB_Device.BITS.State = USB_Default;
 136   1              Device_Config_Value = 0;
 137   1              USB_Device.BITS.Alter_Interface = 0;
 138   1              USB_Device.BITS.Big_Endian = On;
 139   1              Kernel_Flag.BITS.Tx_Done = 0;
 140   1              EX0 = 1;                //开ISP1581中断
 141   1      }
 142          
 143          
 144          //D14寄存器初始化
 145          void Init_D14_SFR(void)
 146          {
 147   1              //设置模式:时钟始终有效,全局中断使能,片选唤醒
 148   1              D14_Cntrl_Reg.D14_MODE.VALUE |= 0x8C;
 149   1              
 150   1              //设置全部中断为模式1,电平触发,低电平有效
 151   1              D14_Cntrl_Reg.D14_INT_CONFIG.VALUE = 0x54;                      
 152   1              
 153   1              //设置中断使能寄存器
 154   1              //注释: D14_Cntrl_Reg.D14_INT_ENABLE.VALUE = 0x39fd0000;先发送高字节
 155   1              //0x14(xdata)=0x39
 156   1              //0x15(xdata)=0xfd
 157   1              //0x16(xdata)=00
 158   1              //0x17(xdata)=00
 159   1              //使用端点0和端点1、端点2
 160   1              D14_Cntrl_Reg.D14_INT_ENABLE.VALUE = 0x39fd0000;        
 161   1      }
 162          
 163          
 164          
 165          //初始化D14各端点
 166          void Init_Endpoint(void)
 167          {
 168   1              //设置全速端点
 169   1              if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
 170   1              {
 171   2                      //设置全速端点FIFO大小
 172   2      
 173   2                      //Interrupt Out MaxPacketSize Endpoint
 174   2                      D14_Cntrl_Reg.D14_ENDPT_INDEX = 2;//选择端点
 175   2                      D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;      //FIFO=64bytes
 176   2                      
 177   2                      //Interrupt In MaxPacketSize Endpoint
 178   2                      D14_Cntrl_Reg.D14_ENDPT_INDEX = 3;//选择端点

⌨️ 快捷键说明

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