putchar.c

来自「C8051F020开发板所提供的例程」· C语言 代码 · 共 73 行

C
73
字号
/*串口1通信底层函数*/
#include <c8051f020.h>                 // SFR declarations

#define XON  0x11
#define XOFF 0x13


/*
 * putchar (full version):  expands '\n' into CR LF and handles
 *                          XON/XOFF (Ctrl+S/Ctrl+Q) protocol
 */
char putchar (char c)  {

  if (c == '\n')  {
    if ((SCON1&0X1)==0X1)  {
      if (SBUF1 == XOFF)  {
        do  {
          SCON1&=~0X1;
          while ((SCON1&0X1)!=0X1);
        }
        while (SBUF1 != XON);
        SCON1&=~0X1;
      }
    }
    while ((SCON1&0X2)!=0X2);
    SCON1&=~0X2;
    SBUF1 = 0x0d;                         /* output CR  */
  }
  if ((SCON1&0X1)==0X1)  {
    if (SBUF1 == XOFF)  {
      do  {
        SCON1&=~0X1;
        while ((SCON1&0X1)!=0X1);
      }
      while (SBUF1 != XON);
      SCON1&=~0X1; 
    }
  }
  while ((SCON1&0X2)!=0X2);
  SCON1&=~0X2;
  return (SBUF1 = c);
}



#if 0         // comment out versions below

/*
 * putchar (basic version): expands '\n' into CR LF
 */
char putchar (char c)  {
  if (c == '\n')  {
    while ((SCON1&0X2)!=0X2);
    SCON1&=~0X2;
    SBUF1 = 0x0d;                         /* output CR  */
  }
  while ((SCON1&0X2)!=0X2);
  TI = 0;
  return (SBUF1 = c);
}


/*
 * putchar (mini version): outputs charcter only
 */
char putchar (char c)  {
  while ((SCON1&0X2)!=0X2);
  SCON1&=~0X2;
  return (SBUF1 = c);
}

#endif

⌨️ 快捷键说明

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