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

[复制链接]
1799|5
 楼主| 眺望123 发表于 2014-3-11 22:58 | 显示全部楼层 |阅读模式
AVR169PA的芯片发送0XAA,电脑串口读出的数据是15,怎么两个数据不一样,波特率是9600  8 N 1 ,但双方的数据都不一样!!
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 | 显示全部楼层
帮看一下哪里出了问题,正好现在手上没有示波器
huangxz 发表于 2014-3-12 14:09 | 显示全部楼层
眺望123 发表于 2014-3-11 23:21
帮看一下哪里出了问题,正好现在手上没有示波器

输入输出是不用配的,波特率跟你的晶振配置也有关系啊,
况且我们手上没有169哦
可以参考
https://bbs.21ic.com/icview-691890-1-1.html
或者先跟pc通信试试
nbsmaps 发表于 2014-4-3 20:19 | 显示全部楼层
波特率初值不对。网上有工具,用工具算吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

18

帖子

1

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