8032는 프로그램을 어떻게 실행합니까?

8032 마이크로 컨트롤러를 연구하고 있습니다. 8032에는 내부 ROM이 없다고 언급되어 있습니다. 이제 몇 가지 질문이 있습니다.

  • 외부 ROM이 필요한가요? 프로그램을 반드시 실행해야합니까? “256 바이트 내부 RAM을 사용할 수 없습니까?

  • 외부 ROM과 함께 8032 마이크로 컨트롤러를 사용한다고 가정 해보십시오. 2732 포트 P0의 주소 (하위 순서)를 저장하기 위해 래치를 사용합니다 (주소 / 데이터를 전송할 수 있음). 이제 EA 를 활성화하고 PSEN 8032는 프로그램을 어떻게 실행합니까? 시스템을 켜면 어떻게됩니까? (8032 마이크로 컨트롤러의 프로그램 카운터는 어떻게 명령을 실행합니까? 어떤 외부 메모리 주소에서 프로그램을 읽어야합니까?

내가 가지고 있습니다. 이 설명서를 읽으십시오- Intel 8032H Keil , Atmel 80C32E .

답변

아래의 일반적인 80 (C) 32 회로를 보면 ( 여기

a>) :

여기에 이미지 설명 입력

8032가 A를 통해 외부 EPROM, RAM 및 EEPROM과 통신하는 것을 볼 수 있습니다. 버스-8 비트 데이터 및 16 비트 주소. 후자는 래치되어 HCT573과 함께 역 다중화됩니다. 8031/8032와 함께 사용하도록 설계된 래치가 내장 된 칩이 일부 있었지만 위의 구성이 더 일반적인 구성이었습니다. -비용 표준 메모리 칩. 또한 주소를 디코딩하고 속을 디코딩하는 약간의 " 접착제 " 로직도 있습니다. 메모리 (HCT138 및 쿼드 NAND)에 대한 적절한 신호를 확인하십시오.

리셋 후에는 항상 실행이 시작되기 때문에 EPROM이 주소 0에 있도록 글루 로직을 설계하는 것이 중요합니다. 8032 해당 주소에서 명령어의 첫 번째 바이트를 가져옵니다. 이것은 8032의 하드웨어 기능이며 변경할 수 없습니다. 일반적으로 명령어는 프로그램의 시작 부분으로 점프하는 3 바이트 LJMP 명령어입니다. 이를 " 리셋 벡터 "라고합니다. 다른 벡터는 외부 인터럽트 서비스 루틴 및 타이머 인터럽트 서비스 루틴을 위해 리셋 벡터 바로 위의 바이트를 차지합니다.

그 당시에는 EPROM은 외부의 별도 프로그래머에 의해 프로그래밍 (기록)됩니다. 그런 다음 일반적으로 소켓에 꽂습니다. 당시에는 회로 내 프로그래밍이 없었습니다. RAM과 EEPROM은 마이크로로 작성 될 수 있지만 프로그램은 그것이 가능하기 전에 EPROM에로드되어야합니다.

코멘트

  • . : + 1하겠습니다. glue logic 부분을 자세히 설명해 주시겠습니까? LJMP가 프로그램의 시작 부분으로 이동하는 것 같습니다. 그러나 여기 프로그램은 외부 메모리에 있습니다. 여기에 이런 종류의 명령이 사용됩니까? 간단한 지침이 외부 메모리에서 가져 와서 IR에 배치되고 디코딩되고 실행된다는 의미입니까? 여기서 LJMP의 경우는 어디에 있습니까?
  • 글루 로직은 ' EPROM을 확인합니다. div id = “36b8fcc01d”>

는 주소가 0000 일 때 선택됩니다. 위 구성에서 A15 = 0 일 때마다 EPROM이 선택됩니다. LJMP는 8031의 16 비트 메모리 공간 어디에서나 주소를 사용하는 3 바이트 명령어이지만 일반적으로 다른 벡터를 건너 뛸 수 있으므로 LJMP 뒤의 다음 2 바이트에는 시작 부분 근처에 주소가 포함됩니다. EPROM. ' 일반적으로 주소를 직접 다루지 않습니다. 기호 레이블을 통해 주소를 추적하는 어셈블러를 사용합니다.

  • " 접착 논리 "는 프로세서와 메모리 사이에 필요한 더 작은 논리 함수를 나타내는 데 사용되는 속어입니다.
  • 답변

    아니요, 내부 RAM을 사용하여 코드를 저장할 수 없습니다. 8051/8032는 Harvard 아키텍처를 사용하므로 완전히 분리되어 있습니다. 코드 및 데이터를위한 메모리 공간입니다. 명령어는 코드 공간에서 가져 오지만 RAM은 데이터 공간에 있습니다.

    이제 EA를 활성화하고 PSEN을 연결 한 후 방법 8032는 프로그램을 실행합니까?

    8032는 코드 공간에서 명령어를 가져옵니다. EA가 주장되므로 이러한 가져 오기 (메모리 읽기)는 외부 메모리 버스에 나타납니다. , PSEN가 주장 됨. PSEN는 외부 메모리 읽기 작업에서 확인되지 않고 데이터 공간 읽기입니다.

    시스템을 켜면 어떻게됩니까?

    p>

    8032는 코드 공간 주소 0에서 명령을 가져 오기 시작합니다.

    8032 마이크로 컨트롤러의 프로그램 카운터는 어떻게 명령을 실행합니까?

    프로그램 카운터는 실행될 다음 명령어의 주소를 보유하는 역할을합니다. CPU의 다른 부분은 명령을 실행합니다.

    프로그램을 읽어야하는 외부 메모리 주소는 무엇입니까?

    주소 0.

    프로그램에서 인터럽트를 사용하려는 경우이를 위해 예약 된 낮은 코드 공간 메모리에 다른 주소가 있습니다. 재설정시 실행은 결국 예약 된 주소를 “점프”해야합니다.

    댓글

    • 이것은 첫 번째 질문에 대한 답변입니다. +1하겠습니다. 질문의 두 번째 부분에 대해 자세히 설명해 주시겠습니까? 이 부분은 ' 어떤 단서도 얻을 수 없습니다.
    • 위의 수정 내용을 참조하세요.

    답변

    8052의 변형 인 8032에는 프로그램 저장을위한 내부 ROM이 없습니다. 대신 외부 ROM / EPROM / EEPROM을 사용하여 프로그램을 보관해야합니다.

    외부 메모리에 액세스하는 데 두 개의 포트가 사용됩니다. 포트 0 (P0.0-P0.7 라인)은 낮은 8 개를 방출합니다. 16 비트 64K 주소의 비트이며 외부 메모리에 의해 주소가 래치 된 후 읽기 / 쓰기 8 비트 데이터 버스 역할도합니다.

    P2 (P2.0-P2.7 행) )는 16 비트 64K 주소의 높은 8 비트를 방출하는 데 사용됩니다.

    8032에는 256 바이트의 내부 RAM이 있지만 외부 주소 버스에 RAM 칩을 추가하여 확장 할 수 있습니다. .

    외부 주소 라인 \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $는 외부 프로그램 메모리에 대한 액세스가 이루어지고 있는지 여부를 나타 내기 위해 낮게 유지됩니다. RAM이 가정됩니다.

    외부 메모리에서 코드를 실행하기 위해 프로그램 카운터의 주소가 포트 0 및 포트 2 데이터 라인에 출력됩니다. 그런 다음 읽기주기 동안 포트 0으로 읽을 때 ROM에서 검색된 바이트가 프로세서에 의해 실행됩니다.

    한 번에 하나의 명령어 만 가져옵니다.

    \ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $는 외부 프로그램 메모리 액세스 중에 사용되는 스트로브입니다.

    댓글

    • .:하지만 외부 메모리에 상주하는 프로그램을 어떻게 실행합니까? 프로그램이 외부 메모리에있을 때 PC가 어떻게 작동하는지 알 수 없습니다. 각 m / c주기에서 몇 바이트를 가져옵니다. 그런 다음 가져 오기 후 프로그램이 즉시 실행되거나 전체 프로그램이 한꺼번에 가져옵니다 > 만약 그것이 저장 될 경우라면?
    • .: 따라서 처음에는 PC=0000h입니다. 각 m / c 사이클에서 바이트를 가져 오기 시작하고 실행합니까? 따라서 ROM에서 항상 0000h 주소에서 프로그램을 구워야합니다. 그렇지 않으면 올바르게 실행할 수 없습니다.
    • @learner. 옳은. 일반적으로 " 실제 " 코드의 시작 주소로 이동합니다.
    • .: I 답변을 +1합니다. 그러나 프로그램이 명령별로 명령을 실행하면 이와 같은 순방향 참조는 어떻게 관리 될까요? L1:JNZ L2 .. L2:.....
    • JNZ 명령 (및 기타 점프 및 분기 명령)은 점프의 대상 주소를 프로그램 카운터에로드하므로 프로세서가 다음 주소를 가져옵니다. 점프 직후의 지시가 아니라 해당 주소에서 지시합니다.

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다