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

📄 t.lst

📁 用c51的键盘扫描
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   T                                                                     08/11/2005 20:28:41 PAGE 1   


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

line level    source

   1          
   2          #include<reg51.h>
   3          //#include<graphics.h>
   4          //#include<stdio.h>
   5          #include<stdio.h>
   6          #include<stdlib.h>
   7          //#include<conio.h>
   8          #include<index.h>
   9          
  10          
  11          check_key( unsigned char k)                     //查看并确认键值
  12          {
  13   1      int c;
  14   1         switch(k)
  15   1                 {
  16   2                 case '1':c=1;
  17   2                 break;
  18   2                 case '2':c=2;
  19   2                 break;
  20   2                 case '3':c=3;
  21   2                 break;
  22   2                 case '4':c=4;
  23   2                 break;
  24   2                 case '5':c=5;
  25   2                 break;
  26   2                 case '6':c=6;
  27   2                 break;
  28   2                 case '7':c=7;
  29   2                 break;
  30   2                 case '8':c=8;
  31   2                 break;
  32   2                 case '9':c=9;
  33   2                 break;
  34   2                 case '0':c=0;
  35   2                 break;
  36   2                 case 'q':c=10;                       //define F1
  37   2                 break;
  38   2                 case 'w':c=11;                       //define F2
  39   2                 break;
  40   2                 case 'e':c=12;                       //define F3
  41   2                 break;
  42   2                 case 'r':c=13;                       //define F4
  43   2                 break;
  44   2                 case 'c':
  45   2      //           closegraph();
  46   2      //           exit(0);
  47   2                 default:
  48   2                 c=20;
  49   2                 break;
  50   2                 }
  51   1      return(c);
  52   1      }
  53          
  54          
  55          main()
C51 COMPILER V7.09   T                                                                     08/11/2005 20:28:41 PAGE 2   

  56          {
  57   1      int firqmh,firqml;
  58   1      int a[6][16];
  59   1      int key[6],i,j,s,ii,k,m,kkk,kk=0,jj=120,n,nn=0;
  60   1      int ks,mm,d=0,key1,key2,qmh,qml,ss,kp,kd=0,page=0,page1=0;
  61   1      //int driver=DETECT,mode;
  62   1      int end;
  63   1      int endd;
  64   1      int mu;
  65   1      int end1;
  66   1      int sm[6];
  67   1      int ok;
  68   1      char kc;
  69   1      //initgraph(&driver,&mode,"");
  70   1      //setcolor(5);
  71   1      //headdisp();
  72   1      //headdisp2();
  73   1      //bar(0,50,500,100);
  74   1      //bar(0,100,500,220);
  75   1          
  76   1      
  77   1      top:
  78   1           if(kd==4)
  79   1           {
  80   2           kd=0;
  81   2           }                                        //键盘状态循环
  82   1           while(kd==0)                              //汉字输入状态
  83   1           {
  84   2      //     bar(0,50,500,100);
  85   2       //    pydisp();
  86   2           h1:
  87   2              for(;;)
  88   2              {
  89   3              page=0;
  90   3                  for(i=0;i<7;i++)
  91   3                  {
  92   4                  again:
  93   4                  key[i]=check_key(getchar());             //取键值
  94   4                       if(key[0]==0)
  95   4                       {
  96   5                        goto again;
  97   5                       }
  98   4                       switch(key[i])
  99   4                       {                          //判断键状态
 100   5                       case 9:kk=kk+8;goto h1;
 101   5                       case 13:kd++;goto  top;       //是否是状态切换键
 102   5                       case 12:
 103   5                       kk=kk-8;
 104   5      //                 bar(kk,jj,kk+8,jj+16);
 105   5                            if(kk<0)
 106   5                            {
 107   6                            kk=304;
 108   6                            jj=jj-16;
 109   6                            }
 110   5                            if(jj<=120)
 111   5                            {
 112   6                            jj=120;
 113   6                            }
 114   5                       goto h1;
 115   5                       case 0 :
 116   5                       s=check_key(getchar());
 117   5                       goto outhz;                     //汉字输入确认
C51 COMPILER V7.09   T                                                                     08/11/2005 20:28:41 PAGE 3   

 118   5                       case 10:i=i-2;if(i<0){i=0;goto top;}
 119   5                       break;
 120   5                       case 11:
 121   5                       case 20:
 122   5                       goto again;
 123   5                       }
 124   4                       if(i==0)
 125   4                       {                              //若为第一次读键
 126   5                          for(k=0;k<402;k++)
 127   5                          {
 128   6                           if(hzk_index[k][0]==key[0])    //搜索索引表
 129   6                                {
 130   7                                ok=k;
 131   7                                goto here;
 132   7                                }
 133   6                          }
 134   5                       }
 135   4                       if(i==1)
 136   4                       {                              //若为第二次读键
 137   5                       mu=0;
 138   5                           for(k=0;k<402;k++)
 139   5                           {
 140   6      if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1])  
 141   6      //搜索索引表
 142   6                               {        
 143   7                               mu=1;
 144   7                               ok=k;
 145   7                               goto here;
 146   7                               }
 147   6                           }
 148   5                           if(mu==0){sm[i]=ok;goto again;}
 149   5                      }
 150   4      
 151   4                      if(i==2)
 152   4                      {                               //若为第三次读键
 153   5                      mu=0;
 154   5                           for(k=0;k<402;k++)
 155   5                           {
 156   6                                if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2])
 157   6      //搜索索引表
 158   6                                {   
 159   7                                ok=k;
 160   7                                mu=1;
 161   7                                goto here;
 162   7                                }
 163   6                           }
 164   5                           if(mu==0){sm[i]=ok;goto again;}
 165   5                      }
 166   4      
 167   4                      if(i==3)
 168   4                      {                               //若为第四次读键
 169   5                      mu=0;
 170   5                            for(k=0;k<402;k++)
 171   5                            {
 172   6                                  if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&
             -hzk_index[k][3]==key[3])
 173   6                                  {
 174   7                                  ok=k;
 175   7                                  mu=1;
 176   7                                  goto here;
 177   7                                  }
 178   6                            }
