C 언어로 MK 포트 프로그래밍 51. 마이크로컨트롤러 MCS–51: 프로그램 모델, 구조, 명령. 포트 읽기 모드

기본 버전 MCS–51 간략한 정보. 최신 8비트 마이크로컨트롤러(MC)에는 이전에 별도의 마이크로컴퓨터 보드 형태의 값비싼 다중 칩 레이아웃이 사용되었던 실시간 제어 리소스가 있습니다.

● 충분한 메모리 용량을 갖고, 물리적, 논리적으로 프로그램 메모리로 분리하고 데이터 메모리(Harvard 아키텍처) 및 제어 알고리즘 실행에 중점을 둔 명령 시스템;

● 최소 구성 마이크로프로세서 제어 시스템을 구현하는 데 필요한 모든 장치(프로세서, ROM, RAM, 입/출력 포트, 인터럽트 시스템, 비트 정보 처리 수단 등)를 포함합니다. 지난 세기의 70년대에 회사는 인텔다양한 공통 기능(비트 용량, 명령 시스템, 주요 기능 블록 세트 등)으로 통합된 8비트 마이크로컨트롤러 MCS-48 제품군이 개발되어 산업 생산에 출시되었습니다. 이 제품군의 기본 버전에는 다음이 포함됩니다.

● 8비트 프로세서;

● 내부 프로그램 메모리(1/2/4K 바이트);

● 내부 데이터 메모리(64/128/256바이트);

● 최대 27개의 내부 및 16개의 외부 I/O 라인;

● 8비트 타이머 카운터 1개;

● 두 개의 요청 소스가 있는 단일 레벨 인터럽트 시스템. 1980년에 같은 회사는 MCS-48 제품군의 아키텍처와 호환되지만 더 뛰어난 기능을 갖춘 새로운 8비트 마이크로 컨트롤러 제품군인 MCS-51을 개발했습니다.

MCS-51 제품군의 아키텍처는 매우 성공적이어서 여전히 8비트 MK의 표준 중 하나입니다. 따라서 연구 대상은 상대적으로 간단한 제어 시스템에 널리 사용되는 이 제품군의 마이크로 컨트롤러로 선택되었습니다.

MCS-51 제품군(컴파일러, 하드웨어-소프트웨어 에뮬레이터 등)을 위한 다양한 프로그램 준비 도구가 개발되었으며 수많은 표준 루틴 라이브러리가 있습니다. 제품군에는 마이크로 컨트롤러의 마이크로 회로(칩 버전)에 대한 다양한 수정이 포함됩니다. 이 섹션의 기사에서는 구조적, 기능적 측면과 이해의 관점에서 가장 간단한 MCS-51 제품군 마이크로 컨트롤러 (8051 마이크로 회로는 국내 아날로그 KP1816BE51에 해당)의 기본 버전에 대해 자세히 설명합니다.

후속 미세 회로 시리즈는 기본 버전과의 호환성을 유지하면서 향상된 제조 기술에서 다릅니다. 전기적 매개변수, 추가 하드웨어 및 기능성. 다음 기사에서는 MCS-51 마이크로 회로 제품군의 후속 수정에 대한 구조적 및 기능적 특징을 다루고 있습니다.
MCS-51의 일반화된 블록 다이어그램. MC의 구성은 일반화된 블록 다이어그램이 그림 1에 나와 있습니다. 7.1.1에는 다음이 포함됩니다.

● 8비트 CPU CPU로 구성된 ALU, 제어 장치 주소 생성기 에프;

● 프로그램 저장을 위한 4K 바이트 용량의 마스크 ROM;

● 데이터 저장을 위한 128바이트 용량의 RAM;

● 입력용 프로그래밍 가능 포트 P0~P3 4개– 정보 출력;

● 블록 직렬 인터페이스 2선 회선을 통해 외부 장치와 정보를 교환하기 위한 BPI

● 실시간 모드를 유지하기 위한 BT/C 타이머/카운터 차단;

● 실행 가능한 프로그램의 중단을 구성하기 위한 BP 인터럽트 블록. 이러한 자금이 형성됩니다. 거주자칩에 직접 위치한 마이크로 컨트롤러의 일부입니다. MK에는 별도의 기능 블록에 할당되고 다이어그램에는 표시되지 않은 많은 수의 레지스터가 포함되어 있습니다.

다이어그램에는 제어 회로도 표시되지 않습니다. 블록 간 양방향 정보 교환은 내부 8비트를 통해 수행됩니다. 데이터 버스ШД-8.

내부 16비트 기준 주소 버스ША-16 CPU에서 생성된 주소는 ROM(12주소 비트)과 RAM(하위 8비트)으로 출력됩니다.

외부 메모리를 사용하는 경우 주소의 최하위 8비트가 포트 P0에 출력되고 3 또는 8개의 최상위 비트가 포트 P2에 출력됩니다.

인터페이스를 논리적으로 확장하기 위해 포트 라인의 기능을 결합하는 것이 사용됩니다. 그림의 예로서 7.1.1 점선은 수행하는 P3 포트의 라인을 나타냅니다. 대안제어 신호를 전송하는 기능, 그 목적은 아래에서 설명됩니다. 내부 클럭 생성기를 생성하기 위해 석영 공진기와 두 개의 커패시터가 MK 마이크로 회로의 단자에 연결됩니다 (그림 7.1.1). 내부 클록 생성기 대신 외부 발진 소스를 사용하여 동기화할 수 있습니다. 가정 어구 그래픽 지정 MK 마이크로 회로는 그림 1에 나와 있습니다. 7.1.2, 핀의 지정 및 목적 - 표에 나와 있습니다. 7.1.1. MK의 기능 블록과 작동 원리를 고려해 보겠습니다. 산술 논리 장치. 산술 논리 장치는 8비트 피연산자에 대한 산술(곱셈과 나눗셈 포함) 및 논리 연산뿐만 아니라 논리 시프트, 영점 조정, 설정 등의 연산을 수행하도록 설계되었습니다. ALU의 블록 다이어그램은 그림 1에 나와 있습니다. 7.1.3.

ALU에는 다음이 포함됩니다.

● 병렬 8비트 가산기산술(덧셈과 뺄셈) 및 논리(덧셈, 곱셈, 시차 및 항등) 연산을 수행하는 순차 캐리를 갖춘 조합형 SM;

배터리 A,주요 산술 레지스터의 기능을 제공합니다.

등록하다 B, 곱셈과 나눗셈 연산을 구현하는 데 사용되거나 사용자가 기능을 결정하는 추가 수퍼 연산 레지스터로 사용됩니다.

레지스터(소프트웨어를 사용할 수 없음) 임시 저장РВХ1, РВХ2, 작업 기간 동안 피연산자를 수신하고 저장하기 위한 것입니다.

● 롬 상수데이터의 2진수 표현을 위한 수정 코드, 비트 연산을 위한 마스크 코드 및 상수를 위한 코드를 저장하는 ROM;

프로그램 상태 워드 레지스터 PSW는 작업이 완료된 후 ALU의 상태를 기록합니다. 테이블에 7.1.2는 PSW 레지스터의 개별 비트의 비트 할당에 대한 정보를 제공합니다. 제어 장치. 중앙프로세서의 제어장치(CU) 예정된조정을 위해 협동생성된 클록 펄스와 제어 신호를 사용하는 모든 MK 노드. 이는 다음으로 구성됩니다(그림 7.1.4):

동기화 및 제어 장치기계 사이클과 개별 상태(S) 및 위상(P)을 정의하는 클록 펄스를 생성하고 마이크로컨트롤러의 작동 모드에 따라 필요한 제어 신호 세트를 생성하는 제어 시스템입니다. 명령을 실행하는 데는 1, 2 또는 4개의 기계 주기가 필요합니다.

각 기계 사이클에는 6개 주 S1–S6, A 각 상태에는 다음이 포함됩니다. 두 단계 P1, P2, 지속 시간은 클록 발생기 T 0SC의 발진 기간입니다.

기계 사이클의 지속 시간은 12T 0SC입니다. S1P1 단계에서 시작하여 S6P2 단계로 끝나는 모든 기계 사이클은 동일합니다.

클록 펄스 외에도 동기화 장치는 S1P2~S2P1 및 S4P2~S5P1 단계에서 양의 펄스 형태로 각 기계 사이클에서 ALE 주소의 하위 바이트에 대해 2개(때로는 1개)의 게이팅 신호를 생성합니다. 그림의 타이밍 다이어그램 7.1.5 기계 사이클의 구성을 설명합니다.

● 명령 레지스터 RK, 명령 디코더각 기계 사이클에서 실행된 명령의 마이크로프로그램에 따라 일련의 마이크로 작업을 생성할 수 있는 DC 및 PLM

● 포트 P0-P3을 통해 외부 장치와 MK의 정보 교환을 보장하는 신호를 수신하고 발행하기 위한 LVV 입/출력 논리;

● PCON.7 위치에 단일 활성화된 SMOD 비트가 있는 PCON 레지스터는 직렬 포트 데이터 속도를 두 배로 늘립니다. 나머지 비트는 나중에 사용하기 위해 예약되어 있습니다.
주소 생성기. FA(주소 생성기) 또는 PC 명령 카운터, 예정된프로그램 메모리의 현재 16비트 주소와 외부 데이터 메모리의 8/16비트 주소를 구성합니다. 이는 다음으로 구성됩니다(그림 7.1.6):

● 16비트 완충기 B는 8비트 SD 데이터 버스와 주소 형성기의 16비트 내부 버스(IB) 사이를 통신합니다.

● 현재 주소 값을 증가시키기 위한 SI 증분 회로 프로그램 메모리유닛 당;

● SI에서 오는 PTA 명령의 현재 주소를 저장하기 위한 레지스터;

● 데이터 포인터 레지스터 DPTR , 두 개의 8비트 레지스터 DPH 및 DPL로 구성됩니다. 이는 외부 데이터 메모리의 16비트 주소를 저장하는 역할을 하며 두 개의 독립적인 소프트웨어 액세스 가능 RON으로 사용될 수 있습니다.

● 프로그램 메모리의 실행 16비트 주소 또는 외부 데이터 메모리의 8/16비트 주소를 저장하기 위한 XRF 주소 생성기의 레지스터입니다. 이 레지스터는 포트 P0을 통해 데이터를 전송하는 데에도 사용됩니다. 외부 장치 MOVX @Rm, A 및 MOVX @DPRT, A 명령을 실행할 때.

