質問編集履歴

3

誤字の修正、説明の追加

2022/04/28 09:00

投稿

raithend
raithend

スコア22

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; /*スイッチの変化が変化した際に、変化前の状態を記録する変数。最初はSW=1(入力なし)の状態なので、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;の追加、コメントの追加、また説明の追加を行いました。

2022/04/28 08:35

投稿

raithend
raithend

スコア22

test CHANGED
File without changes
test CHANGED
@@ -1,19 +1,41 @@
1
1
  現在マイコンにて、スイッチを押して離すとLEDの点滅が切り替わるプログラムを考えており、以下のプログラムを作成しました。
2
+ スイッチはプッシュスイッチで、変数SWとし、押すと0が入力され、離すと1が入力されます。
2
- ただし、スイッチSW=0でオン、LED0でオンとなります。
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となります。

2022/04/26 08:36

投稿

raithend
raithend

スコア22

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
  SWwasON=0;
7
7
  }
8
8
 
9
- if((SW==0)&&(SWwasON==0)){
9
+ if((SW==1)&&(SWwasON==0)){
10
10
  LED=1-LED;
11
11
  SWwasON=1;
12
12
  }