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

📄 shell.lst

📁 用C语言编写的GSM-SIM驱动程序包
💻 LST
📖 第 1 页 / 共 2 页
字号:
 189   1                      and save the index of matched command*/
 190   1      
 191   1              if( search_index== 0 )
 192   1                      return   notfind;                               /* all the cmd'S length in TABLE is not match*/
 193   1              
 194   1              for(cnt=0; cnt<search_index; cnt++ )
 195   1              {               
 196   2                      temp = search_buf[cnt];
 197   2                      while( ( TABLE[temp].cmd_line[i] == cmd_buf.cmd_line[i] )&& (i<temp_length) )
 198   2                                      i++;
 199   2                      if(i==temp_length)
 200   2                              return temp ;                           /* the index of cmd in TABLE[]*/
 201   2                      
 202   2              }                       /* search for the cmd_line contant matched cmd in TABLE ,and save the index */
 203   1                              return  notfind;
 204   1      
 205   1      }
 206          /*********************************************************************************************************
 207          ** 函数名称:                                       Normal_Normal();
 208          ** 功能描述:                                       normal_normal state process function
 209          ** 输 入:
 210          ** 输 出:
 211          ** 全局变量:                                            rec      ,cmd_buf
 212          ** 调用模块:                                             Uart0_Put_Char()
 213          **
 214          ** 作 者: wangzheng
 215          ** 日 期:      2006.11.02
 216          **-------------------------------------------------------------------------------------------------------
 217          ** 修改人: wangzheng
 218          ** 日 期: 
 219          **-------------------------------------------------------------------------------------------------------
 220          ** 修改人: wangzheng
 221          ** 日 期: 
 222          **------------------------------------------------------------------------------------------------------
 223          ********************************************************************************************************/
 224          void Normal_Normal(void)
 225          {
 226   1              if( (rec!=32) && (cmd_buf.length <= MAX_CMD_LENGTH) )   /* ignore the 'space' */
 227   1                      {
 228   2                      if( (rec>=65) && (rec<=90) )
 229   2                              rec = (rec + 32);
 230   2                      cmd_buf.cmd_line[ cmd_buf.length]= rec ;        /* save the revieved char */
 231   2                      cmd_buf.length++;
 232   2                      Uart_Put_Char(rec);             /* echo to the terminal */
 233   2                      }
 234   1               else ;
 235   1      }
 236          
 237          /*********************************************************************************************************
 238          ** 函数名称:                                            Control_Control_bs()
 239          ** 功能描述:                                            control_control state process function
 240          ** 输 入:
C51 COMPILER V8.06   SHELL                                                                 12/24/2007 11:34:17 PAGE 5   

 241          ** 输 出:
 242          ** 全局变量:                                             cmd_buf
 243          ** 调用模块:                                             Uart0_Put_Char( )
 244          **
 245          ** 作 者: wangzheng
 246          ** 日 期: 
 247          **-------------------------------------------------------------------------------------------------------
 248          ** 修改人: wangzheng
 249          ** 日 期: 
 250          **-------------------------------------------------------------------------------------------------------
 251          ** 修改人: wangzheng
 252          ** 日 期: 
 253          **------------------------------------------------------------------------------------------------------
 254          ********************************************************************************************************/
 255          
 256          void Control_Control_bs(void )                                                  
 257          {
 258   1              
 259   1              if(cmd_buf.length >0)
 260   1                      {
 261   2                      cmd_buf.cmd_line[cmd_buf.length] = 0;
 262   2                      cmd_buf.length--;
 263   2                      Uart_Put_Char(8);               // print backspace
 264   2                      Uart_Put_Char(32);              // print space
 265   2                  Uart_Put_Char(8);           //print backspace
 266   2                      }
 267   1      }
 268          
 269          /*********************************************************************************************************
 270          ** 函数名称:                                      Func_execute ()
 271          ** 功能描述:                                      execute the user function
 272          ** 输 入:
 273          ** 输 出:
 274          ** 全局变量: 
 275          ** 调用模块:                                       Init_cmd_buf( )
 276          **
 277          ** 作 者: wangzheng
 278          ** 日 期: 2006.11.02
 279          **-------------------------------------------------------------------------------------------------------
 280          ** 修改人: wangzheng
 281          ** 日 期: 
 282          **-------------------------------------------------------------------------------------------------------
 283          ** 修改人: wangzheng
 284          ** 日 期: 
 285          **------------------------------------------------------------------------------------------------------
 286          ********************************************************************************************************/       
 287          void Func_Execute(void)
 288          {
 289   1              int8 index;
 290   1      
 291   1              index = Search_Cmd( );          // search for the matched command in TABLE
 292   1              if( index!= -1 )
 293   1                      TABLE[index].pfun(); 
 294   1              else
 295   1                      Uart_Write(bad_command);
 296   1              Init_Cmd_Buf( );                        // prepare for next command 
 297   1      
 298   1      }
 299          /*********************************************************************************************************
 300          ** 函数名称:                                     Cmd_Shell_FSM( )
 301          ** 功能描述:                                      core of command shell, a finite state machine
 302          ** 输 入:
C51 COMPILER V8.06   SHELL                                                                 12/24/2007 11:34:17 PAGE 6   

 303          ** 输 出:
 304          ** 全局变量:                                              ..........
 305          ** 调用模块: 
 306          **
 307          ** 作 者: wangzheng
 308          ** 日 期: 2006.11.02
 309          **-------------------------------------------------------------------------------------------------------
 310          ** 修改人: wangzheng
 311          ** 日 期: 
 312          **-------------------------------------------------------------------------------------------------------
 313          ** 修改人: wangzheng
 314          ** 日 期: 
 315          **------------------------------------------------------------------------------------------------------
 316          ********************************************************************************************************/
 317          
 318          void Cmd_Shell_FSM(void)
 319          {
 320   1      while(sig_renew)
 321   1      {
 322   2              sig_renew = 0;                                          // waitting for next uart interrupt change sig_new state
 323   2              switch ( curr_stat )                            // in normal char  state
 324   2              {
 325   3                      case    normal_char :
 326   3                                      switch(curr_sig)
 327   3                                                      {
 328   4                                                      case    normal_char :
 329   4                                                                              Normal_Normal( );                       break;                                                  
 330   4                                                      case    backspace       :
 331   4                                                                              State_Tran(control_char);       break;
 332   4                                                      case    cr :
 333   4                                                                              State_Tran(func_exe);           break;
 334   4                                                      default:                                                                break;
 335   4                                                      }break;
 336   3      
 337   3                      case    control_char :                     // in control char   state
 338   3                                      switch ( curr_sig )
 339   3                                                      {
 340   4                                                      case    normal_char :           
 341   4                                                                              State_Tran( normal_char );      break;                                  
 342   4                                                      case    backspace :
 343   4                                                                              Control_Control_bs( );          break;
 344   4                                                      case    cr :
 345   4                                                                              State_Tran( func_exe );         break;
 346   4                                                      default:                                                                break;
 347   4                                                      }break;
 348   3                      case    func_exe :                                      // in function execute  state   
 349   3                                      switch (curr_sig )
 350   3                                                      {
 351   4                                                      case    cr :
 352   4                                                                              Uart_Put_Char('\r');
 353   4                                                                              Uart_Put_Char('\n');            
 354   4                                                                              Func_Execute( );                                //execute the user defined function
 355   4                                                                              Uart_Put_Char('>');             break;
 356   4                                                      case    backspace :
 357   4                                                                              Control_Control_bs( );          break;
 358   4                                                      case    normal_char :
 359   4                                                                              State_Tran (normal_char);       break;
 360   4                                                      default:                                                                break;                          
 361   4                                                      }                       
 362   3                      default :                break;
 363   3              }
 364   2      }
C51 COMPILER V8.06   SHELL                                                                 12/24/2007 11:34:17 PAGE 7   

 365   1      
 366   1      }
 367          
 368          /************************************************************************************************
 369          *                                                                end   of file
 370          ************************************************************************************************/               
 371          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    423    ----
   CONSTANT SIZE    =    426    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25      10
   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 + -