質問編集履歴

2

ご教示ありがとうございます。コードを見やすくしました。ご確認お願いいたします。

2020/04/30 23:30

投稿

GM-DS
GM-DS

スコア3

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,8 @@
36
36
 
37
37
 
38
38
 
39
+ ```ここに言語を入力
40
+
39
41
  #define _XTAL_FREQ 2000000
40
42
 
41
43
 
@@ -44,25 +46,25 @@
44
46
 
45
47
  //マイコン設定
46
48
 
47
- OSCCON = 0b01100000; //内部クロック周波数を2MHzに設定
49
+ OSCCON = 0b01100000; //内部クロック周波数を2MHzに設定
48
50
 
49
- ANSELA = 0b00000000; //PortA全てのピンをデジタルモードに設定
51
+ ANSELA = 0b00000000; //PortA全てのピンをデジタルモードに設定
50
52
 
51
- ANSELC = 0b00000000; //PortC全てのピンをデジタルモードに設定
53
+ ANSELC = 0b00000000; //PortC全てのピンをデジタルモードに設定
52
54
 
53
- TRISA = 0b00000000; //PortA全てのピンを入力モードに設定
55
+ TRISA = 0b00000000; //PortA全てのピンを入力モードに設定
54
56
 
55
- TRISC = 0b00000000; //PortC全てのピンを出力モードに設定
57
+ TRISC = 0b00000000; //PortC全てのピンを出力モードに設定
56
58
 
57
59
 
58
60
 
59
61
  //初期処理:電源ON後、全ての出力を一度OFFにする。
60
62
 
61
- LATC0 = 0; //LED1
63
+ LATC0=0; //LED1
62
64
 
63
- LATC1 = 0; //LED2
65
+ LATC1=0; //LED2
64
66
 
65
- LATC2 = 0; //BZ
67
+ LATC2=0; //BZ
66
68
 
67
69
 
68
70
 
@@ -72,15 +74,15 @@
72
74
 
73
75
  if(RA5==1){
74
76
 
75
- int cnt=0; //PB1がONの時、最初にカウンタに0を代入
77
+ int cnt=0; //PB1がONの時、最初にカウンタに0を代入
76
78
 
77
- while(cnt<10000 && RA4==0){ //カウント値が30秒以下、PB2 OFFの時、下を実行
79
+ while(cnt<10000 && RA4==0){ //カウント値が30秒以下、PB2 OFFの時、下を実行
78
80
 
79
- LATC2 = 1 //BZ ON
81
+ LATC2=1; //BZ ON
80
82
 
81
- if(cnt1%500<250)LATC0=1; //LED1 ON
83
+ if(cnt%500<250)LATC0=1; //LED1 ON
82
84
 
83
- else LATC0=0; //LED1 OFF
85
+ else LATC0=0; //LED1 OFF
84
86
 
85
87
  __delay_ms(1);
86
88
 
@@ -88,17 +90,17 @@
88
90
 
89
91
  }
90
92
 
91
- while(cnt==10000){ //カウント値が10秒に達したら下を実行
93
+ while(cnt==10000){ //カウント値が10秒に達したら下を実行
92
94
 
93
- LATC0=0; //LED1 OFF
95
+ LATC0=0; //LED1 OFF
94
96
 
95
- LATC2=0; //BZ OFF
97
+ LATC2=0; //BZ OFF
96
98
 
97
- while(RA4==0){ //PB2を押さない限り下を実行
99
+ while(RA4==0){ //PB2を押さない限り下を実行
98
100
 
99
- if(cnt%1000<500)LATC1=1; //LED2 ON
101
+ if(cnt%1000<500)LATC1=1; //LED2 ON
100
102
 
101
- else LATC1=0; //LED2 OFF
103
+ else LATC1=0; //LED2 OFF
102
104
 
103
105
  __delay_ms(1);
104
106
 
@@ -108,11 +110,11 @@
108
110
 
109
111
  }
110
112
 
111
- LATC0=0; //LED1 OFF
113
+ LATC0=0; //LED1 OFF
112
114
 
113
- LATC1=0; //LED2 OFF
115
+ LATC1=0; //LED2 OFF
114
116
 
115
- LATC2=0; //BZ OFF
117
+ LATC2=0; //BZ OFF
116
118
 
117
119
  }
118
120
 
@@ -124,13 +126,17 @@
124
126
 
125
127
 
126
128
 
129
+
130
+
127
- ### 試したこと
131
+ ```### 試したこと
128
132
 
129
133
  ①の10秒カウントについて
130
134
 
131
135
  ・点滅コードが原因かと思い、LED1の点滅をやめて10間点灯に変更すると正常に10後LED2が点滅した。
132
136
 
133
137
  ・点滅コードを
