[蓝桥杯国赛]第五届国赛模拟

如何判断两个数组完全相同?核验字符串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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值