打印
[AVR单片机]

AVR169PA的芯片发送0XAA,电脑串口读出的数据是15,怎么两个数据不一样,求高人指点

[复制链接]
1336|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
眺望123|  楼主 | 2014-3-11 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
huangxz| | 2014-3-11 23:10 | 只看该作者
这个简单,用示波器看,肯定有一方不对

使用特权

评论回复
板凳
眺望123|  楼主 | 2014-3-11 23:20 | 只看该作者
//#include "iom16v.h"
#include <avr/io.h>
#define uchar unsigned char
#define uint unsigned int
/*串口初始化函数*/
void Uart_Init(void)
{
        // 初始化串口UART
    DDRE=(0<<PINE0);                                                     // RXD端为输入  
        DDRE=(1<<PORTE1);                                         // TXD端为输CHU
    UCSR0A = 0x00; /*倍速*/
        UBRR0L = 51;                                     // 计数初值等于 Fosc/(16*9600)-1=8MHZ/(16*9600)=51 按实际情况调整到54
        //UBRR0L = 3;                                    // 计数初值等于 Fosc/(16*115200)-1=8MHZ/(16*115200)=3 按实际情况调整到54
        UBRR0H = 0;                                      //设置波特率  
        UCSR0B = 0X18;      //使能接收发送 使能接收中断
        UCSR0C = 0X06;                 //8位数据 1个停止位  USBS0 0:1位停止位   1:2位停止位   UCSZ02-UCSZ00 数据长度选择5--9位
                                                         //UCSROC 第六位为0 异步 1 同步


}
/*发送一个字符数据,查询方式*/
void Uart_Transmit(uchar i)
{
while (!(UCSR0A & (1<<UDRE0))); /* 等待发送缓冲器为空*/
UDR0 = i; /* 发送数据*/
}

/*主函数*/
void main(void)
{
uchar key=0,old_key=0;

Uart_Init();

while (1)
{
          Uart_Transmit(0xAA) ;
//  Uart_Transmit(0x80) ;
  Uart_Transmit(0x55) ;
// Uart_Transmit(0x0d);
}


}

使用特权

评论回复
地板
眺望123|  楼主 | 2014-3-11 23:21 | 只看该作者
帮看一下哪里出了问题,正好现在手上没有示波器

使用特权

评论回复
5
huangxz| | 2014-3-12 14:09 | 只看该作者
眺望123 发表于 2014-3-11 23:21
帮看一下哪里出了问题,正好现在手上没有示波器

输入输出是不用配的,波特率跟你的晶振配置也有关系啊,
况且我们手上没有169哦
可以参考
https://bbs.21ic.com/icview-691890-1-1.html
或者先跟pc通信试试

使用特权

评论回复
6
nbsmaps| | 2014-4-3 20:19 | 只看该作者
波特率初值不对。网上有工具,用工具算吧

使用特权

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

本版积分规则

7

主题

18

帖子

1

粉丝