메뉴 English Ukrainian 러시아인 홈

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


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

초보자 PIC 마이크로컨트롤러 프로그래머. 무선 전자 및 전기 공학 백과사전

무료 기술 라이브러리

무선 전자 및 전기 공학 백과사전 / 초보자 라디오 아마추어

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

[이 지시문을 처리하는 동안 오류가 발생했습니다]

마이크로컨트롤러 프로그래밍을 공부하기 시작한 내 경험을 바탕으로 어셈블러로 프로그램을 작성하는 것에 대한 실용적인 조언을 하려고 합니다. 아래의 모든 프로그래밍 예제는 상대적으로 단순한 아키텍처와 단순한 어셈블러 명령 시스템으로 인해 개발 시작에 가장 적합한 중형 Microchip 제품군의 Pic 컨트롤러와 관련하여 제공됩니다.

제안된 프로그램은 미리 만들어진 매크로(완전한 서브루틴) 형태로 사용할 수 있으며 특정 컨트롤러에 연결되지 않으므로 적용 시 데이터시트의 데이터를 고려해야 합니다.

1. 타이머 오버플로 인터럽트 TMR0(RTCC)의 적용

클록 주파수를 보자 - Ftact. = 4,096MHz(표준 석영). 그러면 주기 시간은 tc = 1 / Ftact가 됩니다. * 4 = 0,97656µs

INI_TMR ; RTCC에서 인터럽트 모드 초기화
bsf 상태,RP0 ; 뱅크 1 선택
movlw b'00000100'
movwf 옵션 ; RTCC용 프리스케일러 1:32
bcf 상태,RP0 ; 은행 0
movlw b'10100000'
movwf 인트콘 ; RTCC 인터럽트 활성화
movlw .96 ; 예비 번호 96을 RTCC에 업로드
movwf TMR0

인터럽트 시간 가져오기:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5μs = 000ms

이제 임의의 프로그램에 무한 루프(소위 인터럽트 대기 루프)를 입력하고 프로그램의 끝을 이 루프로 변환하면 5ms의 시간 참조를 얻게 됩니다. 인터럽트 벡터가 나타내는 주소로 돌아갑니다(더 자주 04h ).사용할 수 있는 것 - 아래 참조.

그래서 :

;
조직 0
시작 ; 프로그램 시작 후
; 전원 켜짐
조직 04h ; 이것은 인터럽트 벡터의 주소입니다.
기본 ; 메인 프로그램이 실행됩니다
;
시작 ; 이것은 일반적으로 필수 초기화-
INI_TMR ; 포트, 모드, 레지스터 등의 cialization
INI_PORTS
고리
고토 루프; 그리고 이것은 무한 루프입니다
;------------------------------------------------- -

본관
; 다음은 메인 프로그램의 본문입니다.
; RTCC에서 인터럽트 서비스 루틴을 생성해야 하는 경우,
; CALL 명령에 의해 호출됨:

ServTMR
btfsc 인트콘, RTIF ; RTCC 인터럽트 트리거 플래그를 확인하고
SET_TMR 호출 ; 그렇다면 TMR0을 다시 초기화하십시오.
반품; "아니오"인 경우 - ServTMR 호출 위치로 돌아갑니다.
; 메인 프로그램 메인
;
SET_TMR movlw .96
movwf TMR0 ; 96번 다시 업로드
bcf INTCON,RTIF ; 트리거 플래그 재설정
레피; 인터럽트 활성화와 함께 ServTMR로 반환
; 그런 다음 메인 프로그램 메인으로

포트 B - RB0과 같이 출력 중 하나에서 두 번째 펄스를 수신하기 위해 RTCC 인터럽트를 사용하는 예: 작업 레지스터의 주소 필드에서 이전에 선언해야 하는 Rsec 레지스터를 사용합니다.

따라서 RB0 포트의 출력에서 ​​신호 레벨은 매초 '0'에서 '1'로 변경됩니다.

컨트롤러의 레지스터에서 정보는 일반적으로 이진 형식(이진 코드)입니다. 그러나 예를 들어 XNUMX자리 XNUMX세그먼트 표시기를 제어하기 위해 이진수-십진수 형식(BCD-코드)으로 정보를 얻어야 하는 경우가 많습니다.

이진 코드 b2를 이진 십진수 BCD로 또는 그 반대로 변환하는 예를 고려해 보겠습니다.

8비트 레지스터에서 0에서 255까지( b'00000000'에서 b'11111111'까지) 이진수를 쓸 수 있습니다. 이진수를 이진수 - 십진수 코드 - "백", "십", "일"의 세 자리로 변환해 봅시다. 이를 위해 작업 레지스터의 주소 필드에서 미리 선언해야 하는 다음 레지스터를 사용합니다.

