Гирлянда на микроконтроллере PIC16F877A

Описание работы гирлянды на микроконтроллере PIC16F877A. Принципиальная схема контроллера интерфейса периферии. Разработка программы в среде MPLAB IDE v8.84 на языке ассемблера MPASM v5.44 для прошивки микроконтроллера. Изучение режимов работы гирлянды.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 11.01.2015
Размер файла 450,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования Российской Федерации

Филиал “СЕВМАШВТУЗ” государственного образовательного учреждения высшего профессионального образования “Санкт-Петербургский государственный морской технический университет”

Курсовая работа

Гирлянда на микроконтроллере PIC16F877A

Студент Сидорин П.А.

Преподаватель Платоненков С.В.

Северодвинск 2012

Введение

PIC -- микроконтроллеры Гарвардской архитектуры, производимые американской компанией Microchip Technology Inc. Название PIC является сокращением от Peripheral Interface Controller, что означает «периферийный интерфейсный контроллер».

В номенклатуре Microchip Technology Inc. представлен широкий спектр 8-и, 16-и и 32-битных микроконтроллеров и цифровых сигнальных контроллеров под маркой PIC. Отличительной особенностью PIC-контроллеров является хорошая преемственность различных семейств. Это и программная совместимость (единая бесплатная среда разработки MPLAB IDE), и совместимость по выводам, по периферии, по напряжениям питания, по средствам разработки, по библиотекам и стекам наиболее популярных коммуникационных протоколов. Номенклатура насчитывает более 500 различных контроллеров со всевозможными вариациями периферии, памяти, количеством выводов, производительностью, диапазонами питания и температуры и т. д.

В данной курсовой работе будет использоваться 8-и разрядный микроконтроллер PIC16F877A

1. Принципиальная схема устройства

2. Блок схема

3. Описание работы устройства

гирлянда микроконтроллер интерфейс ассемблер

При включении устройства начинает работать Режим 0. Кнопка RB4 предназначена для переключения режима мигания, кнопка RB5 для изменения скорости мигания.

1) Для переключения режима надо нажать кнопку RB4(4 режима).

2) Для изменения скорости мигания надо нажать кнопку RB5(4 скорости).

3) Для перевода устройства в спящий режим нажмите и удерживайте кнопку RB5 не менее 5 секунд.

4) Для выхода из спящего режима нажмите любую из кнопок

Режим 0

Режим 1

Режим 2

Режим 3

4. Исходный код программы

list p=pic16f877A

#include <P16F877a.inc>

ERRORLEVEL 2 ; вывод только ошибок

;------------ Настройка слова конфигурации микроконтроллера

; _CP_OFF защита программного кода выключена

; _DEBUG_OFF режим отладки выключен

; _WRT_OFF защита записи FLASH выключена

; _CPD_OFF защита памяти EEPROM выключена

; _LVP_OFF режим низковольтового программирования выключен

; _BODEN_ON сброс по снижению питания включен

; _PWRTE_ON таймер задержки по включению питания включен

; _HS_OSC использование кварцевого резонатора на 16МГц

__CONFIG _CP_OFF&_DEBUG_OFF&_WDT_OFF&_CPD_OFF&_LVP_OFF&_BODEN_ON&_PWRTE_ON&_LP_OSC&_WRT_OFF

;------------ Задание переменных ---------------------------

; #include <defs.inc> ; описание переменных, констант

; #include <macro.inc> ; макросы и процедуры

W_SAVE EQU 0x70 ; для регистра W в прерываниях

STATUS_SAVE EQU 0x71 ; для регистра STATUS в прерываниях

FSR_SAVE EQU 0x72 ; для регистра FSR в прерываниях

PCLATH_SAVE EQU 0x73 ; для регистра PCLATH в прерываниях

DX EQU 0X20 ;СЧЁТЧИК В ТАБЛИЦАХ РЕЖИМАХ

DX_N EQU 0X23 ;СЧЁТЧИК В ТАБЛИУЕ ВРЕМЕНИ

