Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Опрос группы двоичных датчиков



Микроконтроллеры чаще всего имеют дело не с одним датчиком, как в рассмотренных выше примерах, а с группой двоичных датчиков (например, рисунок 4.9).

  Рисунок 4.9 – Схема подключения группы двоичных датчиков

При этом МК может выполнять процедуру опроса датчиков и передачи управления отдельным подпрограммам в зависимости от кода, формируемого группой датчиков.

Можно отметить два наиболее часто встречающихся случая работы с группой датчиков:

– ожидание заданного кода (листинг 4.13);

– анализ кода с передачей управления одной из подпрограмм в зависимости от полученного значения (листинг 4.14).

Листинг 4.13 – Программа ожидания заданного кода

; Программа реализована для случая подключения группы из

; восьми взаимосвязанных статических датчиков к входам порта P1.

CODE: .EQU 10101010h ; Ожидаемый код
    STOP: .ORG 0000h MOV P1, #FFh MOV A, P1   CJNE A, #CODE, STOP     … ; Адрес начала программы ; Настройка порта P1 на ввод ; Считывание в аккумулятор ; данных из порта P1 ; Переход к следующему опросу, ; если считанное значение не ; совпадает с заданным кодом

Листинг 4.14 – Программа анализа кода с передачей управления одной из подпрограмм в зависимости от полученного значения

; Программа реализована для случая подключения трех датчиков

; к разрядам 0–2 порта P1. В зависимости от принятого кода

; управление передается одной из подпрограмм PROG0–PROG7.

    TABEL:     PROG1:   PROG8: .ORG 0000h MOV SP, #30h MOV DPTR, #TABEL     MOV P1, #FFh MOV A, P1   ANL A, #00000111b   RL A PUSH A   MOVC A, @A+DPTR   MOV 0, A   POP A   INC A   MOVC A, @A+DPTR   MOV DPH, 0 MOV DPL, A     MOV A, #00h   JMP @A+DPTR   .DW PROG1, PROG2 .DW PROG3, PROG4 .DW PROG5, PROG6 .DW PROG7, PROG8   …   … ; Адрес начала программы ; Переопределение дна стека ; В регистр DPTR заносится ; адрес таблицы с адресами ; подпрограмм * ; Настройка порта P1 на ввод ; Чтение в аккумулятор данных; из порта P1 ; Принудительное обнуление ; незначащих разрядов ; Умножение значения на 2 ** ; Сохранение в стеке ; содержимого аккумулятора ; Чтение из таблицы старшего ; байта адреса подпрограммы ; Сохранение в ячейке 0 ; считанного значения ; Восстановление из стека ; содержимого аккумулятора ; Инкремент аккумулятора ; Чтение из таблицы младшего ; байта адреса подпрограммы ; Помещение в регистровую ; пару DPH:DPL=DPTR ; младшего и старшего байтов ; адреса подпрограммы ; Формирования смещения ; подпрограммы ; Переход к подпрограмме ; Таблица адресов подпрограмм ; Подпрограммы ; PROG1–PROG8

; * – таблица адресов подпрограмм располагается по адресу,

; которому соответствует метка TABEL. Таблица состоит из

; двухбайтовых адресов подпрограмм. Содержимое таблицы

; представлено следующим образом:

; A A+1 A+2 A+2 A+4 А+5 A+6
; СБA1 МБА1 СБA2 МБА2 СБA МБА3 СБA4

; где A – адрес таблицы адресов подпрограмм

; СБА1 – старший байт адреса подпрограммы 1

; МБА1 – младший байт адреса подпрограммы 1

; СБА2 – старший байт адреса подпрограммы 2

; МБА2 – младший байт адреса подпрограммы 2

; и т.д.

; ** – команда поразрядного сдвига влево равносильна умножению на 2





Дата публикования: 2014-11-03; Прочитано: 445 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...