Rbin - 이진 코드 b2에 숫자를 저장하기 위한 레지스터
Rhan - "수백"의 BCD 코드 등록
Rdec - BCD 코드의 "수십"을 등록합니다.
Rsim - BCD 코드 "XNUMX" 레지스터

변환은 숫자 100을 뺀 다음 10을 뺀 다음 양수 뺄셈의 수를 세는 작업을 사용하여 수행됩니다.

FORM_1S ; 각 사이클에서 RTCC 인터럽트 동안 지속됩니다.
incf Rsec,w ; 5ms, Rsec 레지스터를 1씩 증가시켜 숫자 200
xorlw .200 ; (5ms * 200 = 1초)
btfsc 상태,z
OUT_PORT로 이동 ; Rsec = 200 플래그 z = '1' 및 제어로의 전환
; 포트 B의 핀 RB0
반품; 메인 프로그램 메인으로 돌아가기
;
OUT_PORT btfss 포트B,0 ; 출력 RB0의 상태 확인
OUT_ON으로 이동 ; RB0 ='0'인 경우 '1'로 설정
bcf 포트B,0 ; 그렇지 않으면 - '0'으로 설정
메인으로 이동 ; 메인 프로그램으로 돌아가기
;
OUT_ON bsf PORTB,0 ; RB0 = '1'로 설정
메인으로 이동

CON_100 movlw .100 ; Rbin에서 100을 빼고 다음을 확인합니다.
subwf Rbin,w ; 결과는 부정적이지 않습니다. 플래그 'c' = 1 일 때
btfss STATUS,c ; 결과 > 또는 = 0, < 0인 경우 'c' = 0
CON_10으로 이동
포함 Rhan,f ; "백"의 수를 센다
movwf Rbin ; 빼기 결과는 먼저 레지스터에 저장됩니다.
goto CON_100 ;battery 그런 다음 Rbin으로 돌아갑니다.
; 음수로 나머지를 잃지 않도록
; 빼기 결과.
CON_10 movlw .10 ; 마찬가지로 "십"을 정의
subwf Rbin,w
btfss 상태,c
end_con으로 이동
포함 Rdec,f
movwf 빈
CON_10으로 이동;
end_con
movf Rbin,w
movwf Rsim ; 빼기 후 나머지는 "단위"로 입력합니다.
;프로그램 실행 계속

BCD의 역변환 - 코드를 b2로. 숫자가 BCD 코드에 있는 동일한 레지스터 Rhan, Rdec, Rsim, RbinH 레지스터 - 최상위 숫자 및 RbinL - b255 코드의 숫자(> 2)에 대한 최하위 숫자 및 보조 레지스터 RM1 - " multiplier", RM2 - "multiplier" BCD를 b2로 변환하려면 "100"에 10, "XNUMX"에 XNUMX을 곱하고 "units"와 함께 모든 것을 더하고 필요한 경우 가장 높은 순서로의 전송을 고려해야 합니다. . 곱셈의 경우 더하기 연산을 사용합니다.

B2X_100 movlw .99 ; "수백" 변환
movwf RM2 ; 승수 = 추가 수(100) 빼기 XNUMX
movf 란,w
movwf RM1 ; 승수 = "백"
loopX100 addwf RM1,w btfsc STASTUS,c ; 가장 높은 숫자로 전송 확인
포함 RbinH,f ; 이체가 있는 경우
decfsz RM2,f ; 추가 횟수 제어
고토 루프X100
movwf RbinL ; 추가 결과는 ml 레지스터에 입력됩니다. 해고하다
;
B2X_10 movlw .9 ; "XNUMX" 변환
movwf RM2 ; 승수 = 추가 수(10) 빼기 XNUMX
movf Rdec,w
movwf RM1 ; 승수 = "십"
loopX10 addwf RM1,w ; 여기서 전송은 생략할 수 있습니다. 결과
decfsz RM2,f ; 항상 < 255
고토 루프X10
addwf RbinL,f ; "XNUMX" 변환 결과 추가
btfsc 상태,c ; 가능한 숫자 전송을 고려하여
포함
RbinH,f
movf Rsim,w
addwf Rbin,f ; 가능한 전송을 고려하여 "단위"를 추가하십시오.
btfsc 상태,c
포함 RbinH,f

변환 종료 및 프로그램 추가 실행. 레지스터에서 RbinL 및 RbinH는 b16 코드에서 2비트 숫자를 얻었습니다.

나눗셈의 산술 연산을 수행하기 위해 위에서 설명한 곱셈과 유사하게 빼기 연산이 사용됩니다. 레지스터 RHsum(상위 숫자) 및 RLsum(하위 숫자)에 있는 숫자를 Rdel 레지스터에 있는 제수(> 255가 아닌 제수를 취함)로 나누어야 한다고 가정합니다.

결과는 RHrez 및 RLrez 레지스터(각각 상위 및 하위 숫자)에 입력됩니다.

