Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PIC16F628A.docx
Скачиваний:
25
Добавлен:
25.11.2019
Размер:
557.37 Кб
Скачать

Список использованных источников

  1. Евстифеев, А.В. Микроконтроллеры Microchip практическое руководство А.В.Евстифеев. – М.: Горячая линия – Телеком, 2002. – 296 с.

  2. Новиков, Ю.В. Скоробогатов, П.К. Основы микропроцессорной техники. М.: ИНТУИТ.РУ. «Интернет-Университет Информационных технологий», 2003. – 440 с.

  3. Юров, В. ASSEMBLER: Учебник.-2-е изд.- СПб: Питер, 2004. – 637 с.

  4. Микрочип - http://www.microchip.ru

  5. Про радио - http://www.pro-radio.ru

  6. Радиосхемы - http://www.radioskot.ru

  7. Цифровая электроника - http://www.eldigi.ru

  8. Чип и Дип - http://www.chipdip.ru

Приложение а Программа для микроконтроллерной системы

; /////////////////////////////

; МК 16F628A ///////

; /////////////////////////////

; RAM-Variable /////

; ////////////////////////////

; program //////////////

; ////////////////////////////

; Reset-Vector ///////

; ///////////////////////////

GOTO LADR_0x02D8 ;безусловный переход

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

; Interrupt-Vector

MOVWF LRAM_0x7F ;переслать W в F

SWAPF STATUS,W ;поменять местами полубайты в W

BCF STATUS,RP0 ;очистить бит RP0

BCF STATUS,RP1 ;очистить бит RP1

MOVWF LRAM_0x34 ;переслать W в F

SWAPF PCLATH,W ;поменять местами полубайты в W

MOVWF LRAM_0x35 ;переслать W в F

SWAPF FSR,W ;поменять местами полубайты в W

MOVWF LRAM_0x36 ;переслать W в F

BCF PCLATH,3 ;очистить бит B в буфере старшего байта PC,3

BCF PCLATH,4 ;очистить бит B в буфере старшего байта PC,4

GOTO LADR_0x0300 ;безусловный переход

LADR_0x0010

MOVF LRAM_0x57,F;переслать F

BTFSS STATUS,Z ;проверить бит B в регистре,Z

GOTO LADR_0x0014;безусловный переход

RETURN ;возврат из под программы

LADR_0x0014

MOVLW 0xF9 ;переслать константу в W

LADR_0x0015

ADDLW 0xFF ;сложить константу с W

BTFSS STATUS,Z ;проверить бит B в регистре,Z

GOTO LADR_x0015 ;безусловный переход

NOP ;нет операций

DECFSZ LRAM_0x57,F ;вычесть 1 из F и пропустить если 0

GOTO LADR_0x0014 ;безусловный переход

RETURN ;возврат из под программы

LADR_0x001C

MOVF LRAM_0x59,W ;переслать W

MOVWF LRAM_0x5A ;переслать W в F

MOVLW 0x00 ;переслать константу в W

MOVWF LRAM_0x5B ;переслать W в F

MOVLW 0x28 ;переслать константу в W

ADDWF LRAM_0x5A,F ;сложение W с F

BTFSC STATUS,C ;проверить бит B в регистре С пропустить если 0

INCF LRAM_0x5B,F ;прибавить 1 к F

MOVF LRAM_0x5B,W ;переслать W

MOVWF PCLATH ;переслать W в F

MOVF LRAM_0x5A,W ;переслать W

MOVWF PCL ;переслать W в F счетчик команд

RETLW 0x20 ;возврат из подпрогаммы с загрузкой константы в W

RETLW 0x70 ;возврат из подпрогаммы с загрузкой константы в W

MOVLW 0x32 ;переслать константу в W

MOVWF LRAM_0x57 ;переслать W в F

CALL LADR_0x0010 ;вызов подпрограммы

MOVLW 0xBF ;переслать константу в W

BSF STATUS,RP0 ;установить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0xBF ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

GOTO LADR_0x02D2 ;безусловный переход

LADR_0x0281

CLRF LRAM_0x55 ;очистить F

INCF LRAM_0x55,F ;прибавить 1 к F

MOVF LRAM_0x44,F ;переслать F

BTFSS STATUS,Z ;проверить бит B в регистре Z пропустить если 1

BCF LRAM_0x55,0 ;очистить бит B в регистре F

CLRF LRAM_0x52 ;очистить F

DECF LRAM_0x45,W ;вычесть 1 из F

BTFSC STATUS,Z ;проверить бит B в регистре Z пропустить если 0

INCF LRAM_0x52,F ;прибавить 1 к F

MOVF LRAM_0x52,W ;переслать F

ANDWF LRAM_0x55,F ;побитное `И` W и F

CLRF LRAM_0x53 ;очистить F

DECF LRAM_0x47,W ;вычесть 1 из F