DXTMR EQU 0X22 ;ЗНАЧЕНИЕ ВРЕМЕНИ

DX2 EQU 0X21 ;ИНДИКАТОР РЕЖИМА

;------------ Начало программы ---------------------------

ORG 0x00 ; вектор сброса процессора

PAGESEL MAIN ; 0-я страница памяти

GOTO MAIN ; переход на начало программы

ORG 0x04 ; вектор прерываний

MOVWF W_SAVE ; сохраняем W, STATUS, PCLATH, FSR

MOVF STATUS,W ; регистр STATUS загрузить в аккумулятор

CLRF STATUS ; установка банка 0

MOVWF STATUS_SAVE ; регистр STATUS сохранить в STATUS_SAVE

MOVF PCLATH,W ; загрузить PCLATH в аккумулятор

MOVWF PCLATH_SAVE ; регистр PCLATH сохранить в PCLATH_SAVE

MOVF FSR,W ; загрузить FSR в аккумулятор

MOVWF FSR_SAVE ; регистр FSR сохранить в FSR_SAVE

;

;;------------ Определение источника прерываний -------------

BANKSEL INTCON ; 0 банк

INTTYPE0 ; ОБРАБОТКА ПРЕРЫВАНИЯ ПО ПЕРЕПОЛНЕНИЮ TMR0

BTFSS INTCON,T0IF ; если флаг прерывания установлен, то пропускаем строку

GOTO INTTYPE1 ; иначе переход на следующий обработчик

GOTO PROV

INTTYPE1 ; ОБРАБОТКА ПРЕРЫВАНИЯ ОТ RB7:RB4

BTFSC INTCON,RBIF ; если флаг прерывания установлен, то пропускаем строку

GOTO PROVERKA ; иначе переход на следующий обработчик

GOTO EXITINT

PROVERKA ;ПРОВЕРКА НАЖАТИЯ КНОПОК RB4-RB5

MOVF PORTB,4

BTFSC PORTB,4

GOTO TAIMER_VKL

BTFSC PORTB,5

CALL TMR_VREMA

GOTO EXITINT

PROV ;ПРОВЕРКА НАЖАТИЯ КНОПКИ RB4

BTFSC PORTB,4

GOTO VKL

BANKSEL OPTION_REG

MOVLW B'01111111'

MOVWF OPTION_REG

GOTO EXITINT

VKL ;СПЯЩИЙ РЕЖИМ

CLRF PORTC

SLEEP

BTFSS PORTB,4

SLEEP

BANKSEL OPTION_REG

MOVLW B'01111111'

MOVWF OPTION_REG

GOTO EXITINT3

TMR_VREMA ;ИЗМЕНЕНИЕ СКОРОСТИ МИГАНИЯ

CALL TABL

MOVWF DXTMR

RETURN

TABL ;ТАБЛИЦА ВРЕМЕНИ

MOVF DX_N,W

INCF DX_N

ADDWF PCL

RETLW B'00110101'

RETLW B'00100101'

RETLW B'00010101'

CLRF DX_N

RETLW B'00001110'

PRERVAT_PRERV

MOVLW B'10101000' ;РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ

MOVWF INTCON

RETURN

;; ВЫХОД ИЗ ОБРАБОТЧИКА ПРЕРЫВАНИЙ

EXITINT

CLRF STATUS ; установка банка 0

CALL PRERVAT_PRERV

MOVFW FSR_SAVE ; загрузить FSR_SAVE в аккумулятор

MOVWF FSR ; восстановить значение регистра FSR

MOVFW PCLATH_SAVE ; загрузить PCLATH_SAVE в аккумулятор

MOVWF PCLATH ; восстановить значение регистра PCLATH

MOVFW STATUS_SAVE ; загрузить STATUS_SAVE в аккумулятор

MOVWF STATUS ; восстановить значение регистра STATUS

SWAPF W_SAVE, F ; восстановить значение аккумулятора

SWAPF W_SAVE, W ; не изменяя значения регистра STATUS

RETFIE ; выход из прерывания

