中级会员
 
- 积分
- 203
- 金钱
- 203
- 注册时间
- 2020-5-11
- 在线时间
- 42 小时
|
30金钱
本帖最后由 ruiii 于 2020-8-13 11:02 编辑
mdk无法赋值!!!!这是HC-05模块
- #include "set.h"
- #include "led.h"
- #include "delay.h"
- #include "ds18b20.h"
- #include "lcd.h"
- #include "beep.h"
- #include "Temperature.h"
- #include "usart2.h"
- #include "string.h"
- #include "led.h"
- #include "sys.h"
- #include "stdio.h"
-
- void Set(){
- float Temper;
- u16 t=0,symbol1=0,a,b,c,d;
- u8 len=0;
- u16 Symbol=0;
- DS18B20_Init();
- BEEP_Init();
- LCD_Init();
- if(USART2_RX_STA&0x8000)
- {
- len=USART2_RX_STA&0X7FFF;//得到此次接收到的数据长度
- if(len>1) Symbol=6;
- else {
- if(USART2_RX_BUF[0]=='1')
- {
- //u2_printf("The command you sent is:\r\n 1 \r\n");
- u2_printf(" So turn on the alarm system\r\n");
- Symbol=1;
- }
- if(USART2_RX_BUF[0]=='2')
- {
- //u2_printf("The command you sent is:\r\n 2 \r\n");
- u2_printf(" So close the alarm system\r\n");
- Symbol=2;
- }
- if(USART2_RX_BUF[0]=='3')
- {
- //u2_printf("The command you sent is:\r\n 3 \r\n");
- u2_printf(" So reset the alarm system\r\n");
- Symbol=0;
- }
- if(USART2_RX_BUF[0]=='4')
- {
- //u2_printf("The command you sent is:\r\n 4 \r\n");
- u2_printf(" So check whether the alarm system is normal?\r\n");
- if(DS18B20_Init()!=1)Symbol=4;
- else Symbol=5;
- }
- if(USART2_RX_BUF[0]!='1'&&USART2_RX_BUF[0]!='2'&&USART2_RX_BUF[0]!='3'&&USART2_RX_BUF[0]!='4')
- {
- Symbol=6;
- u2_printf("\r\n");
- }
- }
- USART2_RX_STA=0;
- }
- else{
- switch(Symbol){
- case 0:u2_printf(" Please set the system (1 to open, 2 to close, 3 to reset, and 4 to check the hardware system)\r\n");LCD_ShowString(20,130,200,24,24,"Set up the system");break;
- case 1:u2_printf(" Please enter the alarm system start temperature(accurate to 0.1, the range is between -55 to 125)\r\n");LCD_ShowString(20,130,200,16,16,"Input warning temperature");break;
- case 2:u2_printf(" The alarm system is turned off\r\n");LCD_ShowString(40,130,200,24,24,"System is down");break;
- case 3:u2_printf(" The alarm system has been set up(if you need to change the temperature, please enter command 3 to reset)\r\n");LCD_ShowString(40,130,200,24,24,"System is set");break;
- case 4:u2_printf(" After the system is tested, it can run normally\r\nPlease enter the alarm system start temperature(accurate to 0.1, the range is between -55 to 125)\r\n");Symbol=1;break;
- case 5:u2_printf(" System hardware error, please turn off switch detection\r\n");LCD_ShowString(60,130,200,24,24,"Hardware Error!!!");LCD_ShowString(60,130,200,24,24,"Switch Off Check!");break;
- case 6:u2_printf(" Command input error, please input command 3 to reset\r\n");LCD_Init();LCD_ShowString(60,130,200,24,24,"System reset");break;
- }
- delay_ms(500);
- if(Symbol==0)LED0=!LED0;
- else if(Symbol==1)LED0=!LED0;
- else if(Symbol==2)LED0=1;
- else if(Symbol==3)LED0=!LED0;
- else if(Symbol==4)LED0=!LED0;
- else if(Symbol==5)LED0=0;
- else if(Symbol==6)LED0=0;
- while(Symbol==1)
- {
- symbol1=0;
- if(USART2_RX_STA&0x8000)
- {
- len=USART2_RX_STA&0X7FFF;//得到此次接收到的数据长度
- for(t=1;t<len-2;t++){
- if(USART2_RX_BUF[t]<'0'||USART2_RX_BUF[t]>'9')
- {
- symbol1=1;break;
- }
- }
- if(USART2_RX_BUF[len-1]<'0'||USART2_RX_BUF[len-1]>'9')symbol1=1;
- else if(len<=2)symbol1=1;
- else if((USART2_RX_BUF[0]<'0'||USART2_RX_BUF[0]>'9')&&USART2_RX_BUF[0]!='-')symbol1=1;
- else if(USART2_RX_BUF[len-2]!='.')symbol1=1;
- u2_printf("\r\n");
- if(symbol1==1)
- {
- u2_printf("\r\n The temperature input is wrong, please re-enter\r\n");
- LCD_ShowString(40,130,200,16,16,"Re-enter temperature");
- }
- if(symbol1==0)Symbol=3;
- USART2_RX_STA=0;
- if(symbol1==0&&len==5&&USART2_RX_BUF[len-2]=='.')
- {
- if(USART2_RX_BUF[0]=='-')
- {
- b=USART2_RX_BUF[1]-'0';
- c=USART2_RX_BUF[2]-'0';
- d=USART2_RX_BUF[4]-'0';
- Temper=b*10+c*1+d*0.1;
- Temper=-Temper;
- Temperature();
- }
- else{
- a=USART2_RX_BUF[0]-'0';
- b=USART2_RX_BUF[1]-'0';
- c=USART2_RX_BUF[2]-'0';
- d=USART2_RX_BUF[4]-'0';
- Temper=a*100+b*10+c*1+d*0.1;
- Temperature();
- }
- if(Temper<-55.0||Temper>125.0)
- {
- u2_printf("\r\n The temperature input range is wrong, please re-enter\r\n");
- Symbol=1;
- symbol1=1;
- LCD_ShowString(40,130,200,16,16,"Re-enter temperature");
- }
- }
- else if(symbol1==0&&len==4&&USART2_RX_BUF[len-2]=='.')
- {
- if(USART2_RX_BUF[0]=='-')
- {
- b=USART2_RX_BUF[1]-'0';
- c=USART2_RX_BUF[3]-'0';
- Temper=b*1+c*0.1;
- Temper=-Temper;
- Temperature();
- }
- else{
- a=USART2_RX_BUF[0]-'0';
- b=USART2_RX_BUF[1]-'0';
- c=USART2_RX_BUF[3]-'0';
- Temper=a*10+b*1+c*0.1;
- Temperature();
- }
- }
- else if(symbol1==0&&len==3&&USART2_RX_BUF[len-2]=='.')
- {
- if(USART2_RX_BUF[0]=='-')
- {
- u2_printf("\r\n The temperature input is wrong, please re-enter\r\n");
- Symbol=1;
- symbol1=1;
- LCD_ShowString(40,130,200,16,16,"Re-enter temperature");
- }
- else{
- a=USART2_RX_BUF[0]-'0';
- b=USART2_RX_BUF[2]-'0';
- Temper=a*1+b*0.1;
- Temperature();
- }
- }
- if(DS18B20_Get_Temp()/10>=Temper&&Symbol!=1){
- while(1){
- u2_printf(" Warning temperature exceeded\r\n");
- POINT_COLOR=RED;//设置字体为红色
- LCD_ShowString(10,130,200,16,16,"Warning temperature exceeded");
- LED0=0;
- LED1=0;
- BEEP=0;
- delay_ms(1000);//延时1000ms
- POINT_COLOR=RED;//设置字体为红色
- LCD_ShowString(10,130,200,16,16,"Warning temperature exceeded");
- LED0=1;
- LED1=1;
- BEEP=1;
- delay_ms(1000);//延时1000ms
- }
- }
- }
- }
- }
- }
复制代码 无法赋值symbol!!!!
想问问大家怎么回事啊!!!!
|
最佳答案
查看完整内容[请看2#楼]
这样代码看到头疼,逻辑出错了。你先看看最大一个if (收到数据)赋值symbol1[/backcolor]。没收到数据,对symbol1[/backcolor]进行判断。不知道你set是怎么调用的。若是调用一次,将第一个else的处理放在 上面嵌套的else里面,即收到一个数据。如果是循环调用,用静态局部变量,即static u16 symbol1。[/backcolor]
|