메뉴 English Ukrainian 러시아인 홈

애호가 및 전문가를 위한 무료 기술 라이브러리 무료 기술 라이브러리


라디오 전자 및 전기 공학의 백과사전
무료 도서관 / 무선 전자 및 전기 장치의 계획

MCS48에서 제어 시스템의 모듈식 프로그래밍. 무선 전자 및 전기 공학 백과사전

무료 기술 라이브러리

무선 전자 및 전기 공학 백과사전 / 마이크로 컨트롤러

기사에 대한 의견 기사에 대한 의견

동일한 마이크로 컨트롤러가 복잡한 기술 장비와 가정용 커피 그라인더 또는 전자 시계를 모두 제어할 수 있는 것으로 알려져 있습니다. 특정 개체에 대한 적응은 마이크로 컨트롤러 프로그램을 변경하여 수행되며 하드웨어는 거의 영향을 받지 않습니다. 제안된 기사는 다양한 목적을 위해 제어 시스템에서 널리 사용되는 MCS48 시리즈 마이크로컨트롤러의 프로그래밍 기술에 전념합니다. 주요 조항은 최신 장치에도 유효합니다.

제어 프로그램의 개발 및 현대화는 모듈식 원칙에 따라 구축되는 경우 크게 촉진됩니다. 이 경우 약간의 경험을 쌓은 후, 가장 중요한 것은 디버깅된 모듈의 자체 라이브러리에서 새로운 제어 시스템(CS)을 프로그래밍하면 이미 존재하고 디버깅된 프로그램의 일부 모듈을 교체하고 가능하면 조각으로 보완하는 것입니다. 특정 시스템의 특성을 고려하십시오.

이 원칙은 많은 고급 언어(PASCAL, C++)의 구조에 내재되어 있으며, 프로그래머는 말 그대로 이를 따를 수밖에 없습니다. 불행하게도 ASSEMBLERS(MSS48 포함)는 프로그래머에게 문제 해결을 위한 수단과 방법의 선택의 자유를 더 많이 제공하지만 일반적으로 프로그래밍 규율 준수를 전혀 모니터링하지 않습니다. 이로 인해 종종 너무 혼란스러운 프로그램 생성으로 이어져 다른 프로그램에서 디버깅된 조각을 사용하는 것은 말할 것도 없고 작성자도 일정 시간 후에 수행된 작업을 파악할 수 없습니다. 일반적인 모듈식 개념에 대한 의식적인 준수는 마이크로컨트롤러의 프로그래밍을 크게 촉진하고 가속화합니다. CS에 대한 일반적인 모듈식 프로그램의 예가 표에 나와 있습니다. 그 구문은 8048 마이크로프로세서의 TASM 테이블 형식 ASSEMBLY에 해당합니다.

보시다시피 프로그램 텍스트의 시작 부분에서 EQU 지시문은 상수에 이름을 지정하고 값을 할당합니다. 실행 가능한 프로세서 명령에서 직접 숫자 값을 지정하는 것보다 항상 명명된 상수를 사용하는 것이 좋습니다. 예를 들어, 아래에서 설명하는 서브루틴 중 하나에 의해 구현되는 시간 지연은 세 개의 숫자로 정의됩니다. 이들은 상수 N1, N2 및 N3으로 제공됩니다. 셔터 속도를 변경해야 하는 경우 EQU 연산자에 새 값을 지정하는 것으로 충분합니다. 그렇지 않으면 프로그램 전체에서 이러한 숫자와 동일한 피연산자가 있는 명령을 찾고 각 명령이 시간 지연을 나타내는지 여부를 결정하고 필요한 경우 새 값을 표시해야 합니다.

분명히 그러한 작업에는 많은 시간이 필요하며 종종 오류 없이는 수행되지 않습니다. 일부 명령이 정수를 사용하지 않고 예를 들어 상위 또는 하위 바이트를 사용할 수 있다는 사실로 인해 특히 복잡합니다. 이미 프로그램 번역 단계에 있는 ASSEMBER는 다른 값을 기반으로 일부 상수를 계산할 수 있습니다. 이 가능성은 숫자 N3의 상위(N3N) 및 하위(NXNUMXL) 바이트 계산으로 설명됩니다.

