|
// actual baud rate:57600 (0.0%)
void uart1_init(void)
{
UCSR1B = 0x00; //disable while setting baud rate
UCSR1A = 0x00;
UCSR1C = 0x06;
UBRR1L = 0x0F; //set baud rate lo
UBRR1H = 0x00; //set baud rate hi
UCSR1B = 0x98; //0B10011000---RXCIE/TXCIE/UDRIE/RXEN/TXEN/UCSZ2/RXB8/TXB8
}
void port_init()
{
//RXD1
DDRD&=~BIT2;
//TXD1
DDRD|=BIT3;
}
int main(void)
{
port_init();
uart1_init();
sei();
while(1)
{
}
}
void USART1_RX_vect(void) __attribute__((interrupt));
void USART1_RX_vect(void)
{
LED_ON;
UART1_Send_Byte(UART1_Receive_Byte());
}
可以肯定的是硬件电路没问题,串口1可以正常收发数据,但只能查询状态收,设置成中断模式后不灵。
串口初始化用ICC生成的,编译环境AVR STUDIO 4,中断函数格式参照WINAVR帮助文件,外部14.7456M有源晶振,熔丝已设置到外部时钟源,ATmega103模式禁用,反复调试还是不给力呀,急死了 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|