我用的是ATMEGA128,程序如下。程序烧进去后,串口助手显示单片机一直在发00,有时还有其他FF之类的数据,不是我要它发的数据。而且它在一直不停的发。为什么单片机会乱发数据呢?是程序有错吗?求助,谢谢
#include<iom128v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define mclk 8000000
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void uart1_init(uint baud)
{
UCSR1B=0x00;
UCSR1A=0x00; //控制寄存器清零
UCSR1C=0B10110110;//选择UCSRC,异步模式,禁止校验,1位停止位,8位数据位
baud=mclk/16/baud-1 ; //波特率最大为65K
UBRR1L=baud;
UBRR1H=baud>>8;
}
void uart1_sendB(uchar data)
{
UCSR1B=0x08;
while(!(UCSR1A&(BIT(UDRE1)))) ;
UDR1=data;
UCSR1B=0x00;
}
void main(void)
{
uart1_init(4800);
uart1_sendB(0xE7);
delay(2);
uart1_sendB(0xf2);
delay(2);
uart1_sendB(0x01);
} |