2011-05-28 9 views
0

私には問題があります。お手伝いをしてください。プロジェクトの宿題を私はのMicroCと仮想シリアルポートから読み取るとAT89C52のmicroconttollerにこの情報を送信する必要性についてのため .. は、これは私のソースコードです:805用MicroCで仮想シリアルポートを読み取る

int uart_rd; 
void main() { 

    P1=0X00; 
    UART1_Init(9600); 
    delay_ms(100); 

    while(1) 
    {  
     if(UART1_Data_Ready()){ 

     uart_rd=UART1_read(); 

     if(uart_rd=='1') 
     {P1=0X01; delay_ms(1500); P1=0X00; } 

     if(uart_rd=='2') 
     {P1=0X02; delay_ms(1500); P1=0X00; } 
     } 
    } 
} 

しかし、私はポートからの情報を取得傾けます。間違いはどこですか?

答えて

1

あなたはUART受信変数(uart_rd)をintとして定義しています。これは2バイトの変数です。私はUART1_read()が1バイト(char)を返すと予想します。

私はあなたの特定のセットアップやデバッグ/トラブルシューティングのオプションに精通していませんが、問題のデバッグに役立ついくつかのコードを書いてみてください。次の例のとなる可能性があります。 LEDはポート1とポート2の両方に接続されていると想定しているため、調整が必要な場合があります。

char uart_rd; 

void main() 
{ 
    UART1_Init(9600); // Initialize UART at 9600 bps 
    delay_ms(100);  // Wait for UART to stabilize 

    while(1) 
    {  
     if(UART1_Data_Ready()) 
     { 
      P2 = 0xFF;    // Turn ON PORT2 LEDs upon data ready 
      uart_rd = UART1_read(); // Receive data 
      P1 = uart_rd;   // Display data on port 1 LEDs 
      UART1_write(uart_rd); // Transmit same data back 
      delay_ms(1500);   // Brief delay 
      P1 = 0x00;    // Turn OFF port 1 LEDs 
      P2 = 0x00;    // Turn OFF port 2 LEDs 
     } 
    } 
} 
関連する問題