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

📄 keyboard.lst

📁 用于测试步进电机
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.00  KEYBOARD                                                               09/14/2006 16:35:50 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN KEYBOARD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KEYBOARD.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND

stmt level    source

   1          //////////////////////////////////////////////////////////
   2          #include <REG51STC.H>
   3          #include <ABSACC.H>
   4          #include "CMD16887.H"
   5          #include <INTRINS.H>
   6          #include "externxy.h"
   7          /***************************************************************************
   8          *   功能:电磁阀及蜂鸣器输出
   9          ***************************************************************************/
  10          void dcespk_out(void)
  11          {  
  12   1              AUXR |=0x02;
  13   1              bbyte=alarm;
  14   1              bbyte|=0x1f;
  15   1              
  16   1         XBYTE[DXD1ADD]=bbyte;   // 气缸1及蜂鸣器1输出
  17   1              bbyte=alarm;
  18   1              bbyte<<=3;
  19   1              bbyte|=0x1f;
  20   1         XBYTE[DXD2ADD]=bbyte;   // 气缸2及蜂鸣器2输出
  21   1              AUXR &=0xfd;
  22   1      }
  23          
  24          /**************************************************************************
  25          *     功能:读按键A、B
  26          ***************************************************************************/
  27          void read_key(void)
  28          {  
  29   1              uchar data keymem[5];   //扫描得到的銉值
  30   1              uchar data i;
  31   1              bit  bm;
  32   1              uchar  keynum_a,keynum_b;
  33   1              bbyte=alarm;
  34   1              bbyte|=0x1f;
  35   1              bbyte &=0xfe;
  36   1              AUXR |=0x02;
  37   1              _nop_();
  38   1              XBYTE[DXD1ADD]=bbyte;   // 阀门1及蜂鸣器1输出
  39   1      
  40   1              bbyte=alarm;
  41   1              bbyte<<=3;
  42   1              bbyte|=0x1f;
  43   1              bbyte &=0xfe;
  44   1              _nop_();
  45   1              XBYTE[DXD2ADD]=bbyte;   // 阀门2及蜂鸣器2输出
  46   1              _nop_();
  47   1              keymem[0]=XBYTE[KEY_ADD];  //读键值
  48   1              /***********************/
  49   1              bbyte=alarm;
  50   1              bbyte|=0x1f;
  51   1              bbyte &=0xfd;
  52   1              _nop_();
  53   1              XBYTE[DXD1ADD]=bbyte;   // 阀门1及蜂鸣器1输出
  54   1      
  55   1              bbyte=alarm;
C51 COMPILER V7.00  KEYBOARD                                                               09/14/2006 16:35:50 PAGE 2   

  56   1              bbyte<<=3;
  57   1              bbyte|=0x1f;
  58   1              bbyte &=0xfd;
  59   1              _nop_();
  60   1              XBYTE[DXD2ADD]=bbyte;   // 阀门2及蜂鸣器2输出
  61   1              _nop_();
  62   1              keymem[1]=XBYTE[KEY_ADD];  //读键值
  63   1              /***********************/
  64   1              bbyte=alarm;
  65   1              bbyte|=0x1f;
  66   1              bbyte &=0xfb;
  67   1              _nop_();
  68   1              XBYTE[DXD1ADD]=bbyte;   // 阀门1及蜂鸣器1输出
  69   1      
  70   1              bbyte=alarm;
  71   1              bbyte<<=3;
  72   1              bbyte|=0x1f;
  73   1              bbyte &=0xfb;
  74   1              _nop_();
  75   1              XBYTE[DXD2ADD]=bbyte;   // 阀门2及蜂鸣器2输出
  76   1              _nop_();
  77   1              keymem[2]=XBYTE[KEY_ADD];  //读键值
  78   1              /***********************/
  79   1              bbyte=alarm;
  80   1              bbyte|=0x1f;
  81   1              bbyte &=0xf7;
  82   1              XBYTE[DXD1ADD]=bbyte;   // 阀门1及蜂鸣器1输出
  83   1      
  84   1              bbyte=alarm;
  85   1              bbyte<<=3;
  86   1              bbyte|=0x1f;
  87   1              bbyte &=0xf7;
  88   1              XBYTE[DXD2ADD]=bbyte;   // 阀门2及蜂鸣器2输出
  89   1              _nop_();
  90   1              keymem[3]=XBYTE[KEY_ADD];  //读键值
  91   1              /***********************/
  92   1              bbyte=alarm;
  93   1              bbyte|=0x1f;
  94   1              bbyte &=0xef;
  95   1              XBYTE[DXD1ADD]=bbyte;   // 阀门1及蜂鸣器1输出
  96   1      
  97   1              bbyte=alarm;
  98   1              bbyte<<=3;
  99   1              bbyte|=0x1f;
 100   1              bbyte &=0xef;
 101   1              XBYTE[DXD2ADD]=bbyte;   // 阀门2及蜂鸣器2输出
 102   1              _nop_();
 103   1              keymem[4]=XBYTE[KEY_ADD];  //读键值
 104   1         AUXR &=0xfd;
 105   1                 //KEYA銉值转换
 106   1              
 107   1              bm=1;
 108   1              keynum_a=0x00;
 109   1              for  (i=0;i<5;i++)
 110   1              {  
 111   2                      bbyte=keymem[i];
 112   2                      bbyte=~bbyte;
 113   2                      bbyte&=0x0f;
 114   2                      if(bbyte!=0)
 115   2                      { 
 116   3                              switch  (bbyte)
 117   3                              {
C51 COMPILER V7.00  KEYBOARD                                                               09/14/2006 16:35:50 PAGE 3   

 118   4                                      case 1:
 119   4                                              if(bm) {keynum_a=i+1;}
 120   4                                              else {keynum_a=0x00;}  //有多个键
 121   4                                              break;
 122   4                                      case 2:
 123   4                                              if(bm) {keynum_a=i+6;}
 124   4                                              else {keynum_a=0x00;}  //有多个键
 125   4                                              break;
 126   4                                      case 4:
 127   4                                              if(bm) {keynum_a=i+11;}
 128   4                                              else {keynum_a=0x00;}  //有多个键
 129   4                                              break;
 130   4                                      case 8:
 131   4                                              if(bm) {keynum_a=i+16;}
 132   4                                              else {keynum_a=0x00;}  //有多个键
 133   4                                              break;
 134   4                                      default:   {bm=0;keynum_a=0x00;}  //有多个键
 135   4                                      break;
 136   4                              }
 137   3                              
 138   3                      }
 139   2              }
 140   1              if (keynum_a!=0)        
 141   1              {       keyinput_a++;
 142   2                 if  (keyinput_a>5)
 143   2                      {  if(!keyok_a)
 144   3                              {  if(k1spk_time==0)k1spk_time=20;   //=20产生1短音 
 145   4                                 keyok_a=1; 
 146   4                              }
 147   3                              keysolve_a=keynum_a;  //待处理的键值
 148   3                              keyinput_a=1;
 149   3                      }
 150   2              }
 151   1              else    keyinput_a=0;
 152   1         keynumold_a=keynum_a;
 153   1      
 154   1      //    KEYB銉值转换
 155   1      
 156   1              bm=1;  
 157   1         keynum_b=0x00;
 158   1              for  (i=0;i<5;i++)
 159   1              {  
 160   2                      bbyte=keymem[i];
 161   2                      bbyte=~bbyte;
 162   2                      bbyte>>=4;
 163   2                      bbyte&=0x0f;
 164   2                      if(bbyte!=0)
 165   2                      { 
 166   3                              switch  (bbyte)
 167   3                              {
 168   4                                      case 1:
 169   4                                              if(bm) {keynum_b=i+1;}
 170   4                                              else {keynum_b=0x00;}  //有多个键
 171   4                                              break;
 172   4                                      case 2:
 173   4                                              if(bm) {keynum_b=i+6;}
 174   4                                              else {keynum_b=0x00;}  //有多个键

⌨️ 快捷键说明

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