質問編集履歴
3
誤字の修正、説明の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,13 +4,14 @@
|
|
4
4
|
また、スイッチ、LEDに関しての変数をそれぞれSW、LEDとしておりますが、これは簡略的に記述したもので、実際はPORT.○○といった変数となっております。
|
5
5
|
|
6
6
|
```C
|
7
|
-
int SWwasON = 1; /*スイッチの
|
7
|
+
int SWwasON = 1; /*スイッチの状態が変化した際に、変化前の状態を記録する変数。最初はSW=1(入力なし)の状態なので、SWwasON = 1とする*/
|
8
8
|
|
9
9
|
if(SW==0){ /*スイッチが押された状態*/
|
10
10
|
SWwasON=0;
|
11
11
|
}
|
12
12
|
|
13
|
-
if((SW==1)&&(SWwasON==0)){ /*スイッチへの入力が解除される(先日は、ここを(SW==0)とする致命的な記入ミスをしておりました。)
|
13
|
+
if((SW==1)&&(SWwasON==0)){ /*スイッチへの入力が解除される(先日は、ここを(SW==0)とする致命的な記入ミスをしておりました。)
|
14
|
+
「スイッチの状態が変化前は入力がオン(SWwasON=0)であり、変化後の現在はオフ(SW=1)」の条件を満たしているか*/
|
14
15
|
LED=1-LED; /*スイッチの点滅状態を反転。最初はLED=1で消灯状態*/
|
15
16
|
SWwasON=1;
|
16
17
|
}
|
2
コード中のint SWwasON = 1;の追加、コメントの追加、また説明の追加を行いました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,19 +1,41 @@
|
|
1
1
|
現在マイコンにて、スイッチを押して離すとLEDの点滅が切り替わるプログラムを考えており、以下のプログラムを作成しました。
|
2
|
+
スイッチはプッシュスイッチで、変数SWとし、押すと0が入力され、離すと1が入力されます。
|
2
|
-
|
3
|
+
LEDは変数LEDとし、0で点灯、1で消灯となります。
|
4
|
+
また、スイッチ、LEDに関しての変数をそれぞれSW、LEDとしておりますが、これは簡略的に記述したもので、実際はPORT.○○といった変数となっております。
|
3
5
|
|
4
6
|
```C
|
7
|
+
int SWwasON = 1; /*スイッチの変化が変化した際に、変化前の状態を記録する変数。最初はSW=1(入力なし)の状態なので、SWwasON = 1とする*/
|
8
|
+
|
5
|
-
if(SW==0){
|
9
|
+
if(SW==0){ /*スイッチが押された状態*/
|
6
10
|
SWwasON=0;
|
7
11
|
}
|
8
12
|
|
9
|
-
if((SW==1)&&(SWwasON==0)){
|
13
|
+
if((SW==1)&&(SWwasON==0)){ /*スイッチへの入力が解除される(先日は、ここを(SW==0)とする致命的な記入ミスをしておりました。)*/
|
10
|
-
LED=1-LED;
|
14
|
+
LED=1-LED; /*スイッチの点滅状態を反転。最初はLED=1で消灯状態*/
|
11
15
|
SWwasON=1;
|
12
16
|
}
|
13
17
|
```
|
14
18
|
|
15
|
-
しかしながら、上記のコードを実行しても、LED
|
19
|
+
しかしながら、上記のコードを実行しても、LEDの点灯は行われませんでした。
|
16
20
|
|
17
|
-
上記の2つ目のif文で、SWwasON==0をカットして実行したところ、スイッチを押すとLEDが消灯、離していると点灯するというプログラムとなりました。
|
18
21
|
|
22
|
+
|
23
|
+
上記の2つ目のif文if((SW==1)&&(SWwasON==0))で、&&(SWwasON==0)をカットした以下のプログラム実行したところ、スイッチを押すとLEDが消灯、離していると点灯するというプログラムとなりました。
|
24
|
+
|
25
|
+
```C
|
26
|
+
int SWwasON = 1;
|
27
|
+
|
28
|
+
if(SW==0){
|
29
|
+
SWwasON=0;
|
30
|
+
}
|
31
|
+
|
32
|
+
if(SW==1){
|
33
|
+
LED=1-LED;
|
34
|
+
SWwasON=1;
|
35
|
+
}
|
36
|
+
```
|
37
|
+
|
38
|
+
このプログラムの場合、最初はLED=1で消灯状態となっているので、最初から二つ目のif文の条件を満たし、LEDが点灯、スイッチを押すとその条件を満足しないのでLEDが消灯する、という流れなので、このプログラムはあっているようにも感じます。
|
39
|
+
|
40
|
+
|
19
|
-
|
41
|
+
1つ目のコードは、どの点が間違っていますでしょうか?
|
1
2つ目のif文中に致命的な入力ミスがありました。SW==0ではなくSW==1となります。
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
SWwasON=0;
|
7
7
|
}
|
8
8
|
|
9
|
-
if((SW==
|
9
|
+
if((SW==1)&&(SWwasON==0)){
|
10
10
|
LED=1-LED;
|
11
11
|
SWwasON=1;
|
12
12
|
}
|