138
+
139
+ ```ここに言語を入力
134
140
 
135
141
  for(timer=0;teimer<10;timer++){
136
142
 
@@ -142,7 +148,9 @@
142
148
 
143
149
  __delay_ms(500);
144
150
 
151
+
152
+
145
- にすると、PB2を押してもキャンセルされない時がある。
153
+ ```にすると、PB2を押してもキャンセルされない時がある。
146
154
 
147
155
  ②の点滅が点灯に代わってしまう事について
148
156
 

1

記述を統一しました。

2020/04/30 23:30

投稿

GM-DS
GM-DS

スコア3

test CHANGED
File without changes
test CHANGED
@@ -44,41 +44,43 @@
44
44
 
45
45
  //マイコン設定
46
46
 
47
- OSCCON = 0b01100000;//内部クロック周波数を2MHzに設定
47
+ OSCCON = 0b01100000; //内部クロック周波数を2MHzに設定
48
48
 
49
- ANSELA = 0b00000000;//PortA全てのピンをデジタルモードに設定
49
+ ANSELA = 0b00000000; //PortA全てのピンをデジタルモードに設定
50
50
 
51
- ANSELC = 0b00000000;//PortC全てのピンをデジタルモードに設定
51
+ ANSELC = 0b00000000; //PortC全てのピンをデジタルモードに設定
52
52
 
53
- TRISA = 0b00000000;//PortA全てのピンを入力モードに設定
53
+ TRISA = 0b00000000; //PortA全てのピンを入力モードに設定
54
54
 
55
- TRISC = 0b00000000;//PortC全てのピンを出力モードに設定
55
+ TRISC = 0b00000000; //PortC全てのピンを出力モードに設定
56
56
 
57
57
 
58
58
 
59
59
  //初期処理:電源ON後、全ての出力を一度OFFにする。
60
60
 
61
- LATC0 = 0;//作動灯
61
+ LATC0 = 0; //LED1
62
62
 
63
- LATC1 = 0;//不具合灯
63
+ LATC1 = 0; //LED2
64
64
 
65
- LATC2 = 0;//BZ
65
+ LATC2 = 0; //BZ
66
66
 
67
+
68
+
67
- //RA5:作動PB、RA4:停止PB
69
+ //RA5:PB1、RA4:PB2
68
70
 
69
71
  while(1){
70
72
 
71
73
  if(RA5==1){
72
74
 
73
- int cnt=0;//作動PBがONの時、最初にカウンタに0を代入
75
+ int cnt=0; //PB1がONの時、最初にカウンタに0を代入
74
76
 
75
- while(cnt<10000 && RA4==0){//カウント値が30秒以下、停止PB OFFの時、下を実行
77
+ while(cnt<10000 && RA4==0){ //カウント値が30秒以下、PB2 OFFの時、下を実行
76
78
 
77
- LATC2 = 1;//BZ ON
79
+ LATC2 = 1; //BZ ON
78
80
 
79
- if(cnt1%500<250)LATC0=1;//作動点滅Hi
81
+ if(cnt1%500<250)LATC0=1; //LED1 ON
80
82
 
81
- else LATC0=0;//作動点滅Low
83
+ else LATC0=0; //LED1 OFF
82
84
 
83
85
  __delay_ms(1);
84
86
 
@@ -86,17 +88,17 @@
86
88
 
87
89
  }
88
90
 
89
- while(cnt==10000){//カウント値が10秒に達したら下を実行
91
+ while(cnt==10000){ //カウント値が10秒に達したら下を実行
90
92
 
91
- LATC0=0;//作動灯OFF
93
+ LATC0=0; //LED1 OFF
92
94
 
93
- LATC2=0;//BZ OFF
95
+ LATC2=0; //BZ OFF
94
96
 
95
- while(RA4==0){//停止PBを押さない限り下を実行
97
+ while(RA4==0){ //PB2を押さない限り下を実行
96
98
 
97
- if(cnt%1000<500)LATC1=1;//不具合灯点滅Hi
99
+ if(cnt%1000<500)LATC1=1; //LED2 ON
98
100
 
99
- else LATC1=0;//不具合灯点滅Low
101
+ else LATC1=0; //LED2 OFF
100
102
 
101
103
  __delay_ms(1);
102
104
 
@@ -106,11 +108,11 @@
106
108
 
107
109
  }
108
110
 
109
- LATC0=0;//作動灯OFF
111
+ LATC0=0; //LED1 OFF
110
112
 
111
- LATC1=0;//不具合灯OFF
113
+ LATC1=0; //LED2 OFF
112
114
 
113
- LATC2=0;//BZ OFF
115
+ LATC2=0; //BZ OFF
114
116
 
115
117
  }
116
118