2015-12-22 28 views
0

我在发送问题通过USART串行数据是发送一个ASCII不是小数。发送小数与USART在ATMEGA32

这是我的代码:

while(!(UCSRA&(1<<UDRE))){} 
    UDR=12; 

,这是头:

UBRRH=(uint8_t) (UBRR_CALC>>8); 
UBRRL=(uint8_t) (UBRR_CALC); 
UCSRB=(1<<TXEN)|(1<<RXEN); 
UCSRC=(1<<URSEL)|(3<<UCSZ0); 

如何发送十进制数据,我想从ADC阅读和USART发送...

非常感谢你

回答

0

如果'十进制'表示字符串表示的数字给你,你应该确定在sprintfitoa

您需要能够通过与代表你的电话号码字符串这些功能一个充满字符缓冲区。

请阅读关于不同基本数据类型的C-Tutorial或书籍,特别是字符/字符串和整数数据类型之间的区别。

1

不能转换为十进制数一样floatchar不失的所有数据。但是,你只是想揭露位,所以你可以通过USART给他们,然后取回您的十进制值。你可以通过union做到这一点:

union FloatChar { 
    float f; 
    char c[4]; // or however big a float is on your compiler 
}; 

然后,您可以使用它像

union FloatChar fc; 
fc.f = adc.getValue(); 
usart.send(fc.c); 

,并使用相同的工会将其转换回浮点数当它到达连接的另一端。