skjoon님 답변감사드립니다.
어떤 식으로 설정해야 할 지 감이 잡히는 것 같아요.
디지털 시그널을 보낼려고 하는것이고 펌웨어 관련된 일을 시작한 지 얼마 안되서 아직 익숙치가 않아서요.
감사해요^^
skjoon 님이 쓰신 글 :
: 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이 되게 하고 싶은데 어떤 식으로 하면 될까요?