C51 COMPILER V7.09   T                                                                     08/11/2005 20:28:41 PAGE 4   

 179   5                            if(mu==0){sm[i]=ok;goto again;}
 180   5                      }
 181   4      
 182   4                      if(i==4)
 183   4                      {                                 //若为第五次读键
 184   5                      mu=0;
 185   5                            for(k=0;k<402;k++)
 186   5                            {
 187   6                                  if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&
             -hzk_index[k][3]==key[3]&&hzk_index[k][4]==key[4])
 188   6                                  {
 189   7                                  mu=1;
 190   7                                  ok=k;
 191   7                                  goto here;
 192   7                                  }
 193   6                            }
 194   5                            if(mu==0){sm[i]=ok;goto again;}
 195   5                      }
 196   4                      
 197   4                      if(i==5)
 198   4                      {                              //若为第六次读键
 199   5                      mu=0;
 200   5                            for(k=0;k<402;k++)
 201   5                            {
 202   6                                  if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&
             -hzk_index[k][3]==key[3]&&hzk_index[k][4]==key[4]&&hzk_index[k][5]==key[5])
 203   6                                  {
 204   7                                  mu=1;
 205   7                                  ok=k;
 206   7                                  goto here;
 207   7                                  }
 208   6                            }
 209   5                            if(mu==0){sm[i]=ok;goto again;}
 210   5                      }
 211   4      
 212   4                      here:                     //显示对应键盘字母所有的可能组合
 213   4                      m=hzk_index[k][6];        //m为所有可能数,它位于索引表每行第7列
 214   4                      firqmh=hzk_index[k][7];
 215   4                      firqml=hzk_index[k][8];
 216   4      //                bar(0,50,300,100);
 217   4      //                pydisp();
 218   4      //                bar(100,50,200,100);
 219   4                             for(ks=0;ks<9;ks++)
 220   4                             {
 221   5      //                       putnum(ks*32,70,ks+1,2);
 222   5      //                       puthz((ks*2+1)*16,70,firqmh,firqml+ks,2);
 223   5                             }
 224   4                             for(n=0;n<m;n++)
 225   4                             {
 226   5      //                       putnum(10*8+n*64,50,n+1,2);
 227   5                                  for(kkk=1;kkk<=i+1;kkk++)
 228   5                                  {
 229   6                                   a[n][kkk]=hzk_index[k][18+(n*(i+1)+kkk)];
 230   6      //                             putzimus(11*8+n*64+kkk*8,50,a[n][kkk]-1,2);
 231   6                                  }
 232   5                             }
 233   4      
 234   4                } 
 235   3      
 236   3                outhz:                              //用户选择组合中所有可能中的一种
 237   3                nn=++nn ;
 238   3                     if(mu==1)
C51 COMPILER V7.09   T                                                                     08/11/2005 20:28:41 PAGE 5   

 239   3                     {
 240   4                     qmh=hzk_index[k][7+(s-1)*2];
 241   4                     qml=hzk_index[k][7+(s-1)*2+1];
 242   4                     }
 243   3                     if(mu==0)
 244   3                     {
 245   4                     qmh=hzk_index[sm[i]][7+(s-1)*2];
 246   4                     qml=hzk_index[sm[i]][7+(s-1)*2+1];
 247   4                     }
 248   3                fydisp:
 249   3      //          bar(0,50,500,100);

⌨️ 快捷键说明

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