MAIN

;-------------------- Инициализация ------------------------

; настройка порта А

; BANKSEL ADCON1 ; выбрать банк 1 + отключение АЦП

; MOVLW B'00000111' ; все выводы порта A (E) - цифровые входы/выходы

; MOVWF ADCON1

; MOVLW B'00000000' ; все выводы порта А - выходы

; MOVWF TRISA

; BANKSEL PORTA ; выбрать банк 0

; MOVLW B'00110000' ; выставление пассивной "1" на 4 и 5 ножке порта А

; MOVF PORTA ; запись значения в порт А

; настройка порта B

BANKSEL TRISB ; выбрать банк 1

CLRF TRISB

MOVLW B'11111111' ; все выводы порта B - выходы, RB0- вход

MOVWF TRISB

BANKSEL PORTB ; выбрать банк 0

CLRF PORTB ; обнуление порта В

; настройка порта C

BANKSEL TRISC ; выбрать банк 1

CLRF TRISC ; настроить все выводы PORTC как выходы

BANKSEL PORTC ; выбрать банк 0

CLRF PORTC ; очистить PORTC

; настройка порта D

; MOVLW B'00000000' ; настроить все вывода порта D как выходы

; BANKSEL TRISD ; выбрать банк 1

; MOVWF TRISD ; порт D - вход

; BANKSEL PORTD ; выбрать банк 0

; CLRF PORTD ; обнуление порта D

;; настройка порта E

; BANKSEL TRISE ; выбрать банк 1

; MOVLW 0x00 ; TRISE => uuu0x000

; ANDWF TRISE, f ; (IBF:OBF:IBOV:PSPMODE:-:TRISE2:TRISE1:TRISE0)

; BANKSEL PORTE ; выбрать банк 0

; MOVLW B'00000111' ; установка значений на выводах порта Е

; MOVWF PORTE ;

;-------------установка начальных значений------------------

;---------------------- Прерывания -------------------------

; глобальное разрешение прерываний INTCON:GIE=1

; запрещение немаскированных прерываний от периферийных модулей INTCON:PEIE=0

; разрешение прерываний по переполнению от TMR0 INTCON:T0IE=1

; разрешение прерывания от RB0 INTCON:INTE=1

; запрещение прерываний от RB7:RB4 INTCON:RBIE=0

NACHALO_1

BANKSEL INTCON ; выбор банка 0

MOVF PORTB,4

MOVF PORTB,5

MOVLW B'10101000' ; настройка INTCON (GIE:PEIE:T0IE:INTE:RBIE:T0IF:INTF:RBIF)

MOVWF INTCON

CLRF DX_N

MOVLW B'00001110'

MOVWF DXTMR

CLRF DX2

GOTO NACHALO

;

;--------------- Основной цикл программы -------------------

EXITINT3 ;ВЫХОД ИЗ ПРЕРЫВАНИЯ C ВОЗВРАТОМ НА ОСНОВНОЙ ЦИКЛ

CLRF STATUS ; установка банка 0

MOVFW FSR_SAVE ; загрузить FSR_SAVE в аккумулятор

MOVWF FSR ; восстановить значение регистра FSR

MOVFW PCLATH_SAVE ; загрузить PCLATH_SAVE в аккумулятор

MOVWF PCLATH ; восстановить значение регистра PCLATH

MOVFW STATUS_SAVE ; загрузить STATUS_SAVE в аккумулятор

MOVWF STATUS ; восстановить значение регистра STATUS

SWAPF W_SAVE, F ; восстановить значение аккумулятора

SWAPF W_SAVE, W ; не изменяя значения регистра STATUS

GOTO NACHALO_1

EXITINT2 ;ВЫХОД ИЗ ПРЕРЫВАНИЯ C ВОЗВРАТОМ НА ОСНОВНОЙ ЦИКЛ

CLRF STATUS ; установка банка 0

CALL PRERVAT_PRERV

MOVFW FSR_SAVE ; загрузить FSR_SAVE в аккумулятор

