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

📄 putchar.lst

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 LST
字号:
C51 COMPILER V7.10   PUTCHAR                                                               12/14/2004 00:05:37 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE PUTCHAR
OBJECT MODULE PLACED IN .\PUTCHAR.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\PUTCHAR.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT
                    -(.\PUTCHAR.lst) OBJECT(.\PUTCHAR.obj)

line level    source

   1          /***********************************************************************/
   2          /*  This file is part of the C51 Compiler package                      */
   3          /*  Copyright KEIL ELEKTRONIK GmbH 1990 - 2002                         */
   4          /***********************************************************************/
   5          /*                                                                     */
   6          /*  PUTCHAR.C:  This routine is the general character output of C51.   */
   7          /*  You may add this file to a uVision2 project.                       */
   8          /*                                                                     */
   9          /*  To translate this file use C51 with the following invocation:      */
  10          /*     C51 PUTCHAR.C <memory model>                                    */
  11          /*                                                                     */
  12          /*  To link the modified PUTCHAR.OBJ file to your application use the  */
  13          /*  following Lx51 invocation:                                         */
  14          /*     Lx51 <your object file list>, PUTCHAR.OBJ <controls>            */
  15          /*                                                                     */
  16          /***********************************************************************/
  17          
  18          #include <reg51.h>
  19          
  20          #define XON  0x11
  21          #define XOFF 0x13
  22          
  23          
  24          /*
  25           * putchar (full version):  expands '\n' into CR LF and handles
  26           *                          XON/XOFF (Ctrl+S/Ctrl+Q) protocol
  27           */
  28           #if 0                                          /*原为此函数*/
               TI=1;
              char putchar (char c)  
              {
              if (c == '\n')  
                      {
                      if (RI)  
                              {
                              if (SBUF == XOFF)  
                                      {
                                      while (SBUF != XON) 
                                              {
                                              RI = 0;
                                               while (!RI);
                                              }
                                      RI = 0; 
                                      }
                              }
                  while (!TI);
                  TI = 0;
                  SBUF = 0x0d;                         /* output CR  */
                      }
              if (RI)  
                      {
                      if (SBUF == XOFF)  
                              {
                              while (SBUF != XON)
C51 COMPILER V7.10   PUTCHAR                                                               12/14/2004 00:05:37 PAGE 2   

                                      {
                              RI = 0;
                                      while (!RI);
                                      }
                              RI = 0; 
                              }
                      }
              while (!TI);
              TI = 0;
              return (SBUF = c);
              }
              #endif
  67          
  68          
  69          #if 0         /* comment out versions below     老版本,已不用*/
              
              /*
               * putchar (basic version): expands '\n' into CR LF
               */
              char putchar (char c)  
              {
                if (c == '\n')  
                      {
                      while (!TI);
                      TI = 0;
                      SBUF = 0x0d;                         /* output CR  */
                      }
                while (!TI);
                TI = 0;
                return (SBUF = c);
              }
              
              
              /*
               * putchar (mini version): outputs charcter only
               */
              char putchar (char c)  
              {
                while (!TI);
                TI = 0;
                return (SBUF = c);
              }
              #endif
  98          
  99          #if 1                                           
 100          /******************************************************************************************
 101          *函数名:                putchar
 102          *参数:                  c
 103          *返回值:                无
 104          *描述:                  为配合UART中断接收而修改的函数,主要修改TI和ES
 105          *编写:                  王绍伟
 106          *版本信息:              V1.0                    2003年8月15日
 107          ******************************************************************************************/
 108          char putchar (char c)
 109          {
 110   1              bit bES;
 111   1              bES=ES;                 /*r暂存ES内容*/
 112   1              ES=0;                   /*r若 想利用TI标志位,就必须先禁止串口中断,否则会冲突*/
 113   1              if (c == '\n')  /*r如果c为换行*/        
 114   1              {
 115   2                      SBUF = 0x0d;
 116   2                      while(!TI);     /*r当TI为0时一直在循环*/
C51 COMPILER V7.10   PUTCHAR                                                               12/14/2004 00:05:37 PAGE 3   

 117   2                      TI=0;   /*r当TI为1时跳出循环,再将TI置为0*/
 118   2              }
 119   1              SBUF = c;
 120   1              while(!TI);
 121   1              TI=0;
 122   1              ES=bES;                 /*待字符发送完毕后,再恢复串口中断允许*/
 123   1              return(1);
 124   1      }
 125          #else
              char putchar (char c)           /*控制PLD输出为57.6K,在6个clock下*/
              {
              
                      unsigned char data i;
                      unsigned char data j;
                      j = c;
              
              
                      EA = 0;
              
                      UART_OUT = 1;
              
                      UART_OUT = 0;           /*START*/
                      i = 3;
                      while(i--);
                      _nop_();
                      _nop_();
                      _nop_();
                      _nop_();
                      _nop_();
              
                      UART_OUT = j >> 0;      /*D0*/  //35
              
                      i = 3;
                      while(i--);
                      _nop_();
                      _nop_();
                      _nop_();
              
                      UART_OUT = j >> 1;      /*D1*/  //35
              
                      i = 3;
                      while(i--);
                      _nop_();
              
                      UART_OUT = j >> 2;      /*D2*/  //34
              
                      i = 3;
                      while(i--);
                      _nop_();
              
                      UART_OUT = j >> 3;      /*D3*/  //35
              
                      i = 3;
                      while(i--);
                      _nop_();
                      _nop_();
                      _nop_();
              
                      UART_OUT = j >> 4;      /*D4*/  //35
              
                      i = 3;
                      while(i--);
C51 COMPILER V7.10   PUTCHAR                                                               12/14/2004 00:05:37 PAGE 4   

                      _nop_();
              
                      UART_OUT = j >> 5;      /*D5*/  //34
              
                      i = 3;
                      while(i--);
                      _nop_();
              
                      UART_OUT = j >> 6;      /*D6*/  //35
              
                      i = 3;
                      while(i--);
              
                      UART_OUT = j >> 7;      /*D7*/  //35
              
                      i = 3;
                      while(i--);
                      _nop_();
                      _nop_();
                      _nop_();
                      _nop_();
                      _nop_();
              
                      UART_OUT = 1;   /*STOP*/        //35
              
                      delay(10);
                      EA =1;
                      return(1);
              
              }
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     32    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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