我开始使用C语言,但是到现在我有一些错误,我得到了一个代码但是当我运行它时,他突然回到开头没有进入swicth-case,我该怎么办为了解决这个问题,我正在使用 Microchip 的 PIC18f4550 以及 MPLAB 和 C18 编译器。感谢您的时间和考虑。她的代码:
void SECUENCIA_1();
void SECUENCIA_2();
void SECUENCIA_3();
void SECUENCIA_4();
void SECUENCIA_5();
void SECUENCIA_6();
void SECUENCIA_ERROR();
void SALIDA_OK();
int i;
unsigned char COMBINACION;
void main(void) {
ADCON1 = 0x0F;
PORTA = 0x00;
TRISA = 0b00000;
PORTC = 0x00;
TRISC = 0b11100000;
PORTD = 0x00;
TRISD = 0b110000;
PORTE = 0x00;
TRISE = 0b000;
PORTB = 0x00;
TRISB = 0b11111111;
COMBINACION = 0x00;
COMBINACION = COMBINACION | (PORTCbits.RC5);
COMBINACION = COMBINACION << 1;
COMBINACION = COMBINACION | (PORTCbits.RC4);
COMBINACION = COMBINACION << 1;
COMBINACION = COMBINACION | (PORTDbits.RD3);
switch (COMBINACION)
{
case 0x0: SECUENCIA_ERROR; break;
case 0x1: SECUENCIA_1; break;
case 0x2: SECUENCIA_2; break;
case 0x3: SECUENCIA_3; break;
case 0x4: SECUENCIA_4; break;
case 0x5: SECUENCIA_5; break;
case 0x6: SECUENCIA_6; break;
default:SECUENCIA_ERROR;
}
}
.
.
.
.
代码在这句话之后继续,但我不知道为什么它只在设置“COMBINACION”的最后一个值后返回
最佳答案
您的函数调用中缺少 ()
。
如果没有 ()
,函数名将被视为函数指针而不是 C 中的函数调用。
所以像这样添加()
:
switch (COMBINACION)
{
case 0x0: SECUENCIA_ERROR(); break;
case 0x1: SECUENCIA_1(); break;
case 0x2: SECUENCIA_2(); break;
case 0x3: SECUENCIA_3(); break;
case 0x4: SECUENCIA_4(); break;
case 0x5: SECUENCIA_5(); break;
case 0x6: SECUENCIA_6(); break;
default:SECUENCIA_ERROR();
}
关于c - 代码行没有进入 de switch-case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287378/