데이터 메모리. 데이터 메모리 예정된프로그램 실행 중에 사용되는 정보를 수신, 저장 및 발행합니다. 내부(상주) 데이터 메모리(그림 7.1.7)는 128바이트 용량의 RAM으로 구성됩니다. 스택 포인터 S.P. 주소 레지스터 RAM RA 및 디코더 Dsh. 스택 포인터 SP는 마지막으로 접근한 스택 셀의 주소를 받아 저장하도록 설계된 8비트 레지스터이다. 재설정 후 스택 포인터는 주소 07H로 설정되며, 이는 주소 08H의 스택 시작에 해당합니다. Dsh 디코더와 함께 PA 주소 레지스터를 사용하면 정보의 바이트 또는 비트가 포함된 필수 메모리 셀에 액세스할 수 있습니다.

MK는 연결을 통해 데이터 메모리 용량을 최대 64KB까지 늘릴 수 있는 기능을 제공합니다. 외부 저장 장치.그림의 예로서 7.1.8은 MOVX 유형 명령을 사용하여 2K 바이트 용량의 외부 VPD 데이터 메모리의 페이지 구성을 보여줍니다. @ Rm(m = 0; 1). 이 경우 포트 P0은 다중 주소/데이터 버스로 작동하고 포트 P2의 3개 라인은 외부 RAM의 페이지 주소를 지정하는 데 사용되고 나머지 5개 라인은 입출력 라인으로 사용될 수 있습니다.
그림에서. 7.1.9는 MK가 외부 RAM으로 작동할 때 읽기 및 쓰기 주기의 타이밍 다이어그램을 보여줍니다. 다이어그램은 다음을 나타냅니다.

● RSN - PC 명령 카운터의 상위 바이트입니다.

● DPL, DPH - MOVX @DPTR,A 및 MOVX A,@DPTR 명령에서 간접 주소 지정을 위한 레지스터로 사용되는 DPTR 데이터 포인터 레지스터의 하위 및 상위 바이트입니다.

● P2 SFR - P2 포트 래치;

● Rm (m = 0, 1) - MOVX @Rm, A 및 MOVX A, @Rm 명령어에서 간접 주소 레지스터로 사용되는 레지스터입니다.

● Z - 고저항 상태;

● D - 포트 P0의 데이터가 마이크로컨트롤러에 입력되는 기간입니다. 프로그램 메모리. 프로그램 메모리는 프로그램을 저장하도록 설계되었으며 자체(데이터 메모리와 별개) 주소 공간을 가지며 읽기 전용입니다. 여기에는 Dsh 디코더와 ROM이 포함됩니다(그림 7.1.10). 16비트 PC 카운터는 프로그램 메모리 주소를 지정하는 데 사용되므로 최대 용량은 64K 바이트입니다. 내부 프로그램 메모리는 4K바이트 ROM과 12비트 디코더로 구성됩니다. 외부 메모리는 그림 3의 다이어그램에 따라 연결됩니다. 7.1.11. MK의 ̅EA 핀에 0V가 공급되면(그림 7.1.11 참조), 내면의 기억프로그램이 비활성화되었습니다. 모든 메모리 액세스는 주소 0000h에서 시작됩니다. ̅EA 핀이 전원에 연결되면 주소 0000h~FFFFh의 내부 프로그램 메모리와 주소 0FFFh~FFFFh의 외부 프로그램 메모리에 대한 액세스가 자동으로 발생합니다.

MK 프로그램의 외부 메모리를 읽으려면 ̅PSEN 신호가 생성됩니다. 내부 메모리로 작업할 때는 읽기 신호가 사용되지 않습니다. 외부 프로그램 메모리에 접근할 때 항상 16비트 주소가 형성됩니다. 주소의 하위 바이트는 머신 사이클의 전반부에서 포트 P0을 통해 전송되고 레지스터의 ALE 스트로브 컷에 의해 고정되며, 사이클의 후반부에서는 포트 P0을 사용하여 의 바이트를 입력합니다. 외부 메모리의 데이터를 MK로 보냅니다.

전체 메모리 액세스 시간 동안 주소의 최상위 바이트가 포트 P2를 통해 전송됩니다.

MK가 외부 RAM으로 작동할 때 읽기 및 쓰기 주기의 타이밍 다이어그램이 그림 1에 나와 있습니다. 7.1.12.
다이어그램은 다음을 나타냅니다.

● PCL OUT – PC 프로그램 카운터의 하위 바이트 출력.

● RSN OUT - PC 명령 카운터의 상위 바이트 출력;

● DPH - MOVX @DPTR,A 및 MOVX A,@DPTR 명령에서 간접 주소 지정을 위한 레지스터로 사용되는 DPTR 데이터 포인터 레지스터의 상위 바이트입니다.

● P2 SFR - P2 포트 래치;

● INS IN - 프로그램 메모리에서 명령(명령) 바이트 입력;

● ADDR OUT - Rm 레지스터(m = 0, 1) 또는 DPL 레지스터(DPTR 하위 레지스터)에서 외부 데이터 메모리 주소의 하위 바이트를 발행합니다. I/O 포트. 포트 할당.포트 P0, P1, P2, P3 예정된 MK와 외부 장치 간의 정보 교환 및 다음 기능 수행을 위해:

● 주소 A7…A0의 하위 바이트는 포트 P0을 통해 출력됩니다. 외부 프로그램 메모리 및 외부 데이터 메모리(시간 구분)로 작업할 때 데이터 바이트가 MK에서 출력되고 MK에 입력됩니다.

● 외부 프로그램 메모리 및 외부 데이터 메모리로 작업할 때 포트 P2를 통해 주소 A15...A8의 상위 바이트가 출력됩니다(MOVX A,@DPTR 및 MOVX @DPTR,A 명령을 사용하는 경우에만).

● P3 포트의 라인은 이 라인의 래치에 1이 입력되면 대체 기능을 수행하는 데 사용될 수 있으며, 그렇지 않으면 라인 출력에 0이 고정됩니다. P3 포트 핀의 대체 기능은 표에 나와 있습니다. 7.1.3.

포트의 회로 특징

그림에서. 7.1.13은 다음을 포함하여 각 MK 포트의 한 채널에 대한 다이어그램을 보여줍니다.

● 수신된 데이터 비트를 고정하기 위한 래치;

● 출력 증폭기 종속(운전사);

● 노드 와의 연결출력단(P2 제외);

● 포트 출력 측에서 데이터 비트를 전송하기 위한 회로로, 버퍼 B2와 B3(포트 P4용)으로 구성됩니다. 래치는 내부 "래치에 쓰기" 신호에 의해 클럭되는 D-플립플롭입니다. D 플립플롭의 직접 출력에서 ​​나온 데이터 비트는 MK의 내부 데이터 버스(ID) 라인에 대한 "읽기 래치" 신호를 사용하여 버퍼 B1을 통해 프로그래밍 방식으로 읽을 수 있습니다.

출력단포트 P0은 인버터이며, 그 특징은 외부 메모리에 액세스할 때만(포트를 통해 주소와 데이터를 전송할 때) 로드 트랜지스터 VT2가 열린다는 사실에서 나타납니다. 다른 모든 모드에서는 부하 트랜지스터가 닫힙니다. 따라서 P0(그림 7.1.13, a)을 범용 출력 포트로 사용하려면 외부 부하 저항을 해당 단자에 연결해야 합니다. 포트 래치에 1을 쓰면 인버터 트랜지스터 VT1이 잠기고 P0.X 포트의 외부 핀이 고저항 상태로 전환됩니다. 이 모드에서는 포트 P0.X의 출력이 입력 역할을 할 수 있습니다. P0 포트를 범용 I/O 포트로 사용하는 경우 각 P0.X 핀은 독립적으로 입력 또는 출력으로 작동할 수 있습니다. 출력 단계포트 P1, P2, P3(그림 7.1.13, 비, 씨, 디)트랜지스터 VT2로 사용되는 내부 부하 저항이 있는 인버터 회로에 따라 만들어졌습니다.

포트 핀이 상태 0에서 상태 1로 전환될 때 스위칭 시간을 줄이기 위해 부하 트랜지스터 VT2와 병렬로 추가 트랜지스터 VT3이 도입되었습니다. 게이트 회로의 요소를 사용하는 트랜지스터 VT3은 마스터 석영 발진기의 두 발진 주기(기계 사이클의 단계 S1P1, S2P2 동안)와 동일한 시간 동안 잠금 해제됩니다. 출력 단계 MX 멀티플렉서를 사용하는 포트 P0, P2(그림 7.1.13, A, c)는 래치 또는 내부 "주소/데이터" 및 "주소" 버스에 연결할 수 있습니다. 포트 P1의 출력단(그림 7.1.13, 6)은 래치에 영구적으로 연결됩니다.

포트 P3의 핀이 출력이고 래치에 1이 포함된 경우 해당 출력 단계는 하드웨어에 의해 제어됩니다. 내부 신호해당 대체 기능의 실행을 제공하는 "대체 출력 기능", 즉 신호 ̅WR, ̅RD 또는 RxD 중 하나가 외부 핀에서 생성됩니다. 포트 출력이 입력으로 사용되는 경우 여기에 도착하는 대체 신호(TxD, ̅INT0, ̅INT1, T0, T1)는 "대체 입력 기능" 내부 라인으로 전송됩니다.

포트 녹화 모드.

포트 쓰기 명령이 실행되면 새 값이 S6P2 단계에서 래치에 기록되고 다음 머신 사이클의 S1P1 단계에서 포트의 출력 핀에 직접 출력됩니다.

포트 읽기 모드

포트 읽기 명령은 포트의 외부 핀이나 래치 출력에서 ​​직접 정보를 읽습니다. 첫 번째 경우, 포트 핀의 데이터 비트는 MK의 내부 데이터 버스(SD) 라인에 대한 "핀 읽기" 신호를 사용하여 버퍼 B2를 통해 프로그래밍 방식으로 읽혀집니다. 해당 명령이 실행될 때 "래치에 쓰기", "래치 읽기", "핀 읽기" 신호가 하드웨어에서 생성됩니다.

두 번째 경우에는 명령이 래치 상태 신호를 읽고 필요한 경우 이를 수정한 다음 다시 래치에 쓰는 소위 "읽기-수정-쓰기" 모드가 구현됩니다. "읽기-수정-쓰기" 모드는 ANL, ORL, XRL, JBC 명령을 실행할 때 구현됩니다. CPL; 주식회사; 12월; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

래치 출력에서 ​​정보를 읽으면 포트 핀의 논리 레벨을 해석할 때 오류를 제거할 수 있습니다. 기사의 계속을 읽으십시오.