MOVWF FSR ; восстановить значение регистра FSR

MOVFW PCLATH_SAVE ; загрузить PCLATH_SAVE в аккумулятор

MOVWF PCLATH ; восстановить значение регистра PCLATH

MOVFW STATUS_SAVE ; загрузить STATUS_SAVE в аккумулятор

MOVWF STATUS ; восстановить значение регистра STATUS

SWAPF W_SAVE, F ; восстановить значение аккумулятора

SWAPF W_SAVE, W ; не изменяя значения регистра STATUS

GOTO NACHALO

NACHALO ;Таблица режимов

MOVF DX2,W

INCF DX2

ADDWF PCL

GOTO REJIM_0

GOTO REJIM_1

GOTO REJIM_2

CLRF DX2

GOTO REJIM_3

REJIM_0 ;РЕЖИМ 0

CLRF DX

CIKL_0

CALL CHISLO_TABL_0 ; 3 ИЗМЕНЕНИЙ МИГАНИЯ ГИРЛЯНДЫ

MOVWF PORTC

CALL TAIMER

GOTO CIKL_0

CHISLO_TABL_0 ;ТАБЛИЦА РЕЖИМА 0

MOVF DX,W

INCF DX

ADDWF PCL

RETLW B'11111111'

RETLW B'10101010'

RETLW B'01010101'

GOTO REJIM_0

REJIM_1 ;РЕЖИМ 1

CLRF DX

CIKL_1

CALL CHISLO_TABL_1 ; 26 ИЗМЕНЕНИЙ МИГАНИЯ ГИРЛЯНДЫ

MOVWF PORTC

CALL TAIMER

GOTO CIKL_1

CHISLO_TABL_1 ;ТАБЛИЦА РЕЖИМА 1

MOVF DX,W

INCF DX

ADDWF PCL

RETLW B'10000000'

RETLW B'01000000'

RETLW B'00100000'

RETLW B'10010000'

RETLW B'01001000'

RETLW B'00100100'

RETLW B'10010010'

RETLW B'01001001'

RETLW B'00100100'

RETLW B'00010010'

RETLW B'00001001'

RETLW B'00000100'

RETLW B'00000010'

RETLW B'00000001'

RETLW B'00000010'

RETLW B'00000100'

RETLW B'00001001'

RETLW B'00010010'

RETLW B'00100100'

RETLW B'01001001'

RETLW B'10010010'

RETLW B'00100100'

RETLW B'01001000'

RETLW B'10010000'

RETLW B'00100000'

RETLW B'01000000'

GOTO REJIM_1

REJIM_2 ;РЕЖИМ 2

CLRF DX

CIKL_2

CALL CHISLO_TABL_2 ; 7 ИЗМЕНЕНИЙ МИГАНИЯ ГИРЛЯНДЫ

MOVWF PORTC

CALL TAIMER

GOTO CIKL_2

CHISLO_TABL_2 ;ТАБЛИЦА РЕЖИМА 2

MOVF DX,W

INCF DX

ADDWF PCL

RETLW B'10000001'

RETLW B'11000011'

RETLW B'11100111'

RETLW B'01111110'

RETLW B'00111100'

RETLW B'00011000'

RETLW B'00000000'

GOTO REJIM_2

REJIM_3 ;РЕЖИМ 3

CLRF DX

CIKL_3

CALL CHISLO_TABL_3 ; 13 ИЗМЕНЕНИЙ МИГАНИЯ ГИРЛЯНДЫ

MOVWF PORTC

CALL TAIMER

GOTO CIKL_3

CHISLO_TABL_3 ;ТАБЛИЦА РЕЖИМА 3

MOVF DX,W

INCF DX

ADDWF PCL

RETLW B'11111111'

RETLW B'01111111'

RETLW B'00111111'

RETLW B'00011111'

RETLW B'00001111'

RETLW B'00000111'

RETLW B'00000011'

RETLW B'00000001'

RETLW B'00000000'

RETLW B'00000001'

RETLW B'00000011'

RETLW B'00000111'

RETLW B'00001111'

