c51,单片机从串口接收字符串,放到一个数组里面,然后在与一个常量字符串比较的程序,谢谢

 我来答
匿名用户
2012-04-13
展开全部
建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词
786308695
推荐于2018-03-11 · TA获得超过110个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:92.1万
展开全部
#include<reg51.h>
#define uint unsigned char
#define uchar unsigned int
sbit D=P3^2;
sbit P3_4=P3^4;
uchar ser_receive; //串口接收到的数据
uchar ser_flag=0;
uchar receive_number[4];
uchar i=0;
uchar j;
uint a=0,b=0,c=0;
void function();
void init_pin(void);
void init_ser()
{
TMOD=0X20;//定时器1工作在方式2
TH1=0XFD;
TL1=0XFD; //波特率9600
TR1=1;
EA=1;
// EX0=1;
// IT0=1;
SM0=0;
SM1=1;
REN=1;//允许串口接收
ES=1;//开串口 中断
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}

void init_pin(void)
{

P1=0x00;
P0=0x00;
P2=0x00;

}

void ser() interrupt 4 //中断函数不用声明
{
if(RI==1)
{
RI=0;
ser_receive=SBUF;
if(ser_receive!='\0')
{
receive_number[i]=ser_receive;
i++;
if(i==4)
{
i=0;
ser_flag=1;
init_pin(); //初始化引脚
P2=0xff; //打开所有的锁存器
function(); //调用相应函数
P2=0x00;
}

}
}

}

void function()
{

/*****************初始化状态***********************/
if((receive_number[0]=='0'&&receive_number[1]=='x'&&receive_number[2]=='0'&&receive_number[3]=='7')||(receive_number[0]=='0'&&receive_number[1]=='x'&&receive_number[2]=='0'&&receive_number[3]=='8')) //暂停
{
init_pin();
delay(1000);
}
/*****************一号************************/
if(receive_number[0]=='0'&&receive_number[1]=='x'&&receive_number[2]=='0'&&receive_number[3]=='0')
{
init_pin();
a=4;
if(a==3)
init_pin();

P0=0x00;
P1=0x01;
P2=0x01;
}

}

void main()
{
init_pin();
init_ser();
while(1)
{
if(ser_flag==1)
{
ES=0;
ser_flag=0;
for(j=0;j<4;j++)
{
SBUF=receive_number[j];
while(!TI);
TI=0;
delay(10);
}

ES=1;
}
}

}你说的是不是这个意思?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
推荐于2016-03-02 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
#include<reg51.h>
#include<stdio.h>
unsigned char a[16],b[16]="0123456789ABCDEF",i,pr;
void ser_isr(void) interrupt 3
{
if(RI==1)
{
RI=0;
a[pr]=SBUF;
pr++;
pr&=0x0f;
}
}
main()
{
TI=1;
EA=1;
pr=0;
while(1){
for(i=0;i<16;i++){
if(a[i]!=b[i])break;
printf("A=B\n");
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zqinfo
2012-11-22 · TA获得超过3329个赞
知道小有建树答主
回答量:1064
采纳率:41%
帮助的人:163万
展开全部
用hash算法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式