我有一些代碼需要在2個不同的PCB上運行。在啓動時,代碼會檢測/知道它運行的硬件並設置標誌。指向端口寄存器位的指針
現在,一些信號根據硬件改變端口,即:在HW1上的 ,信號A在P9上的0x08上,而在其他硬件上的P14上,信號A在0x02上。
我可以很容易地檢查到處使用信號A的標誌 - 但是這個解決方案對我來說似乎並不「好」。
我也可以很容易地像這樣更改端口在啓動:
if(cIsHW1) Reg = &P14;
else Reg = &P9;
,並使用註冊來訪問每個HW正確的端口。
但是,如何更改位的位置呢?我現在沒有像寄存器中的某個指針那樣的東西 - 這實際上是我認爲我需要的東西。
我需要讀取這些端口位並設置/清除它。
我是否錯過了某些東西,或者我真的需要檢查標誌(如果..其他)我需要訪問該端口位嗎?
感謝 MCL
即使你*可能*有一個指向單個位的指針,你將如何在沒有'if'語句的情況下檢查它? –
通過使用位掩碼,說'if(cIsHW1)掩碼= 0x02; else mask = 0x08;'然後用'Reg&mask'讀取端口位,它將是'== 0'或'!= 0'。 –
使用位移運算符。設置:'var | =(1 << bitnum)',閱讀:'res =(var >> bitnum)&1' –