2015-12-22 35 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); 

,並使用相同的工會將其轉換回浮點數當它到達連接的另一端。