mega16串口通信

用avr单片机mega16和电脑进行串口通信时,单片机只能发送不能接收,不管接收是用中断还是查询,都不行,程序应该没问题,在proteus中模拟一切正常,电平转换芯片用的是Max232,求高手指点,谢谢51单片机通信挺正常的,不知道是因为avr单片机是不是有需要注意的地方,在用SPI与ADXL345通信时MISO口要接较长的导线相连才可以正常工作,也不知道为什么
2026年09月28日 15:32
有2个网友回答
网友(1):

你试试设置一下 DDR
51单片机做输入输出一样
avr不一样, 他需要进行输入输出设置,DDR设置一下 ,RX,输入; Tx输出;
或许别的地方有问题,给你个例子参考一下
//UART0 initialize (16MHz)
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x67; //set baud rate lo 67
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0xD8;
}

#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{

}

#pragma interrupt_handler uart0_tx_isr:iv_USART0_TXC
void uart0_tx_isr(void)

}

网友(2):

没有什么特别饿,好像你的问题不够详细