USART通信を使用していくつかのコマンドを実行し、ATmega32-Aを使用していくつかの値を読み取ろうとしています。私のコードを見てください。私の問題は、いくつかのケース(ネストされたスイッチケース)を追加しようとしていますが、必要なものが得られません。問題を解決するために必要なほとんどすべての情報を提供していることを願っています。
void uniCom(void) {
switch (Command) {
/* ... */
case (muxsel):
printf(muxselection);
switch (c) {
case 1:
printf("this is mux chaneel1");
DDRB = 0b10111111;
PORTB = 0b00000000;
printf("adc Value", ReadAdc());
Command = 0;
break;
case 2:
/*-------------------*/
break;
}
Command = 0;
break;
/* ... */
default:
Command = 0;
break;
}
問題は未定義ですc。そして、muxselectionの宣言が表示されません。おそらく、 ""がありませんか?次に、2番目のアプローチ。
void selcase(void) {
unsigned char c;
printf("muxselection");
while (rx_counter0) {
c = getchar();
switch (c) {
case 1:
printf("this is mux chaneel1");
DDRB = 0b10111111;
PORTB = 0b00000000;
printf("adc Value", ReadAdc());
Command = 0;
break;
case 2:
/*-------------------*/
break;
}
}
}
void uniCom(void) {
switch (Command) {
/* ... */
case (muxsel):
printf(muxselection);
selcase();
Command = 0;
break;
/* ... */
default:
Command = 0;
break;
}
}
私の問題は、宣言したとおりにすべてのコマンドを実行しているのですが、メインのswitchcaseコマンド「muxsel」の1つでさらにいくつかのcaseを選択したいです。そのために私はネストされたswitchcaseを書きました。ハイパーターミナルで「muxsel」コマンドを選択すると、「muxselection」のように印刷されます。次に、1を入力して2番目のスイッチで「case '1'」を選択すると、何も印刷されません。「コマンドが見つかりません」と出力しています。何が問題ですか。ネストされたスイッチを実行したいのですが、上記のコードを使用してそれを実行することはできません。
void selcase(void) {
unsigned char c;
printf("muxselection");
while (rx_counter0) {
c = getchar();
switch (c) {
case '1':
printf("this is mux chaneel1");
DDRB = 0b10111111;
PORTB = 0b00000000;
printf("adc Value", ReadAdc());
c= 0;
break;
case '2':
/*-------------------*/
break;
default;
break;
}
}
}
以下に示すように、ネストされたスイッチケース用に1つの関数を作成し、メインスイッチケースで呼び出します。
void uniCom(void) {
switch (Command) {
/* ... */
case (muxsel):
printf(muxselection);
selcase();
Command = 0;
break;
/* ... */
default:
Command = 0;
break;
}
}
この方法も機能しません。この問題を解決する方法を教えてください。「muxsel」などのメインスイッチcaseのコマンドの1つを選択したいのですが、その後、caseステートメントを使用してmuxチャネルを選択します。助けていただければ幸いです。
前もって感謝します。
私はこの問題を解決しました。