一个简单的键盘程序,由于PSoC内没有独立的位定义,所以使用逻辑位操作,第一次写 if(PRT1DR&0x10==0x10) { PRT1DR=PRT1DR|0x40; } else PRT1DR=PRT1DR&0xbf; 结果LED灯不亮,即条件不成立,试了很多条件也是不成立,最后归结原因,怀疑问题出在运算优先级上面,因此查PSoC C的原文手册,取地址&的优先级是2,而我bitwise and的优先级是8,==的优先级为7,所以错误很明显出来了。因此加上“()”,优先级马上提高到1,程序正常了。
if((PRT1DR&0x10)==0x10) { PRT1DR=PRT1DR|0x40; } else PRT1DR=PRT1DR&0xbf; |
PSoC程序调试-运算优先级
最新推荐文章于 2021-03-11 21:07:23 发布