2 개의 다른 PCB에서 실행해야하는 코드가 있습니다. 부팅시 코드는 실행되는 하드웨어를 감지/인식하여 플래그를 설정합니다.비트 레지스터의 포인터 레지스터
일부 신호는 하드웨어에 따라 포트를 변경합니다 (예 : HW1의 경우 ). 신호 A는 다른 하드웨어의 P14에서는 0x02에 있지만 P9에서는 0x08에 있습니다.
신호 A가 사용되는 모든 곳에서 플래그를 쉽게 확인할 수 있습니다. 그러나이 솔루션은 나에게 '좋은'것 같지 않습니다.
if(cIsHW1) Reg = &P14;
else Reg = &P9;
을 각 HW에 올바른 포트에 액세스하기 위해 등록을 사용
또한 쉽게 이런 일에 부팅 할 때 포트를 변경할 수 있습니다.
그러나 비트 위치도 어떻게 변경합니까? 이제는 레지스터에있는 포인터에 대한 포인터 같은 것이 없습니다. 실제로 필요한 것이 무엇인지 생각해보십시오.
이 포트 비트를 읽고 설정해야합니다.
무언가를 놓치거나 그 포트 비트에 액세스해야하는 모든 곳의 깃발을 확인해야합니까?
감사 MCL
단일 비트에 대한 포인터를 가질 수 있더라도'if' 문 없이는 어떻게 검사할까요? –
비트 마스크를 사용하여 'if (cIsHW1) mask = 0x02; else mask = 0x08;'그리고 나서'== 0' 또는'! = 0'이 될'Reg & mask'로 포트 비트를 읽습니다. –
비트 시프트 연산자를 사용하십시오. 설정 :'var | = (1 << bitnum)', 읽기 :'res = (var >> bitnum) & 1' –