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

📄 test1.c

📁 嵌入式C语言程序设计——使用MCS-51
💻 C
字号:
/*------------------------------------------------------------------------------
rs232.C

Copyright 1995-1999 Keil Software, Inc.
------------------------------------------------------------------------------*/

#include <AT89X51.h>
#include <stdio.h>

#define XTAL 	11059200
#define	baudrate	9600

#define	OLEN		8

unsigned char	ostart;
unsigned char	oend;
char idata		outbuf[OLEN];
	
#define	ILEN		8

unsigned char	istart;
unsigned char	iend;
char idata		inbuf[ILEN];
bit				sendfull;
bit				sendactive;

static void com_isr(void) interrupt 4 using 1
{
	char	c;
	if(RI) {
		c=SBUF;
		RI=0;
		if(istart+ILEN != iend) {
			inbuf[iend++ & (ILEN-1)]=c;
		}
	}
	if(TI!=0) {
		TI=0;
		if(ostart != oend) {
			SBUF=outbuf[ostart++ & (OLEN-1)];
			sendfull=0;
		}
		else {
			sendactive=0;
		}
	}
}
void com_initialize(void) {
	istart=0;
	iend=0;
	ostart=0;
	oend=0;
	sendactive=0;
	sendfull=0;
	PCON |= 0x80;
	TMOD|=0x20;
	TH1=(unsigned char) (256-(XTAL/(16L*12L*baudrate)));
	TR1=1;
	SCON=0x50;
	ES=1;
}

void putbuf(char c) {
	if(!sendfull) {
		if(!sendactive) {
			sendactive=1;
			SBUF=c;
	    }
	    else {
			ES=0;
			outbuf[oend++ & (OLEN-1)]=c;
			if((( oend ^ ostart) & (OLEN-1))==0) {
				sendfull=1;
			}
			ES=1;
    	}
	}
}
char putchar(char c)
{
	if(c == '\n') {
		while(sendfull);
		putbuf(0x0D);
	}
	while(sendfull);
	putbuf(c);
	return(c);
}

char _getkey(void) {
	char c;
	while(iend==istart) {
		;
	}
	ES=0;
	c=inbuf[istart++ & (ILEN-1)];
	ES=1;
	return(c);
}

void main (void)  {
	EA=1;
  
	com_initialize();
	while(1) {
    	char c;
        c=getchar();
        printf("\nYou typed the character %c.\n",c);
    }
}

⌨️ 快捷键说明

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