2014-05-23 5 views
1

필자는 직렬 포트를 통해 데이터를 전송하기 위해 자바 코드를 작성했으며 이제 데이터를 읽고 포트 1을 수신하면 PortD.RD6 = 1로 만들어야합니다. 및 PortD.RD6 0 = 0받는 경우이 코드를 시도했지만 많은 오류가 발생합니다. 이것은 첫 번째 mikroC 프로그램이므로 이러한 오류를 관리하는 방법을 모르겠습니다. 내가 발견 할 수pic16F788 용 uart를 통해 데이터 수신 : mikroC

char output[1]; 
unsigned short i; 
void main(){ 
TRISD = 0x01; 
i = 0; 
UART1_Init(9600); 
while (1) { 
if (UART1_Data_Ready()==1) { 
i = UART1_Read(); // read the received data 
ByteToStr(i, output); 
if (output = "1") // this is where I get the error 
{PortD.RD6=1;} 
else { PortD.RD6=0;} 

}}} 
+0

을 "== 다음과 같이 당신은 당신이 단순히 char에 바이트를 읽고 그 직접 비교를 할 수있는 변환을 할 필요가 없습니다 1 "' – kirill

+0

이미 시도했지만 작동하지 않습니다. – user3475463

답변

2

한 오류입니다 ByteToStr 반환 세 문자 아마 다른 메모리 영역을 덮어 쓰기 및 정의되지 않은 결과를주고있다 그래서. 당신이`출력 = "1"`대신 출력`의 사용

void main() 
{ 
    char c; 

    TRISD = 0x01; 
    UART1_Init(9600); 
    while (1) { 
     if (UART1_Data_Ready()) { 
      c = UART1_Read(); 
      if (c == '1') 
       PortD.RD6=1; 
      else 
       PortD.RD6=0; 
     } 
    } 
}