这两天在复习51单片机,准备笔试面试啥的。写了个串口计算波特率的函数,但是出现了诡异的问题。
我用的keil vision4.
#define fosc 22118400
baud_rate=9600;
count=256-2*fosc/12/32/baud_rate;//这样计算出来的count是正确的
count=256-2*fosc/(12*32*baud_rate);//这样计算出来的count是错误的
刚开始我是按照count=256-2*fosc/(12*32*baud_rate)这么写的,结果波特率计算的总是不对。后来我发现这个语句计算出的结果不对,然后改成count=256-2*fosc/12/32/baud_rate;就可以了。
请问一下,这到底是什么问题呢?语句的意思是一样的,就是乘除顺序不一样。这个是编译器的问题吗? |