- •Курсовой проект
- •Содержание
- •2.1 Характеристика risc ядра……………………..……………………...….8
- •Введение
- •Особенности структурной организации микроконтроллера pic16f628а
- •2 Описание ресурсов микроконтроллера pic16f628a
- •2.1 Характеристика risc ядра
- •2.2 Особенности микроконтроллера
- •2.3 Характеристики пониженного энергопотребления
- •2.4 Характеристика периферийных модулей
- •3.4 Необходимые элементы для разработки охранной сигнализации на основе микроконтроллера
- •Заключение
- •Список использованных источников
- •Приложение а Программа для микроконтроллерной системы
Список использованных источников
Евстифеев, А.В. Микроконтроллеры Microchip практическое руководство А.В.Евстифеев. – М.: Горячая линия – Телеком, 2002. – 296 с.
Новиков, Ю.В. Скоробогатов, П.К. Основы микропроцессорной техники. М.: ИНТУИТ.РУ. «Интернет-Университет Информационных технологий», 2003. – 440 с.
Юров, В. ASSEMBLER: Учебник.-2-е изд.- СПб: Питер, 2004. – 637 с.
Микрочип - http://www.microchip.ru
Про радио - http://www.pro-radio.ru
Радиосхемы - http://www.radioskot.ru
Цифровая электроника - http://www.eldigi.ru
Чип и Дип - 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