다음으로 프로그램은 변수에 대한 메모리를 할당합니다. 그들은 동일한 EQU 지시어로 이것을 수행하지만 상수 설명과 달리 변수의 숫자 값이 아니라 그들이 차지하는 메모리 셀의 주소를 지정합니다.

MCS48에서 제어 시스템의 모듈식 프로그래밍
(확대하려면 클릭하십시오)

ASSEMBLER가 허용하는 경우 매크로 사용 가능성을 무시해서는 안 됩니다. 그들 각각은 프로세서의 명령 시스템에서 직접 제공하지 않는 작업을 수행하는 새로운 명령입니다. 매크로 명령을 설명하면서 프로그래머는 여기에 이름을 지정하고(물론 "실제" 명령의 이름과 일치하지 않음) 기계 명령의 시퀀스 형식으로 필요한 작업을 지정합니다. 프로그램에서 매크로 명령을 만날 때마다 ASSEMBLER는 이를 지정된 시퀀스로 대체합니다. 이 예에서는 두 개의 매크로가 사용됩니다. 그들 중 하나는 누산기의 내용을 매크로 매개 변수로 지정된 데이터 메모리 셀로 전송하고 다른 하나는 다시 전송합니다.

전원이 켜지면(또는 리셋 신호가 주어지면) 마이크로컨트롤러는 주소 3부터 프로그램 실행을 시작합니다. 이 주소는 일반적으로 실제 프로그램 시작 지점(이 경우 START 레이블)에 무조건 점프 명령을 쓰는 데 사용됩니다. 이는 하드웨어 인터럽트가 항상 고정 주소 7과 XNUMX로 제어를 전송하기 때문에 필요합니다(다른 유형의 마이크로 컨트롤러의 경우 주소가 다를 수 있지만 여전히 프로그램 메모리의 시작 부분에 있음). 이 주소에 있는 해당 인터럽트의 서비스 루틴으로의 무조건적인 전환 명령은 주 프로그램에 의해 "우회"됩니다.

다음 단계는 컨트롤러 작동 모드(예: 메모리 뱅크 및 레지스터 선택)를 설정하고 변수 및 외부 장치를 초기화하는 것입니다. 초보 프로그래머의 일반적인 실수는 프로그램을 시작한 직후 변수에 이미 명확한 값이 있다고 가정하는 것입니다. 이러한 오해는 일부 고급 언어(예: BASIC)가 자동으로 모든 변수를 초기값 1으로 설정한다는 사실로 강화됩니다. 어셈블리 언어(및 기타 여러 언어)의 프로그램에서 프로그래머는 변수 값을 처음 읽기 전에 변수에 할당된 메모리 셀에 무언가가 이미 기록되었는지 확인해야 합니다. 좋은 프로그래밍 스타일은 프로그램 시작 부분에서 변수에 초기 값을 지정해야 합니다. 이 경우 이것은 XNUMXINIT 서브루틴에 의해 수행됩니다.

외부 장치 초기화 섹션은 일반적으로 서브루틴에 대한 대체 호출처럼 보이며 각 서브루틴은 그 중 하나(아날로그-디지털 변환기, LED 표시기, 키패드 등)를 재설정하며 시스템을 마무리하고 개선할 때 쉽게 교체할 수 있습니다. 종종 이러한 동일한 루틴은 장치의 상태를 확인합니다.

다음으로 대부분의 제어 프로그램은 끝없이 반복되는 메인 루프에 들어가며, 그 실행은 인터럽트를 처리하기 위해서만 일시 중단됩니다. 주기는 키보드 및 기타 센서를 폴링하고 인터럽트 처리 서브루틴에 의해 설정된 플래그(예: 지정된 시간 간격 만료 플래그 또는 아날로그-디지털 변환기 종료 플래그)를 확인하고 처리하는 서브루틴으로 구성됩니다. 지정된 제어 알고리즘에 따라 수신된 정보, 액추에이터에 제어 동작 출력 , 액정 디스플레이 또는 기타 표시기의 기술 프로세스 상태에 대한 정보 표시. 예를 들어 오류의 결과를 제거하기 위해 인터럽트를 처리할 때뿐만 아니라 모든 변수 및 외부 장치의 초기화를 반복해야 하는 경우와 같이 메인 루프의 종료는 일반적으로 비상 상황에서만 제공됩니다.

