[AVR单片机] 求助 mage16a 串口总是接收不到数据

[复制链接]
1082|12
 楼主| zhanglinsen 发表于 2015-7-7 15:11 | 显示全部楼层 |阅读模式
本帖最后由 zhanglinsen 于 2015-7-7 15:18 编辑

晶振14.7456m


串口程序

#include <iom16v.h>
#include <macros.h>
void USART_Init( unsigned int baud )
{
/* 设置波特率*/
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* 接收器与发送器使能*/
UCSRB = (1<<RXEN)|(1<<TXEN);
/* 设置帧格式: 8 个数据位, 2 个停止位*/
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}


//发送数据8位
void USART_Transmit( unsigned char data )
{
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
}



//接收数据8位
unsigned char USART_Receive( void )
{
/* 等待接收数据*/
while ( !(UCSRA & (1<<RXC)) )
;
/* 从缓冲器中获取并返回数据*/
return UDR;
}
/**********************************/
主程序
#include "./Headers/Global.h"
void main(void)
{
   MCUCSR = 0X80;
   MCUCSR = 0X80;
   USART_Init( 9600);
   while(1)
   {

        USART_Transmit('A');
   }
        }



串口调试助手截图
C:\Users\zhanglinsen\Desktop\123.png

熔丝位配置
C:\Users\zhanglinsen\Desktop\234.png

本人新手 不太懂 多谢各位

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
SD10A 发表于 2015-7-7 20:02 | 显示全部楼层
ckopt  可以使能  
你程序没对接收进行操作啊
 楼主| zhanglinsen 发表于 2015-7-7 20:06 | 显示全部楼层
SD10A 发表于 2015-7-7 20:02
ckopt  可以使能  
你程序没对接收进行操作啊

1不是使能了吗
什么叫对接操作
您说的详细点 我小白~~
shenxfs 发表于 2015-7-7 22:02 | 显示全部楼层
波特率设置不对
UBRRH = (unsigned char)((14745600UL/baud/16-1)>>8);
UBRRL = (unsigned char)(14745600UL/baud/16-1);
 楼主| zhanglinsen 发表于 2015-7-7 22:25 | 显示全部楼层
shenxfs 发表于 2015-7-7 22:02
波特率设置不对
UBRRH = (unsigned char)((14745600UL/baud/16-1)>>8);
UBRRL = (unsigned char)(14745600U ...

已经按您的修改了 为什么还是没有返回数据
shenxfs 发表于 2015-7-8 07:25 | 显示全部楼层
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。
 楼主| zhanglinsen 发表于 2015-7-8 11:59 | 显示全部楼层
shenxfs 发表于 2015-7-8 07:25
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。 ...

我是用232和usb连的 这样也可以吧
 楼主| zhanglinsen 发表于 2015-7-8 12:11 | 显示全部楼层
shenxfs 发表于 2015-7-8 07:25
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。 ...

这是串口的电路 直接用usb串口线连接 为什么不行啊= =

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
shenxfs 发表于 2015-7-8 12:32 | 显示全部楼层
COM的DB9的3脚是发送(TXD),经MAX232转换后又接m16的TXD上,发送对发送自然联不通,DB9的2、3脚线对掉
就可以了。
 楼主| zhanglinsen 发表于 2015-7-8 16:04 | 显示全部楼层
shenxfs 发表于 2015-7-8 12:32
COM的DB9的3脚是发送(TXD),经MAX232转换后又接m16的TXD上,发送对发送自然联不通,DB9的2、3脚线对掉
就 ...

嗷嗷 还真是 多谢 还有就是想问你下 为什么收到的是乱码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
shenxfs 发表于 2015-7-8 18:11 | 显示全部楼层
这还是波特率的问题,不在软件是硬件,检查硬件时钟是否是14。7456M,按二楼说的编程ckopt,可能晶振没接电容或容量不合适。
 楼主| zhanglinsen 发表于 2015-7-8 23:08 | 显示全部楼层
shenxfs 发表于 2015-7-8 18:11
这还是波特率的问题,不在软件是硬件,检查硬件时钟是否是14。7456M,按二楼说的编程ckopt,可能晶振没接电 ...

恩恩 问题解决了 多谢您了

评论

你程序明显在10楼比1楼就多了正确的两句嘛,编程CKOPT就好了?  发表于 2015-7-14 15:20
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

60

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部