一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3827|回复: 18
收起左侧

[avr] 有玩AVR的吗?MEGA128的串口我怎么调都不对,输出字符不对

[复制链接]
发表于 2012-3-27 17:22 | 显示全部楼层 |阅读模式
调了好久了,就是不对,代码怎么看都没错啊,同样的代码放M8上能运行的,M128也就改个寄存器的名字嘛,怎么出来的字符怎么样都不对,有遇到这种情况的朋友嘛
发表于 2012-3-27 17:41 | 显示全部楼层
128有2个串口,寄存器名字分别是0和1,都改过来了吗?rx和tx换一下试试。
可以参考128的串口例程。
发表于 2012-3-27 17:43 | 显示全部楼层
GCC编译器


#include <avr/io.h>
#define mcu_f 8000000
#define baud  9600
void uart_init(unsigned long int ,unsigned long int  );
//int uart_receive(void);
void uart_send(unsigned char );
void uart_send_string(unsigned char *s);//发送字符串

int main(void)
{
  int d ;
//  int i,j;
  d=5;
  uart_init( mcu_f ,  baud );
//  while(!(UCSR1A&(1<<RXC1)))
//  {
//  for(i=0;i++;i<=1000)
//  for(j=0;j++;j<=1000);
//  }
//  data = uart_receive();
//  uart_send(data);
//  DDRB=0xff;
//  PORTB=data;
  uart_send_string("经度:");//发送字符串
  uart_send(d);
  uart_send_string("\n\r");//换行
  uart_send_string("纬度:");//发送字符串
  uart_send_string("\n\r");//换行
  uart_send_string("速度:");//发送字符串
  uart_send_string("\n\r");//换行
  
  
  
   
  while(1);
}



void uart_init(unsigned long  int MCU_F ,unsigned long int BAUD )
{
/*设置波特率高8位*/
UBRR1H =((MCU_F/(16*BAUD))-1)>>8;
/*设置波特率低8位*/
UBRR1L = ((MCU_F/(16*BAUD))-1);
/* 接收器与发送器使能 */
UCSR1B |= 0b00011000;
/* 设置帧格式  : 8个数据位  , 1个停止位 */
UCSR1C |= 0b00000010;
}


void uart_send_string(unsigned char *s)
  {
  while(*s)
  {
  uart_send(*s++);
  }
  }

//int uart_receive(void)
//  {
//  while(UCSR1A&(1<<RXC1))
//  return UDR1;
//  }
void uart_send(unsigned char c)
  {
  while( !(UCSR1A & (1<<UDRE1)) );
  UDR1=c;
  }
 楼主| 发表于 2012-3-27 20:08 | 显示全部楼层
回复 2# xiaokang


    都试过,手册上的例子是错的,还是抄的M8之类单串口的,我用虚拟软件和实物都试过,都有问题
发表于 2012-3-27 20:14 | 显示全部楼层
试试我发这个。看行不行
 楼主| 发表于 2012-3-27 20:33 | 显示全部楼层
回复 5# xiaokang


    一样,还是不行,你调试通过的吗?我用PROTEUS试的,你有没有完整的调试通过的工程文件共享下?
发表于 2012-3-27 20:36 | 显示全部楼层
不懂。晶振没问题吧?
发表于 2012-3-27 20:40 | 显示全部楼层
我以前用过的一些文件,编译后应该可以用的。用winavr编译。这个程序经过实物验证的。
仿真基本没有玩过。
 楼主| 发表于 2012-3-27 20:43 | 显示全部楼层
回复 7# snoopy8008


    用的仿真,晶振应该是设置的没问题的
 楼主| 发表于 2012-3-27 20:45 | 显示全部楼层
回复 8# xiaokang


    那就不知道什么问题了,仿真用M8就正常,到128就是不正常,有输出,输出)))或者感叹号……要么就没输出……

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-18 04:25 , Processed in 0.055421 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表