OP_DEL
movf Rdel,w
subwfRlsum,w
btfss STATUS,c ; 결과가 부정적인지 확인 하시겠습니까?
DEF_carry로 이동 ; "예"이면 예술에서 대출을 받습니다. 해고하다
포함 RLrez,f ; 고려하여 뺄셈의 수를 세십시오.
btfsc 상태,c ; 시니어 레벨로의 승진 가능성
RHRez,f 포함
movwf RLsum ; 잃지 않도록 나머지를 복원
OP_DEL로 이동 ; 빼기의 부정적인 결과로
;
DEF_캐리
0h
xorwf RHsum,w ; 모두 시니어 카테고리에서 주니어 카테고리로 이동 했습니까?
btfsc 상태,z ; "예"인 경우, 즉 RHdel = 0이고 OP_DEL에서 부정됨
OUT_DEL로 이동 ; 고양이. 결과 - 나누기 종료 및 종료
decf RHsum,f ; "아니오"인 경우 - 시니어 카테고리의 대출 및 프로-
포함 RLrez,f ; 우리는 계속해야합니다
btfsc 상태,c ; 시니어 카테고리로의 전환 필요성 확인
RHRez,f 포함
OP_DEL로 이동

저자: Vladimir D., degvv@mail.ru; 간행물: cxem.net

다른 기사 보기 섹션 초보자 라디오 아마추어.

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

<< 뒤로

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

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

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

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

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

배려심 많은 남자의 매력 14.04.2024

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

아카이브의 무작위 뉴스

지구에 위험한 소행성 탐지 및 중화 시스템 30.04.2022

중국은 앞으로 몇 년 안에 지구를 위협하는 소행성과의 충돌로부터 지구를 보호하는 시스템을 만들 계획입니다. 중국 국가 우주국(CNSA) 부국장인 Wu Yanhua는 이를 발표했습니다.

"제14차 2025개년 계획이 종료되는 2026~XNUMX년까지 지구에 위협이 되는 소행성 모니터링 기술 테스트에 착수할 것입니다. 이를 통해 (소행성과의) 충돌을 수행할 것입니다. 이 관계자는 중국중앙텔레비전(CCTV)과의 인터뷰에서 "궤도 변화로 이어질 것"이라고 말했다. 그에 따르면 미래 프로젝트의 틀 내에서 행성에 위협이 되는 소행성에 대한 목록화, 모니터링 및 경고를 위한 효과적인 지상 기반 및 우주 기반 시스템을 만들 계획이라고 합니다.

또한 중국 전문가들은 위험한 우주 물체와의 충돌을 방지하는 기술을 개발하는 임무를 맡았습니다. CCTV 부국장은 "이 덕분에 인류는 소행성이 지구에 가하는 위협에 진정으로 맞서게 될 것"이라고 말했다. NASA에 따르면 태양계에는 1,11만 개 이상의 확인된 소행성이 있지만 실제로는 훨씬 더 많습니다.

소행성 충돌은 가장 심각한 자연 재해 중 하나입니다. 소행성 충돌로 인한 파괴 수준은 다른 어떤 것보다 크기 때문입니다. 소행성과의 충돌로 인한 피해는 여러 요인, 특히 크기에 따라 다릅니다. NASA 전문가들은 지름 140m 이상의 소행성이 지구에 심각한 문제라고 보고 있다.

이스라엘 Rehovot에 있는 Weizmann Institute of Science의 교육 기관인 Davidson Institute of Science의 연구에 따르면 지구와 충돌할 경우 직경 140미터 이상의 소행성이 최소 천 번은 방출될 것이라고 합니다. 첫 번째 원자 폭탄의 폭발보다 더 많은 에너지. 그러나 작은 소행성조차도 심각한 손상을 일으킬 수 있습니다.

다른 흥미로운 소식:

▪ 효과적인 결빙방지제

▪ 당뇨병을 위한 초음파

▪ 광자 프로세서

▪ LED 및 반도체용 나노다이아몬드

▪ 항균 첨가제가 필요하지 않음

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

 

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

▪ 웹사이트 LED 섹션. 기사 선택

▪ 기사 그리고 나는 악이 지배하는 가운데 선한 일을 했습니다. 대중적인 표현

▪ 기사 카드의 에이스는 왜 하나에서 가장 높은 카드로 갔습니까? 자세한 답변

▪ 기사 시안화물 염으로 작업할 때 금속 코팅 적용. 노동 보호에 관한 표준 지침

▪ 기사 DS18S20 센서가 있는 고정밀 온도계. 무선 전자 및 전기 공학 백과사전

▪ 기사 달리기 과일. 포커스 시크릿

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

이름 :


이메일(선택사항):


댓글 :





이 페이지의 모든 언어

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

www.diagram.com.ua

www.diagram.com.ua
2000-2024