本帖最后由 自由自在2013 于 2014-6-18 11:10 编辑
ATMEGA64A串口程序测试,PC机串口调试助手接收,单片机发送,接收数据始终不对,有时还会一直接收00,用示波器看波形循环发送时发出的数据也不对,一直在变化,内部外部晶振都试过了,还是不行,错误在哪?程序问题?
#include "iom64v.h"
#include "USART.H"
void main(void)
{
unsigned char text,temp=0x00;
unsigned int i;
IO_Init();
USART_Init();
//text=USART_Receive();
while(1)
{
for(i=0;i<10;i++)
{
USART_Transmit(temp);
temp++;
}
Delay_1ms(1000);
}
}
//延时函数
void Delay_1ms (volatile unsigned int cuont)
{
volatile unsigned int j;
volatile unsigned int i;
for(i=cuont;i>0;i--)
{
for(j=1000;j>0;j--)
{;}
}
}
//IO初始化
void IO_Init( void )
{
DDRA = 0x00;
DDRD = 0x00;
DDRA = 0xFF;
DDRD = 0x08;
}
//串口初始化
void USART_Init( void )
{
UBRR1H = 0x00; /* 设置波特率&8MHZ*/
UBRR1L = 0x33;
UCSR1A = 0x20; /*异步通讯,U2X1=0*/
UCSR1B = 0x18; /*接收器与发送器使能*/
UCSR1C = 0x06; /*设置帧格式: 8个数据位, 1个停止位 */
}
//串口发送函数
void USART_Transmit( unsigned char data )
{
while ( !( UCSR1A & (1<<UDRE1)) );
UDR1 = data;
}
//串口接收函数
unsigned char USART_Receive( void )
{
while ( !(UCSR1A & (1<<RXC1)) );
return UDR1;
}
串口接收窗口
|