我开始使用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”的最后一个值后返回
答案 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();
}