?? test1.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);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -