8051 마이크로 컨트롤러에 뱅크 등록 및 스택 메모리 할당

문제를 제거하기 위해 도구를 사용해보십시오





범용 레지스터 (R0-R7) 모음을 레지스터 뱅크라고하며 1 바이트의 데이터를받습니다. 은행 등록 부는 임베디드의 RAM 메모리 마이크로 컨트롤러이며 프로그램 명령을 저장하는 데 사용됩니다. 각 마이크로 컨트롤러는 다양한 메모리 뱅크로 구성되며 각 뱅크 레지스터는 저장 위치를 ​​인식하기위한 고유 주소로 구성됩니다.

8051에 은행 등록

8051에 은행 등록

8051에 은행 등록



8051 마이크로 컨트롤러 Bank0, Bank1, Bank2, Bank3 등 PSW (프로그램 상태 워드) 레지스터에서 선택한 4 개의 레지스터 뱅크로 구성됩니다. 이러한 레지스터 뱅크는 8051 마이크로 컨트롤러의 내부 RAM 메모리에 있으며 마이크로 컨트롤러가 프로그래밍 될 때 데이터를 처리하는 데 사용됩니다.


레지스터 뱅크 전환



기본적으로 8051 마이크로 컨트롤러는 레지스터 뱅크 0으로 전원이 공급되며 PSW (Program Status Word)를 사용하여 다른 뱅크로 전환 할 수 있습니다. 두 비트의 PSW는 레지스터 뱅크 사이를 전환하는 데 사용됩니다. 이 두 비트는 비트 주소 지정 가능 명령어 SETB 및 CLR에 의해 액세스됩니다.

PSW의 RS1과 RS0의 가능한 조합에 따라 레지스터 뱅크가 변경됩니다. 즉, RS1과 RS0이 0이면 뱅크 0이 선택됩니다. 마찬가지로 Bank1, 2 & 3은 RS1 및 RS0의 값에 따라 선택됩니다.

8051 마이크로 컨트롤러의 스택 메모리 할당

스택은 변수의 모든 매개 변수를 임시로 보유하기 위해 할당 된 RAM (Random Access Memory) 영역입니다. 스택은 함수가 올바르게 반환 될 수 있도록 호출되는 순서를 상기시키는 역할도합니다. 함수가 호출 될 때마다 이와 관련된 매개 변수 및 지역 변수가 스택에 추가됩니다 (PUSH). 함수가 반환되면 매개 변수와 변수가 스택에서 제거됩니다 ( 'POP'). 이것이 프로그램이 실행되는 동안 프로그램의 스택 크기가 지속적으로 변경되는 이유입니다.


스택에 액세스하는 데 사용되는 레지스터를 스택 포인터 레지스터라고합니다. 스택 포인터는 스택을 가리키는 데 사용되는 작은 레지스터입니다. 스택 메모리로 무언가를 푸시하면 스택 포인터가 증가합니다.

8051 마이크로 컨트롤러의 스택 메모리 할당

8051 마이크로 컨트롤러의 스택 메모리 할당

8051 마이크로 컨트롤러의 전원을 켤 때 스택 포인터 포함 값은 위 그림과 같이 기본적으로 07입니다. 'PUSH'연산을 수행하면 스택 포인터 주소가 증가하고 다른 레지스터로 이동합니다. 이 문제를 방지하려면 프로그램을 시작하기 전에 스택 포인터에 다른 주소 위치를 할당해야합니다.

PUSH 작동

‘PUSH’는 레지스터에서 값을 가져와‘PUSH’연산을 사용하여 스택 포인터의 시작 주소 즉, 00h에 저장하는 데 사용됩니다. 그리고 다음 'PUSH'에 대해 +1을 증가시키고 값을 스택 포인터의 다음 주소, 즉 01h에 저장합니다.

Stack의 PUSH 동작

Stack의 PUSH 동작

PUSH 동작이란 (선입 선출)

예 : PUSH 작업을위한 어셈블리 언어의 WAP

0000 시간
MOV 08h, # 21h
MOV 09h, # 56h
00h 푸시
01h 푸시
종료

POP 작업

스택 포인터의 최대 주소 값을 다른 레지스터 주소에 배치하는 데 사용됩니다. 이‘POP’를 다시 사용하면 1 씩 감소하고 레지스터에 저장된 값은‘POP’로 주어집니다.

스택의 POP 작업

스택의 POP 작업

POP 동작은 'Last in First Out'을 의미합니다.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
종료

8051 마이크로 컨트롤러의 레지스터

더하기 또는 빼기 작업을 수행하면 이러한 작업은 메모리에서 직접 수행 할 수 없으므로 레지스터를 사용하여 수행됩니다. 다양한 유형이 있습니다. 8051 마이크로 컨트롤러의 레지스터 .

이러한 레지스터는 작동에 따라 두 가지 유형으로 분류됩니다.

• 범용 레지스터

• 특수 기능 레지스터

범용 레지스터

이 기사의 앞부분에서 설명했듯이 각 뱅크에는 8 개의 주소 지정 가능한 8 비트 레지스터가있는 4 개의 다른 뱅크 레지스터가 있으며 한 번에 하나의 뱅크 레지스터 만 액세스 할 수 있습니다. 그러나 플래그 레지스터에서 은행 레지스터의 번호를 변경하면 다른 은행 레지스터에 액세스 할 수 있습니다. 8051의 인터럽트 개념 .

특수 기능 레지스터

Accumulator, Register B, Data pointer, PCON, PSW 등의 특수 기능 레지스터는 80H ~ FFH의 주소로 제조시 미리 정해진 용도로 설계되었으며이 영역은 데이터 또는 프로그램 저장 용도로 사용할 수 없습니다. 이러한 레지스터는 비트 주소 및 바이트 주소 레지스터로 구현할 수 있습니다.

특수 기능 레지스터의 유형

8051은 총 32 개의 I / O 라인이있는 4 개의 입력 / 출력 관련 특수 기능 레지스터로 구성됩니다. 특수 기능 레지스터는 I / O 라인에서 읽은 값과 8051의 작동을 제어하는 ​​특수 기능 레지스터를 제어합니다. 보조 특수 기능 레지스터는 8051에 직접 연결되지 않지만 실제로 이러한 레지스터가 없으면 8051에 연결됩니다. 제대로 작동 할 수 없습니다. 8051의 레지스터 세트가 아래에 설명되어 있습니다.

8051 마이크로 컨트롤러 세트 등록

레지스터에 고정 된 상수 값을 설정하는 것을 레지스터 세트라고합니다. 값은 명령어 세트를 사용하여 레지스터에 설정됩니다. 8051은 'Harvard'아키텍처의 CISC 지침을 따릅니다. 그만큼 CISC는 복잡한 명령어 세트 컴퓨팅을 나타냅니다. . 8051 마이크로 컨트롤러의 다양한 명령어 유형은 다음과 같습니다.

  1. 산술 지침
  2. 조건부 지침
  3. 전화 및 점프 지침
  4. 루프 지침
  5. 논리적 지침
  6. Bullion 지침

1. 산술 지침

산술 명령어는 다음과 같은 몇 가지 기본 작업을 수행합니다.

  • 부가
  • 빼기
  • 곱셈
  • 분할
8051 마이크로 컨트롤러의 산술 명령어

8051 마이크로 컨트롤러의 산술 명령어

예 :

ㅏ. 부가:

조직 0000h
MOV R0, # 03H // 값 3 이동은 레지스터 R0 //입니다.
MOV A, # 05H // 누산기 A에서 값 5 이동 //
A, 00H 추가 // 누산기 값 '5'를 0과 함께 누산기에 저장 //
종료

비. 빼기:

조직 0000h
MOV R0, # 03H // 값 3 이동은 레지스터 R0 //입니다.
MOV A, # 05H // 누산기 A에서 값 5 이동 //
SUBB A, 03H // A = 5-3 최종 값은 Accumulator A에 2 저장됩니다. //
종료

C. 곱셈 :

조직 0000h
MOV R0, # 03H // 값 3 이동은 레지스터 R0 //입니다.
MOV A, # 05H // 누산기 A에서 값 5 이동 //
MUL A, 03H // A = 5 * 3 최종 값은 15, Accumulator A에 저장 됨 //
종료

D. 부문 :

조직 0000h
MOV R0, # 03H // 값 3 이동은 레지스터 R0 //입니다.
MOV A, # 15H // 누산기 A에서 값 5 이동 //
DIV A, 03H // A = 15 / 3 최종 값은 Accumulator A에 저장되는 5입니다. //
종료

2. 조건부 지침

CPU는 단일 비트 상태 또는 바이트 상태를 확인하여 조건에 따라 명령을 실행할 수 있으며 다음과 같은 조건부 명령이라고합니다.

비트 주소 지정 가능 레지스터에서 단일 비트 상태를 확인하려면

JB- 아래에 있으면 점프

JNB- 위가 아니면 점프

캐리 비트 상태를 확인하려면

JC- 깃발을 들고 있으면 점프

캐리가 없으면 JNC 점프

누산기 상태를 0 또는 1로 확인하려면

JZ- 플래그가 0이면 점프

JNZ- 0이 아니면 점프

이것은 8051 마이크로 컨트롤러에 설정된 레지스터와 스택 메모리 할당에 관한 것입니다. 이 기사가 각 주제와 관련된 매우 흥미로운 프로그램과 함께 주제에 대한 몇 가지 중요한 통찰력을 제공했을 수 있기를 바랍니다. 도움이 필요하면 저희에게 편지를 보낼 수도 있습니다. 마이크로 컨트롤러 코딩 그리고 또한 마이크로 컨트롤러에 대한 최신 프로젝트 .