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

📄 mainloop.lst

📁 USB test code, use P89c52x2 to develop a USB node
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAINLOOP                                                              12/06/2003 10:37:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAINLOOP
OBJECT MODULE PLACED IN Mainloop.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Mainloop.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <string.h>
   3          
   4          #include <reg51.h>                /* special function register declarations   */
   5          
   6          #include "epphal.h"
   7          #include "d12ci.h"
   8          #include "mainloop.h"
   9          #include "usb100.h"
  10          #include "chap_9.h"
  11          #include "protodma.h"
  12          #include "key_s.h"
  13          /*
  14          //*************************************************************************
  15          // USB protocol function pointer arrays
  16          //*************************************************************************
  17          */
  18          
  19          
  20          //USB标准请求
  21          code void (*StandardDeviceRequest[])(void) =
  22          {
  23                  get_status,
  24                  clear_feature,
  25                  reserved,
  26                  set_feature,
  27                  reserved,
  28                  set_address,
  29                  get_descriptor,
  30                  reserved,
  31                  get_configuration,
  32                  set_configuration,
  33                  get_interface,
  34                  set_interface,
  35                  reserved,
  36                  reserved,
  37                  reserved,
  38                  reserved
  39                  };
  40          
  41          //用户厂商请求
  42          code void (*VendorDeviceRequest[])(void) =
  43          {
  44                  reserved,
  45                  reserved,
  46                  reserved,
  47                  reserved,
  48                  reserved,
  49                  reserved,
  50                  reserved,
  51                  reserved,
  52                  reserved,
  53                  reserved,
  54                  reserved,
  55                  reserved,
C51 COMPILER V7.06   MAINLOOP                                                              12/06/2003 10:37:16 PAGE 2   

  56                  read_write_register,
  57                  reserved,
  58                  reserved,
  59                  reserved
  60                  };
  61          
  62          /*
  63          //*************************************************************************
  64          //  Public static data
  65          //*************************************************************************
  66          */
  67          
  68          extern EPPFLAGS bEPPflags;
  69          extern unsigned long ClockTicks;
  70          extern unsigned char idata GenEpBuf[];
  71          extern IO_REQUEST idata ioRequest;
  72          
  73          extern unsigned char ioSize, ioCount;
  74          extern unsigned char idata EpBuf[];
  75          
  76          CONTROL_XFER ControlData;
  77          BOOL bNoRAM;
  78          
  79          /* Configure Timer 0
  80             - Mode                  = 1
  81             - Interrupt                   = ENABLED
  82             - Clock Source                = INTERNAL
  83             - Enable Gating Control    = DISABLED
  84          */
  85          //定时器0初始化程序
  86          //定时器用来定时检测按键状态
  87          void init_timer0(void)
  88          {
  89   1              TMOD &= 0XF0;               /* clear Timer 0   */
  90   1              TMOD  |= 0X1;
  91   1              TL0 = 0X0;                  /* value set by user    */
  92   1              TH0 = 0X0;                  /* value set by user  */
  93   1              ET0 = 1;                                /* IE.1*/
  94   1              TR0 = 1;                        /* TCON.4 start timer  */
  95   1              PT0 = 0;
  96   1              EA = 1;
  97   1      }
  98          
  99          /* Interrupt Control Unit */
 100          /*   ****  Enabled interrupts in Interrupt Enable Register ****
 101                   ****  GLOBAL INTERRUPT MUST BE ENABLED FOR ANY OTHER
 102                   ****  INTERRUPT TO WORK!
 103          */
 104          /*                  GLOBAL INTERRUPT DISABLED ALL INTERRUPTS
 105                                                  ARE DISABLED          */
 106          /*                    External interrupt 0      */
 107          /*                        Priority Level = 0    */
 108          /*                        Timer 0 interrupt     */
 109          /*                       Priority Level = 0     */
 110          //中断设置
 111          void init_special_interrupts(void)
 112          {
 113   1              IT1 = 0;
 114   1              EX1 = 1;
 115   1              PX1 = 0;
 116   1      }
 117          
C51 COMPILER V7.06   MAINLOOP                                                              12/06/2003 10:37:16 PAGE 3   

 118          //I/O口初始化程序
 119          void init_port()
 120          {
 121   1              P0 = 0xFF;
 122   1              P1 = 0xFF;
 123   1              P2 = 0xFF;
 124   1              P3 = 0xFF;
 125   1              D12SUSPD = 0;
 126   1      }
 127          
 128          void main(void)
 129          {
 130   1              init_port();//初始化I/O口
 131   1      
 132   1              init_timer0();//初始化定时器0
 133   1              init_special_interrupts();//设置中断
 134   1      
 135   1              bEPPflags.value = 0;
 136   1      
 137   1              reconnect_USB();//重新连接USB
 138   1      
 139   1              /* Main program loop */
 140   1      
 141   1              while( TRUE ){
 142   2                      
 143   2                      if (bEPPflags.bits.timer)
 144   2                      {
 145   3                              DISABLE;//定时器溢出,检测按键状态
 146   3                              bEPPflags.bits.timer = 0;
 147   3                              ENABLE;
 148   3      
 149   3                              if(bEPPflags.bits.configuration)//设备未配置返回
 150   3                                      check_key_LED();
 151   3                      }
 152   2      
 153   2      
 154   2                      if (bEPPflags.bits.setup_packet){//Setup包处理
 155   3                              DISABLE;
 156   3                              bEPPflags.bits.setup_packet = 0;
 157   3                              ENABLE;
 158   3                              control_handler();//调用请求处理子程序
 159   3                              D12SUSPD = 1;
 160   3                      } // if setup_packet    
 161   2      
 162   2                      if (bEPPflags.bits.bus_reset) {//设备复位处理
 163   3                              DISABLE;
 164   3                              bEPPflags.bits.bus_reset = 0;
 165   3                              ENABLE;
 166   3                              // Release D12's SUSPEND pin after bus reset
 167   3                              // Enable 74HCT123 pulse generation before disconnect
 168   3                              D12SUSPD = 1;
 169   3                      } // if bus reset
 170   2      
 171   2                      if(bEPPflags.bits.setup_dma != 0) {//DMA状态改变处理
 172   3                              DISABLE;
 173   3                              bEPPflags.bits.setup_dma --;
 174   3                              ENABLE;
 175   3                              setup_dma();
 176   3                      } // if setup_dma
 177   2              } // Main Loop

⌨️ 快捷键说明

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