RETLW B'00011111'

RETLW B'00111111'

RETLW B'01111111'

GOTO REJIM_3

TAIMER ;ТАЙМЕР ЗАДЕРЖКИ

banksel T2CON

MOVF DXTMR,W

MOVWF T2CON

CLRF TMR2

BCF PIR1,TMR2IF

BTFSS PIR1,TMR2IF

GOTO $-1

RETURN

TAIMER_VKL ;ТАЙМЕР ВЫКЛЮЧЕНИЯ

banksel OPTION_REG

MOVLW B'00000110'

MOVWF OPTION_REG

banksel TMR0 CLRF TMR0

BCF INTCON,T0IF

GOTO EXITINT2

END

Вывод

Написана программа в среде MPLAB IDE v8.84 на языке ассемблера MPASM v5.44 для устройства собранного на микроконтроллере.

Эту программу используют для прошивки микроконтроллера.

В данной программе можно легко изменить режимы работы, заменив или дописав небольшие куски исходного кода.

Также данная программа может быть доработана для повышения функциональности устройства.

Данная программа не портируется на другие микроконтроллеры.

Размещено на Allbest.ru


Подобные документы

  • Характеристика элементов архитектуры и технических параметров микроконтроллера ATiny2313. Описание принципа работы светодиодной гирлянды и расчет её электрической цепи. Расчет и разработка электрической принципиальной схемы светодиодной гирлянды.

    контрольная работа [492,3 K], добавлен 25.05.2014

  • Описание алгоритма работы игры и применяемых в ней функций. Составление программы работы системы управления с использованием языка С. Основные характеристики микроконтроллера, его функциональные группы. Принципиальная схема микропроцессорного модуля.

    курсовая работа [756,1 K], добавлен 14.01.2013

  • Разработка автомобильной сигнализации на однокристальном микроконтроллере. Алгоритм её работы и блок-схема рабочей программы. Текст программы на языке assembler. Тестирование и отладка в интегрированной среде ProView фирмы Franklin Software Inc.

    курсовая работа [293,8 K], добавлен 14.07.2009

  • Описание работы электронных часов и микроконтроллера АТTiny2313 фирмы Atmel. Выходные буферы порта. Принципиальная схема электронных часов. Разработка печатной платы и практическое её применение. Принципы программирования и прошивки микроконтроллера.

    курсовая работа [749,0 K], добавлен 29.05.2009

  • Разработка микроконтроллера для контроля ритма дыхания больного в реанимационной палате. Структурная и принципиальная схемы микропроцессорного контроллера. Модули процессора, памяти, ввода и вывода, режимы индикации. Описание работы, принципиальная схема.

    курсовая работа [197,6 K], добавлен 06.12.2013

  • Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.

    курсовая работа [736,9 K], добавлен 18.02.2011

  • Изучение цифрового термометра DS18B20: диапазон измерений, уникальный код, блок-схема, особенности функционирования. Устройство и назначение микроконтроллера PIC16F84, его технические характеристики. Описание алгоритма работы термометра-термостата.

    контрольная работа [2,5 M], добавлен 20.12.2012

  • Функциональная спецификация и структурная схема электронных автомобильных часов-термометра-вольтметра. Разработка алгоритма работы и принципиальной электрической схемы. Получение прошивки программы для памяти микроконтроллера в результате ассеблирования.

    курсовая работа [2,0 M], добавлен 26.12.2009

  • Понятие, принцип работы и функции микроконтроллерного таймера. Изучение технических характеристик микроконтроллера MSP430F2013; преобразование двоичных кодов и способ отображения цифр на дисплее. Разработка программного обеспечения и алгоритма программы.

    научная работа [1,1 M], добавлен 16.05.2014

  • Функциональная спецификация и преимущества термометрического датчика. Структурная схема микроконтроллера РIС16F84A. Алгоритм работы программы, описание функциональных узлов, выбор элементной базы и принципиальная схема терморегулятора для аквариума.

    курсовая работа [4,7 M], добавлен 27.12.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.