天天看點

實戰項目開發細節:C語言分離一個16進制數取出相應的位1或0

最近在公司開發一個關于鋼琴的PCBA項目,項目大概是這樣的,完成各種功能的測試,準備去工廠量産的時候可以通過軟體快速甄别硬體是否短路,斷路等問題。

      其中,甄别好壞的方法是通過比如按鍵,或者其它的操作然後響應音頻信号的輸出來甄别的,那到底原理是怎麼樣的呢?

      音頻信号定制為如果是0則輸出1000hz,如果是1則輸出3000hz。

      音頻信号是一個16進制數,比如0xfd----->1111 1101 

      那麼它的輸出應該是這樣的,從左邊最高位開始,輸出3000hz ,3000hz ,3000hz, 3000hz , 3000hz , 3000hz , 1000hz , 3000hz .

     如果要求改一下,從右邊最低位到最高位輸出也是可以的,這個具體可以通過示波器來測量相應的信号輸出波形。

      原理我們搞明白了,就這麼簡單,于是我們就可以用C語言位運算來實作這個操作,由于公司保密特權,我不友善公開我的項目的詳細細節,這樣,我隻能寫個模拟的C語言測試程式來模仿這個過程,好了,我們開始寫代碼:

運作結果:

實戰項目開發細節:C語言分離一個16進制數取出相應的位1或0

或者更簡單一點:

這樣也是對的。

繼續閱讀