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

📄 hyperterminal.lst

📁 这是一个大模式下ucos51的移植结果,因为大部分可载的ucos51都是小模式下的
💻 LST
📖 第 1 页 / 共 3 页
字号:
 459   1      }
 460          /*****************************************************************************/
 461          void InitHyperTerminal(void)
 462          {
 463   1              TMOD |= 0x21;           /* timer1, mode 2, 8 bit reload */
 464   1              SCON  = 0x50;           /* serial mode 1, 8 bit uart, enable receive  */
 465   1              PCON  = 0x80;           /* SMOD = 1, double baud */ 
 466   1              TH1   = 0xFa;           /* baud = 57600, fosc = 11.0592MHZ */
 467   1              TL1   = 0xFF;           
 468   1              RI    = 0;                      /* clear receive flag */
 469   1              TI    = 0;                      /* clear send flag */
 470   1              TR1   = 1;                      /* start timer1 */
 471   1              ES    = 1;                      /* enable serial interrupt */
 472   1              EA    = 1;                      /* enable all interrupt */
 473   1              IT1=1;
 474   1              TR0=1;
 475   1      EX1=1;
 476   1      
 477   1              XBYTE[BEEPADDR]=0x00;
 478   1              CursorPosion = 0;
 479   1              ExecCommandFlag = 0;
 480   1              memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
 481   1              memcpy(&PromptBuffer[0],"TW>>",MAX_PROMPT_BUFFER_SIZE);
 482   1      //      SerialSendStr(F_LIGHTGREEN);
 483   1      //      SerialSendStr(B_BLACK);
 484   1              SerialSendStr(CLEARSCREEN);
 485   1              SerialSendStr("-----------------------------\r\n");
 486   1              SerialSendStr("  ToWin Hyper Terminal,by xieshiyi\r\n");
 487   1              SerialSendStr("  http://www.towintec.cn \r\n");
 488   1              SerialSendStr("-----------------------------\r\n");
C51 COMPILER V7.50   HYPERTERMINAL                                                         01/02/2009 14:29:36 PAGE 9   

 489   1              SerialSendStr("\r\n");
 490   1              SerialSendStr(&PromptBuffer[0]);
 491   1      }
 492          
 493          void SerialSendByte(char dat)
 494          {
 495   1              SBUF = dat;
 496   1              while(TI == 0);
 497   1              TI = 0;
 498   1      }
 499          
 500          void SerialSendStr(char *str)
 501          {
 502   1              while(*str != '\0')
 503   1              {
 504   2                      SerialSendByte(*str);
 505   2                      str++;
 506   2              }
 507   1      }
 508                  
 509          void SerialInterrupt(void) interrupt 4 using 3
 510          {
 511   1              char SbufTemp;
 512   1              if(RI)
 513   1              {
 514   2                      RI = 0;
 515   2                      SbufTemp = SBUF;
 516   2                      switch(SbufTemp)
 517   2                      {
 518   3                      case 0x08:
 519   3                      case 0x06:
 520   3                      case 0x07:
 521   3                      case 0x7E:
 522   3                      case 0x7F:
 523   3                              if(CursorPosion > 0)
 524   3                              {
 525   4                                      CursorPosion--;
 526   4                                      SerialSendByte(0x08);
 527   4                                      SerialSendByte(' ');
 528   4                                      SerialSendByte(0x08);
 529   4                              }
 530   3                              SerialBuffer[CursorPosion] = '\0';
 531   3                              break;
 532   3                      case '\r':
 533   3                      case '\n':
 534   3                      case '\0':
 535   3                              SerialSendByte('\r');
 536   3                              SerialSendByte('\n');
 537   3                              ExecCommandFlag = 1;
 538   3                              break;
 539   3                      case '\t':
 540   3                              break;
 541   3                      default:
 542   3                              if(CursorPosion < MAX_SERIAL_BUFFER_SIZE)
 543   3                              {
 544   4                                      SerialBuffer[CursorPosion] = SbufTemp;
 545   4                                      SerialSendByte(SbufTemp);
 546   4                                      CursorPosion++;
 547   4                              }
 548   3                              else
 549   3                              {
 550   4                                      CursorPosion = 0;
C51 COMPILER V7.50   HYPERTERMINAL                                                         01/02/2009 14:29:36 PAGE 10  

 551   4                                      memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
 552   4                                      SerialSendStr("\r\n Warnning:Your command string is too long!\r\n\r\n");
 553   4                                      SerialSendStr(&PromptBuffer[0]);
 554   4                              }
 555   3                              break;
 556   3                      }
 557   2              }
 558   1      }
 559          
 560          void ParseArgs(char *argstr,char *argc_p,char **argv, char **resid)
 561          {
 562   1              char argc = 0;
 563   1              char c;
 564   1              PARSESTATE stackedState,lastState = PS_WHITESPACE;
 565   1      
 566   1              while ((c = *argstr) != 0)
 567   1              {
 568   2                      PARSESTATE newState;
 569   2      
 570   2                      if (c == ';' && lastState != PS_STRING && lastState != PS_ESCAPE)
 571   2                              break;
 572   2      
 573   2                      if (lastState == PS_ESCAPE)
 574   2                      {
 575   3                              newState = stackedState;
 576   3                      }
 577   2                      else if (lastState == PS_STRING)
 578   2                      {
 579   3                              if (c == '"')
 580   3                              {
 581   4                                      newState = PS_WHITESPACE;
 582   4                                      *argstr = 0;
 583   4                              }
 584   3                              else 
 585   3                              {
 586   4                                      newState = PS_STRING;
 587   4                              }
 588   3                      }
 589   2                      else if ((c == ' ') || (c == '\t'))
 590   2                      {
 591   3                              *argstr = 0;
 592   3                              newState = PS_WHITESPACE;
 593   3                      }
 594   2                      else if (c == '"') 
 595   2                      {
 596   3                              newState = PS_STRING;
 597   3                              *argstr++ = 0;
 598   3                              argv[argc++] = argstr;
 599   3                      }
 600   2                      else if (c == '\\') 
 601   2                      {
 602   3                              stackedState = lastState;
 603   3                              newState = PS_ESCAPE;
 604   3                      }
 605   2                      else 
 606   2                      {
 607   3                              if (lastState == PS_WHITESPACE) 
 608   3                              {
 609   4                                      argv[argc++] = argstr;
 610   4                              }
 611   3                              newState = PS_TOKEN;
 612   3                      }
C51 COMPILER V7.50   HYPERTERMINAL                                                         01/02/2009 14:29:36 PAGE 11  

 613   2      
 614   2                      lastState = newState;
 615   2                      argstr++;
 616   2              }
 617   1      
 618   1              argv[argc] = NULL;
 619   1              if (argc_p != NULL)
 620   1                      *argc_p = argc;
 621   1      
 622   1              if (*argstr == ';') 
 623   1              {
 624   2                      *argstr++ = '\0';
 625   2              }
 626   1              *resid = argstr;
 627   1      }
 628          
 629          void ExecCommand(char *buf)
 630          {
 631   1              char argc,*argv[8],*resid,i;
 632   1              COMMAND *Command = 0;
 633   1      
 634   1              while(*buf)
 635   1              {
 636   2                      memset(argv,0,sizeof(argv));
 637   2                      ParseArgs(buf, &argc, argv, &resid);
 638   2                      if(argc > 0)
 639   2                      {
 640   3                              for(i = 0; i < MAX_COMMAND_NUM; i++)
 641   3                              {
 642   4                                      Command = &CommandList[i];      
 643   4      //                              if(strncmp(Command->CommandName,argv[0],strlen(argv[0])) == 0)
 644   4                                      if(strcmp(Command->CommandName,argv[0]) == 0)
 645   4                                              break;
 646   4                                      else
 647   4                                              Command = 0;
 648   4                              }
 649   3                              if(Command == 0)
 650   3                              {
 651   4                                      SerialSendStr(" Could not found \"");
 652   4                                      SerialSendStr(argv[0]);
 653   4                                      SerialSendStr("\" command\r\n");
 654   4                                      SerialSendStr(" If you want to konw available commands, type 'help'\r\n\r\n"); 
 655   4                              }
 656   3                              else
 657   3                              {
 658   4                                      Command->CommandFunc(argc,argv);
 659   4                              }
 660   3                      }
 661   2                      buf = resid;
 662   2              }
 663   1      }
 664          
 665          void RunHyperTerminal(void)
 666          {
 667   1              if(ExecCommandFlag)
 668   1              {
 669   2                      ExecCommand(&SerialBuffer[0]);
 670   2                      SerialSendStr(&PromptBuffer[0]);
 671   2                      memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
 672   2                      CursorPosion = 0;
 673   2                      ExecCommandFlag = 0;
 674   2              }
C51 COMPILER V7.50   HYPERTERMINAL                                                         01/02/2009 14:29:36 PAGE 12  

 675   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3373    ----
   CONSTANT SIZE    =   1432    ----
   XDATA SIZE       =    152     163
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     50    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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