putchar.c

来自「这是一个远程温度计 MCU: AT89S52 温度传感器: DS18B20」· C语言 代码 · 共 92 行

C
92
字号
/***********************************************************************/
/*  This file is part of the C51 Compiler package                      */
/*  Copyright KEIL ELEKTRONIK GmbH 1990 - 2002                         */
/***********************************************************************/
/*                                                                     */
/*  PUTCHAR.C:  This routine is the general character output of C51.   */
/*  You may add this file to a uVision2 project.                       */
/*                                                                     */
/*  To translate this file use C51 with the following invocation:      */
/*     C51 PUTCHAR.C <memory model>                                    */
/*                                                                     */
/*  To link the modified PUTCHAR.OBJ file to your application use the  */
/*  following Lx51 invocation:                                         */
/*     Lx51 <your object file list>, PUTCHAR.OBJ <controls>            */
/*                                                                     */
/***********************************************************************/

#include <reg51.h>

#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 (RI) {
	    if (SBUF == XOFF) {
		do {
		    RI = 0;
		    while (!RI);
		}
		while (SBUF != XON);
		RI = 0;
	    }
	}
	while (!TI);
	TI = 0;
	SBUF = 0x0d;		/* output CR  */
    }
    if (RI) {
	if (SBUF == XOFF) {
	    do {
		RI = 0;
		while (!RI);
	    }
	    while (SBUF != XON);
	    RI = 0;
	}
    }
    while (!TI);
    TI = 0;
    return (SBUF = c);
}



#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

⌨️ 快捷键说明

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