Ввод в МКС аналоговых сигналов. Параметры интегральных АЦП. Условное графическое обозначение типового АЦП, страница 10

MOV  A,R2                ;Сдвиг кода сканирования

RL  A

MOV  R2,A                ;для следующего индикатора

INC  R0                      ;Следующий адрес данных

DJNZ  R7,AGAIN      ;Идти на AGAIN, если (R7) ≠ 0

; (индикатор не последний)

JMP  DISPL                ;Идти на начало (зацикливание

;программы)

Недостатком приведенной программы DISPL является то, что она зациклена, т.е. МК не может выполнять никаких других действий кроме сканирования дисплея. Это, конечно, недопустимо для МКС, которые используются для управления различными объектами. Поэтому необходимо организовать выполнение программы сканирования через заданные промежутки времени. Это можно сделать с помощью прерываний от внутреннего таймера МК, который вырабатывает запросы прерываний с периодом TSCAN. Подпрограмма обработки прерывания выполняет сканирование дисплея, т.е. производит установку данных и высвечивает информацию на индикаторах. Основная же программа выполняет функции управления системой.

Допустим, что дисплей 4-х позиционный и период сканирования TSCAN = 10 мс, частота кварцевого резонатора равна 12 МГц. Если использовать для отсчета времени таймер Т/С0 в режиме 1, то в него при инициализации необходимо загрузить число 65536 – 10000 = 55536 = D8F0H.

Основная программа должна инициализировать таймер Т/С0, запустить его на счет и разрешить прерывание от Т/С0. Текст основной программы и подпрограммы обработки прерывания может иметь следующий вид:

DATA:      EQU         40H     ; Начальный адрес массива данных

ORG  0000H

JMP  MAIN            ; Переход на основную программу

ORG  000BH           ; Вектор прерывания от T/C0

JMP  DISPLAY      ; Переход на программу

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

ORG  0050H           ; Таблица семисегментных кодов

TABLE:    DB  3FH                  ; Код цифры “0”

DB  06H                  ; Код цифры “1”

……………………………………..

DB  6FH                  ; Код цифры “9”

ORG  0100H           ; Основная программа

MAIN:      MOV  SP,#70H       ; Определить стек

; Инициализация дисплея

MOV  P2,#00H       ; Гашение дисплея

MOV  R0,#DATA  ; Начальный адрес массива DATA

MOV  R2,#00000001B ; Начальный код сканирования

MOV  R7,#4           ; Количество индикаторов

MOV  TMOD,#01H ; Режим 1 для T/C0

MOV  TH0,#0D8H ; Загрузить число D8F0H

MOV TL0,#0F0H   ; в регистры TH0, TL0

SETB  TR0             ; Запустить T/C0 на счет

SETB  ET0              ; Разрешить прерывание от T/C0

SETB  EA               ; Общее разрешение прерываний

…………………     ; Продолжение основной

…………………     ; программы

; Подпрограмма перекодировки

CROSSCODE: MOV  DPTR,#TABLE ; Загрузить в DPTR

; начальный адрес таблицы семисегментных кодов

MOVC  A,@A+DPTR ; Пересылка кода в акк-р

RET

………………….

; Программа управления дисплеем

DISPLAY: CLR  TR0             ; Остановить T/C0

MOV  TH0,#0D8H  ; Перезагрузить T/C0

MOV  TL0,#0F0H

MOV  P2,#00H     ; Погасить индикаторы дисплея

MOV  A,@R0       ; Пересылка символа из DATA

CALL  CROSSCODE ; Перекодировка

MOV  P0,A            ; Вывод кода символа на сегменты

MOV  P2,R2          ; Вывод кода сканирования

; (включение индикатора)

DJNZ  R7,AGAIN ; Переход на AGAIN, если

; (R7) ≠ 0 (индикатор не последний)

; Переинициализация дисплея, если индикатор последний

MOV  R0,#DATA

MOV  R2,#00000001B

MOV  R7,#4

SETB  TR0          ; Запустить T/C0 на счет

RETI                   ; Возврат из прерывания

; Если индикатор не последний

AGAIN:     MOV  A,R2        ; Сдвиг кода сканирования

RL  A

MOV  R2,A

INC  R0              ; Адрес следующего символа

SETB  TR0         ; Запустить T/C0 на счет

RETI                   ; Возврат из прерывания

Динамический метод управления линейным дисплеем имеет следующие достоинства по сравнению со статическим:

1)  значительно меньшие аппаратные затраты;

2)  значительно меньший потребляемый ток;

3)  значительно меньшее количество соединительных проводов.

Недостатком динамического метода является сложность программного обеспечения по сравнению со статическим.