刚刚学avr,按照教程设置串口波特率为9600,但是用串口调试时波特率选600才能正常输出,怎么不是9600呢?代码如下:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 16000000
#define BAUD 9600
int main(void)
{
unsigned char temp = 0x55;
DDRB = 0xff;
PORTB = 0xaa;
UBRRH = ( F_CPU/BAUD/16 - 1 ) / 256; /*设置波特率*/
UBRRL = ( F_CPU/BAUD/16 - 1 ) % 256;
UCSRB |= ( 1 << RXEN ) | ( 1 << TXEN ) | ( 1 << RXCIE ); /*接收使能,发送使能,接收结束中断使能*/
sei(); /*使能全局中断*/
while(1)
{
while( !( UCSRA & ( 1 << UDRE ) ) );
temp = ~temp;
UDR = temp;
PORTB = ~PORTB;
_delay_ms( 1000 );
}
return 0;
}
请高手指点,谢谢了
此帖出自
小平头技术问答
一周热门 更多>