打印

AVR串口通信乱发数据问题

[复制链接]
2378|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ming2005vs|  楼主 | 2013-1-22 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是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);

}

相关帖子

沙发
ayb_ice| | 2013-1-22 17:10 | 只看该作者
当然程序问题了

使用特权

评论回复
板凳
ming2005vs|  楼主 | 2013-1-22 17:15 | 只看该作者
ayb_ice 发表于 2013-1-22 17:10
当然程序问题了

高手可以指点指点吗?我是初学者,万分感谢啊~~~~

使用特权

评论回复
地板
NE5532| | 2013-1-22 19:27 | 只看该作者
先不要调用发送函数,先看串口的TXD静态是不是高电平。另外波特率不对,接收的数据也是乱的。

使用特权

评论回复
5
ayb_ice| | 2013-1-23 08:03 | 只看该作者
程序先尽量简单,不要用中断,直接通过查询方式发送接收,甚至直接先发送,间接长点,比如1秒再发下一数据

使用特权

评论回复
6
sedatefire| | 2013-2-1 16:33 | 只看该作者
1.开始调的时候不用中断。
2.你最好搞个按键触发发送

使用特权

评论回复
7
sedatefire| | 2013-2-1 16:34 | 只看该作者
我估计你的系统一直在复位吧?看看电源,熔丝配置有没有对。
熔丝配置有电压BOD检测,启动时间,内部or外部晶振等等

使用特权

评论回复
8
gdxizhilang| | 2013-2-2 10:26 | 只看该作者
先硬件,看看芯片引脚啊,管脚啊等电路上有没有短路等问题;
如果没有问题,再看看熔丝位等有没有问题;
再没有问题,调你的程序吧,只发一个字节看看有木有问题。。

使用特权

评论回复
9
21ID| | 2013-2-2 14:14 | 只看该作者
先硬件,再软件,程序尽量要简单。

使用特权

评论回复
10
Raizo| | 2016-11-18 18:01 | 只看该作者
一、不使用UART时单片机引脚默认上电是否为高电平。
二、单片机熔丝位CKOPT是否置位,如果置位就可能出现这种现象。
三、void uart_init(uint32_t baud)
{
        UCSR0B=0x00; //关闭所有使用功能
        UCSR0A=0x00; //异步通信,不使用倍速模式发送
        UCSR0C=0x06; //异步串口通信模式,无奇偶校验,1位停止位,8位数据位
        UBRR0L=(((fosc/baud)/16)-1)%256; //设置波特率寄存器低位       
        UBRR0H=(((fosc/baud)/16)-1)/256; //设置波特率寄存器高位
        UCSR0B=0x98; //接收、发送使能,接收中断使能       
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