AVR ATMEL128芯片,用STC ISP烧写于电脑相连,发1也好发a也好,电脑串口助手都显示00,发什么返什么也试了,也是不管发什么返的都是00,急请大神指点:程序如下:
void uart_init(uint baud){ SREG&=~BIT(7); UCSR0B=0x00; UCSR0A=0x00; //控制寄存器清零 UCSR0C=0X06;//0000 0110 //选择UCSRC,异步模式,禁止 // 校验,1位停止位,8位数据位 baud=mclk/16/baud-1; //波特率最大为65K UBRR0L=baud; UBRR0H=baud>>8; //设置波特率 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; // } } } 晶振是11059200 波特率:19200 烧写的熔丝位
|