#include<reg52.h>
#include<string.h>
typedef unsigned char uchar;
void SendOne(uchar);
void SendStr(uchar *ptr);
uchar name[]="刘小明";//匹配姓名
uchar number[]="16990332";//匹配学号
uchar Re=0;//记录接受字符数
uchar receivesbuf[10];//接受的字符串
void main()
{
uchar i=0;
TMOD = 0x20; //定时器1,模式2工作模式
SCON = 0x50; //串口工作模式1,允许REN /* SCON: 模式 1, 8-bit UART, 使能接收 */
TH1 = 0xFD;
TL1 = TH1; //波特率9600
PCON = 0x00; //波特率不倍增
EA = 1;//允许中断
ES = 1;//允许串行口中断
TR1 = 1; //启动定时器1
while(name[i]!='\0')//发送姓名给单片机
{
SendOne(name[i++]);
}
while(1)
{
if((strcmp(name,receivesbuf)==0)) //判断字符串是否相等
{
SendStr(number);
for(i=0;receivesbuf[i]!='\0';i++) //接收清0
{
receivesbuf[i]=0;
}
Re=0;
}
}
}
void UART_ISR(void) interrupt 4
{
if(RI)
{
if(Re<10)
receivesbuf[Re++]=SBUF;
RI = 0; //清除接受中断标志位
}
else
TI = 0; //串口发中断是发送完缓冲区数据之后产生
}
void SendOne(uchar c)
{
ES = 0; //禁止中断
SBUF = c;
while(!TI); //等待发送完毕
TI = 0; //清TI中断
ES = 1; //打开中断
}
void SendStr(uchar *ptr)
{
for(;*ptr!='\0';ptr++)
{
SendOne(*ptr);
}
}
自己写了一段代码 不知道哪里错了 |