MCS-51 제품군의 아키텍처는 주로 그 목적, 즉 건설에 따라 결정됩니다. 콤팩트그리고 값이 싼 디지털 장치. 모든 마이크로컴퓨터 기능은 단일 마이크로회로를 사용하여 구현됩니다. MCS-51 제품군에는 가장 단순한 마이크로 컨트롤러부터 매우 복잡한 마이크로 컨트롤러까지 모든 범위의 마이크로 회로가 포함되어 있습니다. MCS-51 제품군의 마이크로컨트롤러를 사용하면 다양한 장치에 대한 제어 작업을 수행하고 개별 구성요소를 구현할 수 있습니다. 아날로그 회로. 이 가족의 모든 미세 회로는 작동합니다. 동일한 명령 시스템으로, 대부분은 동일한 경우에 수행됩니다. 일치하는 핀아웃(신체의 다리 번호 매기기). 이를 통해 개발된 장치에 대해 다른 제조업체(예: Intel, Dallas, Atmel, Philips 등)의 마이크로 회로를 사용할 수 있습니다. 재작업 없이 개략도장치 및 프로그램.

그림 1. K1830BE751 컨트롤러의 블록 다이어그램

컨트롤러의 블록 다이어그램은 그림 1에 나와 있으며 제어 장치, 산술 논리 장치, 타이머/카운터 장치, 직렬 인터페이스 및 인터럽트 장치, 프로그램 카운터, 데이터 메모리 및 프로그램 메모리 등의 주요 기능 장치로 구성됩니다. 양방향 통신은 내부 8비트 데이터 버스를 사용하여 수행됩니다. 각 블록의 목적을 자세히 살펴보겠습니다. MCS-51 제품군의 거의 모든 구성원은 이 계획에 따라 제작되었습니다.. 이 제품군의 다양한 미세 회로는 특수 목적 레지스터(포트 수 포함)에서만 다릅니다. 명령 시스템 모든 컨트롤러제품군 MCS-51에는 111이 포함되어 있습니다. 기본 명령 1, 2 또는 3바이트 형식이며 한 칩에서 다른 칩으로 이동할 때 변경되지 않습니다. 이는 한 칩에서 다른 칩으로의 뛰어난 프로그램 이식성을 보장합니다.

제어 및 동기화 장치

타이밍 및 제어 장치는 허용되는 모든 작동 모드에서 메인프레임 컴퓨터 장치의 공동 작동 조정을 보장하는 동기화 및 제어 신호를 생성하도록 설계되었습니다. 제어 장치에는 다음이 포함됩니다.

  • 시간 간격을 형성하는 장치,
  • 입출력 논리,
  • 명령 레지스터
  • 에너지 관리 등록,
  • 명령 디코더, 컴퓨터 제어 논리.

시간 간격을 형성하는 장치위상, 클록 및 사이클의 내부 클록 신호를 생성하고 발행하도록 설계되었습니다. 기계 사이클 수에 따라 명령 기간이 결정됩니다. 거의 모든 컴퓨터 명령은 1~2개의 머신 사이클에서 실행됩니다. 단, 곱셈과 나눗셈 명령을 제외하면 실행 기간은 4개의 머신 사이클입니다. 마스터 오실레이터의 주파수를 Fg로 표시하면 기계 주기의 지속 시간은 12/Fg와 같거나 마스터 오실레이터 신호의 12주기입니다. I/O 로직은 입/출력 포트 P0-P3을 통해 외부 장치와의 정보 교환을 보장하는 신호를 수신하고 출력하도록 설계되었습니다.

명령 레지스터실행 중인 명령의 8비트 연산 코드를 기록하고 저장하도록 설계되었습니다. 명령과 컴퓨터 제어 로직의 도움으로 작동 코드는 명령을 실행하기 위한 마이크로프로그램으로 변환됩니다.

수요 제어 레지스터(PCON)을 사용하면 마이크로컨트롤러를 중지하여 전력 소비를 줄이고 마이크로컨트롤러의 간섭 수준을 줄일 수 있습니다. 마이크로컨트롤러 마스터 발진기를 중지하면 전력 소비와 간섭을 훨씬 더 줄일 수 있습니다. 이는 PCON 소비 제어 레지스터의 비트를 토글하여 달성할 수 있습니다. n-MOS 제조 옵션(1816 시리즈 또는 이름 중간에 "c"가 없는 외국 칩)의 경우 PCON 소비 제어 레지스터에는 직렬 포트 SMOD의 전송 속도를 제어하는 ​​비트가 하나만 포함되어 있습니다. 전력 소비 제어 비트가 없습니다.

"마이크로 컨트롤러 MCS-51 아키텍처" 기사와 함께 다음 내용을 읽어보세요.


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

현재 다양한 회사에서 Intel 및 기타 제조업체 모두에서 이 제품군의 많은 수정 및 유사품을 생산하고 있으며, 클럭 속도와 메모리 용량이 10배 증가했으며 계속해서 증가하고 있습니다. LSI에 내장된 모듈 세트도 확장되고 있으며, 많은 최신 모델에는 최대 12비트의 상주 고속 ADC가 내장되어 있으며 현재는 더 많은 비트가 있을 수 있습니다. 그러나 MCS51 제품군은 1980년에 첫 번째 샘플이 출시된 Intel LSI 8051, 80С51, 8751, 87С51, 8031, 80С31을 기반으로 합니다.

MCS51 제품군의 마이크로컨트롤러는 고품질 n-MOS 기술(시리즈 8ХХХ, 아날로그 - 시리즈 1816(러시아 및 벨로루시)) 및 k-MOS 기술(시리즈 8ХСХХ, 아날로그 - 시리즈 1830)을 사용하여 제작됩니다. 8 다음의 두 번째 문자는 0 – 칩에 EPROM이 없음, 7 – 자외선 삭제 기능이 있는 4K EPROM을 의미합니다. 세 번째 문자: 3 – 온칩 ROM, 5 – ROM이 없으면 칩에 마스크 ROM이 있습니다.

따라서 80C51은 칩에 마스크 ROM이 있는 k-MOS 기술 기반의 LSI이고, 8031은 칩에 프로그램 메모리(ROM, RPOM)가 없는 n-MOS LSI이며, 8751은 칩에 마스크 ROM이 있는 n-MOS LSI입니다. 자외선 제거 기능이 있는 상주(칩에 위치) RPOM. 우리는 8751 LSI를 더 고려하여 필요한 경우 첫 번째 직렬 LSI에 대해 게시된 매개변수를 인용하여 다른 회로 간의 차이점을 유보할 것입니다. 필요한 경우 회사 디렉토리 및 기술 문서에서 모든 최신 수정 사항에 대한 추가 정보를 찾을 수 있습니다.

A. 일반적인 특성 및 핀 할당

MCS51 제품군은 MK의 5가지 수정(동일한 기본 특성을 가짐)을 기반으로 하며, 주요 차이점은 프로그램 메모리 구현과 전력 소비입니다(표 3.1 참조). 마이크로 컨트롤러는 8비트입니다. 8비트 단어를 처리하기 위한 명령이 있고 Harvard 아키텍처가 있으며 제품군의 기본 샘플의 클록 주파수는 12MHz입니다.

표 3.1.

마이크로 회로

내부 프로그램 메모리, 바이트

프로그램 메모리 유형

내부 데이터 메모리, 바이트

클록 주파수, MHz

전류 소비, mA

MK 8051 및 80C51에는 칩 제조 중에 4096바이트 용량의 마스크 프로그래밍 가능 ROM 프로그램 메모리가 포함되어 있으며 대량 생산에 사용하도록 설계되었습니다. MK 8751에는 자외선 제거 기능이 있는 4096바이트 RPOM이 포함되어 있어 시스템 개발 단계에서 프로그램을 디버깅할 때뿐 아니라 소규모 배치로 생산할 때나 작동 중에 다시 작성해야 하는 시스템을 만들 때 편리합니다.

주기적인 조정.

MK 8031 ​​​​및 80C31에는 내장 프로그램 메모리가 없습니다. 이전에 설명한 수정과 마찬가지로 최대 64KB의 외부 프로그램 메모리를 사용할 수 있으며 훨씬 더 큰 볼륨(칩에서 4KB보다)의 ROM 프로그램 메모리가 필요한 시스템에서 효과적으로 사용됩니다.

제품군의 각 MK에는 외부 RAM IC를 사용하여 총 RAM 데이터 양을 최대 64KB까지 확장할 수 있는 128바이트 용량의 상주 데이터 메모리가 포함되어 있습니다.

    8비트 중앙 프로세서;

    4KB 프로그램 메모리(8751 및 87C51만 해당);

    128바이트 데이터 메모리;

    4개의 8비트 프로그래밍 가능 I/O 포트;

    2개의 16비트 다중 모드 타이머/카운터;

    5개의 벡터와 2개의 소프트웨어 제어 우선순위 레벨을 갖춘 자동 벡터 인터럽트 시스템;

    4가지 모드로 작동할 수 있는 범용 이중 송수신기를 포함한 직렬 인터페이스;

    시계 생성기.

MK 명령 시스템에는 1, 2 또는 3바이트 형식의 111개 기본 명령이 포함되어 있습니다. 마이크로 컨트롤러에는 다음이 포함됩니다.

    32개의 범용 레지스터 RON은 각각 이름이 R0...R7인 8개의 레지스터로 구성된 4개의 뱅크로 구성됩니다. 하나의 뱅크 또는 다른 뱅크의 선택은 프로그램 상태 레지스터 PSW의 해당 비트를 설정하여 프로그램에 의해 결정됩니다.

    128개의 소프트웨어 제어 플래그(비트 프로세서, 아래 참조);

    MK 요소를 제어하는 ​​특수 기능 레지스터 세트입니다. 마이크로 컨트롤러에는 다음과 같은 작동 모드가 있습니다.

1). 일반 재설정. 2).정상적으로 작동합니다. 3).저전력 소비 모드 및 유휴 모드. 4). 사용 가능한 경우 상주 RPOM에 대한 프로그래밍 모드입니다.

여기에서는 처음 두 가지 작동 모드에 중점을 둘 것이며, 모든 모드에서 MK의 구성과 작동에 대한 자세한 설명은 부록 P1에 나와 있습니다.

RON과 비트 프로세서 영역은 0부터 80h까지의 주소를 갖는 상주 RAM의 주소 공간에 위치합니다.

주거용 RAM 주소의 상위 영역에는 특수 기능 레지스터(SFR, Special Function Registers)가 있습니다. 그 목적은 표에 나와 있습니다. 3.2.

표 3.2.

지정

이름

배터리

레지스터 B

프로그램 상태 레지스터

스택 포인터

데이터 포인터. 2바이트:

낮은 바이트

높은 바이트

인터럽트 우선순위 레지스터

인터럽트 활성화 레지스터

타이머/카운터 모드 레지스터

타이머/카운터 제어 레지스터

타이머/카운터 0. 상위 바이트

타이머/카운터 0. 하위 바이트

타이머/카운터 1. 상위 바이트

타이머/카운터 1. 하위 바이트

직렬 포트 제어

직렬 버퍼

소비관리

* - 레지스터, 허용 비트별 주소 지정

표 3.2에 표시된 SFR 레지스터의 기능을 간략하게 살펴보겠습니다.

배터리 ACC - 누산기 레지스터. 작동하도록 설계된 명령

배터리가 있는 경우 니모닉 "A"를 사용하세요. 예를 들어 MOV ㅏ, P2 . ACC 니모닉은 예를 들어 누산기의 비트 주소를 지정할 때 사용됩니다. 따라서 A5M51 어셈블러를 사용할 때 누산기의 다섯 번째 비트 기호 이름은 다음과 같습니다. ACC. 5. .

등록하다 안에 . 곱셈과 나눗셈 연산 중에 사용됩니다. 다른 명령어의 경우 레지스터 B를 추가 실시간 레지스터로 처리할 수 있습니다.

등록하다 상태 프로그램들 추신 프로그램 상태에 대한 정보가 포함되어 있으며 부분적으로는 수행된 작업 결과에 따라 자동으로 설치되고 부분적으로는 사용자가 설치합니다. 레지스터 비트의 지정과 목적은 각각 표 3.3과 3.4에 나와 있습니다.

표 3.3.

지정

표 3.4.

지정

비트 할당

비트 액세스

깃발을 들고 가세요. 일련의 산술 및 논리 명령어를 실행하는 동안 변경됩니다.

하드웨어 또는 소프트웨어

추가 캐리 플래그. 결과의 최하위 니블(D0-D3)이 생성될 때 비트 3의 캐리 또는 빌림을 나타내기 위해 덧셈 또는 뺄셈 명령 중에 하드웨어에서 설정/삭제됩니다.

하드웨어 또는 소프트웨어

플래그 0. 사용자 정의 플래그.

프로그래밍 방식으로

프로그래밍 방식으로

작업 등록 은행 색인

프로그래밍 방식으로

주소가 있는 뱅크 0(00Н - 07Н) 주소가 있는 뱅크 1(08Н - 0FН) 주소가 있는 뱅크 2(10Н - 17Н) 주소가 있는 뱅크 3(18Н - 1FН)

오버플로 플래그. 오버플로 조건을 나타내기 위해 산술 명령어를 실행하는 동안 하드웨어에 의해 설정되거나 지워집니다.

하드웨어 또는 소프트웨어

여분의. 사용할 수 있는 쓰기 및 읽기 가능한 트리거를 포함합니다.

패리티 비트. "1" 상태의 짝수 또는 홀수 배터리 비트를 나타내기 위해 각 명령 주기마다 하드웨어를 재설정하거나 설정합니다.

하드웨어 또는 소프트웨어

바늘 스택 SP - PUSH 및 CALL 명령어가 실행될 때 스택에 데이터를 쓰기 전에 내용이 증가되는 8비트 레지스터입니다. 초기 재설정 시 스택 포인터는 07H로 설정되고 데이터 RAM의 스택 영역은 주소 08H에서 시작됩니다. 필요한 경우 스택 포인터를 재정의하여 스택 영역을 마이크로컨트롤러 데이터의 내부 RAM 어디든 배치할 수 있습니다.

바늘 데이터 DPTR 상위 바이트(DPH)와 하위 바이트로 구성됩니다.

(DPL). 외부 메모리에 액세스할 때 16비트 주소를 포함합니다. 사용될 수 있다

16비트 레지스터이거나 두 개의 독립적인 8비트 레지스터여야 합니다.

포트0 - 포트Z. 특수 기능 P0, P1, P2, RZ 레지스터의 개별 비트는 포트 P0, P1, P2, RZ의 "래치" 비트입니다.

완충기 일관된 포트 SBUF 두 개의 개별 레지스터, 즉 송신기 버퍼와 수신기 버퍼를 나타냅니다. 데이터가 SBUF에 기록되면 전송기 버퍼에 들어가고 SBUF에 바이트를 기록하면 자동으로 직렬 포트를 통한 전송이 시작됩니다. SBUF에서 데이터를 읽으면 수신자 버퍼에서 가져옵니다.

레지스터 시간제 노동자. 레지스터 쌍(TH0, TL0) 및 (TH1, TL1)은 16을 형성합니다.

타이머/카운터 0 및 타이머/카운터 1에 대한 비트 카운팅 레지스터입니다.

레지스터 관리. 특수 기능 IP, IE, TMOD, TCON, SCON 및 PCON의 레지스터에는 인터럽트 시스템의 제어 비트 및 상태 비트가 포함됩니다.

미터/카운터 및 직렬 포트. 이에 대해서는 아래에서 자세히 설명합니다.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 E.A.

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

활동할 때 MC는 다음을 제공합니다.

    추가 명령의 최소 실행 시간은 1μs입니다.

    최소 실행 시간이 4μs인 하드웨어 곱셈 및 나눗셈.

MK는 석영, LC 체인 또는 외부 발진기를 사용하여 내부 발진기의 주파수를 설정하는 기능을 제공합니다.

확장된 명령어 시스템은 바이트 및 비트 주소 지정, 이진 및 이진 십진수 산술, 오버플로 표시 및 짝수/홀수 결정, 논리 프로세서 구현 기능을 제공합니다.

MCS51 제품군 아키텍처의 가장 중요하고 독특한 특징은 ALU가 8비트 데이터 유형에 대한 작업을 수행하는 것 외에도 단일 비트 데이터를 조작할 수 있다는 것입니다. 개별 소프트웨어 액세스 가능 비트는 해당 비트로 설정, 삭제 또는 대체될 수 있으며 전달, 확인 및

그림 3.2. 외부 핀

마이크로컨트롤러

논리적 계산에 사용됩니다. 단순 데이터 유형 지원(사용 가능한 경우)

더 긴 단어 길이를 향한 현재 추세는 언뜻 보면 한 단계 뒤처진 것처럼 보일 수 있지만 이러한 품질로 인해 MCS51 마이크로 컨트롤러 제품군은 특히 컨트롤러 기반 애플리케이션에 적합합니다. 후자의 작동 알고리즘은 표준 마이크로프로세서를 사용하여 구현하기 어려운 입력 및 출력 부울 변수의 존재를 전제로 합니다. 이러한 모든 속성을 통칭하여 MCS51 제품군의 부울 프로세서라고 합니다. 이 강력한 ALU 덕분에 MCS51 마이크로컨트롤러 제품군은 실시간 제어 애플리케이션과 데이터 집약적 알고리즘 모두에 적합합니다.

마이크로 컨트롤러의 회로도는 그림 1에 나와 있습니다. 3.2. 기본 버전에서는 40핀 DIP 패키지로 제공됩니다. 핀의 목적을 살펴 보겠습니다.

전원 핀부터 시작해 보겠습니다. «0 안에" 그리고 "5 안에" , 이를 통해 기본적인 영양을 공급받습니다. 전류 소비량은 표에 나와 있습니다. 3.1.

결론 "RST" - 마이크로 컨트롤러 재설정. 이 핀에 액티브 하이 레벨이 적용되면 방법 일반적인 초기화 MK는 다음 작업을 수행합니다.

P0-P3 포트 래치, SP 스택 포인터 및 SBUF 레지스터를 제외한 PC 프로그램 카운터와 모든 특수 기능 레지스터를 0으로 설정합니다.

    스택 포인터는 07H와 같은 값을 취합니다.

    모든 인터럽트 소스, 타이머 카운터 및 직렬을 비활성화합니다.

    BANK 0 RAM을 선택하고 데이터 수신 및 결정을 위해 포트 P0-RZ를 준비합니다.

외부 클로킹을 위한 입력으로 ALE 및 PME 핀을 공유합니다.

      레지스터에 특수 기능 PCON, IP 및 IE 예약 비트는 임의의 값을 가지며 다른 모든 비트는 0으로 재설정됩니다.

      SBUF 레지스터는 임의의 값으로 설정됩니다.

      포트 P0-PZ의 래치를 "1"로 설정합니다.

재설정 후 마이크로컨트롤러 레지스터의 상태는 표 3.5에 나와 있습니다.

표 3.5.

정보

불확실한

k-MOS의 경우 0ХХХ0000V n-MOS의 경우 0XXXXXXXB

RST 핀에는 대체 기능도 있습니다. 이를 통해 백업 전원이 공급되어 기본 RAM이 제거될 때 마이크로컨트롤러 RAM의 내용을 변경되지 않은 상태로 유지합니다.

결론 BQ1, BQ2 MK의 클록 주파수를 결정하는 석영 공진기를 연결하기 위한 것입니다.

