Bitwise TRUE and FLASE

今天發現的錯誤,底子太弱了。找到問題之後接下來就順多了。

這個敘述句不能正常執行我想要的動作
if (( PRT0DR & 0x40 ) != 0)
但是換成下面這一行就可以了
if (( PRT0DR & 0x40 ) == 1)

當時一直把0與1當作是布林代數,後來才想到既然操作元是bitwise的操作,自然後面也要跟著是bitwise的形式而不能是布林代數。(PSoC的&是bitwise AND, &&才是logic AND)

所以if (( PRT0DR & 0x40 ) == 1) 要改成 if (( PRT0DR & 0x40 ) == 0x40) 才會得到預期的動作。

留言

這個網誌中的熱門文章

樂高像素拼圖之照片像素化教學

照片的後製觀點

Temperature logger