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

Разработка алгоритма управляющей программы

Рис 2а. Алгоритм основной программы

Рис 2б. Алгоритм подпрограммы прерывания

Рис 2в. Алгоритм подпрограммы задержки

Текст программы на ассемблере

.INCLUDE "8515def.inc" ; Подключение файла с описанием ; символических имен

;

;**********Задание символических имен***********************************

;

.def temp = r16 ; назначение регистру r16 ; символического имени temp

.def temp1 = r17 ; назначение регистру r17 ; символического имени temp1

.def temp2 = r18 ; назначение регистру r18 ; символического имени temp2

;

;**********Программа**************************************************

;

.CSEG ; определения начала сегмента, где будет ; расположен основной код программы.

.ORG $0 ; перезагрузка микроконтроллера при rjmp init ; нажатии кнопки RESET

rjmp EXT_INT0 ; обработка прерывания по входу INT_0

EXT_INT0: ; п/п обработки прерывания

sbic PinA, 4 ; опрос кнопки Старт

rjmp m1 ; переход если не нажата

set ; установка признака нажатия кн. Старт

reti ; возврат из п/п

m1: sbis PinB, 0 ; опрос кнопки Стоп

clt ; сброс признака нажатия н. Старт

reti ; возврат из п/п

delay5ms: ; п/п формирования задержки в 16 мс

ldi temp1, 251 ; загрузить число 251 в регистр temp1

d1: ldi temp, 25 ; загрузить число 84 в регистр temp

d2: dec temp ; уменьшить содержимое регистра на 1

brne d2 ; проверка содержимого регистра на ; равенство 0

dec temp1 ; уменьшить содержимое регистра на 1

brne d1 ; проверка содержимого регистра на ; равенство 0

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

;

;**********Инициализация МК и настройка портов**************************

;

init:

ldi temp, low(RAMEND) ; инициализация указателя стека в конце out spl, temp ; внутреннего ОЗУ

ldi temp, high(RAMEND) ;

out sph, temp ;

sbi DDRA, 2 ; настройка 2 бита порта A на вывод ; данных

sbi DDRC, 0 ; настройка 0 бита порта C на вывод ; данных

cbi DDRD, 2 ; настройка входного прерывания

ldi temp, 222 ; настройка 0 бита порта B и 4 бита A

out DDRB, temp ; на ввод данных

;

;**********Инициализация прерывания по входу INT_0**********************

;

sbr temp1, 64 ; установка 6 бита регистра temp

out GIMSK, temp1 ; разрешение прерывания по входу INT0

sbr temp1, 4 ; установка 2 бита регистра temp

out MCUCR, temp1 ; инициализация прерываний по ; спадающему фронту сигнала

sei ; общее разрешение прерываний

;

;*********Основная программа*******************************************

;

main1:

sbis pinA, 4 ; проверка установки признака нажатия ; кнопки Старт

rjmp main2 ;

cbi PortA, 2 ; включить светодиод 1

sbi PortC, 0 ; выключить светодиод 2

rcall delay5ms ; вызов задержки в 5 мс

sbi PortA, 2 ; выключить светодиод 1

cbi PortC, 0 ; включить светодиод 2

rcall delay5ms ; вызов задержки в 5 мс

rjmp main1

main2:

sbi PortA, 2 ; выключить оба

sbi PortC, 0 ; светодиода

rjmp main1

;

Соседние файлы в предмете Микропроцессорная техника