如何判断两个数组完全相同?核验字符串AAASSS是否正确
方法一:
定义一个正确的字符数组,然后定义一个函数进行比较
//u8 ture_data[]={'A','A','A','S','S','S'};
u8 judge_dat(u8 a[],u8 b[])
{
u8 i=0;
for(i=0;i<6;i++)
{
if(a[i] != b[i])
{
return 0;
}
}
return 1;
}
if(judge_dat(rx_buffer,ture_data))
{
}
方法二:
直接逐位比较
if(rx_buffer[0]=='A' && rx_buffer[1]=='A' && rx_buffer[2]=='A' && rx_buffer[3]=='S' && rx_buffer[4]=='S' && rx_buffer[5]=='S' )
{
uart_return_flag=1;
}
串口如何实现数据回显
串口如何发送前面读取的数组
如果是数字的话,要转化为相应字符型数字
例如read_temp/10+‘0’
状态记录问题
if(last_light_near_flag==1 && light_near_flag==0) //记录停留时间 接近 //对比一下第七届的状态记录
{
light_chufa_state=1;
}
if(last_light_near_flag==0 && light_near_flag==1) //触发记录时间 远离
{
light_chufa_state=2;
}
switch(light_chufa_state)
{
case 1:break; //高电平到低电平的停留时间
case 2:break; //触发记录
}
switch(question_vol_state)
{
//正常模式
case 0:
if(read_adc_vol>threshold_high) //事件0
{
question_vol_state=1;
}
if(read_adc_vol<threshold_low)
{
question_vol_state=2;
}
break;
//大于max
case 1:
if(read_adc_vol<threshold_high)
{
question_vol_state=0;
}
break;
//小于min
case 2:
if(read_adc_vol>threshold_low)
{
question_vol_state=0;
}
break;
}
状态记录问题
if(work_mode==1) //自动记录模式
{
if(last_light_near_flag==1 && light_near_flag==0 )//上升沿->触发记录
{
jilu_state=1;
}
if(last_light_near_flag==0 && light_near_flag==1 )//下降沿->计数
{
jilu_state=2;jilu_time_index++;if(jilu_time_index==5)jilu_time_index=0;
if(jilu_sustain_time[jilu_time_index]!=0)jilu_sustain_time[jilu_time_index]=0;cunchu_one=1;
}
switch(jilu_state)//0:计算停留时间 1:下降沿 2:上升沿
{
// case 0:break;
case 1://从第1行开始存储的
// if(cunchu_one==1)
{
cunchu_one=0;
send_date[jilu_time_index][0]='{'; send_date[jilu_time_index][1]=read_temperature_val/10+'0'; send_date[jilu_time_index][2]=read_temperature_val%10+'0';
send_date[jilu_time_index][3]='-'; send_date[jilu_time_index][4]=read_adc_val/10+'0'; send_date[jilu_time_index][5]=read_adc_val%10+'0';
send_date[jilu_time_index][6]='%'; send_date[jilu_time_index][7]='}'; send_date[jilu_time_index][8]='{';
send_date[jilu_time_index][9]=shi/10+'0'; send_date[jilu_time_index][10]=shi%10+'0'; send_date[jilu_time_index][11]='-';
send_date[jilu_time_index][12]=fen/10+'0'; send_date[jilu_time_index][13]=fen/10+'0'; send_date[jilu_time_index][14]='-';
send_date[jilu_time_index][15]=miao/10+'0'; send_date[jilu_time_index][16]=miao%10+'0'; send_date[jilu_time_index][17]='}';
send_date[jilu_time_index][18]='{'; send_date[jilu_time_index][19]=jilu_sustain_time[jilu_time_index]/10+'0'; send_date[jilu_time_index][20]=jilu_sustain_time[jilu_time_index]%10+'0';
send_date[jilu_time_index][21]='}';
}
break;
case 2:
if(delay_1s_flag==1)
{
delay_1s_flag=0;
jilu_sustain_time[jilu_time_index]++;
}
break;
}
jilu_sustain_time_menu[0]=smg_duan[jilu_time_index%10];
jilu_sustain_time_menu[1]=smg_duan[jilu_sustain_time[jilu_time_index]%10];
if(delay_1s_flag==1 && work_flag==1)
{
delay_1s_flag=0;
for(send_date_hang=0;send_date_hang<7;send_date_hang++)
{
for(send_date_lie=0;send_date_lie<22;send_date_lie++)
{
SendData(send_date[send_date_hang][send_date_lie]);
}
SendData('\r');
SendData('\n');
}
}
}
注意
①如果同时读取光敏电阻和电位器的话 会出现位置窜位 直接两个数据对调就可以了,对调的话就是0x01的乘相应数字了
②定义二维数组会出现Ram用完的情况,就可以使用xdata定义数组,不过访问速度会慢一点,但是对我们没有影响
③write_24c02后延时10ms
④if(rx_buffer_index==6) 总是 写错了rx_buffer导致串口不好用
⑤读取温度、光敏电阻时一定要关中断包括了定时器中断和串口中断,所以最好关EA
⑥