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

📄 keyprocess.lst

📁 单片机实验集合 PROTEUS 仿真 keil c 程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 129   1                      return ucGetLetter(ucChar);                //获取字母字符。
 130   1      }
 131          
 132          
 133          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 134          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<字符最终处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 135          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 136          void vCharProcess(unsigned ucKeyCode)                             //接收的是键码。
 137          {
 138   1              if(b_InputMode==0)                                                               //如果是数字输入,就直接输出。
 139   1                      vCharAdd(ucGetChar(ucKeyCode));
 140   1              else
 141   1                      {
 142   2                      if(ucKeyCode!=42)                                                        //如果是字幕输入,则判断是不是标点。
 143   2                              {
 144   3                              if(uc_ClickCount==0)
 145   3                                      {
 146   4                                      vCharAdd(ucGetChar(ucKeyCode));           //如果是只连续按了1次就直接输出。
 147   4                                      }
 148   3                              else
 149   3                                      {
 150   4                                      uc_CharPointer--;                                        //否则光标前移,然后再输出。
 151   4                                      vCharAdd(ucGetChar(ucKeyCode));
 152   4                                      }
 153   3                              }
 154   2                      else
 155   2                              {
 156   3                              vShowOneChar('!');                                                        //punc
 157   3                              uca_CharBox[uc_CharPointer++]='!';                        //写入感叹号!
 158   3                              }
 159   2                      }
 160   1              b_CleanClick=1;
 161   1              uc_CleanCount=0;
 162   1      }
 163          //*************************************************************************************************
 164          //*                                                                                                                                                                                               *
 165          //*                      ******************************键码处理主程序**************************                           *
 166          //*                                                                                                                                                                                               *
 167          //*************************************************************************************************
 168          void vKeyProcess(unsigned char ucKeyCode)
 169          {
 170   1              if(uc_KeyTemp==ucKeyCode)                       //判断按键与上一次所按的键是否相同。
 171   1                      {
 172   2                      if(uc_ClickCount<255)                   //同一个按连续按下的次数:1~255。
 173   2                              uc_ClickCount++;
 174   2                      }
 175   1              else
 176   1                      {
 177   2                      uc_KeyTemp=ucKeyCode;
 178   2                      uc_ClickCount=0;
C51 COMPILER V8.05a   KEYPROCESS                                                           08/08/2007 11:03:52 PAGE 4   

 179   2                      }
 180   1      
 181   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 182   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按键处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 183   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 184   1              switch(ucKeyCode)
 185   1                      {
 186   2                      case 14:                //********************显示介绍************************************************
 187   2                                      b_Introduce=1;
 188   2                                      vIntroduce();
 189   2                                      break;
 190   2      
 191   2                      case 24:                //********************输入空白************************************************
 192   2                                      vCharAdd(' ');                          
 193   2                                      break;
 194   2      
 195   2                      case 34:          //**********************大小写切换*********************************************
 196   2                                      if(b_InputMode==1)
 197   2                                              {
 198   3                                              b_CapStatus=~b_CapStatus;
 199   3                                              if(b_CapStatus==0)                 //大写。
 200   3                                                      {
 201   4                                                      vWriteCMD(0x8E);
 202   4                                                      vShowOneChar('B');
 203   4                                                      vWriteCMD(0xC0+uc_CharPointer);
 204   4                                                      }
 205   3                                              else
 206   3                                                      {
 207   4                                                      vWriteCMD(0x8E);
 208   4                                                      vShowOneChar('S');
 209   4                                                      vWriteCMD(0xC0+uc_CharPointer);
 210   4                                                      }
 211   3                                              }
 212   2                                      break;
 213   2      
 214   2                      case 41:          //********************删除所有字符*********************************************
 215   2                                      vCleanAll();
 216   2                                      break;
 217   2      
 218   2                      case 43:         //**********************删除1个字符********************************************
 219   2                                      vCleanOne();
 220   2                                      break;
 221   2      
 222   2                      case 44:           //********************输入法切换***********************************************
 223   2                              b_InputMode=~b_InputMode;
 224   2                              if(b_InputMode)
 225   2                                      {
 226   3                                      if(b_CapStatus==0)                        //切换到字符输入法时在右上角显示“C”
 227   3                                              {
 228   4                                              vWriteCMD(0x8E);                
 229   4                                              vShowChar("BC");                  //大写显示“BC”
 230   4                                              vWriteCMD(0xC0+uc_CharPointer);
 231   4                                              }
 232   3                                      else
 233   3                                              {
 234   4                                              vWriteCMD(0x8E);                
 235   4                                              vShowChar("SC");                 //小写显示“SC”
 236   4                                              vWriteCMD(0xC0+uc_CharPointer);
 237   4                                              }
 238   3                                      }
 239   2                              else
 240   2                                      {
C51 COMPILER V8.05a   KEYPROCESS                                                           08/08/2007 11:03:52 PAGE 5   

 241   3                                      vWriteCMD(0x8E);           //切换到数字输入法时在右上角显示“N”
 242   3                                      vShowChar(" N");
 243   3                                      vWriteCMD(0xC0+uc_CharPointer);
 244   3                                      }       
 245   2                                      break;
 246   2      
 247   2                      default:         //*************************获得键码********************************************
 248   2                                      vCharProcess(ucKeyCode);
 249   2                      }
 250   1      }                                                                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    383    ----
   CONSTANT SIZE    =     44    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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