1바이트짜리 버퍼에 비트배열을 설정하는게 아니고
클럭 시그널 사이에 0 또는 1의 디지털 시그널을 내보내시려는건가요?
(표현이 잘 되었는지 모르겠네요 ^^;;)
펌웨어 관련된 일을 하시는건가요?
잘은 모르지만 쉽게 생각해서 다음과 같이 하면 되지 않을까 하네요.
bool Cond[8] = {1, 0, 0, 0, 0, 0, 1, 0}; // 조건을 나타내는 배열입니다.
for(int i = 0; i < 8; i++) {
SCK_H_Signal();
if(Cond[i] == true)
AD0_H_Signal();
else
AD0_L_Signal();
SCK_L_Signal();
}
SCK_H_Signal();
SCS_H_Signal(); // 이건 마지막에 보내는 신호인가봐요? -.-;;
SCK_L_Signal();
제가 문제에 대해서 잘 이해했는지 모르겠네요.. ^^
김민조 님이 쓰신 글 :
: Instruction에서 레지스터를 셋팅 할 때 0100 0001을 써야 되는데.
:
: 이 때 문제가 각 값 사이사이에 클럭이 들어간다는 겁니다.
:
: 예를 들면
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_H_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_L_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: AD0_H_Signal();
:
: SCK_L_Signal();
:
:
:
: SCK_H_Signal();
:
: SCS_H_Signal();
:
: SCK_L_Signal();
:
:
:
: 이런식으로요. 똑 같은 명령어가 들어가는것도 아니고 명령어 하나하나 쓸때마다 이런식으로 힘들기도 하고 여러모로
: 비효율적인것 같아서 이렇게 질문드립니다.
:
:
:
:
: skjoon 님이 쓰신 글 :
: : 혹시 8개의 조건에 따라서 각 비트의 값을 설정하려는 것인가요?
: :
: : 그렇다면
: :
: : 조건1 true이면 0번째 비트 1, 아니면 0
: : 조건2 true이면 1번째 비트 1, 아니면 0
: : ...
: :
: : 이렇게 되겠네요.
: :
: :
: : bool Cond[8] = {1, 0, 0, 0, 0, 0, 1, 0}; // 조건을 나타내는 배열입니다.
: : BYTE result = 0x00;
: : for(int i = 0; i < 8; i++) {
: : if(Cond[i] == true) {
: : result |= (0x01 << i);
: : }
: : }
: : // result에 원하는 값이 설정되었을 겁니다.
: :
: :
: : 김민조 님이 쓰신 글 :
: : : for(i=0; i<8; i++)
: : : // ____비트연산____
: : :
: : :
: : : ____비트연산____
: : : for문을 돌았을때 비트가 0100 0001이 되게 하고 싶은데 어떤 식으로 하면 될까요?