使用MicroC为8051读取虚拟串行端口

问题描述:

我遇到问题,请帮助我。 为有关项目的功课,我需要从的MicroC虚拟串口读取和发送该信息,以AT89C52 microconttoller .. 这是我的源代码:使用MicroC为8051读取虚拟串行端口

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

,但我不能得到的端口信息。错误在哪里,请帮助我......

您正在将您的UART接收变量(uart_rd)定义为int,它是一个2字节变量。我期望UART1_read()返回一个字节(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 
     } 
    } 
}