0

問題があります。助けてください。プロジェクトの宿題については、microC を使用して仮想シリアル ポートから読み取り、この情報を AT89C52 マイクロコントローラに送信する必要があります。これは私のソース コードです。

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; }
      }
   }
}

しかし、ポートから情報を取得できません。どこが間違っているのか教えてください...

4

1 に答える 1

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
        }
    }
}
于 2011-05-31T19:05:58.210 に答える