라디오 전자 및 전기 공학의 백과사전 MCS51 시리즈 마이크로컨트롤러용 디버그 모듈. 무선 전자 및 전기 공학 백과사전 무선 전자 및 전기 공학 백과사전 / 마이크로 컨트롤러 일반적으로 MC(마이크로 컨트롤러)의 장치 개발은 간단한 계획에 따라 수행됩니다. 일반적인 포함의 MC는 필요한 주변 장치와 함께 "가중"된 다음 소프트웨어가 작성됩니다. 이 경우 일상적인 작업을 수행하는 다양한 도구를 사용해야 하며 프로그래머는 창의적인 문제를 해결해야 합니다. 아래에서 설명하는 장치는 마이크로컨트롤러 시스템의 "반제품"이며 디버깅 도구이자 동시에 연구 대상입니다. MCS51에 대한 프로그래밍 기술과 디버깅 프로그램을 습득하기 위한 것이지만 실제 시스템의 모델 역할을 하여 제어 개체와 함께 응용 소프트웨어를 디버깅할 수 있습니다. 이러한 모듈이 있으면 개발자는 높은 비용으로 인해 많은 사람들이 액세스할 수 없는 프로그래머 또는 ROM 에뮬레이터를 자주 사용할 필요가 없습니다. MK MCS51 시리즈용 디버그 모듈의 개략도가 그림에 나와 있습니다. 대부분의 노드는 표준 체계에 따라 만들어지며 개인용 컴퓨터(PC)의 직렬 포트가 있는 인터페이스 장치는 S. Kuleshov 및 Yu. Zaumenny "ROM 프로그래머"("라디오 ", 1995, No. 10, p. 22 -25). 다양한 주변 장치를 DD1 마이크로 컨트롤러의 포트 P3 및 P1의 빈 핀에 연결할 수 있습니다(다이어그램에서 화살표로 끝남). XP1 플러그는 모듈이 작동할 PC의 직렬 포트 중 하나의 소켓에 케이블로 연결됩니다. 공급 전압이 인가된 후 커패시터(C3)는 저항(R1)을 통해 충전된다. DD3.4 소자에서 생성된 리셋 신호 RES에 따라 MK DD1은 초기 상태로 들어가 P1 포트의 모든 핀에 논리 레벨을 3로 설정하는 등의 준비 작업을 수행합니다. 요소 DD3.1, DD3.2의 트리거는 출력 신호가 프로그램 메모리 주소 영역 0-7FFFH가 ROM(DD5)을 차지하고 8000H-0FFFFH가 RAM(DD6)을 차지하는 메모리 분배를 설정하는 상태에 있습니다. ROM에 있는 모니터 프로그램이 실행 중입니다. PC 키보드에서 모니터 명령을 입력하여 운영자는 모듈의 RAM 및 주변 장치로 작업할 수 있습니다. 트리거를 다른 상태로 전환하려면 제어 PC에서 아래에 설명된 RESET Monitor 명령을 보내 MOD=0 신호를 설정해야 합니다. 프로그램 메모리의 RAM 및 ROM 주소가 교환되고 이전에 모듈의 RAM에 작업자가 입력한 프로그램이 작동하기 시작합니다. 이를 통해 실제 장치의 작동을 에뮬레이트하고 예를 들어 ROM에 쓰기 위해 준비된 낮은 메모리 주소로 변환된 프로그램을 확인할 수 있습니다. SB1 버튼은 메모리 할당을 변경하지 않고 MK를 원래 상태로 재설정하는 데 사용됩니다. 모니터는 SB2 버튼을 누르거나 전원을 껐다가 다시 켜야만 다시 시작할 수 있습니다. 이를 통해 디버깅된 프로그램이 실수로 메모리 할당을 전환할 염려 없이 P3 포트의 상태에서 자유롭게 작동(예: 주변 장치와 함께 작동)할 수 있습니다. HL1 LED는 정보를 표시하는 가장 간단한 수단으로 사용되며 특히 이런저런 이유로 PC와 연결되지 않은 경우 매우 유용합니다. 전원이 공급되면 모니터가 작동 중임을 나타내는 약 1Hz의 빈도로 깜박입니다. 제너 다이오드는 +5V 전원 공급 장치의 역극성 또는 과전압으로부터 장치를 보호합니다. 모니터 프로그램(표 1)은 특정 작업을 수행하는 데 필요한 명령과 데이터가 전송되는 PC의 RS-232C 직렬 포트를 통해 모듈 및 상호 작용을 제어합니다. 동일한 포트를 통해 PC는 모듈 작동 결과를 수신하여 화면에 표시합니다. 널리 사용되는 Shell Norton Commander 5.0의 통신 프로그램 "Telemax", Windows 95 OSR2의 "Hyper Terminal" 또는 유사 프로그램이 PC에서 실행 중이어야 합니다. 극단적인 경우 특별한 프로그램 없이 준비된 데이터가 포함된 MS DOS 명령 파일을 PC 직렬 포트로 전송하기만 하면 됩니다. 통신 프로그램을 구성할 때 모뎀 초기화 라인을 삭제하고 "로컬 에코" 및 "CR/LF 브로드캐스트" 모드를 설정하고 필요에 따라 ANSI 터미널 및 ASCII 코드 테이블을 선택해야 합니다. 직렬 포트 작동 모드는 다음과 같아야 합니다. 속도 - 4800 보드, 문자당 비트 수 - 8, 패리티 제어 비활성화, 정지 비트 수 - 1. 모든 것이 정확하면 PC 키보드에 입력된 텍스트가 디버그 모듈 및 해당 응답 - 화면에 표시됩니다. 모니터 명령은 대문자와 소문자 키보드로 모두 입력할 수 있습니다. 모든 문자는 ASCII 인코딩이어야 합니다. [BackSpace] 키는 디버그 모듈의 버퍼에서 마지막으로 입력한 문자를 제거합니다. 각 명령은 이름과 피연산자로 구성됩니다. 이름은 공백, 탭, 줄 바꿈 또는 캐리지 리턴과 같은 구분 문자로 종료됩니다. 또한 조건부로 밑줄(_)로 표시하지만 이름이 지정된 항목을 입력할 수 있습니다. 구분 기호를 수락하면 모니터는 이전에 수신되어 버퍼에 있는 처음 XNUMX개의 문자를 ROM의 명령 테이블 내용과 비교합니다. 일치하는 항목을 찾으면 동일한 테이블에서 명령 처리기의 주소를 기억하고 피연산자(하나 이상의 XNUMX진수)를 수락하기 시작합니다. 우리는 MK 내부 및 외부 메모리의 XNUMX바이트 및 XNUMX바이트 주소가 각각 XX 및 XXXX로 지정되고 블록 길이는 YYYY이고 다른 데이터는 ZZ 또는 ZZZZ로 지정된다는 데 동의합니다. 예를 들어 XXXX,YYYY는 주소 XXXX에서 시작하는 YYYY바이트 길이의 외부 데이터 메모리 블록입니다. 모든 선행 XNUMX을 지정해야 합니다. 피연산자는 구분 기호로 끝나야 하며 수신 시 명령 처리기가 시작됩니다. 빈 버퍼에 입력된 구분 기호는 무시됩니다. RESET_ ZZZZ_ - 두 번째 메모리 할당 모드가 켜지고 MC가 재설정되고 제어가 주소 ZZZZ로 전송됩니다. 이 명령은 정상 작동을 위해 양호한 RAM이 필요합니다. DATA_ XXXX:_ ZZ_ [ZZ_][XXXX:_ZZ_ [ZZ_]._- 정보는 주소 XXXX에서 시작하여 외부 데이터 메모리의 연속 셀에 입력됩니다. 대괄호는 입력할 필요가 없으며 ZZ_ 피연산자의 수가 임의적일 수 있음을 나타냅니다. 데이터 입력은 마침표로 끝납니다. 테이블에서. 그림 2는 DATA 및 RESET 명령을 사용하여 간단한 프로그램을 RAM에 입력하고 실행하는 예를 보여줍니다. READ_XX_ 또는 READ_XXXX_ - 내부 또는 외부 데이터 RAM의 메모리 셀에서 워드(XNUMX바이트 연속)를 읽습니다. 결과는 XNUMX진수(높은 주소의 바이트가 먼저)로 직렬 포트로 전송됩니다. WRITE_XX,ZZ_, WRITE_XX,ZZZZ_, WRITE_XXXX,ZZ_ 또는 WRITE_XXXX,ZZZZ_ - 주소 XX 또는 XXXX에 바이트 ZZ 또는 워드 ZZZZ를 씁니다. READ 및 WRITE 명령은 간접 주소 지정을 사용하여 구현되므로 특수 기능 레지스터로 작업할 수 없습니다. 레지스터에 액세스하려면 각각에 대한 직접 주소 지정을 사용하여 교환 절차를 작성해야 합니다. 예를 들어 SPEED 명령 처리기가 있습니다. 256바이트 내부 RAM이 있는 MCU가 모듈에 설치된 경우 READ 및 WRITE 명령은 주소 128H-80FFH에서 추가 0바이트와 함께 작동할 수 있습니다. LOAD_XXXX,YYYY_ - 외부 데이터 메모리 블록인 직렬 포트를 통해 들어오는 정보로 채워집니다. SAVE_XXXX,YYYY_ - 외부 데이터 메모리 블록의 내용이 직렬 포트로 전송됩니다. CALL_ZZZZ_ - 주소 ZZZZ에서 시작하여 서브루틴이 호출됩니다. 모니터로 돌아가려면 RET 명령으로 끝나야 합니다. 인터럽트는 서브루틴 기간 동안 비활성화됩니다. CHECK_XXXX,YYYY_ - 체크섬 계산 - 외부 데이터 메모리 블록의 모든 바이트 합계의 하위 바이트. FILL_XXXX,YYYY,ZZ_ - 외부 데이터 메모리 영역을 ZZ 바이트로 채우고 체크섬을 계산합니다. COPY_XXXX,YYYY,ZZZZ_ 또는 COPY_PXXXX,YYYY,ZZZZ_ - 외부 데이터 메모리 블록이 주소 ZZZZ에 복사됩니다. P 기호는 복사할 영역이 프로그램 메모리에 있음을 나타냅니다. 동시에 체크섬이 계산됩니다. TEST_XXXX,YYYY_ - 외부 RAM 블록의 상태를 확인합니다. 오류가 없으면 "OK" 메시지가 표시되고, 그렇지 않으면 "XXXX: YY<>ZZ"가 표시됩니다. 여기서 XXXX는 실패한 셀의 주소이고 YY는 셀에 기록된 값이고 ZZ는 읽은 값입니다. 이 명령은 RAM의 내용을 파괴하지 않습니다. SPEED_ZZ_ 또는 SPEED_ZZ+_ - 직렬 포트를 통한 데이터 교환 속도를 변경합니다. 기본값은 4800보드(주소 2DH에서 모니터 프로그램 바이트에 의해 결정됨)입니다. ZZ 피연산자와 같은 값은 마이크로컨트롤러의 TH1 레지스터에 배치되며 트랜시버의 속도를 결정합니다. 피연산자의 더하기 기호는 PCON.7 비트를 설정하여 속도를 두 배로 만듭니다. PC 직렬 포트는 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 보오 이상에서 작동할 수 있습니다. MSC51 시리즈 마이크로컨트롤러의 직렬 포트를 표시된 속도로 정확하게 조정하는 기능은 사용된 석영 공진기의 주파수에 따라 다릅니다. 예를 들어 12MHz인 경우 피연산자 300, CC, E600, F1200 및 F2400+가 각각 있는 SPEED 명령을 사용하여 포트를 4800, 98, 6, 3 및 3 보드로 설정할 수 있습니다. 11MHz 공진기를 사용하면 9600보를 달성할 수 있습니다. 그러나 파일을 전송할 때 MK는 아마도 너무 빠른 속도로 도착하는 데이터를 따라잡지 못할 것입니다. 설명된 명령 세트는 모니터를 재전송하지 않고 ROM을 지우지 않고도 확장 및 보완할 수 있습니다. 새 명령 처리기는 여유 영역에 배치됩니다. 명령 이름(대문자의 처음 5자)은 주소 0ABH에서 시작하여 23바이트 핸들러 주소와 바이트 XNUMXFFH가 옵니다. 핸들러는 주소 XNUMXFH로 점프하여 끝나야 합니다. 아래에 언급된 모든 단일 바이트 셀 주소는 MCU의 내부 RAM을 나타냅니다. 모니터는 레지스터 뱅크 0 및 2와 위치 20H-3FH를 사용합니다. 스택은 주소 50H에서 증가합니다. 명령을 수신하고 처리하지 않을 때 마이크로컨트롤러는 셀 35H 및 36H에 지정된 주소에서 ROM에 있는 서브루틴을 계속 실행합니다. 기본적으로 063H입니다. 주기적으로 P3.4 비트의 상태를 변경하는 이 서브루틴은 HL1 LED를 켜고 끕니다. 깜박이는 빈도는 3DH 셀의 내용에 따라 다릅니다. 이 비트를 다른 용도로 사용하려면 WRITE_35,006A_ 명령을 내려야 합니다. 셀 37H 및 38H에는 실제로 모니터의 백본 역할을 하고 운영자 명령에 대한 응답을 결정하는 직렬 포트의 인터럽트 처리기 주소가 있습니다. 기본적으로 여기에는 0이 기록되며 이는 주소 081H의 ROM에 있는 표준 핸들러를 호출하는 것에 해당합니다. 주소 3BH에 0 이외의 코드를 작성하면 "에코" 기능을 활성화할 수 있습니다. 직렬 포트를 통해 수신된 모든 데이터는 모니터로 다시 전송됩니다. 이것은 통신 프로그램에서 "로컬 에코"를 끄고 필요한 경우 디버깅 모듈에 보낸 모든 명령과 이에 대한 응답을 텍스트 파일에 저장합니다. 주소 3AH의 숫자는 모니터의 명령 수신과 이에 대한 응답 사이의 일시 중지를 설정하며, 일부 통신 프로그램을 전송에서 수신으로 전환하는 데 필요합니다("Telemax"에는 필요하지 않음). 일시 중지 시간(초)에 50을 곱한 것과 같습니다. 메모리 블록에서 작동하는 명령(LOAD, SAVE, CHECK, FILL, COPY)의 결과 중 하나는 셀 39H에 배치된 블록 체크섬입니다. 나열된 명령의 올바른 실행을 제어하는 데 사용할 수 있습니다. 모니터는 많은 어셈블러에서 생성된 Intel HEX 형식 파일을 직접 수용할 수 있습니다. 이러한 파일은 통신 프로그램을 사용하거나 단순히 MSDOS COPY <파일 이름> COM2 명령을 사용하여 PC의 직렬 포트로 보내면 충분합니다. 미리 사용된 포트(이 경우 COM2)는 MODE COM2:4800,N,8,1 명령으로 구성해야 합니다. 정보는 디버그 모듈의 외부 데이터 메모리에 기록되며 체크섬이 일치하지 않으면 해당 메시지가 표시됩니다. Intel HEX 파일의 각 줄은 콜론으로 시작하고 공백 없이 두 자리 XNUMX진수로 표시되는 바이트가 옵니다.
HEX 파일은 항상 콜론과 01 데이터 바이트 및 주소를 포함하는 줄로 끝나고 마지막 줄 문자(3)와 FF와 같은 체크섬이 뒤따릅니다. 표 2은 표 XNUMX에 따라 DATA 모니터 명령에 의해 입력된 것과 동일한 데이터를 포함하는 파일의 예를 보여줍니다. 저자: V. Ogleznev, Izhevsk 다른 기사 보기 섹션 마이크로 컨트롤러. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 터치 에뮬레이션을 위한 인조 가죽
15.04.2024 펫구구 글로벌 고양이 모래
15.04.2024 배려심 많은 남자의 매력
14.04.2024
다른 흥미로운 소식: ▪ 에너지 창 ▪ 날씨와 두통
무료 기술 라이브러리의 흥미로운 자료: ▪ 기사 서쪽은 서쪽이고 동쪽은 동쪽이며 함께 모일 수는 없습니다. 대중적인 표현 ▪ 기사 쓸모없는 행위에 대한 표현은 중세 승려들이 문자 그대로 행한 것입니까? 자세한 답변 ▪ 기사 종이 클립에는 셀프 태핑 나사가 있습니다. 개인 수송 ▪ 기사 플레이트 안테나 증폭기의 조정에 대해. 무선 전자 및 전기 공학 백과사전 ▪ 기사 전압 배율기에서 오래된 부품 사용. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |