Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Написание текста программы на языке Ассемблер

Читайте также:
  1. CALL — Вызов подпрограммы
  2. I. Простые запросы на языке SQL
  3. III. Вкажіть номери речень які відповідають змісту текста
  4. III. Вкажіть номери речень які відповідають змісту текста.
  5. III. Вкажіть номери речень які відповідають змісту текста.
  6. III. Вкажіть номери речень які відповідають змісту текста.
  7. III. Вкажіть номери речень які відповідають змісту текста.

Исходный текст программы приведен далее:

 

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

#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 | Нарушение авторских прав


Читайте в этой же книге: ВВЕДЕНИЕ | Компиляция исходного текста программы в машинные коды | Отладка (выполнение) программы | FLASH память программ | Энергонезависимая память данных EEPROM | Разработка алгоритма программы | Написание текста программы на языке Ассемблер | Тестирование и отладка | Разработка алгоритма программы | Написание текста программы на языке Ассемблер |
<== предыдущая страница | следующая страница ==>
Разработка алгоритма программы| Трансляция текста программы в машинные коды

mybiblioteka.su - 2015-2024 год. (0.006 сек.)