결론 에아` (이자형 외부 드레스 외부 주소) - 이 핀에 활성 로우 레벨이 적용될 때 외부 프로그램 메모리에서 제어 코드를 읽는 모드를 활성화하도록 설계되었습니다. 출력에는 대체 목적(기능)이 있습니다. 프로그래밍 모드에서는 RPOM으로부터 프로그래밍 전압을 공급받습니다.

결론 PME ( 로그 에모리 이자형 네이블 허가 메모리 프로그램들) - 프로그램 메모리에서 읽는 주기를 제어하도록 설계되었으며 각 기계 주기마다 MK에 의해 자동으로 활성화됩니다.

결론 에일 ( 드레스 영어 이자형 네이블 허가 후진 구애) 포트 P0을 통해 주소의 하위 부분의 출력을 스트로브합니다. 출력은 RPOM을 프로그래밍할 때도 사용되며 프로그래밍 프로세스를 위한 스트로브 펄스가 여기에 공급됩니다.

MK에는 P0, P1, P2, P3의 네 가지 포트 그룹이 있습니다. 이는 마이크로 컨트롤러의 나머지 40개 핀입니다. 이러한 포트는 정보의 비트별 입력 및 출력을 담당할 수 있지만 각 포트에는 고유한 특성이 있습니다. 포트의 일반화된 기능 다이어그램이 그림 1에 나와 있습니다. 3.3. 포트에는 핀에 연결된 FET 출력 스위치, 기능 스위치, D 플립플롭 래치 및 제어 로직이 포함되어 있습니다. MK 내부 버스의 래치에 단위 또는 0을 쓸 수 있습니다. 이 정보는 기능 스위치를 통해 출력 스위치와 MK의 출력으로 전송됩니다. 한 상태에서는 트랜지스터 N과 N1이 모두 닫혀 있지만 N2는 열려 있습니다. 제로 상태에서 N은 열립니다.

Xia와 N2가 닫힙니다. 포트가 특수화된 대체 기능을 수행하는 순간 출력 래치 상태가 지워집니다. 마이크로 컨트롤러는 외부 신호에 의해 설정된 포트 래치 상태와 출력 상태를 별도로 읽을 수 있습니다. 이를 위해 MK 어셈블러에는 해당 라인을 활성화하는 특수 명령이 포함되어 있습니다. 해당 포트 래치에 대한 핀 상태를 읽으려면

미리 녹음되어 있다

내부에서

제어 래치

기능 스위치

Vcc

주말

단위. "읽기 래치" 라인이 활성화되면 이 라인이 연결된 "AND" 셀의 출력이 나타납니다.

그녀의 타이어 MK D Q

C Q 래치에 쓰기

읽기 래치

포트 핀

활성화되면 래치 상태가 MC의 내부 버스로 전송됩니다.

"읽기 출력" - 포트의 외부 핀 상태입니다.

포트 P0 – 범용 양방향 포트

입출력 이 항구 너머

외부 주소 버스를 구성하는 기능과

쌀. 3.3. 마이크로컨트롤러 포트의 기능 다이어그램

프로그램 메모리 및 데이터 메모리 확장을 위한 데이터

마이크로 컨트롤러. 외부 프로그램 메모리에 액세스하거나 외부 데이터 메모리에 액세스하기 위한 명령이 실행되면 주소의 하위 부분(A0...A7)이 포트 핀에 설정되고 ALE 핀에서 하이로 게이트됩니다. 그런 다음 데이터를 메모리에 쓸 때 MK 내부 버스에서 기록된 정보가 P0 포트의 핀으로 전송됩니다. 반대로 읽기 작업에서는 포트 핀의 정보가 내부 버스로 전송됩니다. P0 포트의 특징은 출력에 전원을 공급하는 "풀업" 트랜지스터 N2가 없다는 것입니다. 유닛 포트 래치에 쓰기를 하면 단순히 데이터 버스의 정상적인 작동에 필요한 하이 임피던스 상태로 전환됩니다. 출력을 통해 외부 장치에 전원을 공급해야 하는 경우 전원 회로에서 포트 출력까지 외부 저항기를 제공해야 합니다.

포트 P1 – 대체 기능이 없는 범용 양방향 I/O 포트.

포트 P2 – 대체 기능으로 외부 메모리에 액세스할 때 주소의 상위 부분(A8...A15)을 발행하는 범용 양방향 I/O 포트.

포트 P3 – 범용 양방향 I/O 포트, 각 비트는 다양한 대체 기능의 구현을 제공합니다. 이 경우 대체 기능은 해당 포트 핀의 래치에 쓰여져야만 구현되며, 그렇지 않으면 대체 기능의 실행이 차단됩니다. 각 비트에 대해 별도로 나열해 보겠습니다.

P3.0 수신 (아르 자형 eed e 엑스내부 먹고 외부 데이터를 읽음) – 내장 직렬 트랜시버의 입력.

P3.1 TxD (응 전자 엑스내부 먹은 후 외부 데이터 전송) – 내장 직렬 트랜시버의 출력입니다.

P3.2 INT0` (정수 errupt, 인터럽트) – 외부 인터럽트 입력 0.

P3.3 INT1` – 외부 인터럽트 입력 1.

P3.4 С/T0 – 내장 타이머/카운터 입력이 없습니다.

P3.5 C/T1 – 첫 번째 내장 타이머/카운터의 입력.

P3.6 WR` ( rite, write) - 데이터 메모리의 쓰기 주기를 제어하기 위한 출력입니다.

P3.7 RD` (아르 자형 ead, read) – 데이터 메모리에서 읽기 사이클의 출력을 제어합니다.

포트 P1, P2 및 P3의 핀은 장치당 약 0.2mA의 전류를 출력하고 0에서 3mA의 전류를 수신할 수 있으며, 포트 P0의 핀은 더 강력하며 약 0.8mA의 전류를 전달할 수 있습니다. 하나의 장치로 0에서 5mA의 전류를 수신합니다. 마이크로컨트롤러 핀의 목적에 대한 간략한 정보는 표 3.6에 나와 있습니다.

표 3.6.

지정

출력 목적

8비트 양방향 포트 P1. 내부 ROM(RPM) 확인 시 주소 입력 A0~A7

입력 종료

일반 재설정 신호. 외부 소스로부터의 RAM 백업 전원 출력(1816용)

추가 기능을 갖춘 8비트 양방향 P3 포트

입력 종료

수신기 직렬 데이터 - RxD

송신기 직렬 데이터 - TxD

외부 인터럽트 입력 0-INT0`

외부 인터럽트 입력 1-INT1`

타이머/카운터 입력 0: - T0

타이머/카운터 입력 1: - T1

외부 데이터 메모리에 쓸 때 스트로브 신호 출력: - WR`

