if((PB > 784&&PB < 1080) == 1) //高压锅炉许用压力为7.84~10.8MPa,这里方便计算使用784与1080代替 { LED = 0xff; BUZZ = 0xff; } else { while(1) { LED = ~LED; BUZZ = ~BUZZ; delay(500); } } 这段代码无法完成报警功能,请修改此代码或提供一段代码满足在数值处于784~1080时不报警,超出时报警
时间: 2024-01-12 21:03:00 浏览: 22
可以尝试以下代码:
```
if (PB > 784 && PB < 1080) {
LED = 0xff;
BUZZ = 0xff;
} else {
while (1) {
LED = ~LED;
BUZZ = ~BUZZ;
delay(500);
if (PB > 1080 || PB < 784) {
break;
}
}
}
```
在数值处于范围内时,LED和BUZZ都会点亮,不会出现报警;当数值超出范围时,会进入while循环,LED和BUZZ会交替闪烁,表示报警,同时每次循环都判断PB的值是否在范围内,如果是,则跳出循环停止报警。
相关问题
if(PA2 > 784&&PA2 < 1080) //高压锅炉许用压力为7.84~10.8MPa,这里方便计算使用784与1080代替 { LED = 0xff; BUZZ = 0xff; } else { while(1) { LED = 0; BUZZ = 0; delay(500); LED = 1; BUZZ = 1; delay(500); } }这段代码无法完成声光报警的功能,请问是哪里出问题了
根据代码来看,当PA2大于784且小于1080时,LED和BUZZ会被设置为1,即关闭声光报警。而当PA2不满足条件时,会进入无限循环并不断地开启和关闭声光报警。因此,代码的逻辑存在问题。
如果你想要实现高压锅炉许用压力范围内不进行声光报警,超出许用压力范围则进行声光报警,可以将代码修改为:
```
if(PA2 > 784 && PA2 < 1080) {
LED = 0xff;
BUZZ = 0xff;
} else {
while(1) {
LED = ~LED;
BUZZ = ~BUZZ;
delay(500);
}
}
```
这样,当PA2不在许用压力范围内时,LED和BUZZ会不断闪烁,实现声光报警的功能。
-2.8,...,2.8,2.9,3.时,b=1/(1+a^2)的取值分别是多少?
由于a的取值范围是从-2.8到3,且a是以0.1为步长递增的,因此可以列出a的取值表:
a | -2.8 | -2.7 | -2.6 | ... | 2.6 | 2.7 | 2.8 | 2.9 | 3
----|--------|--------|--------|-------|-------|-------|-------|-------|-----
b | 1/7.84 |1/7.29 |1/6.76 | ... |1/6.76 |1/7.29 |1/7.84 |1/8.41 |1/9
根据b的定义,可以得到b=1/(1+a^2),因此可以将每个a带入公式计算得到b的值。