2. Имеется другая возможность независимого управления разрядами любого порта ППА – с помощью чтения состояния выходов порта и использования логических команд. Например, надо установить 1 на выходе РС0 порта РС:
IN PC |
; |
Чтение состояния выходов РС |
|
ORI 0000 0001B |
|||
OUT PC |
; |
Установить PC01 |
Сбросить в 0 разряд РС3 порта РС:
IN PC |
|||
ANI 1111 0111B |
|||
OUT PC |
; |
Сбросить PC30 |
3. Если в качестве порта вывода используется обычный регистр, то определить программно состояния его выходов невозможно. Поэтому для реализации индивидуального управления разрядами порта необходимо после каждого вывода в порт запоминать содержимое аккумулятора в специальной ячейке ОЗУ. Это содержимое будет определять состояние выходов порта. Например:
STATUS |
EQU 0900H |
; ; |
Адрес ячейки ОЗУ для хранения состояния выходов порта вывода |
OPORT |
EQU XXH |
; |
Адрес порта |
; Первый вывод в порт |
|||
XRA A |
|||
OUT OPORT |
|||
STA STATUS |
|||
; Вывод 1 в 0-й разряд порта |
|||
LDA STATUS |
|||
ORI 0000 0001B |
|||
OUT OPORT |
|||
STA STATUS |
; |
Запомнить состояние выходов порта |
|
……………….. |
|||
; Вывод 0 в 3-й разряд порта |
|||
LDA STATUS |
|||
ANI 1111 0111B |
|||
OUT OPORT |
|||
STA STATUS |
БСА обработки аналоговых сигналов V1 и V2 приведена на рис. 2.6. С помощью АЦП сигналы V1 и V2 преобразуются в двухбайтные целые двоичные числа W1 и W2. Для их сохранения необходимо выделить в ОЗУ массив, начальный адрес которого DATA_W. Предположим, что требуется вычислить функцию
g(V1,V2,K1,K2)=W1+W2–K1, где К1 и К2 – двухбайтные коэффициенты, хранящиеся в ПЗУ.
Полученное значение функции g( ) сравнивается с двухбайтной константой Q, хранящейся в ПЗУ. Сравнение можно выполнить с помощью программы вычитания двухбайтных целых чисел g( ) – Q.
Результат сравнения определяется флагом CY микропроцессора после вычитания старших байтов. Если CY=0, то g( ) > Q, если CY=1, то g( ) < Q.
Для размещения двухбайтных констант в ПЗУ можно использовать псевдокоманду DW, которую надо записать в неисполняемую микропроцессором часть программы, например, после команд JMP, RET, HLT:
JMP МЕТ1 |
; |
Команда программы |
|
ADR_K1: |
DW XXXXH |
; |
Символический адрес константы K1 |
ADR_K2: |
DW XXXXH |
||
ADR_Q: |
DW XXXXH |
||
МЕТ1: |
……………. |
; |
Очередная команда программы |
Если необходимо поместить константы в заранее заданные ячейки ПЗУ, то начальный адрес задается псевдокомандой ORG:
ORG 0700H |
|||
ADR_K1: |
DW XXXXH |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.