单片机/MCU论坛
直播中

lqgscp

9年用户 8经验值
擅长:模拟技术
私信 关注
[问答]

ATMEGA1280 简单的串口程序,发送数据不正常(没分了,各位高抬贵手!!!)

以下程序,在ATMEGA128 中输出正常,但是稍做修改,
在ATMEGA1280 中输出不正常,输出内容为
€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€
€€€€€€€€€€€€€€€€€€€
所用的串口芯片及电路图完全一样.

#define TESTMODE   1  // 0:atmega128      1:atmega1280  
#if (TESTMODE == 0)
#include   //atmega128
// #pragma interrupt_handler Uart0RxInterrupt:19  //422 atmega128
#endif
#if (TESTMODE == 1)
#include    //atmega1280
// #pragma interrupt_handler Uart0RxInterrupt:26  //422 atmega1280
#endif
#include  
#include  
#include  
#include  
#define uchar unsigned char
#define uint unsigned int
#define mclk 7372800  
uint baud=9600;
uchar Uart0RxHead=0,Uart0RxTail=0,Uart0Flag=0;
uchar Uart0RxTable[256];
void Uart0Init(void)//RS422
{
UCSR0B=0X00;
UCSR0A=0X00;
UCSR0C=0X06;
UBRR0H=(mclk/baud/16-1)/256;
UBRR0L=(mclk/baud/16-1)%256;
UCSR0B=(1< SREG=BIT(7;
}
void Uart0SendByte(uchar data)
{
UDR0 = data;
while(!(UCSR0A && (1< UCSR0A |= (1< }
void Uart0Clear(void)
{
Uart0RxHead=Uart0RxTail=0;
}
void Delay(uint Dlytime)
{
  while(DlyTime--);
}
void UartAllInit(void)
{
Uart0Init();
Uart0Clear();
}
void main(void)
{
PORTE=0x62;//01100010 (0,1)RS422,(2~6)DAC8512
DDRE=0xFE; //11111110  RS422(Tx:PE1,Rx:PE0)
Delay(2000);
UartAllInit();

while(1)
{
  Uart0SendByte('A');
}
}

回帖(4)

lqgscp

2016-5-20 10:28:31
{:16:}
有没有可能是我硬件的问题,这块板只是一块调试用的板,上面有2个晶振,但是可以通过去掉相对应的电阻去控制使用哪个晶振,所以晶振的两条线是不一样长的。但是显示屏的程序可以正常显示。
麻烦各位大牛能否指点一二。
举报

lqgscp

2016-5-20 10:29:16
IMG_20160520_101639.jpg
举报

lqgscp

2016-5-23 11:46:22
{:16:}{:16:}
举报

HEUTWZ2017

2017-2-17 21:15:58
您好 我也是初学者遇到了同样的问题 请问楼主的问题解决了吗?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分