teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

ソース追記

2020/09/02 23:17

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -31,4 +31,36 @@
31
31
  }
32
32
  return 0;
33
33
  }
34
+ ```
35
+ 「追記」これなら29行
36
+ ```c
37
+ #include <stdint.h>
38
+
39
+ void func(uint8_t v)
40
+ {
41
+ P4.DR.BYTE = v;
42
+ PB.DR.BYTE = 0x00;
43
+ //待ち時間処理(500[m秒])
44
+ for(int i = 0; i < 500; i++) { //待ち時間処理(500*1[m秒])
45
+ for(int j = 0; j < 20000; j++) //待ち時間処理(1[m秒])
46
+ ;
47
+ }
48
+ }
49
+ /*main関数*/
50
+ int main(void)
51
+ {
52
+ //LEDドットマトリクスの入出力設定
53
+ P4.DDR = 0xff;
54
+ PB.DDR = 0xff;
55
+
56
+ static uint8_t va[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
57
+ size_t pos = 0;
58
+ //点滅の永久ループ
59
+ while(1) {
60
+ //N行目のLEDがすべて点灯
61
+ func(va[pos]);
62
+ pos = (pos + 1) & 0x07;
63
+ }
64
+ return 0;
65
+ }
34
66
  ```

1

ソース修正

2020/09/02 23:16

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,4 +1,4 @@
1
- 41
1
+ 31
2
2
  ```c
3
3
  #include <stdint.h>
4
4
 
@@ -7,8 +7,7 @@
7
7
  P4.DR.BYTE = v;
8
8
  PB.DR.BYTE = 0x00;
9
9
  //待ち時間処理(500[m秒])
10
- for(int i = 0; i < 500; i++) //待ち時間処理(500*1[m秒])
10
+ for(int i = 0; i < 500; i++) { //待ち時間処理(500*1[m秒])
11
- {
12
11
  for(int j = 0; j < 20000; j++) //待ち時間処理(1[m秒])
13
12
  ;
14
13
  }
@@ -20,26 +19,16 @@
20
19
  P4.DDR = 0xff;
21
20
  PB.DDR = 0xff;
22
21
 
22
+ uint8_t v = 0x80;
23
23
  //点滅の永久ループ
24
24
  while(1) {
25
- //行目のLEDがすべて点灯
25
+ //N行目のLEDがすべて点灯
26
- func(0x80);
26
+ func(v);
27
- //二行目のLEDがすべて点灯
27
+ v >>= 1;
28
+ if(v == 0x00) {
28
- func(0x40);
29
+ v = 0x80;
29
- //三行目のLEDがすべて点灯
30
- func(0x20);
30
+ }
31
- //四行目のLEDがすべて点灯
32
- func(0x10);
33
- //五行目のLEDがすべて点灯
34
- func(0x08);
35
- //六行目のLEDがすべて点灯
36
- func(0x04);
37
- //七行目のLEDがすべて点灯
38
- func(0x02);
39
- //八行目のLEDがすべて点灯
40
- func(0x01);
41
31
  }
42
32
  return 0;
43
33
  }
44
-
45
34
  ```