void uart_init(uint baud)
{
SREG&=~BIT(7);
UCSR0B=0x00;
UCSR0A=0x00; //控制寄存器清零
UCSR0C=0X06;//0000 0110(1<<URSEL0)|(0<<UPM00)|(3<<UCSZ00);
//选择UCSRC,异步模式,禁止
// 校验,1位停止位,8位数据位
baud=mclk/16/baud-1; //波特率最大为65K
UBRR0H=baud>>8; //设置波特率
UBRR0L=baud;
UCSR0B=0X98;//(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); //接收、发送使能,接收中断使能1001 1000
SREG|=BIT(7); //全局中断开放
PORTE = 0xFF; //设置RXD0和TXD0
DDRE |= 0x02; //配置TX为输出(很重要)
}
void uart_sendB(uchar data)
{
while(!(UCSR0A&(BIT(UDRE0))));
UDR0=data;
while(!(UCSR0A&(BIT(TXC0))));
UCSR0A|=BIT(TXC0);
}
void usart0_RX_interrupt(void)
{
UCSR0B&=~BIT(RXCIE0);
rdata=UDR0;
flag=1;
UCSR0B|=BIT(RXCIE0);
}
void main(void)
{
uchar i=4;
uchar j='a';
uart_init(19200);;
while(1)
{
//uart_sendB(1);
//delay(10);
//uart_sendB(j);
//delay(10);
if(flag==1)
{
uart_sendB(rdata);
flag=0;
}
}
}*/ |