使用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
}
}
}