따라서 모듈 기반으로 구축된 프로그램은 일련의 서브루틴입니다. 예를 들어 새 제어 시스템에서 다른 키보드를 사용하는 경우 BUTT 서브루틴을 대체하기에 충분합니다. 이러한 교체가 간단하고 고통스럽지 않게 하려면 특정 규칙을 개발하고 항상 준수해야 합니다. 가능한 경우 서브루틴은 모든 컨트롤러 레지스터의 내용을 저장하고, 초기 데이터를 수신하고, 동일한 레지스터 및 메모리 셀에서 결과를 발행하고, 동일한 문자 인코딩 등을 사용해야 합니다.

엄격한 규칙에서 벗어나 비표준 기술을 사용하여 프로그램을 단순화하려는 자연스러운 욕구 (특히 첫 번째 어려움을 극복하고 전문가처럼 느끼기 시작한 프로그래머의 경우)에 맞서 싸울 필요가 있습니다. 언뜻 보기에 정당화되지 않은 복잡성은 디버깅을 용이하게 하고 프로그램 전체를 재작업함으로써 충분히 보상을 받을 것 같습니다.

서브루틴의 몇 가지 기능을 살펴보겠습니다. I NCREM 및 DESREM은 많은 경우에 요구되는 16비트 이진수의 주어진 값만큼 증가 또는 감소하는 작업을 수행합니다(높은 바이트와 낮은 바이트는 각각 레지스터 R6 및 R5에 있음). 증가량을 지정하는 상수는 프로그램 시작 부분에 설명되어 있습니다.

모든 마이크로 컨트롤러는 기술 장비보다 훨씬 빠르게 작동하기 때문에 프로그램에서 시간 지연을 구성할 수 있는 것이 매우 중요합니다. 이 경우 프로세서의 내부 카운터/타이머가 사용됩니다. 용량이 제한되어 있으며 밀리초 단위로 오버플로됩니다. 각 오버플로는 인터럽트 요청을 생성합니다. 타이머 인터럽트 서비스 루틴(TIME)은 이를 카운트하고 지정된 숫자에 도달하면 FLT 타임아웃 플래그를 XNUMX로 설정합니다. 작업이 시간에 따라 달라지는 모든 서브루틴은 이 플래그의 상태를 분석해야 합니다. 따라서 몇 초 또는 몇 분의 셔터 속도를 실현하는 것이 가능합니다.

새 간격 계산을 시작하려면 TIME 서브루틴의 작업 셀에 초기 값을 입력하고 타이머를 켜야 합니다. 예를 들어 서브루틴 SET2M은 시간 지연을 2분으로 설정합니다. 초기 값 계산에는 몇 가지 미묘함이 있습니다.

MSS48 시리즈의 마이크로컨트롤러에서 펄스는 석영 발진기의 주파수보다 480배 낮은 주파수에서 내부 카운터/타이머의 입력에 도달하는 것으로 알려져 있습니다. 예를 들어 석영 공진기 주파수가 7MHz인 경우 카운터에 기록되는 숫자는 480/7000000 = 0,00006857s = 68,57µs마다 변경됩니다. 따라서 카운터는 68,57 -(256-N1) µs에서 오버플로(및 인터럽트 요청 생성)합니다. 여기서 N1은 원래 카운터에 기록된 숫자입니다. 이 숫자에서 새 카운트를 시작할 때마다 N0,1 = 2 0,1/[7000000 (1480-N256)] 오버플로가 1초 내에 발생합니다(최소 시간 지연).

물론 N1과 N2가 다르면 같은 시간 지연을 얻을 수 있지만 이 숫자는 분수가 될 수 없기 때문에 약간의 오차를 가지고 구현됩니다. 작업은 오류가 최소화되는 값 쌍을 선택하는 것입니다. 고려 중인 경우에 가장 좋은 옵션은 N1 = 13, N2 = 6입니다. 설명된 절차 N2 = 3번 반복하여 1200분의 시간 지연을 얻습니다.

