电脑给单片机发送字符串,单片机比较收到的字符串是不是相同的?

通过PC给单片机发送密码,单片机把收到的字符串进行比较,正确进入程序,字符比较这块老是不对,发什么它都可以下入程序,高手们给我分析分析#include<reg52.h>#... 通过PC给单片机发送密码,单片机把收到的字符串进行比较,正确进入程序,字符比较这块老是不对,发什么它都可以下入程序,高手们给我分析分析
#include<reg52.h>
#include<string.h>

void init();
void out_asc(unsigned char *a);
void dsplay(unsigned int z);
void ComOutEnter(void);
unsigned int b1,b2;
void main()
{
init();
while(1)
{
out_asc("______________________________________");ComOutEnter();
out_asc("| welcome come back |");ComOutEnter();
out_asc("| |");ComOutEnter();
out_asc("______________________________________");ComOutEnter();
out_asc("现在进入身份确认程序输入密码");ComOutEnter();
while(1)
{
RI=0;
b1=0;b2=SBUF;
while(!RI);
RI=0;
if(b2==b1)
{
out_asc("ok");
}
}

}
}

void init()
{
SCON=0x50;
TMOD=0x20;
PCON=0x80;
TH1=0xf3;
TL1=0xf3;
TR1=1;
}

void out_asc(unsigned char *a)
{
for(a;*a!='\0';a++)
{
TI=0;
SBUF=*a;
while(!TI);
TI=0;

}
}

void dsplay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void ComOutEnter(void)
{
SBUF = 0x0d;
while(!TI);
TI = 0;
SBUF = 0x0a;
while(!TI);
TI = 0;
}
有没有高手给一个密码效验的子程序??
展开
 我来答
匿名用户
2010-05-17
展开全部
你的密码是字符串,
先想清楚怎么接收一串数据后再比较。

建议程序大致流程:
先定义个全局变量数组,至少要大于密码长度
用串口中断接收,
接收到第一个数据后,存入数组首地址,打开定时中断,
期间接收到的数据都放在数组里,顺便记录接收数据长度
定时中断到时检验数组内的值和密码是不是相等
然后输出结果
天空是灰白色的
2010-05-15 · TA获得超过341个赞
知道答主
回答量:81
采纳率:0%
帮助的人:85.8万
展开全部
*b1 是一个无符号整型变量,而b1是指这个变量所在的内存地址指针,你用if(b2==b1)?指针==指针?两个同时分配的变量地址怎么会一样呢?
还有 *b1='pass123'是一组字符串组,*b2=SBUF;只是接收一个字符,两者更没有可比性。
建议你在字符后面加一个校验位或者只检验最后一位字符对不对称,
例如: if(*(b1+6)=="3")
{
out_asc("ok");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2010-05-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
在取出数据的指令前面,应该先判定串行口收到数据没有。
while(!RI); //RI=0,就等待
*b2=SBUF; //取出收到的数据
RI=0;
------------
另外,由SBUF取出的数据,只是一个字节,和'pass123'比较,显然不合适。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活营口
2010-05-15 · TA获得超过187个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:267万
展开全部
while(1)
{
RI=0;
b1=0;
B2=99;//初始值
while(!RI);//收到
RI=0;
b2=SBUF;//读取

if(b2==b1)//判断
{
out_asc("ok");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式