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=0i<10i++) //接收清0
{
SystemBuf[i]=0
}
Rx=0
}
}
}
//////////如有小错误,自己调下,手打的,大小写可能不正常,这是标准程序,直接用,
用循环缓存的方法。uchar buf[10]
uchar sIn = 0, sOut = 0
uchar sendFlag = 0
void main(){
...
while(1){
if(sIn != sOut){
if(sendFlag == 0){
SBUF = buf[sOut]
sOut = (sOut + 1) % 10
sendFlag = 1
}
}
}
}
void ser() interrupt 4
{
if(RI){
RI = 0
buf[sIn] = SBUF
sIn = (sIn + 1) % 10
}
if(TI){//一个字节发送完备
TI = 0
sendFlag = 0
}
}