서로 다른 프로그램 작동 모드에서 동일한 하드웨어 인터럽트를 처리하기 위해 서로 다른 절차를 사용해야 하는 경우가 종종 있습니다. 이를 수행하는 한 가지 방법은 INTER 서브루틴에 설명되어 있습니다. INTT 셀의 메인 프로그램에 의해 입력된 인터럽트 유형 코드를 분석하고 그 값에 따라 인터럽트 서비스 루틴 ISR1 또는 ISR2 중 하나를 호출합니다. 둘 다 RETR이 아니라 RET로 끝납니다. 처리 옵션의 수를 늘리고 코드의 특정 값에 대해 여러 다른 서브루틴이 차례로 호출되도록 만드는 것도 쉽습니다.

메인 프로그램의 텍스트 파일에 필요한 모든 서브루틴을 작성할 필요는 없습니다. 다른 프로그램에서 디버깅되고 반복적으로 사용되는 모듈은 별도의 파일에 위치할 수 있으며 INCLUDE 지시문을 사용하여 기본 프로그램에 연결할 수 있습니다. 각 포함 파일은 하나 이상의 루틴을 포함할 수 있습니다. 이 방법의 단점은 사용되는 모든 모듈에서 변수, 상수, 레이블의 이름을 반복해서는 안 된다는 것입니다. 이 결함이 없기 때문에 불행히도 TASM ASSEMBLY는 객체 코드 수준에서 모듈을 병합하여 모듈을 개별적으로 번역하는 방법을 지원하지 않습니다.

저자: D.Ryzhov, 블라디미르

다른 기사 보기 섹션 마이크로 컨트롤러.

읽고 쓰기 유용한 이 기사에 대한 의견.

<< 뒤로

과학 기술의 최신 뉴스, 새로운 전자 제품:

터치 에뮬레이션을 위한 인조 가죽 15.04.2024

거리가 점점 일반화되는 현대 기술 세계에서는 연결과 친밀감을 유지하는 것이 중요합니다. 최근 독일 자를란트 대학(Saarland University) 과학자들이 인공 피부를 개발하면서 가상 상호 작용의 새로운 시대가 열렸습니다. 독일 자를란트 대학 연구진이 촉각 감각을 멀리까지 전달할 수 있는 초박형 필름을 개발했습니다. 이 최첨단 기술은 특히 사랑하는 사람과 멀리 떨어져 있는 사람들에게 가상 커뮤니케이션을 위한 새로운 기회를 제공합니다. 연구원들이 개발한 두께가 50마이크로미터에 불과한 초박형 필름은 직물에 통합되어 제XNUMX의 피부처럼 착용될 수 있습니다. 이 필름은 엄마나 아빠의 촉각 신호를 인식하는 센서이자, 이러한 움직임을 아기에게 전달하는 액추에이터 역할을 합니다. 부모가 직물을 만지면 압력에 반응하여 초박막 필름이 변형되는 센서가 활성화됩니다. 이것 ...>>

펫구구 글로벌 고양이 모래 15.04.2024

애완동물을 돌보는 것은 종종 어려운 일이 될 수 있습니다. 특히 집을 깨끗하게 유지하는 데 있어서는 더욱 그렇습니다. Petgugu Global 스타트업의 새롭고 흥미로운 솔루션이 제시되었습니다. 이 솔루션은 고양이 주인의 삶을 더 쉽게 만들고 집을 완벽하게 깨끗하고 깔끔하게 유지할 수 있도록 도와줍니다. 스타트업 펫구구글로벌(Petgugu Global)이 자동으로 배설물을 씻어내는 독특한 고양이 화장실을 공개해 집안을 깨끗하고 산뜻하게 유지해준다. 이 혁신적인 장치에는 애완동물의 배변 활동을 모니터링하고 사용 후 자동으로 청소하도록 활성화되는 다양한 스마트 센서가 장착되어 있습니다. 이 장치는 하수 시스템에 연결되어 소유자의 개입 없이 효율적인 폐기물 제거를 보장합니다. 또한 변기는 물을 내릴 수 있는 대용량 수납 공간을 갖추고 있어 다묘 가정에 이상적입니다. Petgugu 고양이 모래 그릇은 수용성 모래와 함께 사용하도록 설계되었으며 다양한 추가 기능을 제공합니다. ...>>

