
- •Содержание
- •Структура (архитектура) однокристального восьмиразрядного микропроцессора мп580вм80
- •Принцип работа мп
- •Логические операции (and, or, not, ).
- •Команды управления (безусловный и условные переходы)
- •Лекция 7 Алгоритм программы (основной) формирователя сигналов сложной формы
- •Программа формирователя сигналов сложной формы
- •Организация интерфейса ввода/вывода данных
- •Организация прерывания работы микропроцессоров Классификация прерываний в микропроцессоре
- •Организация прерываний в мп кр 580вм80 (симулятор Avsim85)
- •Структура системного микроконтроллера.
- •Особенности построения мк avr фирмы «Atmel»
- •Память микроконтроллера
- •Особенности разработки и отладки программ для микроконтроллеров avr
- •2.1. Ассемблер
- •2.2. Формат программ на ассемблере
- •Лекция 12-13 Система команд микроконтроллеров avr
- •2.4. Директивы транслятора ассемблера
- •2.5. Средства разработки программ avr – mk
- •Программируемые логические интегральные схемы (плис) Определения и история разработки плис.
Логические операции (and, or, not, ).
3.1. Логическое умножение содержимого аккумулятора с константой
Б1 Б2 |
ANI |
константа |
Логические операции осуществляются поразрядно и без переноса в старший разряд.
Пояснение на примере.
ANI 0: (A)←(A)^ (0) В аккумулятор записывается ноль.
ANI FF ; В аккумуляторе остается содержимое аккумулятора.
Б1 |
ANA r |
Б1 |
ANA M |
Логическое сложение
Б1 Б2 |
ORI |
константа |
Рассмотрим примеры:
ORI FF; (A)←(FF)V(A)
ORI 0 (A)←(A)V0
Б1 |
ORA r |
Б1 |
ORA M |
Инверсия содержимого всех разрядов аккумулятора
Б1 |
CMA |

