시프트 레지스터 예제

초기 컴퓨터에서는 시프트 레지스터가 데이터 처리를 처리하는 데 사용되었습니다: 추가할 두 개의 숫자가 두 개의 시프트 레지스터에 저장되고 산술 및 논리 장치(ALU)로 클럭아웃되어 그 결과가 시프트 레지스터 중 하나의 입력으로 다시 공급됩니다( 어큐뮬레이터)는 이진 추가가 동일한 크기 또는 1 비트 더 긴 대답을 초래할 수 있기 때문에 한 비트 이상이었습니다. 시프트 레지스터를 통해 데이터를 이동하는 두 가지 기본 방법이 있습니다. 코드 샘플 2.2 2 바이트 하나씩 이 코드를 예제 1의 유사한 코드와 비교하면 조금 더 변경해야 한다는 것을 알 수 있습니다. blinkAll() 함수가 이제 제어할 LED가 16개라는 사실을 반영하기 위해 blinkAll_2Bytes() 함수로 변경되었습니다. 또한 버전 1에서는 래치핀의 맥동이 서브 기능 라이트 시프트 피나 및 라이트 시프트 핀 B ()의 내부에 위치했다. 여기서 는 각 하위 함수를 연속으로 두 번 실행해야 하는 경우, 녹색 LED에 대해 한 번, 빨간색 LED에 대해 한 번 을 수용하기 위해 기본 루프로 다시 이동해야 합니다. 74HC194 양방향 시프트 레지스터가 좋은 예입니다. 레지스터는 직렬 및 병렬 입력 또는 출력의 모든 모드와 변형에서 작동 할 수 있습니다. 제어선, 클럭, 입력 및 출력 핀을 강조하는 74HC194의 기능 다이어그램은 다음과 같습니다.

이 구성 요소의 „직렬 출력“ 부분은 마이크로 컨트롤러에서 받은 직렬 정보를 다시 변경되지 않고 전달할 수 있는 추가 핀에서 비롯됩니다. 즉, 16비트 행(2바이트)을 전송할 수 있으며 첫 번째 8비트는 첫 번째 레지스터를 통해 두 번째 레지스터로 흐르고 그 안에 표현됩니다. 두 번째 예제에서 그렇게 하는 방법을 배울 수 있습니다. 넓은 범위 로 인해 특정 작업에 대한 시프트 레지스터를 선택하고 특정 요구사항에 맞는 것을 선택하는 것이 중요하기 때문에 작업 모드, 비트 크기 (플립 플롭 수), 오른쪽 또는 왼쪽 또는 양방향을 고려할 때 등. 아래 애니메이션은 시프트 레지스터의 내부 상태를 포함하여 쓰기/시프트 시퀀스를 보여 주며, 여기에는 이 예제에서는 두 번째 시프트 레지스터를 추가하여 Arduino에서 동일한 수의 핀을 사용하는 동안 가지고 있는 출력 핀 수를 두 배로 늘릴 수 있습니다. 이들은 시프트 레지스터의 가장 간단한 종류입니다. 데이터 문자열은 „데이터 인“에 표시되며 „데이터 어드밴스“가 높을 때마다 한 단계 씩 올바르게 이동됩니다. 각 사전에, 맨 왼쪽에 비트 (즉, „데이터 입력“) 첫 번째 플립 플롭의 출력으로 이동됩니다. 맨 오른쪽에 있는 비트(예: „데이터 아웃“)가 이동되어 손실됩니다. 비 – 파괴적인 판독 기반의 시프트 레지스터에는 항상 읽기 및 쓰기 작업 모드 간의 전환을 허용하기 위해 추가 줄이 추가된 읽기/쓰기 작업 모드가 있습니다.

이것은 74HC595 시프트 레지스터 IC의 SOIC 버전에 대한 브레이크 아웃입니다. 데이터 시계와 래치를 사용하여 IO 핀을 여는 요 … SparkFun뿐만 아니라이 칩 모두에 대한 브레이크 아웃 버전을 사용하기 쉬운 을 수행한다. 8개 이상의 추가 I/O 라인이 필요한 경우 브레이크아웃 보드의 출력 면을 다른 기판의 오른쪽에 연결하여 여러 교대 레지스터를 쉽게 연결할 수 있습니다. 혹시 자신이 LED의를 많이 제어하고자하는 발견? 아니면 일반적으로 더 많은 I/O가 필요합니까? 글쎄,이 튜토리얼은 당신이 그렇게 할 수 있도록 하는 기술에 대해 알아야 할 기본 을 다룰 것입니다. 이를 시프트 레지스터라고 합니다. 그래서 정확히 무엇입니까? 왜 유용합니까? 어떻게 사용하나요? 다음은 우리가이 튜토리얼에서 대답하려고합니다 모든 질문입니다. 파괴적인 판독의 경우 플립 플롭이 정보를 이동하면 데이터가 완전히 손실됩니다.

위의 4 비트 시프트 레지스터를 가정하면 „1101“이라는 단어를 보내고 싶습니다.