回答編集履歴
3
追記
test
CHANGED
@@ -35,3 +35,83 @@
|
|
35
35
|
|
36
36
|
|
37
37
|
他の方も回答で??と思われている通り、整数でLED番号指定する。。。この場合ならLEDが15個付いているような構成が思い浮かばなかったのでこちらの判断で4つのLED制御として回答しています。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
### 追記
|
42
|
+
|
43
|
+
質問者様の他の質問を見るとビット演算あたりがまだ少し苦手なのかなと見受けられましたので。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
2進数で
|
48
|
+
|
49
|
+
0010というのはつまり16進数で0x02
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
PORTBは8bit?かわかりませんが、下位4ビット以外は全て無視したければ
|
54
|
+
|
55
|
+
`PORTB & 0x0f` <- 0x0fは2進数表記で00001111なので
|
56
|
+
|
57
|
+
としてやれば
|
58
|
+
|
59
|
+
PORTBがもし2進数で11010011だったとしたら上記処理で
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
11010011
|
64
|
+
|
65
|
+
00001111
|
66
|
+
|
67
|
+
をビット演算で&すると
|
68
|
+
|
69
|
+
00000011
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
で00000011という結果を得られます(ようは条件判定に必要のない値を無視する)
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
その要領で
|
78
|
+
|
79
|
+
PORTBのBIT状態を比較するのに
|
80
|
+
|
81
|
+
0001 は16進数で 0x01
|
82
|
+
|
83
|
+
0010 は16進数で 0x02
|
84
|
+
|
85
|
+
0100 は16進数で 0x04
|
86
|
+
|
87
|
+
1000 は16進数で 0x08
|
88
|
+
|
89
|
+
という値でビット演算した値が0になるかどうかで各ビットが1なのか0なのかを判断しています。
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
これの応用でPORTBの下位1ビットと3ビットがONかどうかというのは
|
94
|
+
|
95
|
+
if((PORTB & 0x01) && (PORTB & 0x04)){}
|
96
|
+
|
97
|
+
でもできますが、
|
98
|
+
|
99
|
+
0x01 | 0x04 つまり
|
100
|
+
|
101
|
+
if((PORTB & 0x05) == 0x05)でも比較できます(
|
102
|
+
|
103
|
+
下位ビットがすべて1かどうかの判定は
|
104
|
+
|
105
|
+
0x01 | 0x02 | 0x04 | 0x08 = 0x0F
|
106
|
+
|
107
|
+
なので
|
108
|
+
|
109
|
+
if((PORTB & 0x0F) == 0x0F)
|
110
|
+
|
111
|
+
となるわけです。
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
2
シュウセイ
test
CHANGED
@@ -22,13 +22,13 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
if(PORTB & 0x01){/
|
25
|
+
if(PORTB & 0x01){/* 1番目が点灯している */}
|
26
26
|
|
27
|
-
if(PORTB & 0x02){/
|
27
|
+
if(PORTB & 0x02){/* 2番目が点灯している */}
|
28
28
|
|
29
|
-
if(PORTB & 0x04){/
|
29
|
+
if(PORTB & 0x04){/* 3番目が点灯している */}
|
30
30
|
|
31
|
-
if(PORTB & 0x08){/
|
31
|
+
if(PORTB & 0x08){/* 4番目が点灯している */}
|
32
32
|
|
33
33
|
```
|
34
34
|
|
1
修正
test
CHANGED
@@ -22,13 +22,13 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
if(PORTB & 0x01){// 1番目が点灯している
|
25
|
+
if(PORTB & 0x01){// 1番目が点灯している}
|
26
26
|
|
27
|
-
if(PORTB & 0x02){// 2番目が点灯している
|
27
|
+
if(PORTB & 0x02){// 2番目が点灯している}
|
28
28
|
|
29
|
-
if(PORTB & 0x04){// 3番目が点灯している
|
29
|
+
if(PORTB & 0x04){// 3番目が点灯している}
|
30
30
|
|
31
|
-
if(PORTB & 0x08){// 4番目が点灯している
|
31
|
+
if(PORTB & 0x08){// 4番目が点灯している}
|
32
32
|
|
33
33
|
```
|
34
34
|
|