代码行不会进入de switch-case

时间:2013-11-29 13:54:43

标签: c programming-languages

我开始使用C语言,但到目前为止我有一些错误,我得到了一个代码,但是当我运行它时,他突然回到开始而没有进入swicth-case,我该怎么办?为了解决这个问题,我正在使用微芯片的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”的最后一个值后返回

1 个答案:

答案 0 :(得分:1)

您在函数调用中缺少()

没有(),函数名称被视为函数指针而不是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();
}