배려심 많은 남자의 매력 14.04.2024

여성이 '나쁜 남자'를 더 좋아한다는 고정관념은 오랫동안 널리 퍼져 있었습니다. 그러나 최근 모나쉬 대학의 영국 과학자들이 실시한 연구는 이 문제에 대한 새로운 관점을 제시합니다. 그들은 여성이 남성의 정서적 책임과 다른 사람을 도우려는 의지에 어떻게 반응하는지 살펴보았습니다. 이번 연구 결과는 무엇이 남성을 여성에게 매력적으로 만드는지에 대한 우리의 이해를 변화시킬 수 있습니다. Monash University의 과학자들이 실시한 연구는 여성에 대한 남성의 매력에 대한 새로운 발견으로 이어졌습니다. 실험에서 여성에게는 노숙자를 만났을 때의 반응을 포함하여 다양한 상황에서 자신의 행동에 대한 간략한 이야기와 함께 남성의 사진이 표시되었습니다. 일부 남성은 노숙인을 무시했지만, 다른 남성은 음식을 사주는 등 그를 도왔습니다. 한 연구에 따르면 공감과 친절을 보여주는 남성은 공감과 친절을 보여주는 남성에 비해 여성에게 더 매력적이었습니다. ...>>

아카이브의 무작위 뉴스

자가 소독 가능한 헤드폰 13.04.2020

필립스는 최근 몇 년 동안 전자 시장의 주요 트렌드 중 하나인 완전 무선 헤드폰인 Philips ActionFi를 출시했습니다. 이 클래스의 다른 가제트와 달리 참신함은 매우 특이한 소독 기능을 받았습니다.

완전한 케이스는 박테리아와 인류의 다른 미세한 적들을 파괴하는 내장형 자외선 램프를 제공합니다. 따라서 필립스 헤드폰을 사용하면 귀 감염을 예방하는 데 도움이 됩니다. 헤드폰 자체는 IPX5 인증을 충족하는 보호된 디자인을 받았습니다. 즉, Philips ActionFit은 물 분사를 두려워하지 않지만 여전히 액체에 잠기는 것은 버틸 수 없습니다.

헤드폰은 6Hz에서 20kHz 범위의 주파수를 재생할 수 있는 20mm 드라이버를 기반으로 합니다. 필립스 ActionFit은 한 번 충전으로 최대 6시간 동안 사용할 수 있습니다. 케이스에 가제트를 주기적으로 충전하면 참신함이 최대 18시간의 배터리 수명을 제공할 수 있습니다. 고속 충전도 제공됩니다. 케이스에서 15분이면 1,5시간 동안 재생할 수 있습니다.

다른 흥미로운 소식:

▪ 줄기세포에서 자란 성세포

▪ 인공 신경 세포가 만들어졌습니다.

▪ 동굴이 아팠다

▪ Lenovo는 가장 큰 노트북 제조업체입니다.

▪ 가장 큰 수상 풍력 발전소 건설

과학 기술 뉴스 피드, 새로운 전자 제품

 

무료 기술 라이브러리의 흥미로운 자료:

▪ 라디오 아마추어를 위한 사이트 팁 섹션. 기사 선택

▪ 기사 OBZhD 및 GO 용어 목록. 안전한 생활의 기본

▪ 기사 당나귀와 과학자가 중간에 배치되었을 때? 자세한 답변

▪ Freucinetius 기사. 전설, 재배, 적용 방법

▪ 문서 보안 경보 라디오 채널용 인코더 및 디코더. 무선 전자 및 전기 공학 백과사전

▪ 기사 국내 LED. 무선 전자 및 전기 공학 백과사전

이 기사에 대한 의견을 남겨주세요:

이름 :


이메일(선택사항):


댓글 :





이 페이지의 모든 언어

홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰

www.diagram.com.ua

www.diagram.com.ua
2000-2024