|
用的avr128的板子,通过串口1向电脑发送数据。
之前用别的板子测试了电脑串口,没有问题。
但是使用avr128的板子发送数据出了个问题,比如发送0X00,电脑会接收到0X80
//===============================================
//函数名称:uart1_init
//函数功能:串口 1 初始化
//函数参数:无
//返回数据:无
//===============================================
void uart1_init(void)
{
SFIOR &= ~(1<<PUD); //打开上拉电阻
DDRD|=(1<<PD3); //PD0为接收端口置为输入;PD1为发送端口置为输出
PORTD = 0X08; //USART的发送接收端口分别为PD0和PD1
UCSR1A=0x00;
UCSR1B = 0x00; //disable while setting baud rate
UCSR1C=0x00;
UCSR1C = (1 << UCSZ11)|(1 << UCSZ10);//8 DATA ,1 STOP, NO PARITY
UBRR1H=((FOSC>>4)/BAUD-1)>>8;//(FOSC/16/BAUD-1)/256
UBRR1L=((FOSC>>4)/BAUD-1)&255;//(FOSC/16/BAUD-1)%256
// RXCIE=1;TXCIE=1;UDREIE=0;RXEN=1;TXEN=1
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
}
//===============================================
//===============================================
//函数名称:uart1_send
//函数功能:向串口 1 发送一个字节数据
//函数参数:char i 待发送的数据
//返回数据:无
//===============================================
void uart1_send( char i)
{
while(!(UCSR1A&(1<<UDRE1)));//只有数据寄存器为空时才能发送数据
UDR1=0x00;
}
//===============================================
主函数中
while(1)
{
if(GetKeyVal()==1)
{
Disp1Char(5,0,'A'+keyVal);
uart1_send('A'+keyVal-0x80);
}
}
每次电脑串口接收都会受到0x80 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|