2014-05-23 49 views
1

我已經編寫了通過串口發送數據到pic的數據,現在我需要對微控制器進行編程以讀取數據,並使PortD.RD6 = 1,如果它接收到1和PortD.RD6 = 0,如果它接收到0.我試過這段代碼,但我得到了很多錯誤。 這是我的第一個mikroC程序,所以我真的不知道如何管理這些錯誤。我可以當場通過uart接收pic16F788的數據: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

==「 1「' – kirill

+0

我已經嘗試過,但仍然無法正常工作 – user3475463

回答

2

的一個錯誤是,ByteToStr返回三個字符所以它可能覆蓋其他存儲區和給人一種不確定的結果。你不需要做轉換,你可以簡單地讀取字節到char並直接上做一個比較如下:

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; 
     } 
    } 
} 
您使用的'輸出=「1」``,而不是輸出