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에 대한 어떤 선언도 보지 못했을 것입니다. 이제 두 번째 접근법. 내가 선언
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;
}
}
내 문제는 내가 모든 명령을 실행하고있다하지만 난 메인 스위치의 경우 명령 "어떠한 위험한 전압 변동들로부터 아날로그"중 하나에 좀 더 케이스를 선택합니다. 그것을 위해 중첩 된 스위치 케이스를 썼다. hyperteminal에서 "muxsel"명령을 선택하면 "muxselection"과 같이 인쇄됩니다. 그런 다음 두 번째 스위치에서 "case '1'을 선택하기 위해 1을 입력하면 아무 것도 인쇄되지 않습니다. 그것은 "command not found"를 인쇄 중입니다. 무엇이 문제인가. 중첩 된 스위치를 실행하고 싶지만 위의 코드를 사용하여이 작업을 수행 할 수 없습니다.
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;
}
}
}
다음과 같이 중첩 스위치 케이스와 주 스위치 케이스 호출을위한 하나의 기능을 생성합니다.
void uniCom(void) {
switch (Command) {
/* ... */
case (muxsel):
printf(muxselection);
selcase();
Command = 0;
break;
/* ... */
default:
Command = 0;
break;
}
}
이 방법도 작동하지 않습니다.이 문제를 극복하는 방법을 알려주세요. 나는 "muxsel"과 같은 메인 스위치의 명령에서 하나를 선택하고 싶습니다. 그 후에는 mux 채널을 case 문을 사용하여 선택해야합니다. 어떤 도움을 주셔서 감사합니다.
미리 감사드립니다.
이 문제를 해결했습니다.
들여 쓰기가 아주 멀리 떨어져있어서 코드를 읽기가 약간 어렵습니다. – unwind
'case (muxsel) :'가 변경된 경우가 컴파일됩니까? 나는'c '가'switch (c)'를 위해 올 곳이 없다고 봅니다. '케이스 2 : ---- '은 말할 것도없고, 장소 홀더라고 생각합니다. – luk32
명령이 전역 변수입니까? *이 코드는 전문가가 작성했습니다 * – wildplasser