标题: ATmega126的串口通信问题 [打印本页]

作者: 丿Damon丨    时间: 2015-3-3 18:58
标题: ATmega126的串口通信问题
下面是程序:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
?Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

Project :
Version :
Date    : 2015/3/3
Author  : NeVaDa
Company :
Comments:


Chip type               : ATmega128
Program type            : Application
AVR Core Clock frequency: 7.372800 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 1024
*****************************************************/

#include <mega128.h>   
#include <delay.h>
#include <string.h>
#define F_CPU 7372800
#define BAUDRATE 9600
unsigned char str1[10];
unsigned char j=0;

void init()
{
   DDRC=0XFF;
   DDRE=0B11111110;
   PORTE=0B11111111;
   UCSR0B=0B00000000; //关闭USART0   
   UCSR0A=0B00000000; //不使用倍速发送        
   UCSR0C=0B00000110;
   UBRR0L= (F_CPU/BAUDRATE/16-1)%256;
  UBRR0H= (F_CPU/BAUDRATE/16-1)/256;
  UCSR0B=0x98;   

   #asm("sei") //全局中断使能  汇编语言
}      
void putchar(unsigned char c) //串口0发送字符
{
while(!UDRE0);
UDR0=c;
while(!TXC0);

}

interrupt [USART0_RXC] void USART0_RCV_INT(void)     
{  
UCSR0B&=~0X80; //接收完毕中断不使能
str1[j]=UDR0;   
j++;
UCSR0B|=0x80; //接收完毕中断使能
}

void main(void)
{
  init();
  delay_ms(5000);
putchar('A');  
putchar('T');
putchar('a');
  putchar('t');  
  putchar('a');  
  putchar('t');
}



用串口助手只能接收到"A""T"两个字符,无乱码,我用ATmega16写了类似的程序,也是只能接收两位,超过两位的接收不到,求大神解释一下可能出现的问题,跪谢!





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1