|
楼主 |
发表于 2012-3-10 21:07:06
|
显示全部楼层
回复【1楼】xivisi LiYong
-----------------------------------------------------------------------
波特率都是9600,下面是程序,不知道哪的问题
#include <iom8v.h>
#include <macros.h>
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1128;i++)
{}
}
void delay(unsigned int n) //延时n毫秒
{
unsigned int i;
for (i=0;i<n;i++) //执行n次1毫秒延时
delay_1ms();
}
void uartinit(unsigned short baudrate)
{
unsigned short UBRRtemp;
UBRRtemp=( 8000000/16/baudrate-1 );
//设置波特率
UBRRH = UBRRtemp>>8;
UBRRL = UBRRtemp;
//设置数据位停止位 8, 1
UCSRC |= ( (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0) ); //UCSRC = 0b10000110;
//使能UART,使能中断
UCSRB |= ( (1<<RXCIE) | (1<<TXCIE)|(1<<TXEN)|(1<<RXEN) );
/*UBRRH=0x00;
UBRRL=51;
UCSRB=(1<<TXEN);
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);*/
}
void uartsendchar(unsigned char data)
{
while(!(UCSRA&(1<<UDRE)));
UDR=data;
}
void main(void)
{
unsigned char data1 = 'A';
unsigned char data2 = 'B';
uartinit(9600);
//DDRD|=(1<<DDD4);
DDRD=(1<<PD1)|(1<<PD4);
PORTD=(1<<PD4);
while(1)
{
uartsendchar(data1);
delay(100);
uartsendchar(data2);
delay(100);
}
} |
|