Читайте также:
|
|
Исходный текст программы приведен далее:
;предварительные настройки
#include p16f873a.inc
__CONFIG _HS_OSC;
CNT_L: EQU H'20';определение младшего регистра счетчика
CNT_M: EQU H'21';определение среднего регистра счетчика
CNT_H: EQU H'22';определение старшего регистра счетчика
ORG H'000';вектор сброса
GOTO H'05';переход на адрес следующий за вектором прерыв.
ORG H'05';начало основной программы
BCF STATUS,RP1;выбираем банк регистров 1
BSF STATUS,RP0;|
MOVLW B'00001110';задаем аналоговый вход PORTA,0
MOVWF ADCON1;программируем регистр АЦП 1
MOVLW B'00000001';PORTA,7-1 выходы, PORTA,0 вход
MOVWF TRISA;программируем регистр направления PORTA
MOVWF OPTION_REG;включаем подтягивающие резисторы PORTB
MOVLW B'11111111';PORTB,7-0 входы
MOVWF TRISB;программируем регистр направления PORTB
MOVLW B'11000000';PORTC,7-6 вход, PORTC,5-0 выходы
MOVWF TRISC;программируем регистр направления PORTC
;исходное состояние
M10: BCF STATUS,RP1;выбираем банк регистров 0
BCF STATUS,RP0;|
CLRF PORTC;гасим все светодиоды и выключаем пищалку
CLRF PORTA;|
BTFSS PORTB,5;скачек,если не нажата кнопка SA2
GOTO M30;переход к включению пищалки
BTFSS PORTB,4;скачек,если не нажата кнопка SA3
GOTO M20;переход к включению светодиода HL3
GOTO M10;возврат к исходному состоянию
;включение мигания красного светодиода HL3
M20: BSF PORTC,1;включаем HL3 на 1 с
MOVLW D'6';задаем начальное значение старшего счетчика
MOVWF CNT_H;|
MOVLW D'23';задаем начальное значение среднего счетчика
MOVWF CNT_M;|
MOVLW D'22';задаем начальное значение младшего счетчика
MOVWF CNT_L;|
CALL T10;вызов подпрограммы выдержки времени
BCF PORTC,1;гасим HL3 на 0,5 с
MOVLW D'3';задаем начальное значение старшего счетчика
MOVWF CNT_H;|
MOVLW D'140';задаем начальное значение среднего счетчика
MOVWF CNT_M;|
MOVLW D'11';задаем начальное значение младшего счетчика
MOVWF CNT_L;|
CALL T10;вызов подпрограммы выдержки времени
BTFSS PORTB,5;скачек,если не нажата кнопка SA2
GOTO M30;переход к включению пищалки
BTFSS PORTB,2;скачек,если не нажата кнопка SA4
GOTO M10;переход к исходному состоянию
GOTO M20;возврат к включению светодиода HL3
;включение пищалки
M30: BCF PORTC,1;гасим HL3
BSF PORTA,2;подаем на пищалку импульс длительностью 0,5 мс
MOVLW D'1';задаем начальное значение старшего счетчика
MOVWF CNT_H;|
MOVLW D'1';задаем начальное значение среднего счетчика
MOVWF CNT_M;|
MOVLW D'168';задаем начальное значение младшего счетчика
MOVWF CNT_L;|
CALL T10;вызов подпрограммы выдержки времени
BCF PORTA,2;подаем на пищалку интервал длительностью 0,5 мс
MOVLW D'1';задаем начальное значение старшего счетчика
MOVWF CNT_H;|
MOVLW D'1';задаем начальное значение среднего счетчика
MOVWF CNT_M;|
MOVLW D'168';задаем начальное значение младшего счетчика
MOVWF CNT_L;|
CALL T10;вызов подпрограммы выдержки времени
BTFSS PORTB,4;скачек,если не нажата кнопка SA3
GOTO M20;переход к включению светодиода
BTFSS PORTB,2;скачек,если не нажата кнопка SA4
GOTO M10;переход к исходному состоянию
GOTO M30;возврат к включению пищалки
;подпрограмма выдержки времени
T10: DECFSZ CNT_L,F;уменьшение младшего счетчика на 1, скачек если 0
GOTO T10;возврат к декременту счетчика
DECFSZ CNT_M,F;уменьшение среднего счетчика на 1, скачек если 0
GOTO T10;возврат к декременту счетчика
DECFSZ CNT_H,F;уменьшение старшего счетчика на 1, скачек если 0
GOTO T10;возврат к декременту счетчика
RETURN;выход из подпрограммы
END;конец программы
Дата добавления: 2015-07-08; просмотров: 193 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Разработка алгоритма программы | | | Трансляция текста программы в машинные коды |