#include <stdio.h>
#include <stdint.h>
#include <math.h>
typedef unsigned char uint8;
int main(void) {
#define F_CPU 1000000UL
#define BAUD_RATE 9600
#define FACTOR_8_16 8
unsigned char UBRRH;
unsigned char UBRRL;
/*calculate UBBR value */
uint16_t UBBR_value = F_CPU / (FACTOR_8_16 * BAUD_RATE) - 1;
//Put the upper part of the UBBR value here (bits 8 to 11)
UBRRH = (uint8)(UBBR_value >> 8);
//Put the remaining part of the UBBR value here
UBRRL = (uint8)UBBR_value;
printf("Without float: UBRRL = %d, UBRRH = %d\n", UBRRL
, UBRRH
);
/*calculate UBBR value */
UBBR_value = lrint((F_CPU / (FACTOR_8_16 * (float)BAUD_RATE)) - 1);
//Put the upper part of the UBBR value here (bits 8 to 11)
UBRRH = (uint8)(UBBR_value >> 8);
//Put the remaining part of the UBBR value here
UBRRL = (uint8)UBBR_value;
printf("With float: UBRRL = %d, UBRRH = %d\n", UBRRL
, UBRRH
); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPG1hdGguaD4KCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50ODsKCmludCBtYWluKHZvaWQpIHsKCiNkZWZpbmUgRl9DUFUgMTAwMDAwMFVMCiNkZWZpbmUgQkFVRF9SQVRFIDk2MDAKI2RlZmluZSBGQUNUT1JfOF8xNiA4CgogIHVuc2lnbmVkIGNoYXIgVUJSUkg7CiAgdW5zaWduZWQgY2hhciAgVUJSUkw7CiAgLypjYWxjdWxhdGUgVUJCUiB2YWx1ZSAqLwogIHVpbnQxNl90IFVCQlJfdmFsdWUgPSBGX0NQVSAvIChGQUNUT1JfOF8xNiAqIEJBVURfUkFURSkgLSAxOwogIC8vUHV0IHRoZSB1cHBlciBwYXJ0IG9mIHRoZSBVQkJSIHZhbHVlIGhlcmUgKGJpdHMgOCB0byAxMSkKICBVQlJSSCA9ICh1aW50OCkoVUJCUl92YWx1ZSA+PiA4KTsKICAvL1B1dCB0aGUgcmVtYWluaW5nIHBhcnQgb2YgdGhlIFVCQlIgdmFsdWUgaGVyZQogIFVCUlJMID0gKHVpbnQ4KVVCQlJfdmFsdWU7CgogIHByaW50ZigiV2l0aG91dCBmbG9hdDogVUJSUkwgPSAlZCwgVUJSUkggPSAlZFxuIiwgVUJSUkwsIFVCUlJIKTsKCiAgLypjYWxjdWxhdGUgVUJCUiB2YWx1ZSAqLwogIFVCQlJfdmFsdWUgPSBscmludCgoRl9DUFUgLyAoRkFDVE9SXzhfMTYgKiAoZmxvYXQpQkFVRF9SQVRFKSkgLSAxKTsKICAvL1B1dCB0aGUgdXBwZXIgcGFydCBvZiB0aGUgVUJCUiB2YWx1ZSBoZXJlIChiaXRzIDggdG8gMTEpCiAgVUJSUkggPSAodWludDgpKFVCQlJfdmFsdWUgPj4gOCk7CiAgLy9QdXQgdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBVQkJSIHZhbHVlIGhlcmUKICBVQlJSTCA9ICh1aW50OClVQkJSX3ZhbHVlOwoKICBwcmludGYoIldpdGggZmxvYXQ6IFVCUlJMID0gJWQsIFVCUlJIID0gJWRcbiIsIFVCUlJMLCBVQlJSSCk7Cn0=