打印
[AVR单片机]

帮忙看看串口程序,发送20,受到fe,波特率都正常 怎么回事

[复制链接]
1632|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include "iom16v.h"
#include "macros.h"

//波特率,晶振
#define BAUD 9600                                       
#define FXTAL 8000000





void delay_ms(unsigned int z)
{
         unsigned int x,y;
         for(x=z;x>0;x--)
                 for(y=1200;y>0;y--);
}
//串口IO初始化函数
void USART_IO_Init(void)
{
                DDRD|=BIT(PD1); //PD1:TX为输出状态
}

//串口初始化函数
void USART_Init(void)
{
                unsigned int Temp;       
               
                USART_IO_Init();                //串口IO初始化函数调用
       
                UCSRA=0;                                                                        //串口控制器A清零
                //UCSRB=0x00;                                                                        //串口控制器B清零
               
                UCSRC|=BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0);        //选择USCRC,异步操作,禁止检验危,1个停止位,八位数据
       
                Temp=(FXTAL/BAUD/16)-1;                        //求出9600波特率的赋值
                UBRRH=((Temp>>8)&0x00ff);                //波特率寄存器高八位赋值
                UBRRL=(Temp&0x00ff);                        //波特率寄存器低八位赋值
       
                //UBRR=51;        //从手册中直接取得赋值,9600kbps
               
                UCSRB|=BIT(TXEN);        //发送使能
                //SREG|=BIT(7);                //全局中断使能
}
//串口发送函数
void USART_Send(unsigned char Data)
{
                while(!(UCSRA&(BIT(UDRE))));                //数据寄存器UDR是否为空?
                UDR=Data;                                                        //UDR赋值
                while(!(UCSRA&(BIT(TXC))));                        //数据是否已经发送完毕?
                UCSRA|=BIT(TXC);                                        //清除发送完毕标志位
}



//主函数
void main()
{
                 unsigned char a=20;
                USART_Init();
                while(1)
                {
                       
                               
                                USART_Send(a);
                                delay_ms(1000);
                       
                }
}

相关帖子

沙发
qin552011373| | 2013-12-6 08:55 | 只看该作者
贴一下你的串口调试助手的设置情况

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
liwei900712 + 1 很给力!
板凳
liwei900712|  楼主 | 2013-12-6 09:36 | 只看该作者
[img]https://bbs.21ic.com/forum.html?mod=attachment&aid=MjI0NDI4fGUwNTMyYWUyODdjZGE3NWNjMGQxNTQ3NTE2OGE3YWUxfDE3MzI2NTc1ODk%3D&request=yes&_f=.jpg[/img]

QQ图片20131206093417.jpg (85.19 KB )

QQ图片20131206093417.jpg

使用特权

评论回复
地板
liwei900712|  楼主 | 2013-12-6 09:39 | 只看该作者
我是用zigbee发送,并用zigbee接受经串口转USB显示

使用特权

评论回复
5
cyanitefire| | 2013-12-7 00:37 | 只看该作者
建议先接MAX232,测试下,排除干扰。若熟悉软件的话,在反汇编窗口观察,查看送到发送寄存器里到底是啥数,这个最直观了。

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
qin552011373 + 4 很给力!
6
qin552011373| | 2013-12-7 11:16 | 只看该作者
可以先不经过zigbee来接受,直接在你的发送到zigbee端接收数据看看是不是正常的

使用特权

评论回复
7
qin552011373| | 2013-12-7 11:17 | 只看该作者
可以先不经过zigbee来接受,直接在你的发送到zigbee端接收数据看看是不是正常的

使用特权

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

本版积分规则

9

主题

22

帖子

0

粉丝