读书人

因为小弟我水所以遇到一个很“奇怪”

发布时间: 2013-03-12 11:19:35 作者: rapoo

因为我水,所以遇到一个很“奇怪”的问题,高手来相助
因为小弟我水,所以遇到一个很“奇怪”的有关问题,高手来相助

ta0r_fliter 是int 型,TA0R是unsigned short int 型,ta0r_fliter的初值是0,赋值都是TA0R赋给它

int ta0r_fliter=0;

从图中可见,此时TA0R是1,ta0r_fliter是由unsigned short int赋值给的,不会小于0, int 自动类型匹配转成 unsigned short int 的话 也是非负的。

那么TA0R-ta0r_fliter 怎么满足 >2的条件而进入if里面去呢? 没搞明白。

编译环境是:IAR 硬件环境是:MSP430 5438a
[解决办法]
unsigned short int ,非负

TA0R改成 int
[解决办法]
一个负数,强制转换成unsigned,会很大。

if(TA0R〉a0r_fliter + 2)。
[解决办法]
无符号的判断指令和带符号的判断指令是不一样的

读书人网 >单片机

热点推荐