2014-09-09 4 views
0

간단한 피스 코드를 컴파일하려고하는데 "이 표현식에 대한 코드를 생성 할 수 없습니다"오류가 발생합니다. "http://www.barrysoft.it/blog/midi-with-pic-ausart.html"마이크로 칩 MPLAB X IDE v2.15 "이 표현식에 대한 코드를 생성 할 수 없습니다"

누군가가이 문제에 대해 가르쳐 줄 수 있습니까?

MPLAB X의 IDE 2.15 xc8의 v1.32

midi.c :

void midi_init(void) 
{ 
/* MIDI uses 31250 baud/s serial speed */ 
uart_init(19, 1, 0, 0);  //<--- 
} 

midi.c : 31 : 에러 (712)이 발현

코드를 생성 할 수 없습니다

uart.c :

void uart_init(unsigned char spbrg, unsigned bit brgh, unsigned bit sync, unsigned bit parity) 
{ 

    // Setup the baud rate 
    SPBRG = spbrg; 

// High speed baud rate 
BRGH = brgh;  //// 

// Synch or Async 
SYNC = sync;  //// 

// 8bit transmission 
TX9 = parity;  //// 

// Enable serial output 
SPEN = 1; 

// Enable UART out 
TXEN = 1; 
} 

uart.c : 29 : 오류 (712)는이 식에 대한 코드를 생성 할 수 없습니다

uart.c : 32 : 오류 : 35 : 에러 (712)이 표현 코드를 생성 할 수

(712)이 발현

uart.c 코드를 생성 할 수 없습니다 uart.h :

void uart_init(unsigned char spbrg, unsigned bit brgh,unsigned bit sync,unsigned bit parity); 

식별자 비트를 해결할 수 없습니다.이 이음새는 MPLAB IDE 오류가 아니므로 마녀를 끌 수 있습니다.

답변

2

이것은 컴파일러가 프로세서의 네이티브 너비보다 열등한 데이터를 처리하는 방법과 관련하여 문제가 될 수 있습니다.

하나의 간단한 해결 방법은 함수 대신 매크로를 사용하는 것입니다. 이 기능은 컴파일러가 형식 변환 및 리터럴 데이터를 처리하여 비트 변수를 메모리 위치 (함수 호출의 경우)에 강제로 적용하는 대신 적합하다고 판단하는 방식으로 작동합니다.

uart.h에서

:

#define uart_init(spbrg, brgh, sync, parity) \ 
    SPBRG = spbrg;\ 
    BRGH = brgh;\ 
    SYNC = sync;\ 
    TX9 = parity;\ 
    SPEN = 1;\ 
    TXEN = 1 

* 내가 의도적으로 마지막 line`s을 남겨합니다 ';' 그래서 매크로는 함수처럼 호출 될 수 있습니다.

midi.c에서

: 변화 없음 ...

uart_init(19, 1, 0, 0); 
+0

내가 주위에 방법을 생각하지만,이 infrormation 꽤 usefulll습니다, 감사합니다. – NaturalDemon

관련 문제