Рассмотрим пример: Пусть А=0. Что будет в аккумуляторе после выполнения команды CMA?
Сложение по модулю два константы с аккумулятором
Б1 Б2 |
XRI |
константа |
Б1 |
XRA r |
Например:
XRA A ; (A)←(A) (A) В аккумулятор записывается ноль.
3.5. Логическое сравнение аккумулятора с регистром (команды логического сравнения применяются перед командами условного перехода)
Б1 |
СMP r |
Арифметическое вычитание и формирование только признаков в регистре признаков (S, Z, P и др.).
Логическое сравнение аккумулятора с константой
Б1 Б2 |
СРI |
константа |
Помни:
Команды логического сравнения применяются, чтобы сформировать только признаки (S, Z, P, AС ) в регистре признаков перед выполнением команд условных переходов. Содержимое аккумулятора при этом не изменяется!
Команды управления (безусловный и условные переходы)
4.1. Команда безусловного перехода
Б1 Б2 Б3 |
JMP |
|
младшие разряды |
Адрес перехода |
|
старшие разряды |
Пример: JMP 8105h ; (Счетчик команд РС)←8105h
4.2. Команды условных переходов (JM, JNM, JZ, JNZ)
Все команды условного перехода 3-х байтные: в 1-м байте КОП, в 3- м и 2-м байтах команды адрес перехода.
Последовательность выполнения команды условного перехода: если условие КОП выполняется, то в PC заносится адрес перехода из 3-го и 2-ого байтов команды. Если условие КОП не выполняется, то к значению PC прибавляется 3, т.е. МР переходит к выполнению очередной команды.
Команда перехода, если минус:
Б1 Б2 Б3 |
JM |
|
младшие разряды |
адрес перехода |
|
старшие разряды |
(PC)←(РС)+3, если S=0
Команда перехода, если минус, т.е. если предыдущий результат отрицательный (S=1), то в PC заносится адрес 3- и 2- ого байтов команды и происходит переход по этому адресу. Если условие КОП не выполняется (S=0), то к значению PC прибавляется 3, т.е. МР переходит к выполнению очередной команды.
Пример команды:
Команда перехода, если ноль:
Б1 Б2 Б3 |
JZ |
|
младшие разряды |
адрес перехода |
|
старшие разряды |
(PC)←(РС)+3, если Z=0
Команда перехода, если не ноль:
Б1 Б2 Б3 |
JNZ |
|
младшие разряды |
адрес перехода |
|
старшие разряды |
(PC)←(РС)+3, если Z=1
Команды ввода и вывода данных.
Ввод и вывод данных организуется двумя способами:
Ввод и вывод данных только через аккумулятор. Данный способ обычно используется в восьмиразрядных системах. Он прост в технической реализации МП. В изучаемом нами МП применяется данный способ обмена.
Прямой доступ к памяти (ПДП). Тогда обмен информации между устройствами ввода, вывода и запоминающего устройства может осуществляться напрямую, минуя аккумулятор. Все персональные компьютеры и многие микроконтроллеры используют этот принцип. Он сложен в технической реализации, но обеспечивает большую пропускную способность.
5.1. Команда ввода данных
Б1 Б2 |
IN |
Адрес устройства ввода |
Пример команды:
IN INPORT1; (A)←([INPORT1]), где INPORT1символический адрес порта ввода.
Команда вывода данных
Б1 Б2 |
OUT |
Адрес устройства вывода |
OUT OUTPORT2 ; ([OUTPORT2])←(A)
Другие команды
6.1 Команды работы со стеком (стековой памятью).
Стековая память – область ОЗУ, предназначенная для временного хранения данных, в том числе и адресов возврата в основную программу при обращении к подпрограмме.
Обмен со стековой памятью осуществляется только парами регистров (В-С, D-E, H-L, PSW).
Для организации стековой памяти необходимо определить начальный адрес (вершину стека).
Примечание: в некоторых МПС начальный адрес стека определяется автоматически.
Для задания вершины стека используются два варианта команд:
1-ый вариант:
Б1 Б2
Б3 |
LXI |
|
младший разряд |
Адрес регист- ровой пары |
|
старший разряд |
SP – шестнадцатиразрядный указатель стека, т.е. в указателе стека
2-ой вариант:
Б1 |
SPHL |
(SP)←(H-L)
Запись содержимого регистровой пары в стековую память:
Команда записи регистровой пары в стековую память
-
PUSH rr
где rr – В-C, D-E, H-L, PSW.
Например:
PUSH В; Содержимое пары регистров В-С записывается в стековую память по адресу SP-1 и SP-2. После выполнения команды записи содержимого в стековую память в указателе стека (SP) изменяется адрес стековой памяти (уменьшается его значение на два: SP=SP-2).
Команда чтения содержимого стека в регистровую пару (чтение из стековой памяти)
-
РОР rr
где rr – В-C, D-E, H-L, PSW.
По этой команде содержимое стековой памяти (два байта) из ОЗУ записываются в одну из регистровых пар РОН или PSW. После выполнения команды содержимое указателя стека увеличивается на два SP=SP+2.
Например:
РОР B; Содержимое двух ячеек стековой памяти по адресу SP+1 и SP+2 записывается в пару регистров B-C, а указатель вершины стека после выполнения команды принимает значение SP=SP+2.
Команда обращения к подпрограмме (CALL).
Сложные программы, как правило, включают в себя подпрограммы, т.е. создается алгоритм основной программы и в основной программе используются команды обращения к подпрограмме.
Синтаксис команды обращения к подпрограмме
Б1 Б2
Б3 |
CALL |
|
младшие разряды |
адрес ячейки памяти ЗУ с командой подпрогрпммы |
|
старшие разряды |
([SP-2]) ←(CPH)возвр.
(SP)←(SP)-2 ; измен. адр. вершины стека.
(CP)←([< Б3>< Б2>]).
Последовательность выполнения команды обращения к подпрограмме CALL.
В стековую память записывается 16-ти разрядный адрес ячейки памяти возврата после выполнения подпрограммы (CPL)возвр. , (CPH)возвр.
В указатель счетчика команд (PC) заносится адрес первой ЯП команды подпрограммы с КОП ([<Б3><Б2>]). . Поскольку стековая память использована для хранения адреса возврата из подпрограммы в основную программу, то изменяется значение указателя вершины стека (уменьшается на 2, т.е. SP=SP-2).
Команда возврата из подпрограммы
Б1 |
RET |
(CPL) ← ([SP+1]), (запись в счетчик команд PC адреса
(CPH) ← ([ SP+2]) возврата в основную программу)
(SP)←(SP)+2, (изменяется адрес вершины стека )
В счетчик команд PC записывается содержимое стековой памяти по адресу ([SP+1]) и ([SP+2]), т.е. адрес возврата в основную программу.
После выполнения команды значение указателя стека SP увеличивается на 2, т.е. SP=SP+2.
Команда HLT – останов выполнения программы
Б1 |
HLT |
МП прекращает выполнение программы и ждет указаний.
6.4. Пустая команда
Б1 |
NOP |
Эта команда используется для резервирования ячеек при написании программы. МП никаких действий не выполняет, но осуществляет первый этап (чтение и дешифрование). Кроме того, команда может применяться при написании программы временной задержки (для изучаемого симулятора AVSIM85 время выполнения 1-ого этапа команды четыре секунды).
Работа с имитатором (симулятором) процессора Intel I8085.
Построение программы.
Этапы создания программы:
Разработка алгоритма программы и ее написание на языке ассемблер. Набор программы осуществляется только!!! в Блокноте или с использованием симулятора. Сохраняется программа в формате «все файлы» и имя программы – с расширением .asm. Например, testr3.asm.
Примечание: В редакторе Word или Word Pad программу не набирать, а только в Блокноте!!!
Трансляция программы – перевод программы с языка ассемблера в код микропроцессора. В результате появляется файл с расширением .hex, т.е. файл с цифрами в шестнадцатеричной системе счисления.
Компоновка программы. Результат компоновки – объединение нескольких оттранслированных программ в одну, в результате мы получаем файл с расширением .obj.
Отладка программы.
Структура программы
Программа состоит из предложений. Каждое предложение имеет следующую структуру:
[метка] <мнемоника команды> [операнды]; [комментарии]
[] – не обязательное включение содержимого скобок в предложение
<> - обязательное наличие содержимого скобок в предложение
Поле метки: метка записывается с первой позиции и начинается обязательно с буквы.
Поле мнемоники: код операции (КОП) записывается после первой позиции.
Поле операнда: в этом поле записываются данные, которые обрабатываются в МП.
Поле комментария: комментарии записываются обязательно после точки с запятой (;). Если комментариев нет, точку с запятой ставить не обязательно. Если точка с запятой стоит в первой позиции, то строка транслятором воспринимается как комментарий.
Программа начинается с комментария, в котором записывается автор программы, название программы, какие микропроцессоры, микроконтроллеры и тактовая частота используются. Далее следуют директивы к транслятору.
В директивах записываются символические имена портов ввода и вывода, констант, команд присоединения и других команд.
Include – директива и после нее записываются имена файлов с расширением .asm.
Тело программы включает строки предложений, рассмотренные ранее.
Трансляция программы.
Для трансляции программы необходимо командной в строке, например, FAR или Total Commander, записать:
avmac85 <имя исходного файла.asm> si allpublic
Помни уголки < > не использовать при написании команды.
В результате формируются объектный файл и листинг:
<имя исходного файла>.obj
< имя исходного файла >.prn
Для проверки программы на наличие в ней ошибок необходимо раскрыть файл с расширением .prn , и в нем будет показано, в какой строке находится ошибка. Исправлять ошибки только в файле с расширением .asm.
Компоновка программы.
Для компоновки программы пользователю необходимо создать командный файл компоновки. После создания командного файла компоновки в командной строке набрать команду:
avlink @<имя файла>.lnk
В результате компоновки формируется файл с расширением .hex.
Подготовка файлов выходных данных.
Для ввода данных (имитация ввода данных) формируется файл исходный данных. Для организации файла создать файл с именем indat.ad. Для создания файла используют следующее сочетание клавиш – Shift+F4. Значения входных данных записываются в десятичной системе. Цифры разделяются либо пробелом, либо переводом строки. Для перевода десятичной системы счисления в шестнадцатеричную в командной строке записывают команду:
iotran db indat.dat indat.ad
Лекция 6
Особенности построения программ двоичных счетчиков
Учебные вопросы:
1. Двоичные счетчики с заданными начальным и конечным значениями счета.
2. Построение счетчиков на двух регистрах.
3. Построение программы с управляющими сигналами.
4. Разработка программы счетчика табличным методом.
Двоичные счетчики с заданными начальным и конечным значениями счета.
Постановка задачи: разработать вычитающий четырехразрядный двоичный счетчик с параметрами:
Qнач.=5, Qкон.=8
m – разрядность счетчика
Сmax=
Примечание: в аккумуляторе восемь разрядов. В четырехразрядном счетчике используются только четыре младших разряда, следовательно, необходимо отсечь старшие разряды. Для этого используется команда ANI 0Fh.
Алгоритм программы
Фрагмент программы:
Begin:
MVI
C,Qn
; C=Qn
Бл.1
M2: MOV A,C ; A=C Бл.2
OUT outport2 ; вывод Qi
DCX C ; C=C-1 Бл.3
MOV
A,C
ANI 0Fh Бл.4
MOV C,A
CPI Qk ; (A-Qk) в этой команде только меняются признаки S, Z, P
JZ Begin
JMP M2
END
В рассмотренной программе Cmax= ,
где m=8, следовательно, Сmax не более 255 .
На практике применяются счетчики с Сmax> 255. Тогда могут применяться счетчики на двух регистрах.
Построение счетчиков на двух регистрах.
МП обладает программной возможностью формирования признака нулевого результата только для одного регистра, а не для регистровой пары. Поэтому пользователю (разработчику программ) необходимо формировать признак нулевого результата на программном уровне.
Алгоритм программы
Нарисовать
Фрагмент из программы.
Delay:
LXI B,DEL ; константа пересылается в регистровую пару В-С
M3: NOP ; пустая команда для увеличения времени цикла
NOP
DCX B ; (B-C)=(B-C)-1
MOV A,C
ORA B ; (A)←(A)V(B)
JNZ M3
JMP Mi ; метка основной программы
END
3.Построение программы с управляющими сигналами
Если МПС управляет устройством, то на вход МПС поступает сигнал, по результатам которого формируется управляющий сигнал. Пусть двоичный счетчик управляется двумя сигналами, а именно, сигнал Х1 – сброс счетчика в нулевое состояние (начальное) и Х2 – останов счетчика.
Примечание: Эти сигналы используются в программной реализации проектируемого устройства в курсовой и лабораторной работе.
Управляющий сигнал обеспечивает сброс счетчика в начальное состояние, если Х1=0 в разряде регистра А1 (аккумулятор), а Х2=0 в разряде регистра А3 (аккумулятор) : обеспечивает останов счета. Cигналы управления вводятся в аккумулятор МП побайтно.
Рассмотрим последовательность применения управляющих сигналов.
а) выделение сигнала Х1. Для этого применим команду логического умножения (конъюнкция) АNI X, где Х – число (соnst), позволяющее выделить любой разряд (ы) регистра (аккумулятора). В нашем примере константа 02 (ANI 02), которая позволяет выделить разряд сигнала Х1.
б) определение значения разряда (1 или 0) управляющего сигналаХ1: применяем команды JZ или JNZ.
Аналогично для сигнала Х2:
а) выделение сигнала Х2 (сонстанта 08):
б) определение значения разряда сигнала Х2: применяем команды JZ или JNZ.
Пусть Х1 =Х2=1, то есть рассмотрим ситуацию, когда счетчик работает без воздействия управляющих сигналов:
4.Разработка программы счетчика табличным методом.
Сущность метода построения счетчика: в памяти МПС на программном уровне формируется таблица (одномерная), в которой по адресу, соответствующему текущему состоянию, записано число (в памяти), которое соответствует следующему состоянию счетчика.
Пример: разработать счетчик табличным методом с произвольным порядком смены состояний.
Пусть счетчик имеет начальное состояние Q0 = 4
4 →0 →14→12 →8
NAT какой-нибудь адрес.
NAT +
Фрагмент программы:
MOV A,C ;(А)← (C)
OUT OUTPORT ;вывод значений счетчика
LXI H,NAT ;загружаем данные таблицы
MVI B,0 ;обнуляем регистр В
DAD B ;(H-L) ← (H-L)+(B-C)
MOV A,M ;(A) ←([H-L])
MOV C,A ;(C) ←(A)
JMP M1
NAT: db 0Еh,0h,0h,0h,0h,0h,0h,0h,4h,0h,0h,0h,8h
include stack.asm
end