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

📄 mainloop.lst

📁 用keil c和vb开发的单片机通用usb键盘
💻 LST
字号:
C51 COMPILER V7.06   MAINLOOP                                                              11/03/2006 10:24:17 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 OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <string.h>
   3          #include <reg51.h>                /* special function register declarations   */
   4          #include "mainloop.h"
   5          #include "isr.h"
   6          #include "protozlg.h"
   7          
   8          /*
   9          //*************************************************************************
  10          //  Public static data
  11          //*************************************************************************
  12          */
  13          
  14          extern EPPFLAGS bEPPflags;
  15          extern unsigned char idata GenEpBuf[];
  16          extern unsigned char idata EpBuf[];
  17          extern unsigned int data d12_addr;
  18          
  19          extern unsigned int data D12_DATA;
  20          extern unsigned int data D12_COMMAND;
  21          
  22          
  23          sfr CKCON = 0x8F;//87C52x2用
  24          sbit clksel = P2^0;
  25          
  26          //D12中断服务
  27          usb_isr() interrupt 0
  28          {
  29   1              DISABLE;
  30   1              fn_usb_isr();//调用D12中断服务子程序
  31   1              ENABLE;
  32   1      }
  33          
  34          void delayy(short i)
  35          {
  36   1      int j=0;
  37   1      int k=0;
  38   1      k=i*DELAY_VALUE;
  39   1      while (j<k) j++;
  40   1      }
  41           
  42          unsigned char keyscan()
  43          {
  44   1                   
  45   1      if (PINDRVKEY1==FALSE)        //P1_0 IS 0
  46   1      delayy(DELAY_VALUE);            //DELAY
  47   1      if (PINDRVKEY1==FALSE)        //again P1_0 IS 0
  48   1      {delayy(DELAY_VALUE);           //delay again
  49   2      if (PINDRVKEY1==FALSE)        //still p1_0 is 0
  50   2      return 26;}
  51   1      
  52   1      if (PINDRVKEY2==FALSE)        //P1_1 IS 0
  53   1      delayy(DELAY_VALUE);            //DELAY
  54   1      if (PINDRVKEY2==FALSE)        //again P1_1 IS 0
  55   1      {delayy(DELAY_VALUE);           //delay again
C51 COMPILER V7.06   MAINLOOP                                                              11/03/2006 10:24:17 PAGE 2   

  56   2      if (PINDRVKEY2==FALSE)        //still p1_1 is 0
  57   2      return 27;}
  58   1      
  59   1      if (PINDRVKEY3==FALSE)        //P1_2 IS 0
  60   1      delayy(DELAY_VALUE);            //DELAY
  61   1      if (PINDRVKEY3==FALSE)        //again P1_2 IS 0
  62   1      {delayy(DELAY_VALUE);           //delay again
  63   2      if (PINDRVKEY3==FALSE)        //still p1_2 is 0
  64   2      return 28;}
  65   1      
  66   1      if (PINDRVKEY4==FALSE)        //P1_3 IS 0
  67   1      delayy(DELAY_VALUE);            //DELAY
  68   1      if (PINDRVKEY4==FALSE)        //again P1_3 IS 0
  69   1      {delayy(DELAY_VALUE);           //delay again
  70   2      if (PINDRVKEY4==FALSE)        //still p1_3 is 0
  71   2      return 29;}
  72   1      
  73   1      if (PINDRVKEY5==FALSE)        //P1_4 IS 0
  74   1      delayy(DELAY_VALUE);            //DELAY
  75   1      if (PINDRVKEY5==FALSE)        //again P1_4 IS 0
  76   1      {delayy(DELAY_VALUE);           //delay again
  77   2      if (PINDRVKEY5==FALSE)        //still p1_4 is 0
  78   2      return 30;}
  79   1      
  80   1      if (PINDRVKEY6==FALSE)        //P1_5 IS 0
  81   1      delayy(DELAY_VALUE);            //DELAY
  82   1      if (PINDRVKEY6==FALSE)        //again P1_5 IS 0
  83   1      {delayy(DELAY_VALUE);           //delay again
  84   2      if (PINDRVKEY6==FALSE)        //still p1_5 is 0
  85   2      return 31;}
  86   1      
  87   1      if (PINDRVKEY7==FALSE)        //P2_0 IS 0
  88   1      delayy(DELAY_VALUE);            //DELAY
  89   1      if (PINDRVKEY7==FALSE)        //again P2_0 IS 0
  90   1      {delayy(DELAY_VALUE);           //delay again
  91   2      if (PINDRVKEY7==FALSE)        //still p2_0 is 0
  92   2      return 32;}
  93   1      
  94   1      if (PINDRVKEY8==FALSE)        //P2_1 IS 0
  95   1      delayy(DELAY_VALUE);            //DELAY
  96   1      if (PINDRVKEY8==FALSE)        //again P2_1 IS 0
  97   1      {delayy(DELAY_VALUE);           //delay again
  98   2      if (PINDRVKEY8==FALSE)        //still p2_1 is 0
  99   2      return 33;}
 100   1      
 101   1      if (PINDRVKEY9==FALSE)        //P2_2 IS 0
 102   1      delayy(DELAY_VALUE);            //DELAY
 103   1      if (PINDRVKEY9==FALSE)        //again P2_2 IS 0
 104   1      {delayy(DELAY_VALUE);           //delay again
 105   2      if (PINDRVKEY9==FALSE)        //still p2_2 is 0
 106   2      return 34;}
 107   1      
 108   1      if (PINDRVKEY10==FALSE)        //P2_3 IS 0
 109   1      delayy(DELAY_VALUE);            //DELAY
 110   1      if (PINDRVKEY10==FALSE)        //again P2_3 IS 0
 111   1      {delayy(DELAY_VALUE);           //delay again
 112   2      if (PINDRVKEY10==FALSE)        //still p2_3 is 0
 113   2      return 35;}
 114   1      
 115   1      if (PINDRVKEY11==FALSE)        //P2_4 IS 0
 116   1      delayy(DELAY_VALUE);            //DELAY
 117   1      if (PINDRVKEY11==FALSE)        //again P2_4 IS 0
C51 COMPILER V7.06   MAINLOOP                                                              11/03/2006 10:24:17 PAGE 3   

 118   1      {delayy(DELAY_VALUE);           //delay again
 119   2      if (PINDRVKEY11==FALSE)        //still p2_4 is 0
 120   2      return 36;}
 121   1      
 122   1      if (PINDRVKEY12==FALSE)        //P2_5 IS 0
 123   1      delayy(DELAY_VALUE);            //DELAY
 124   1      if (PINDRVKEY12==FALSE)        //again P2_5 IS 0
 125   1      {delayy(DELAY_VALUE);           //delay again
 126   2      if (PINDRVKEY12==FALSE)        //still p2_5 is 0
 127   2      return 37;}
 128   1      
 129   1      if (PINDRVKEY13==FALSE)        //P2_6 IS 0
 130   1      delayy(DELAY_VALUE);            //DELAY
 131   1      if (PINDRVKEY13==FALSE)        //again P2_6 IS 0
 132   1      {delayy(DELAY_VALUE);           //delay again
 133   2      if (PINDRVKEY13==FALSE)        //still p2_6 is 0
 134   2      return 38;}
 135   1      
 136   1      if (PINDRVKEY14==FALSE)        //P2_7 IS 0
 137   1      delayy(DELAY_VALUE);            //DELAY
 138   1      if (PINDRVKEY14==FALSE)        //again P2_7 IS 0
 139   1      {delayy(DELAY_VALUE);           //delay again
 140   2      if (PINDRVKEY14==FALSE)        //still p2_7 is 0
 141   2      return 39;}
 142   1      
 143   1      if (PINDRVKEY15==FALSE)        //P3_0 IS 0
 144   1      delayy(DELAY_VALUE);            //DELAY
 145   1      if (PINDRVKEY15==FALSE)        //again P3_0 IS 0
 146   1      {delayy(DELAY_VALUE);           //delay again
 147   2      if (PINDRVKEY15==FALSE)        //still p3_0 is 0
 148   2      return 40;}
 149   1      
 150   1      if (PINDRVKEY16==FALSE)        //P3_1 IS 0
 151   1      delayy(DELAY_VALUE);            //DELAY
 152   1      if (PINDRVKEY16==FALSE)        //again P3_1 IS 0
 153   1      {delayy(DELAY_VALUE);           //delay again
 154   2      if (PINDRVKEY16==FALSE)        //still p3_1 is 0
 155   2      return 41;}
 156   1      
 157   1      return 42;
 158   1      
 159   1      }
 160          
 161          
 162          
 163          void main(void)
 164          {
 165   1              P0 = 0xFF;//初始化I/O口
 166   1              P1 = 0xFF;
 167   1              P2 = 0xFF;
 168   1              P3 = 0xFF;
 169   1      
 170   1      //      CKCON = 0x00;
 171   1              CKCON = 0x00;
 172   1      
 173   1      //      if(clksel == 1)
 174   1      //              CKCON = CKCON | 0x01;
 175   1      
 176   1              D12_DATA = 0xff02;                      //定义数据地址
 177   1              D12_COMMAND = 0xff03;           //定义命令地址
 178   1      
 179   1      
C51 COMPILER V7.06   MAINLOOP                                                              11/03/2006 10:24:17 PAGE 4   

 180   1              MCU_D12CS = 0x0;
 181   1              D12SUSPD = 0x0;
 182   1      
 183   1              IT0 = 0;//初始化中断
 184   1              EX0 = 1;
 185   1              PX0 = 0;
 186   1              EA = 1;
 187   1      
 188   1      
 189   1              MCU_D12CS = 0x1;
 190   1              MCU_D12CS = 0x0;
 191   1              D12_SetDMA(0x0);
 192   1              bEPPflags.value = 0;
 193   1      
 194   1              reconnect_USB();//联接USB总线
 195   1      
 196   1              /* Main program loop */
 197   1              while( TRUE ){
 198   2                      if(bEPPflags.bits.configuration)
 199   2                              check_key();//连接正常,调用按键和LED控制处理
 200   2      
 201   2                      usbserve();//USB服务数据处理
 202   2      
 203   2              } // Main Loop
 204   1      }
 205          
 206          void check_key(void)
 207          {
 208   1              static unsigned char c, last_key =42;
 209   1      
 210   1              
 211   1              c =keyscan();
 212   1              if (c != last_key) {
 213   2                      D12_WriteEndpoint(3, 1, &c);//按键状态改变,发送信息给主机
 214   2              }
 215   1              last_key = c;
 216   1      
 217   1              
 218   1      }
 219          
 220          
 221          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    641    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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