BTFSC STATUS,Z ;проверить бит B в регистре Z пропустить если 0

INCF LRAM_0x53,F ;прибавить 1 к F

MOVF LRAM_0x53,W ;переслать F

ANDWF LRAM_0x55,F ;побитное `И` W и F

CLRF LRAM_0x54 ;очистить F

DECF LRAM_0x42,W ;вычесть 1 из F

BTFSC STATUS,Z ;проверить бит B в регистре Z пропустить если 0

INCF LRAM_0x54,F ;прибавить 1 к F

MOVF LRAM_0x54,W ;переслать F

ANDWF LRAM_0x55,W ;побитное `И` W и F

BTFSC STATUS,Z ;проверить бит B в регистре Z пропустить если 0

GOTO LADR_0x02B9 ;безусловный переход

CLRF LRAM_0x4A ;очистить F

MOVF LRAM_0x43,F ;переслать F

BTFSS STATUS,Z ;проверить бит B в регистре Z пропустить если 0

GOTO LADR_0x02B7 ;безусловный переход

MOVLW 0x01 ;переслать константу в W

MOVWF LRAM_0x43 ;переслать W в F

MOVLW 0x7F ;переслать константу в W

BSF STATUS,RP0 ;установить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0x7F ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF LRAM_0x56 ;переслать W в F

MOVLW 0x80 ;переслать константу в W

IORWF LRAM_0x56,W ;побитное `ИЛИ` W и F

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0x14 ;переслать константу в W

MOVWF LRAM_0x56 ;переслать W в F

CALL LADR_0x0032 ;вызов подпрограммы

MOVLW 0x7F ;переслать константу в W

BSF STATUS,RP0 ;установить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0x7F ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

GOTO LADR_0x02D2 ;безусловный переход

LADR_0x02B7

CLRF LRAM_0x43 ;очистить F

GOTO LADR_0x02D2 ;безусловный переход

LADR_0x02B9

CLRF LRAM_0x4A ;очистить F

MOVLW 0xBF ;переслать константу в W

BSF STATUS,RP0 ;установить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0xBF ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF LRAM_0x56 ;переслать W в F

MOVLW 0x40 ;переслать константу в W

IORWF LRAM_0x56,W ;побитное `ИЛИ` W и F

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0x32 ;переслать константу в W

MOVWF LRAM_0x57 ;переслать W в F

CALL LADR_0x0010 ;вызов подпрограммы

MOVLW 0xBF ;переслать константу в W

BSF STATUS,RP0 ;установить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

MOVLW 0xBF ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

ANDWF PORTA,W ;побитное W и F PORTA

MOVWF PORTA ;переслать W в F PORTA

GOTO LADR_0x02D2 ;безусловный переход

LADR_0x02D1

CLRF LRAM_0x4A ;очистить F

LADR_0x02D2

MOVF LRAM_0x46,W ;переслать F

MOVWF LRAM_0x52 ;переслать W в F

CLRF LRAM_0x53 ;очистить F

CALL LADR_0x0052 ;вызов подпрограммы

INCF LRAM_0x4D,F ;прибавить 1 к F

GOTO LADR_0x0116 ;безусловный переход

LADR_0x02D8

MOVLW 0xD5 ;переслать константу в W

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

BCF STATUS,RP1 ;очистить бит B в регистре F, RP1

MOVWF LRAM_0x20 ;переслать W в F

MOVLW 0xC4 ;переслать константу в W

MOVWF LRAM_0x21 ;переслать W в F

MOVLW 0xBB ;переслать константу в W

MOVWF LRAM_0x22 ;переслать W в F

MOVLW 0xDC ;переслать константу в W

MOVWF LRAM_0x23 ;переслать W в F

CLRF LRAM_0x39 ;очистить F

BCF PCLATH,3 ;очистить бит B в буфере старшего бита PC,3

BCF PCLATH,4 ;очистить бит B в буфере старшего бита PC,4

GOTO LADR_0x0072 ;безусловный переход

LADR_0x0300

BCF STATUS,RP0 ;очистить бит B в регистре F, RP0

BCF STATUS,RP1 ;очистить бит B в регистре F, RP1

SWAPF LRAM_0x36,W ;поменять местами полубайты в регистре

MOVWF FSR ;переслать W в F

SWAPF LRAM_0x35,W ;поменять местами полубайты в регистре

MOVWF PCLATH ;переслать W в F в буфере старшего бита PC

SWAPF LRAM_0x34,W ;поменять местами полубайты в регистре

MOVWF STATUS ;переслать W в F

SWAPF LRAM_0x7F,F ;поменять местами полубайты в регистре

SWAPF LRAM_0x7F,W ;поменять местами полубайты в регистре

RETFIE ;возврат из под подпрограммы с разрешением прерываний

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

ADDLW 0xFF ;сложить константу с W

End

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]