你的密码是字符串,
先想清楚怎么接收一串数据后再比较。
建议程序大致流程:
先定义个全局变量数组,至少要大于密码长度
用串口中断接收,
接收到第一个数据后,存入数组首地址,打开定时中断,
期间接收到的数据都放在数组里,顺便记录接收数据长度
定时中断到时检验数组内的值和密码是不是相等
然后输出结果
*b1 是一个无符号整型变量,而b1是指这个变量所在的内存地址指针,你用if(b2==b1)?指针==指针?两个同时分配的变量地址怎么会一样呢?
还有 *b1='pass123'是一组字符串组,*b2=SBUF;只是接收一个字符,两者更没有可比性。
建议你在字符后面加一个校验位或者只检验最后一位字符对不对称,
例如: if(*(b1+6)=="3")
{
out_asc("ok");
}
在取出数据的指令前面,应该先判定串行口收到数据没有。
while(!RI); //RI=0,就等待
*b2=SBUF; //取出收到的数据
RI=0;
------------
另外,由SBUF取出的数据,只是一个字节,和'pass123'比较,显然不合适。
while(1)
{
RI=0;
b1=0;
B2=99;//初始值
while(!RI);//收到
RI=0;
b2=SBUF;//读取
if(b2==b1)//判断
{
out_asc("ok");
}
}