打印
[AVR单片机]

求助 mage16a 串口总是接收不到数据

[复制链接]
850|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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

本人新手 不太懂 多谢各位

123.png (33.87 KB )

123.png

234.png (26.18 KB )

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);

使用特权

评论回复
5
zhanglinsen|  楼主 | 2015-7-7 22:25 | 只看该作者
shenxfs 发表于 2015-7-7 22:02
波特率设置不对
UBRRH = (unsigned char)((14745600UL/baud/16-1)>>8);
UBRRL = (unsigned char)(14745600U ...

已经按您的修改了 为什么还是没有返回数据

使用特权

评论回复
6
shenxfs| | 2015-7-8 07:25 | 只看该作者
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。

使用特权

评论回复
7
zhanglinsen|  楼主 | 2015-7-8 11:59 | 只看该作者
shenxfs 发表于 2015-7-8 07:25
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。 ...

我是用232和usb连的 这样也可以吧

使用特权

评论回复
8
zhanglinsen|  楼主 | 2015-7-8 12:11 | 只看该作者
shenxfs 发表于 2015-7-8 07:25
程序没问题了,检查硬件串口连接是否正确,程序能否跑起来。TXD脚(PD0)与USB-TTL的RXD相连。 ...

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

1.png (48.72 KB )

1.png

使用特权

评论回复
9
shenxfs| | 2015-7-8 12:32 | 只看该作者
COM的DB9的3脚是发送(TXD),经MAX232转换后又接m16的TXD上,发送对发送自然联不通,DB9的2、3脚线对掉
就可以了。

使用特权

评论回复
10
zhanglinsen|  楼主 | 2015-7-8 16:04 | 只看该作者
shenxfs 发表于 2015-7-8 12:32
COM的DB9的3脚是发送(TXD),经MAX232转换后又接m16的TXD上,发送对发送自然联不通,DB9的2、3脚线对掉
就 ...

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

1.png (33.97 KB )

1.png

2.png (2.43 KB )

2.png

使用特权

评论回复
11
shenxfs| | 2015-7-8 18:11 | 只看该作者
这还是波特率的问题,不在软件是硬件,检查硬件时钟是否是14。7456M,按二楼说的编程ckopt,可能晶振没接电容或容量不合适。

使用特权

评论回复
12
zhanglinsen|  楼主 | 2015-7-8 23:08 | 只看该作者
shenxfs 发表于 2015-7-8 18:11
这还是波特率的问题,不在软件是硬件,检查硬件时钟是否是14。7456M,按二楼说的编程ckopt,可能晶振没接电 ...

恩恩 问题解决了 多谢您了

使用特权

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

本版积分规则

20

主题

60

帖子

1

粉丝