uchar idata SystemBuf[10]; //用于接收uchar Rx=0; //接收数据条数uchar code AT[]="YES,IT IS";void UART_init (void){ TMOD=0x20; //用定时器1 PCON=0x00; //波特率不加倍 SCON=0x50; //串行方式1 TH1=0xFD; //9600 TL1=0xFD; // EA=1; // ES=1; // TR1=1; }void sendchar(uchar ch) //串口送一个字节{ SBUF=ch; while(TI==0); TI=0;}void sendstring(uchar *p) //送字符串{ while(*p) { sendchar(*p); p++;} }///////void receive(void) interrupt 4 using 1 //中断{ if(RI){ if(Rx<10) //这儿最多收10个字节 { SystemBuf[Rx]=SBUF; Rx++; } RI=0; } }///void main(){ uchar i; UART_init();while(1) { if(SystemBuf=='S') { sendstring(AT); for(i=0;i<10;i++) //接收清0 { SystemBuf[i]=0; } Rx=0; } }}//////////如有小错误,自己调下,手打的,大小写可能不正常,这是标准程序,直接用,
#include<reg52.h>unsigned char flag,a;void main(){ TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { /* if(RI==1) { RI=0; P1=SBUF; }*/ if(flag==1) { ES=0; flag=0; SBUF='1';//28; while(!TI); TI=0; SBUF='2';//28; while(!TI); TI=0; SBUF='3';//28; while(!TI); TI=0; ES=1; } }}void ser() interrupt 4{ RI=0;// P1=SBUF; a=SBUF; flag=1;}把字符换一下就行了