외부 데이터 메모리에서 읽을 때 스트로브 신호 출력 – RD`

석영 공진기를 연결하기 위한 리드입니다.

입력 종료

일반적인 결론

8비트 양방향 포트 P2. 외부 메모리 모드에서 A8-A15 출력 주소입니다. 내부 ROM 검사 모드에서는 핀 P2.0 - P2.6이 주소 A8-A14의 입력으로 사용됩니다. 핀 P2.7 - ROM 읽기 권한.

입력 종료

프로그램 메모리 해상도

주소 고정 활성화 출력 신호. RPOM 신호 프로그래밍 시: PROG

입력 종료

내부 메모리로 작업을 차단합니다. RPOM을 프로그래밍할 때 UPR 신호가 제공됩니다.

입력 종료

8비트 양방향 포트 P0. 외부 메모리 작업을 위한 주소/데이터 버스. 내부 ROM(RPM) 테스트 모드의 데이터 출력 D7-D0.

입력 종료

+5V 전압 소스의 전원 출력

강의 계획

1. 소개

2. 산술 및 논리 명령

3. 데이터 전송 명령

4. 부울 연산

5. 점프 지침

1. 소개

명령 시스템 MCS-51 8비트 액추에이터 제어 알고리즘을 실행하도록 설계된 단일 명령 세트를 지원합니다. 내부 RAM의 주소를 지정하고 작은 데이터 구조에 대한 비트 연산을 수행하기 위해 빠른 방법을 사용할 수 있습니다. 단일 비트 변수를 독립적인 데이터 유형으로 처리하기 위한 광범위한 시스템이 있으며, 이를 통해 부울 대수학의 논리 및 제어 명령에서 개별 비트를 사용할 수 있습니다.

주소 지정 모드 : 명령 세트 MCS-51다음 주소 지정 모드를 지원합니다. 직접 주소 지정: 피연산자는 명령어의 8비트 주소에 의해 결정됩니다. 직접 주소 지정은 내부 데이터 메모리 및 레지스터의 하위 절반에만 사용됩니다. SFR. 간접 주소 지정: 명령어는 피연산자의 주소를 포함하는 레지스터의 주소를 지정합니다. 이 유형주소 지정은 외부 및 내부 RAM에 사용됩니다. 레지스터를 사용하여 8비트 주소를 지정할 수 있습니다. R0그리고 R1선택된 레지스터 뱅크 또는 스택 포인터 SP. 16비트 주소 지정의 경우 데이터 포인터 레지스터만 사용됩니다. DPTR.

등록 지침 : 레지스터 R0~R7현재 레지스터 뱅크는 명령어 자체의 레지스터 번호를 나타내는 3비트 필드가 포함된 특정 명령어를 통해 주소를 지정할 수 있습니다. 이 경우 해당 주소 필드가 명령에서 누락되었습니다. 특수 레지스터를 사용한 연산: 일부 명령어는 개별 레지스터를 사용합니다(예: 누산기 연산, DPTR, 등.). 이 경우 피연산자 주소는 명령에 전혀 지정되지 않습니다. 연산 코드에 의해 미리 결정됩니다.

즉치 상수 : 상수는 opcode 뒤의 명령에서 직접 찾을 수 있습니다.

인덱스 주소 지정 : 인덱스 주소 지정은 프로그램 메모리에 액세스하고 읽기 모드에서만 사용할 수 있습니다. 이 모드에서는 프로그램 메모리의 테이블이 표시됩니다. 16비트 레지스터( DPTR또는 프로그램 카운터)는 원하는 테이블의 기본 주소를 나타내고 누산기는 해당 테이블의 진입점을 나타냅니다.

명령 세트이 시스템의 33개 기능을 지정하는 42개의 명령 니모닉이 있습니다. 대부분의 어셈블리 언어 명령어의 구문은 함수 니모닉과 주소 지정 방법 및 데이터 유형을 나타내는 피연산자로 구성됩니다. 다양한 방식데이터 또는 주소 지정 모드는 니모닉의 변경이 아니라 설정된 피연산자에 의해 결정됩니다.

명령 시스템은 다섯 가지 그룹으로 나눌 수 있습니다. 산술 명령어; 논리적 명령; 데이터 전송 명령; 비트 프로세서 명령; 분기 및 제어 전송 명령. 명령 시스템에 사용되는 표기법과 기호는 다음과 같습니다.

테이블. 명령 시스템에 사용되는 표기법 및 기호

명칭, 기호

목적

배터리

현재 선택된 레지스터 뱅크의 레지스터

명령에 지정된 로드된 레지스터의 번호

직접

내부 데이터 RAM 셀(0~127) 또는 SFR 특수 기능 레지스터(128~255)일 수 있는 직접 주소 지정이 가능한 8비트 내부 데이터 셀 주소

간접적으로 주소 지정이 가능한 8비트 내부 데이터 RAM 셀

8비트 직접연산 코드(OPC)에 포함된 데이터

데이터H

즉시 16비트 데이터의 최상위 비트(15-8)

데이터L

즉시 16비트 데이터의 최하위 비트(7–0)

11비트 대상 주소

주소

대상 주소의 최하위 비트

8비트 부호 있는 오프셋 바이트

내부 데이터 RAM 또는 특수 기능 레지스터 SFR에 있는 COP를 주소에 포함하는 직접 주소 지정이 가능한 비트

a15, a14...a0

대상 주소 비트

요소 X의 내용

요소 X에 저장된 주소의 내용

요소 X의 비트 M


+

*
그리고
또는
XOR
/엑스

운영:
덧셈
빼기
곱셈
구분
논리곱셈(AND 연산)
논리덧셈(OR 연산)
추가 모듈로 2(배타적 OR)
요소 X의 반전

함수 니모닉은 주소 지정 방법 및 데이터 유형의 특정 조합과 고유하게 연관됩니다. 명령 시스템에는 총 111가지의 조합이 가능합니다.

2. 산술 및 논리 명령

어떻게 피 산술 명령, 추가 작업은 다음 명령 중 하나로 수행할 수 있습니다.

추가하다,7 에프 16 – 레지스터 A의 내용에 숫자 7을 추가합니다. F16 결과를 레지스터 A에 저장합니다.

추가하다,@ 아르 자형0 – 레지스터 A의 내용에 주소가 있는 번호를 추가합니다. (@ – 광고 ~에 )은 레지스터에 저장됩니다.아르 자형 0(간접 주소 지정), 결과를 레지스터 A에 저장합니다.

A,R7 추가– 레지스터 A의 내용을 레지스터의 내용에 추가합니다.아르 자형 7 결과를 레지스터 A에 저장합니다.

추가 A,#127– 레지스터 A의 내용에 저장 셀 주소가 127인 숫자를 추가합니다( # – 숫자 기호), 결과를 레지스트리에 저장 - 다시 A.

모든 산술 명령어는 명령어를 제외하고 하나의 기계 사이클에서 실행됩니다. INC DPTR(데이터 포인터 오프셋 DPTR다음 바이트로), 2개의 머신 사이클이 필요하고 4개의 머신 사이클에서 수행되는 곱셈 및 나눗셈 작업도 필요합니다. 내부 데이터 메모리의 모든 바이트는 배터리를 사용하지 않고도 증가 및 감소할 수 있습니다.

지침 멀 AB레지스터 B의 데이터를 누산기의 데이터와 곱셈(곱셈)을 수행하여 레지스터 A(하위 절반)와 B(상위 절반)에 결과를 배치합니다.

지침 DIV AB누산기의 내용을 레지스터 B의 값으로 나누고 나머지는 B에 남겨두고 누산기에 몫을 남깁니다.

지침 다 A이진 십진수 산술 연산(이진 십진수 코드로 표현된 숫자에 대한 산술 연산)을 위한 것입니다. 이진수를 2진수로 변환하지 않습니다. BCD이지만 두 개의 이진수를 더할 때만 올바른 결과를 제공합니다.

논리적 명령: 논리 AND 연산은 다음 명령 중 하나로 수행할 수 있습니다.

ANL,7 에프 16 – 레지스터 A의 내용에 숫자 7을 논리적으로 곱합니다. F16 결과는 레지스터 A에 저장됩니다.

ANL,@ 아르 자형1 – 레지스터 A의 내용과 레지스터에 저장된 주소의 숫자를 논리적으로 곱합니다.아르 자형 1(간접 주소 지정), 결과를 레지스터 A에 저장합니다.

ANL A,R6- 레지스터 A의 내용과 레지스터의 내용의 논리적 곱셈아르 자형 6, 결과를 레지스터 A에 저장합니다.

ANL A,#53 – 레지스터 A의 내용과 저장 셀 주소가 53 16인 숫자를 논리적으로 곱하고 그 결과는 레지스터 A에 저장됩니다.

어큐뮬레이터 내용에 대한 모든 논리 연산은 하나의 기계 사이클에서 수행되고 나머지는 두 번에 수행됩니다. 내부 데이터 메모리의 하위 128바이트 또는 모든 레지스터에서 논리 연산을 수행할 수 있습니다. SFR (특수 기능 레지스터) 배터리를 사용하지 않고 직접 주소 지정 모드에서.

회전 시프트 연산 RL A, RLC A 등은 누산기의 내용을 오른쪽이나 왼쪽으로 1비트 이동합니다. 왼쪽 순환 시프트의 경우 최하위 비트가 최상위 위치로 이동됩니다. 오른쪽 순환 시프트의 경우 반대 현상이 발생합니다.

작업 스왑 A배터리의 낮은 테트라드와 높은 테트라드를 교환합니다.

3. 데이터 전송 명령

MOV 대상, 소스내부 RAM 셀이나 특수 기능 레지스터 영역 간에 데이터를 전송할 수 있습니다. SFR배터리를 사용하지 않고. 이 경우 내부 RAM의 상위 절반에 대한 작업은 간접 주소 지정 모드에서만 수행할 수 있으며 레지스터에 액세스할 수 있습니다. SFR– 직접 주소 지정 모드에서만.

모든 미세 회로에서 MCS-51스택은 상주 데이터 메모리에 직접 배치되고 위쪽으로 증가합니다. 지침 푸시먼저 스택 포인터 레지스터의 값을 증가시킵니다. SP, 그런 다음 스택에 데이터 바이트를 씁니다. 팀 푸시그리고 직접 주소 지정 모드(바이트 쓰기 또는 복원)에서만 사용되지만 레지스터를 통해 간접적으로 주소를 지정할 때는 항상 스택에 액세스할 수 있습니다. SP. 따라서 스택은 데이터 메모리의 상위 128바이트도 사용할 수 있습니다. 동일한 고려 사항으로 인해 스택 명령어를 사용하여 레지스터 주소를 지정할 가능성이 제외됩니다. SFR.

데이터 전송 명령어에는 16비트 전송 작업이 포함됩니다. MOV DPTR,#data16, 데이터 포인터 레지스터를 초기화하는 데 사용됩니다. DPTR프로그램 메모리의 테이블을 보거나 외부 데이터 메모리에 액세스할 때.

작업 XCH A,바이트누산기와 주소가 지정된 바이트 간에 데이터를 교환하는 데 사용됩니다. 팀 XCHD A,@Ri이전과 유사하지만 피연산자 교환과 관련된 하위 4개 요소에 대해서만 수행됩니다.

외부 데이터 메모리에 액세스하려면 간접 주소 지정만 사용됩니다. 단일 바이트 주소의 경우 레지스터가 사용됩니다. R0또는 R1현재 레지스터 뱅크, 16비트용 – 데이터 포인터 레지스터 DPTR. 외부 데이터 메모리에 액세스하는 모든 방법에서 배터리는 정보의 소스 또는 수신자 역할을 합니다.

프로그램 메모리에 있는 테이블에 액세스하려면 다음 명령을 사용하십시오.

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

데이터 포인터 레지스터의 내용은 테이블의 기본 주소로 사용됩니다. DPTR또는 PC(프로그램 카운터), 오프셋은 다음에서 가져옵니다. . 이 명령어는 프로그램 메모리에서 데이터를 읽는 데만 사용되지만 쓰기에는 사용되지 않습니다.

4. 부울 연산

미세회로 MCS-51"부울" 프로세서를 포함합니다. 내부 RAM에는 직접 주소 지정이 가능한 128비트가 있습니다. 특수 기능 레지스터 공간 SFR최대 128비트 필드도 지원할 수 있습니다. 비트 명령어는 조건부 분기, 전송, 재설정, 반전, AND 및 OR 연산을 수행합니다.지정된 모든 비트는 직접 주소 지정 모드에서 사용할 수 있습니다.

캐리 비트 CF특수 기능 레지스터 "프로그램 상태 워드"에서 추신"는 부울 프로세서의 1비트 누산기로 사용됩니다.

5. 점프 지침

점프 작업의 주소는 어셈블리 언어에서 레이블이나 프로그램 메모리 공간의 실제 값으로 표시됩니다. 조건부 분기 주소는 상대 오프셋(프로그램 카운터에 추가된 부호 바이트)으로 결합됩니다. PC전환 조건이 충족되면. 이러한 전환의 경계는 명령어 다음의 첫 번째 바이트를 기준으로 마이너스 128과 127 사이에 있습니다. 특수 기능 레지스터에서 "프로그램 상태 워드" 추신" 0 플래그가 없으므로 지침은 JZ그리고 JNZ누산기의 데이터를 테스트하면서 "0과 같음" 조건을 확인합니다.

무조건 점프 명령에는 세 가지 유형이 있습니다. SJMP, LJMP그리고 AJMP– 형식이 다른 대상 주소. 지침 SJMP주소를 상대 오프셋으로 인코딩하고 2바이트를 사용합니다. 점프 거리는 다음 명령어에 대해 마이너스 128~127바이트 범위로 제한됩니다. SJMP.

지침에서 LJMP대상 주소는 16비트 상수로 사용됩니다. 명령 길이는 3바이트입니다. 대상 주소는 프로그램 메모리의 어느 위치에나 위치할 수 있습니다.

AJMP 11비트 주소 상수를 사용합니다. 명령은 2바이트로 구성됩니다. 이 명령어가 실행되면 주소 카운터의 하위 11비트가 명령어의 11비트 주소로 대체됩니다. 프로그램 카운터의 가장 중요한 5개의 비트 PC바뀌지 않은 채로. 따라서 명령어 뒤의 명령어가 위치하는 2K바이트 블록 내에서 전환이 이루어질 수 있다. AJMP.

서브루틴에 대한 명령 호출에는 두 가지 유형이 있습니다. LC콜그리고 전화. 지침 LC콜호출된 서브루틴의 16비트 주소를 사용합니다. 이 경우 서브루틴은 프로그램 메모리의 어느 위치에나 위치할 수 있습니다. 지침 전화 11비트 서브루틴 주소를 사용합니다. 이 경우 호출된 루틴은 다음 명령을 사용하여 단일 2K 바이트 블록에 위치해야 합니다. 전화. 두 버전의 명령어 모두 다음 명령어의 주소를 스택에 푸시하고 이를 프로그램 카운터에 로드합니다. PC 해당 새 값.

서브루틴은 명령어로 끝납니다. RET, 명령 다음 명령으로 돌아갈 수 있습니다. 부르다. 이 명령어는 반환 주소를 스택에서 꺼내 프로그램 카운터에 로드합니다. PC . 지침 레티인터럽트 루틴에서 복귀하는데 사용됩니다. 유일한 차이점 레티~에서 RET그게 레티인터럽트 처리가 완료되었음을 시스템에 알립니다. 실행 당시의 경우 레티다른 인터럽트가 없으면 동일합니다. RET.

지침 DJNZ주기를 제어하도록 설계되었습니다. 루프를 실행하려면 N 값이 포함된 바이트를 카운터에 로드해야 하는 경우 N 다음 명령으로 루프 본문을 닫습니다. DJNZ, 사이클의 시작을 나타냅니다.

CJNE두 피연산자를 부호 없는 정수로 비교하고 비교되는 피연산자가 같지 않으면 여기에 지정된 주소로 점프합니다. 첫 번째 피연산자가 두 번째 피연산자보다 작으면 캐리 비트 CF "1"로 설정되어 있습니다.

어셈블된 형태의 모든 명령어는 1, 2 또는 3바이트를 차지합니다.

마이크로컨트롤러 제품군의 아키텍처MCS-51

강좌별 강의 노트

“제어 시스템의 마이크로프로세서”, “마이크로프로세서 기술”

"마이크로프로세서 도구 및 시스템"

모든 형태의 연구 전문 분야의 학생들을 위해

072000 – 표준화 및 인증

210200 - 기술 프로세스 자동화

230104 - 컴퓨터 지원 설계 시스템

탐보프 2005

소개..3

1. 인텔 8051 마이크로컨트롤러의 구조 3

1.1. 기억의 조직. 5

1.2. 산술-논리 장치. 6

1.3. 프로그램과 데이터를 위한 상주 메모리입니다. 7

1.4. 누산기 및 범용 레지스터. 8

1.5. 프로그램 상태 워드 레지스터 및 해당 플래그. 9

1.6. 포인터 레지스터. 10

1.7. 특수 기능 레지스터. 열하나

1.8. 제어 및 동기화 장치. 열하나

1.9. 병렬 정보 입력/출력 포트. 12

1.10. 타이머/카운터. 13

1.11. 직렬 포트. 18

1.11.1. SBUF 등록.. 18

1.11.2. 직렬 포트 작동 모드. 18

1.11.3. SCON 등록.. 19

1.11.4. 수신/전송 속도. 21

1.12. 인터럽트 시스템. 22

2. 인텔 8051 마이크로컨트롤러의 명령 시스템 26

2.1. 일반 정보. 26

2.1.1. 명령 유형. 27

2.1.2. 피연산자 유형. 28

2.1.3. 데이터 주소 지정 방법. 서른

2.1.4. 결과 플래그. 31

2.1.5. 기호적 주소 지정. 32

2.2. 데이터 전송 명령. 33

2.2.1. 정보 링크의 구조. 33

2.2.2. 배터리에 접근 중입니다. 33

2.2.3. 외부 데이터 메모리에 액세스 중입니다. 34

2.2.4. 프로그램 메모리에 액세스하는 중... 34


2.2.5. 스택에 액세스합니다. 35

2.3. 산술 연산. 35

2.4. 논리 연산. 39

2.5. 전송 명령을 제어합니다. 43

2.5.1. 긴 전환. 43

2.5.2. 절대적인 전환. 43

2.5.3. 상대 전환. 44

2.5.4. 간접 이전. 44

2.5.5. 조건부 점프..44

2.5.6. 서브루틴..47

2.6. 비트를 사용한 작업. 48

시험문제...49

문학..50

부록 인텔 8051 명령 시스템 51

소개

20세기 80년대부터 마이크로프로세서 기술에 독립계층이 등장 집적 회로– 다양한 목적을 위해 장치에 통합되도록 설계된 단일 칩 마이크로 컨트롤러. 내부 메모리가 있고 외부 장치와의 상호 작용 수단이 개발되어 단일 칩 마이크로 프로세서 클래스와 구별됩니다.

MCS-51 제품군의 8비트 단일 칩 마이크로컨트롤러가 널리 사용됩니다. 이 제품군은 잘 설계된 아키텍처로 인해 마이크로프로세서 제어 시스템 개발자들 사이에서 큰 인기를 얻은 Intel 8051 마이크로 컨트롤러를 기반으로 구성되었습니다. 마이크로컨트롤러 아키텍처는 내부 및 외부 소프트웨어에서 액세스할 수 있는 하드웨어 리소스 및 명령 시스템의 집합입니다.

이후 인텔은 인텔 8051 마이크로컨트롤러의 운영 코어를 기반으로 약 50개 모델을 출시했고, 동시에 아트멜(Atmel), 필립스(Philips) 등 다른 많은 회사들도 MCS-51 표준으로 개발된 자체 마이크로컨트롤러를 생산하기 시작했다. 도 있습니다 국내 아날로그 Intel 8051 마이크로컨트롤러 - K1816BE51 칩.

2. 인텔 8051 마이크로컨트롤러의 구조

Intel 8051 마이크로컨트롤러는 높은 수준의 n-MOS 기술을 기반으로 합니다. 주요 특징은 다음과 같습니다.

· 제어 기능 구현에 최적화된 8비트 중앙 프로세서;

· 내장형 클럭 생성기(최대 주파수 12MHz);

· 프로그램 메모리 주소 공간 - 64KB;

· 데이터 메모리 주소 공간 - 64KB;

· 내부 프로그램 메모리 - 4KB;

· 내부 데이터 메모리 - 128바이트;

· 부울 대수 연산(비트 연산)을 수행하기 위한 추가 기능;

· 2개의 16비트 다기능 타이머/카운터;

· 전이중 비동기 트랜시버(직렬 포트);

· 2개의 우선순위 레벨과 5개의 이벤트 소스를 갖춘 벡터 인터럽트 시스템.

그림 1 - Intel 8051 마이크로 컨트롤러의 블록 다이어그램

블록 다이어그램(그림 1)의 기본은 마이크로컨트롤러의 기본 노드와 장치인 상주 프로그램 메모리(RPM), 상주 데이터 메모리(RDM), 산술 논리 장치를 상호 연결하는 내부 양방향 8비트 버스로 구성됩니다. 유닛(ALU), 레지스터 유닛 특수 기능, 제어 유닛(CU), 병렬 I/O 포트(P0-P3), 프로그래밍 가능한 타이머 및 직렬 포트 등이 있습니다.

2.1. 기억 정리

이 마이크로컨트롤러에는 프로그램과 데이터를 저장할 수 있는 내장(상주) 메모리와 외부 메모리가 있습니다. 상주 프로그램 메모리(RPM)의 용량은 4KB이고 상주 데이터 메모리(RDM)의 용량은 128바이트입니다.


마이크로컨트롤러의 수정에 따라 RPM은 마스크 ROM, 일회성 프로그래밍 가능 또는 재프로그래밍 가능 ROM 형태로 구현됩니다.

필요한 경우 외부 ROM을 설치하여 프로그램 메모리를 확장할 수 있습니다. 내부 또는 외부 ROM에 대한 액세스는 핀 EA(외부 액세스)의 신호 값에 따라 결정됩니다.

EA=VCC(공급 전압) - 내부 ROM에 대한 액세스;

EA=VSS(접지 전위) - 외부 ROM에 대한 액세스.

외부 프로그램 및 데이터 메모리는 각각 64KB일 수 있으며 포트 P0 및 P2를 사용하여 주소를 지정할 수 있습니다. 그림 2는 Intel 8051 메모리 카드를 보여줍니다.

그림 2 - Intel 8051 메모리 구성

외부 ROM 읽기 스트로브 - (Program Store Enable)은 외부 프로그램 메모리에 액세스할 때 생성되며 칩에 있는 ROM에 액세스하는 동안에는 비활성화됩니다.

하위 프로그램 메모리 주소 영역(그림 3)은 인터럽트 시스템에서 사용됩니다. INTEL 8051 칩 아키텍처는 5개의 인터럽트 소스를 지원합니다. 인터럽트 제어가 전달되는 주소를 인터럽트 벡터라고 합니다.

그림 3 - 하위 프로그램 메모리 영역 맵

2.2. 산술 논리 장치

8비트 산술 논리 장치(ALU)는 덧셈, 뺄셈, 곱셈, 나눗셈 등의 산술 연산을 수행할 수 있습니다. 논리 연산 AND, OR, 배타적 OR 및 순환 시프트, 재설정, 반전 등의 연산 소프트웨어 액세스가 불가능한 레지스터 T1 및 T2, 피연산자 임시 저장용, 십진수 수정 회로(DCU) 및 기능 생성 회로 입력 연산 결과(PSW)에 연결됩니다.

단순 추가 연산은 ALU에서 레지스터의 내용을 증가시키고, 데이터 포인터 레지스터(RAR)를 향상시키며, 다음 프로그램 상주 메모리 주소를 자동으로 계산하는 데 사용됩니다. 가장 간단한 빼기 연산은 ALU에서 레지스터를 감소시키고 변수를 비교하는 데 사용됩니다.

가장 간단한 작업은 자동으로 "탠덤"을 형성하여 16비트 레지스터 쌍 증가와 같은 작업을 수행합니다. ALU는 복잡한 명령을 구현하기 위해 간단한 작업을 계단식으로 실행하는 메커니즘을 구현합니다. 그래서 예를 들어 조건부 제어 전달 명령 중 하나를 실행하면 ALU의 비교 결과를 바탕으로 프로그램 카운터(PC)가 3번 증가하고 RDM을 2번 읽고 두 변수의 산술 비교가 수행되며, 16비트 전환 주소가 형성되고 프로그램에 따라 전환할지 여부가 결정됩니다. 위의 모든 작업은 단 2μs 내에 수행됩니다.

ALU의 중요한 특징은 바이트뿐만 아니라 비트도 작동할 수 있다는 것입니다. 개별 소프트웨어 액세스 가능 비트는 설정, 삭제, 반전, 전송, 테스트 및 논리 연산에 사용될 수 있습니다. 개체를 제어하기 위해 입력 및 출력 부울 변수에 대한 작업을 포함하는 알고리즘이 종종 사용되기 때문에 이 기능은 매우 중요합니다. 이 알고리즘의 구현은 기존 마이크로 프로세서를 사용하는 데 어려움이 있습니다.

따라서 ALU는 부울(1비트), 디지털(4비트), 바이트(8비트) 및 주소(16비트)의 네 가지 유형의 정보 개체로 작동할 수 있습니다. ALU는 이 데이터를 전달하거나 변환하기 위해 51가지 다른 작업을 수행합니다. 11개의 주소 지정 모드(데이터용 7개, 주소용 4개)가 있으므로 연산과 주소 지정 모드를 결합하면 111개 명령어의 기본 수가 단일 바이트 opcode로 가능한 256개 중 255개로 확장됩니다.

2.3. 상주 프로그램 및 데이터 메모리

상주(온칩) 프로그램 메모리(RPM)와 데이터 메모리(RDM)는 물리적, 논리적으로 분리되어 있으며 서로 다른 주소 지정 메커니즘을 가지며 서로 다른 신호의 제어에 따라 작동하고 서로 다른 기능을 수행합니다.

RPM 프로그램 메모리는 4KB의 용량을 가지며 명령, 상수, 초기화 제어 워드, 입력 및 출력 변수에 대한 변환 테이블 등을 저장하도록 설계되었습니다. 메모리에는 16비트 주소 버스가 있으며 이를 통해 PC 프로그램 카운터 또는 레지스터 데이터 포인터(DPTR)에서. DPTR은 간접 프로그램 점프를 위한 기본 레지스터로 작동하거나 테이블 작업에 사용됩니다.

RDM 데이터 메모리는 응용 프로그램 실행 중에 변수를 저장하도록 설계되었으며 1바이트 단위로 주소 지정이 가능하고 용량이 있습니다.
128바이트. 또한, 그 주소 공간은 표에 나열된 특수 기능 레지스터의 주소에 인접해 있습니다. 1.

프로그램 메모리는 데이터 메모리와 마찬가지로 다음과 같이 확장할 수 있습니다.
외부 칩을 연결하면 64KB입니다.

1 번 테이블

특수 기능 레지스터 블록

이름

배터리

누산기 확장 레지스터

프로그램 상태 단어

스택 포인터 레지스터

데이터 포인터 레지스터

인터럽트 우선순위 레지스터

인터럽트 마스크 레지스터

타이머/카운터 모드 레지스터

타이머 제어/상태 레지스터

타이머 0(상위 바이트)

타이머 0(낮은 바이트)

타이머 1(상위 바이트)

타이머 1(낮은 바이트)

트랜시버 제어 레지스터

트랜시버 버퍼

전원 제어 레지스터

메모.이름에 (*)가 표시된 레지스터를 사용하면 개별 비트의 주소를 지정할 수 있습니다.

2.4. 누산기 및 일반 레지스터

누산기(A)는 산술, 논리 연산 및 여러 데이터 전송 연산을 수행할 때 피연산자의 소스이자 결과의 위치입니다. 또한 시프트 연산, 0 확인, 패리티 플래그 생성 등은 누산기를 통해서만 수행할 수 있습니다.

사용자는 8개의 범용 레지스터 R0~R7로 구성된 4개의 뱅크를 마음대로 사용할 수 있습니다(그림 9). 그러나 PSW 레지스터 비트를 사용하여 선택된 4개 뱅크 중 하나의 레지스터만 사용할 수 있습니다.

2.5. 프로그램 상태 워드 레지스터 및 해당 플래그

ALU에서 많은 명령어가 실행되면 여러 가지 작업 속성(플래그)이 생성되고 이는 프로그램 상태 워드(PSW) 레지스터에 기록됩니다. 테이블에 2는 PSW 플래그 목록을 제공하고 기호 이름을 제공하며 형성 조건을 설명합니다.

표 2

PSW 프로그램 상태 단어 형식

이름과 목적

깃발을 들고 가세요. 산술 및 논리 연산을 수행할 때 하드웨어 또는 소프트웨어로 설정 및 재설정

보조 캐리 플래그. 더하기 및 빼기 명령이 실행되고 비트 3에서 캐리 또는 빌림 신호를 보낼 때 하드웨어에 의해서만 설정 및 삭제됩니다.

플래그 0. 프로그램에서 사용자 지정 플래그로 설정, 삭제 또는 확인할 수 있습니다.

등록 은행을 선택합니다. 레지스터의 작업 뱅크를 선택하기 위해 소프트웨어로 설정 및 재설정(표 3)

오버플로 플래그. 산술 연산을 수행할 때 하드웨어로 설정 및 재설정

사용되지 않음

패리티 플래그. 각 사이클마다 하드웨어에 의해 설정 및 재설정되며 누산기에서 한 비트의 홀수/짝수를 고정합니다. 즉, 패리티를 수행합니다.

표 3

작업 등록 은행 선택

주소 경계

가장 "활성"인 PSW 플래그는 캐리 플래그로, 덧셈, 뺄셈 및 교대를 포함한 많은 작업 중에 관련되고 수정됩니다. 또한 캐리 플래그(CY)는 비트 조작 명령어에서 "부울 누산기" 역할을 합니다. 오버플로 플래그(OV)는 부호 있는 정수 연산에서 산술 오버플로를 감지하고 2의 보수 코드에서 산술을 사용할 수 있게 해줍니다. ALU는 레지스터 뱅크 선택 플래그(RS0, RS1)를 제어하지 않으며 해당 값은 응용 프로그램에 의해 완전히 결정되며 4개의 레지스터 뱅크 중 하나를 선택하는 데 사용됩니다.

PSW 레지스터는 바이트 단위로 다음과 같이 표현될 수 있습니다.

아키텍처가 누산기에 의존하는 마이크로프로세서에서 대부분의 명령어는 암시적 주소 지정을 사용하여 누산기에서 작동합니다. 인텔 8051은 다릅니다. 프로세서는 배터리를 기반으로 하지만 배터리를 사용하지 않고도 많은 명령을 실행할 수 있습니다. 예를 들어, 데이터는 임의의 RDM 셀에서 임의의 레지스터로 전송될 수 있고 임의의 레지스터는 즉시 피연산자와 함께 로드될 수 있습니다. 누산기를 사용하지 않고도 많은 논리 연산을 수행할 수 있습니다. 또한 누산기를 사용하지 않고도 변수를 증가, 감소 및 확인할 수 있습니다. 플래그와 제어 비트도 동일한 방식으로 확인하고 변경할 수 있습니다.

2.6. 포인터 레지스터

8비트 스택 포인터(SP)는 모든 RDM 영역의 주소를 지정할 수 있습니다. PUSH 및 CALL 명령 중에 데이터가 스택에 저장되기 전에 해당 내용이 증가됩니다. SP의 내용은 POP 및 RET 명령이 실행된 후에 감소됩니다. 스택 요소의 주소를 지정하는 이 방법을 사전 증가/사후 감소라고 합니다. 마이크로 컨트롤러를 초기화하는 동안 RST 신호 후 코드 07H가 자동으로 SP에 로드됩니다. 이는 응용 프로그램이 스택을 재정의하지 않는 한 스택의 첫 번째 데이터 요소가 RDM 위치 08H에 위치함을 의미합니다.

2바이트 데이터 포인터 레지스터 DPTR은 일반적으로 외부 메모리 액세스 작업에서 16비트 주소를 캡처하는 데 사용됩니다. 마이크로컨트롤러 명령을 통해 데이터 포인터 레지스터는 16비트 레지스터 또는 두 개의 독립적인 8비트 레지스터(DPH 및 DPL)로 사용될 수 있습니다.

2.7. 특수 기능 레지스터

상징적으로 IP, IE, TMOD, TCON, SCON 및 PCON으로 명명된 레지스터는 인터럽트 회로, 타이머/카운터, 직렬 트랜시버 및 전원 관리의 제어 및 상태 비트를 래치하고 프로그래밍 방식으로 변경하는 데 사용됩니다. 다양한 모드에서 마이크로 컨트롤러의 기능을 고려할 때 해당 구성에 대해 섹션 1.8-1.12에서 자세히 설명합니다.

2.8. 제어 및 동기화 장치

마이크로컨트롤러의 외부 핀에 연결된 수정 공진기는 내부 발진기의 작동을 제어하며, 이는 차례로 동기화 신호를 생성합니다. 제어 장치(CU)는 동기화 신호를 기반으로 12개의 발전기 주기와 동일한 고정 기간의 기계 주기를 생성합니다. 대부분의 마이크로컨트롤러 명령어는 하나의 머신 사이클에서 실행됩니다. 2바이트 단어로 작동하거나 외부 메모리에 액세스하는 일부 명령어는 완료하는 데 2개의 머신 사이클이 필요합니다. 나눗셈과 곱셈 명령어에만 4개의 ​​기계 사이클이 필요합니다. 이러한 제어장치의 동작특성을 토대로 응용프로그램의 실행시간을 계산한다.

마이크로 컨트롤러 회로에서는 명령 레지스터(IR)가 제어 장치에 인접해 있습니다. 그 기능은 실행 중인 명령의 코드를 저장하는 것입니다.

제어 및 동기화 장치의 입력 및 출력 신호:

1. PSEN – 프로그램 메모리 해상도,

2. ALE – 주소 고정 활성화 출력 신호,

3. PROG – 프로그래밍 신호,

4. EA – 내부 메모리로 작업 차단,

5. VPP – 프로그래밍 전압,

6. RST – 일반 재설정 신호,

7. VPD – 메모리 백업 전원 출력 외부 소스,

8. XTAL – 연결 입력 석영 공진기.

2.9. 병렬 입력/출력 포트

4개의 포트(P0-P3)는 모두 바이트 단위로 정보를 입력 또는 출력하도록 설계되었습니다. 각 포트에는 제어된 래치 레지스터, 입력 버퍼 및 출력 드라이버가 포함되어 있습니다.

외부 메모리에 액세스할 때 포트 P0 및 P2의 출력 드라이버와 포트 P0의 입력 버퍼가 사용됩니다. 이 경우 시간 다중화 모드에서 포트 P0을 통해 주소의 하위 바이트가 먼저 출력된 후 데이터 바이트가 발행되거나 수신됩니다. 포트 P2는 주소 너비가 16비트인 경우 주소의 최상위 바이트를 출력합니다.

포트 P3의 모든 핀을 사용하여 표에 나열된 대체 기능을 구현할 수 있습니다. 4. 이러한 기능은 포트 P3의 래치 레지스터(P3.0-P3.7)의 해당 비트에 1을 기록하여 활성화할 수 있습니다.

표 4

대체 P3 포트 기능

이름과 목적

독서. 외부 데이터 메모리에 액세스할 때 하드웨어에 의해 활성 로우 레벨 신호가 생성됩니다.

기록. 외부 데이터 메모리에 액세스할 때 하드웨어에 의해 활성 로우 레벨 신호가 생성됩니다.

타이머/카운터 입력 1 또는 테스트 입력

타이머/카운터 입력 0 또는 테스트 입력

인터럽트 요청 입력 1. 로우 레벨 또는 차단 신호를 감지합니다.

인터럽트 요청 입력 0. 로우 레벨 또는 차단 신호를 감지합니다.

UART 모드의 직렬 포트 송신기 출력. 시프트 레지스터 모드의 클록 출력

UART 모드의 직렬 포트 수신기 입력. 시프트 레지스터 모드에서 데이터 입력/출력

포트 0은 양방향이고 포트 1~3은 준양방향입니다. 각 포트 라인은 입력 또는 출력에 독립적으로 사용될 수 있습니다.

RST 신호에 따라 장치는 모든 포트의 래칭 레지스터에 자동으로 기록되어 입력 모드로 설정됩니다.

모든 포트는 양방향 전송선을 통해 정보 입력/출력을 구성하는 데 사용할 수 있습니다. 그러나 시스템에 시간 다중화 모드에서 작동하는 공통 공유 주소/데이터 버스를 통해 통신이 구성되는 외부 메모리가 있는 경우 포트 P0 및 P2를 이 목적으로 사용할 수 없습니다.

I/O 포트에 액세스하는 것은 바이트, 개별 비트 또는 임의의 비트 조합에서 작동하는 명령을 사용하여 가능합니다. 또한 포트가 피연산자이자 결과 대상인 경우 제어 장치는 "읽기-수정-쓰기"라는 특수 모드를 자동으로 구현합니다. 이 액세스 모드에는 포트의 외부 핀이 아닌 래치 레지스터에서 신호를 입력하는 작업이 포함되므로 이전에 출력된 정보를 잘못 읽는 일이 발생하지 않습니다. 포트 액세스를 위한 이 메커니즘은 다음 명령으로 구현됩니다.




맨 위