- •Вторая лекция
- •Третья лекция
- •Четвертая лекция Карты Карно
- •Кдп Данные
- •Адрес Ячейки зу
- •Пятая лекция
- •Интерфейс
- •Шестая лекция
- •Часть с:__ функции
- •Режимы обмена
- •Дерево вызова процедур п ример с охранной сигнализацией
- •Микропроцессорный комплект с фиксированной разрядностью 580 серии
- •Машинные циклы
- •Система машинных команд кр580вм80
- •Формат команд
- •Команды передачи данных
- •00 110 110 00 000 001 - 1 Загружается в ячейку памяти,адрес которой записан в паре регистров h,l.
- •4.Stax, ldax - передача данных между регистрами а и ячейками памяти, адрес которых хранится- в паре регистров вс,de.
- •Формат команды: 00 ddd 101
- •Input, output - выполняется особый цикл чтения/записи во внешнее устройство, адрес ву в цикле обращения к ву выдается на 8 младших бит шины адреса.
- •1.Режим таймера - генератор временных интервалов
- •1.Вывод произвольных кодовых комбинаций, которые фиксируются до появления следующих.
- •Используется 4 способа адресации:
- •4.Неявная адресация.
4.Неявная адресация.
В коде операции содержится неявное (по умолчанию ) указание на один из операндов, обычно это
аккумулятор.
MOV A,Rn
Возможен обмен между:
регистром и аккумулятор
X CH A,Rn A Rn
аккумулятором с ячейкой, адрес которой хранится в R0,R1
X CH A,@Ri A ((Ri))
младшая тетрада аккумулятора и байта РПД
обмен с памятью программ
MOV P A,@A
Содержимое аккумулятора передается через порт РО во внешнюю память, при этом младшая часть адреса будет располагается с 0 по 7 бита Р0.В программный счетчик записывается то, что было в аккумуляторе.
обращение к ячейке ПП, которая располагается в 3 странице.
Содержимое аккумулятора является косвенным адресом ячейки ПП внутри 3 страницы, выбранная ячейка засылается в аккумулятор.
MOV P3 A,@A
обмен с портами
IN A, Po - пересылка за два цикла из порта Ро в А
1-ый цикл - код операции, 2-ой цикл - номер адресуемого устройства
INS A, Po
OUTL Po, A
OUTL BUS, A
MOV D Po, A - ввод тетрады в порт Ро из А для схемы расширения внешнего адреса
MOV D A, Po.
Счетчик команд содержит 12 бит, инкрементируются только 11 младших, поэтому счетчик команд из предыдущего состояния 7FFH перейдет в состояние 000, состояние старшего бита счетчика команд может быть изменено командами:
SEL MB0, SELMB1 - установка бита памяти программ в 0 (1), т.о. память программ разбита на 2 банка по 2 кбт, кроме того, ПП разбивается на страницы по 256 Бт.
В условных переходах задается 8-битный адрес в пределах страницы. Команда вызова подпрограмм CALL модифицирует 11 бит счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного банка ПП. При обработке прерываний старший бит счетчика команд (12-ый) принудительно устанавливается в “0”, т.е. подпрограммы обслуживания прерывания и все подпрограммы, вызываемые ею, программист обязан размещать в пределах нулевого банка памяти.
ГРУППА АРИФМЕТИЧЕСКИХ КОМАНД
Содержит 12 команд:
1.Двоичное сложение ADD
2.Двоичное сложение с переносом ADDC
3.Десятичная коррекция DA
4.Инкремент INC
5.Декремент DEC
При сложении используется неявная адресация источника первого операнда и места назначения результата (всегда аккумулятор). Содержимое аккумулятора можно сложить с содержимым регистра, константой, с ячейкой памяти ПД. Возникающие переносы фиксируются в триггере переноса (флаг С). Вычитание выполняется сложением в двоичном дополнительном коде. Более сложные операции выполняются по специальным подпрограммам.
ГРУППА ЛОГИЧЕКИХ ОПЕРАЦИЙ
Содержит 28 команд, позволяющих выполнять:
1.Дизъюнкцию
2.Конъюнкцию
3.Исключающее ИЛИ
4.Инверсию
5.Сброс
6.Сдвиг
Все операции выполняются над содержимым аккумулятора, а также флагами (сброс, инверсия). Над содержимым порта Ро и константой совершается операция “И”, ”ИЛИ”. Над содержимым портов Р1 , Р2 и константой или содержимым аккумулятора можно выполнять операции “И”, ”ИЛИ”.. Вторым операндом могут быть регистры, ячейка РПД.
ГРУППА КОМАНД ПЕРЕДАЧИ УПРАВЛЕНИЯ.
Представлена 19 командами, из них:
2 команды безусловного перехода
14 команд условного перехода
команда вызова подпрограммы
2 команды возврата.
Команды ветвления с прямой адресацией.
В теле команды содержится 8 или 11 бит адреса перехода, форматы 3-ий и 4-ый.
JMP - безусловный переход, позволяет передать управление в любое место 2кбт банка ПП. Номер банка ПП определяется флагом МВ, значение которого копируется в старший бит счетчика команд при выполнении команды JMP, CALL. Для перехода из нулевого банка ПП в первый недостаточно установить флаг МВ, необходимо также выполнить команду перехода JMP, которая и изменит значение старшего бита счетчика команд. Все остальные команды ( кроме команд возврата) содержат только 8 младших бит адреса перехода, при этом оказывается возможным совершить переход только в пределах одной страницы ПП - команда короткого перехода. Если команда короткого перехода расположена на границе двух страниц, то переход будет выполнен в пределах той страницы, где располагается второй байт команды. Для условного перехода с одной страницы на другую используется тандем (пара команд) из команды условного перехода и команды длинного безусловного перехода.
Переход по косвенному адресу.
JMPP - осуществляет переход по адресу, содержащемуся в ячейке памяти программ, на которую указывает содержимое аккумулятора, т.о. аккумулятор содержит адрес адреса перехода. Ячейка с адресом должна находится на той же странице ПП, что и команда перехода JMPP. Команда косвенного перехода обеспечивает простой доступ к некоторой таблице, содержащей результаты перехода к подпрограмме в зависимости от содержимого аккумулятора, что позволяет реализовать механизм множественных ветвлений.
Условные переходы.
По команде условного перехода проверяются не только внутренние флаги. но и некоторые сигналы внешних входов МК, Это позволяет эффективно выполнять ветвление в программе без использования процесса предварительного ввода и последующих сравнений. Все команды условных переходов используют прямую короткую адресацию, что накладывает ограничение на размещение программ в памяти.
1.Удобство программирования простых функций, которые умещаются в небольших программных объемах.
2.Если требуется большой объем затрат, сложные задачи, эту ОМЭВМ не используют, т.к. низкие мощности для сложных математических вычислений.
ПРОГРАММНЫЕ ЦИКЛЫ
Традиционно циклы строятся таким образом:
В ЯП или регистре создают счетчик циклов, для этого записывают в регистр число, соответствующее числу повторений цикла, и при каждом переходе тело цикла декрементирует это число. При достижении величины счетчика 0-го значения осуществляется выход из тела цикла.В МК-48 для организации циклов используется команда DJNZ. Эта команда производит декремент и последующую проверку на 0 содержимого регистра счетчика цикла. Если его содержимое равно 0 . то - выход из цикла, в противном случае - переход к началу цикла.
ПОДПРОГРАММЫ
Для вызова подпрограмм существует команда CALL, позволяющая обратиться в любое место текущей памяти программы. При вызове подпрограммы в стеке записывается адрес возврата и часть PSW. Глубина вложения подпрограммы ограничена емкостью стека и не должна превышать 8.
Для возврата из подпрограммы используется команда RET, которая восстанавливает в счетчике команд адрес возврата,
Для выхода из подпрограммы обработки прерывания используется команда RETR, которая кроме адреса возврата восстанавливает PSW и разрешает прерывания от данного источника. При программировании необходимо отслеживать ситуацию вызова подпрограммы, находящейся в альтернативном банке ПП, В этом случае перед вызовом подпрограммы необходимо выбрать соответствующий банк памяти, а перед возвратом восстановить старое значение указателя банка. Если в подпрограмме нет команды восстановления указателя банка МВ, то возврат все же будет выполнен правильно, т.к. в стеке полный действительный адрес возврата. Однако, первая же команда длинного перехода передаст управление в альтернативный банк памяти программы. Если в подпрограмме производится обращение из разных банков ПП, то оказывается затруднительным восстановить значение указателя банка перед возвратом. В этом случае обычно используют команду восстановления МВ в основной программе вслед за командой вызова.
ГРУППА КОМАНД УПРАВЛЕНИЯ
РЕЖИМАМИ РАБОТЫ МК
В эту группу входят команды управлением таймером/счетчиком, прерываниями, флагами переключения банков регистров и банков ПП.
Операции с таймером
MOV A,T
MOV T,A
с помощью этих команд содержимое таймера может быть прочитано во время остановки счета и во время счета “налету” или изменено (перезагружено).Таймер может быть использован как счетчик тактов или как счетчик событий, соответственно от внутреннего и внешнего источника сигналов. Имеется команда разрешения и запрета прерывания от таймера. При перезагрузке по команде RESET все виды прерывания запрещены.
Переключение банков регистров иПП
Переключение банков в ПП (изменение старшего бита счетчика команд) происходит в момент выполнения команды длинного перехода или вызова подпрограммы. Команды переключения банков регистров позволяют эффективно использовать второй банк регистров в качестве рабочего, сохраняя параметры вычислительного процесса не в стеке, а в исходном банке регистров. При программировании процедур обработки прерываний можно переключать или не переключать банки регистров. В этом случае когда банки регистров переключаются , возврат к исходному банку регистров будет выполнен автоматически, Если подпрограмма обработки прерывания оканчивается командой возврата с восстановлением PSW (RETR), команда ENT0 разрешает передачу на вывод Т0 импульсов тактовой частоты , деленных на 3, Отключается этот сигнал только сигналом общего сброса. Обычно этот сигнал используют для синхронизации внешних устройств, согласованных с МК по частоте работы (для осуществления синхрообмена).
СТРУКТУРНО-ЛОГИЧЕСКАЯ СХЕМА МК-51
8-битное АЛУ выполняет:
- сложение
- вычитание
- умножение
- деление
- операцию “И”
- операцию “ИЛИ”
- операцию “Исключающее ИЛИ”
- сдвиг
- сброс
- инверсию и т.д. и т.п.
В АЛУ используются программно-недоступные регистры Т1, Т2 временного хранения операндов, схема десятичной коррекции и схема формирования признаков. Особенностью АЛУ является его способность оперировать с битами, при этом отдельные программно доступные биты памяти могут быть установлены, сброшены, инвертированы, переданы , проверены и использованы в логических операциях, АЛУ оперирует 4 типами информационных объектов:
- булевскими
- цифровыми
- байтными
- адресными
АЛУ выполняет 51 различные операции пересылки или преобразования этих данных. Т.к. используется 11 различных режимов адресации(7 - для данных, 4- для адресов), то путем комбинирования операций режимов адресации базовое число команд 111 расширяется до 255, один код адреса пустой.
ОРГАНИЗАЦИЯ ВНУТРЕННЕЙ ПАМЯТИ
Память данных и память программ физически и логически разделены. Работают под управлением разных сигналов и выполняют разные функции.
ПП - емкость 4 кБт, имеет 16-битную ША, через которую обеспечивается доступ из счетчика команд или из регистра-указателя данных (ДПТР), который выполняет функции базового регистра при косвенных переходах или используется в командах , оперирующих с таблицами.
ПД (ОЗУ) адресуется одним байтом, емкость 128 байт К адресному пространству РПД примыкают адреса регистров специальных функций.
Допустимо расширение ПП и ПД до 64 кБт путем подключения внешней памяти.
Таблица регистров специальных функций.
Символ |
Наименование |
Адрес |
Примечание |
Асс |
Аккумулятор |
0Е0 |
побитно адресуемый |
B |
Регистр расширитель аккумулятора |
F0 |
побитно адресуемый |
PSW |
Слово состояния процесса |
D0 |
адресуемый побитно |
SP |
Указатель стека |
81 |
не адресуемый побитно |
DPTR |
Регистр- указатель данных |
|
|
|
DPL |
82 |
не адресуемый побитно |
|
DPH |
83 |
не адресуемый побитно |
Порт Р0 |
|
80 |
адресуемый побитно |
Р1 |
|
90 |
адресуемый побитно |
Р2 |
|
А0 |
адресуемый побитно |
Р3 |
|
В0 |
адресуемый побитно |
IP |
Регистров приоритетов |
B8 |
адресуемый побитно |
IE |
Регистр маски прерываний |
A8 |
адресуемый побитно |
TMOD |
Регистр режима таймера-счетчика |
89 |
не адресуемый побитно |
TCON |
Регистр управления/ /статуса таймера |
88 |
адресуемый побитно |
TH0 |
Старший байт таймера 0 |
8C |
не адресуемый побитно |
TN0 |
Младший байт таймера 0 |
8A |
не адресуемый побитно |
TH1 |
Старший байт таймера 1 |
8В |
не адресуемый побитно |
TL1 |
Младший байт таймера 1 |
8D |
не адресуемый побитно |
SCON |
Регистр управления приемом передатчика |
98 |
адресуемый побитно |
SBUF |
Буфер приема передатчика |
99 |
не адресуемый побитно |
PCON |
Регистр управления мощностью и режимами работы |
87 |
не адресуемый побитно |
PSW - 8-разрядный регистр
С PSW7 - флаг переноса устанавливается или сбрасывается аппаратно или программно (аппаратно при выполнении арифметических и логических операций).
AC PSW6 - вспомогательный перенос - перенос из 3-го бита.
F0 PSW5 - флаг, устанавливаемый пользователем.
RS1 PSW4 - выбор банков регистров.
RS0 PSW3 - выбор банков регистров, устанавливается и обрабатывается программно.
OV PSW2 - бит переполнения.
PSW1 - не используется.
P PSW0 - бит паритета, устанавливается и сбрасывается аппаратно, указывает на четное число единиц в аккумуляторе.
RS1 |
RS0 |
Границы адресов |
0 |
0 |
00 - 07 1-ый банк |
0 |
1 |
08 - 0F 1-ый банк |
1 |
0 |
10 - 17 2-ой банк |
1 |
1 |
18 - 1F 2-ой банк |
Банки регистров в памяти располагаются последовательно.
Отличия МК-51 от МК-48
- Данные могут быть переданы из любой ячейки РПД в любой регистр.
- Любой регистр может быть загружен непосредственно операндом.
- Многие логические и арифметические операции выполняются без участия Аккумулятора.
- Могут быть проверены флаги регистров специальных функций.
- АЛУ может оперировать не только с Аккумулятором, но и с другими регистрами.
Регистры - указатели
1.Указатель стека SP.
Адресует любую область РПД , инкрементируется до фиксации данных в стеке, декрементируется после выполнения команд со стеком.
Команды, изменяющие указатель стека:
PUSH
POP
CALL
RET
2.Указатель данных DPTR.
Используется для фиксации 16-битного адреса в операциях с обращением к внешней памяти.
Программно может быть использован как 16-битный или два 8-битных регистра.
Таймер – счетчик.
Представляется регистровыми парами
TH0, TH1
TN0, TL1, на основе который функционируют два независимых программно-управляемых счетчика.
Регистр SBUF.
Представляет два независимых регистра:
- буфер приемника
- буфер передатчика.
Загрузка байта в SBUF вызывает немедленно начало процесса передачи через последовательный порт. При чтении байта из SBUF предполагается, что его источником является приемник последовательного порта.
Регистры специальных функций
IP, IE, TMOD, TCON, SCON, PCON используются для фиксации и программного изменения управляемых бит и бит состояния схемы прерывания (IP, IE) , таймера/счетчика (TCON, TMOD), приема передатчика последовательного порта (SCON), управления мощностью эл. питания МК(PCON).
МАШИННЫЙ ЦИКЛ
Машинный цикл - длительность 12 фаз (фиксированный). Каждое состояние управляющего автомата содержит две фазы сигнала кварцевого резонатора. В первой фазе выполняются операции в АЛУ, во второй фазе - межрегистровая передача. Большинство команд выполняется за один машинный цикл, некоторые команды (двухбайтовые - обращение к внешней памяти) выполняются за два машинных цикла. Команды деления и умножения занимают 4 машинных цикла.
ПОРТЫ ВВОДА/ВЫВОДА
Каждый порт содержит регистр-защелку, входной буфер и выходной драйвер. Выходные драйвера портов Р1 и Р2, а также входной буфер порта Р0 используется при обращении к внешней памяти.
Р0 - двунаправленный
Р1, Р2, Р3 - квазидвунаправленные
Все выводы порта Р3 для реализации альтернативных функций, альтернативные функции могут быть задействованы путем записи 1 в соответствующие биты регистров-защелок порта Р3.
Порт Р3
RD - P3.7
WR - P3.6
T1 - P3.5
T0 - P3.4
INT1 - P3.3
INT0 - P3.2
TXD - P3.1
RXD - P3.0
Порт Р0
Каждая линия порта может быть использована независимо для ввода или вывода информации. Для использования линии порта для ввода в триггере-защелке порта должны быть записаны 1. По сигналу RESET в регистры-защелки всех портов автоматически записываются 1. настраивая их на режим ввода.
Все порты могут быть использованы для организации ввода/вывода по двунаправленным линиям передачи. Порты 0 и 2 не используются при наличии внешней памяти (при отсутствии внутренней памяти программно), связь с которой осуществляется через общую разделенную шину, работающую в режиме временного мультиплексирования.
Особенности работы портов
Существует режим чтение/модификация/запись.
Этот режим предполагает ввод сигналов не с внешних регистров порта, а с его регистров-защелок, что исключает неправильное считывание ранее введенной информации. Применение режима прямого доступа к регистрам-защелкам внешних выводов порта обусловлено неизбежностью искажения информации при ее прочтении, вызванное изменением сигнала на внешних выводах порта. Для того, чтобы биты порта использовались по назначению осуществляется режим чтение/модификация/запись.
РЕЖИМЫ РАБОТЫ ТАЙМЕРА/СЧЕТЧИКА
Для управления режимами работы таймера/счетчика и для организации взаимодействия таймера и основной программы используются регистры:
TMOD - регистр режима таймера/счетчика
TCON - регистр управления статуса таймера.
Существуют 4 режима работы таймера/счетчика:
Режим 0
На вход Thj подключается TLj. Таймерный регистр имеет разрядность в этом режиме 13 бит (используется переход 1FFF в 0 - устанавливается флаг TFj).Установка бита Gate в 1 позволяет использовать таймер для измерения длительности импульсного сигнала, подавая на вход сигнал на прерывания.
C/T=0
OSC :12
TLj THj TFj
T8 C/T=1
T CON TRi
&
Gate
1 Упр
INTj
Режим 1
Работа таймера/счетчика совпадает с режимом 0 за исключением того, что Таймерный регистр имеет разрядность 16 бит.
Режим 2
Работа осуществляется т.о., что переполнение TLj приводит не только к установке флага, но и автоматически перезагружает в TLj содержимое THj, который может быть предварительно загружен.
Режим 3
Таймер/счетчик 1 и таймер/счетчик 2 работают по-разному. Таймер/счетчик 1 не меняет своего состояния, т.е. не работает. Таймер/счетчик 2 функционирует как два независимых счетчика. Работу TH0 определяет бит TR1, счетчик работает только в режиме таймера, а TL0 работает как независимый 8-разрядный таймер/счетчик. TH0 не использует флаг TF1, поэтому прерывания по таймеру/счетчику невозможны. Таймер/счетчик может быть либо включен, либо выключен, либо может быть использован последовательным портом в качестве генератора частоты передачи, либо в любом другом случае, не требующем прерываний. Этот режим используется, когда требуется наличие дополнительного 8-битного таймера или счетчика событий.
Режим 2
C/T=0
OSC :12
TLj TFj
T8 C/T=1
&
T CON TRi
&
Gate
o 1 Упр THj
INTj
Режим 3
OSC :12 TH0 TF1
TR1
C/T=0 TL0 TF0
T0 C/T=1
TR0
&
Gate
o 1 Упр
INT0
ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС
МК-51 имеет дуплексный периферийный связной адаптер, который может быть запрограммирован в одном из 4 режимов в зависимости как расставлены биты в SCON:
0: Синхронный последовательный ввод/вывод со скоростью OSC/12.
1: Асинхронный с 10-битовым кадром и переменной скоростью передачи.
10 бит распределяются:
- 1 бит стартовый
- 1 бит стоковый
- 8 бит информационных
2: Асинхронный с 11-битовым кадром и с фиксированной скоростью передачи (OSC/12, OSC/64)
Добавляется бит четности.
3: Асинхронный с 11 битовым кадром и переменной скоростью передачи.
Входные и выходные данные хранятся в буфере SBUF. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициализирует начало передачи байта.
СИСТЕМА ПРЕРЫВАНИЙ
Внешние прерывания могут быть вызваны либо задним фронтом, либо уровнем в зависимости от значений управляющих бит в регистре TCON биты IT0, IT1. От внешних прерываний устанавливаются флаги IE0, IE1 в регистре TCON, который инициализирует вызов соответствующей подпрограммы прерывания. Сброс этих флагов выполняется аппаратно, только если прерывание вызвано фронтом сигнала. Если прерывание вызвано уровнем, то сбросом флага IE управляет соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия или запроса. Флаги запросов прерываний от TFj сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерывания RI, TI от последовательного порта устанавливаются блоком управления последовательного порта аппаратно, но сбрасываются программно. Т.к. установка и сброс всех прерываний осуществляется через программно доступный регистр IP (т.е. все флаги программно доступны), то прерывания могут быть вызваны или отменены программно точно также, как если бы они были вызваны или отменены аппаратно.
Имеются два регистра, которые управляют режимами прерывания и уровня приоритетов IE и IP.
Формат этих регистров
Адресный вектор
IT0
1
0
INT0 1
IE0
1
Порядок опроса
TF0 2
при равенстве
1
0
INT1 3
IE1
1
приоритета
IT1
TF1 4
5
П рерывания TI 1
о т последо- RI
вательного
п орта
Адресный вектор
EX0
0003 & PX0 IP0
IE1
ET0
000B & PT0 IP1
IE2
EX1
0011 & PX1 IP2
IE3
ET1
001B
& PT1 IP3
IE4
ES
0023 & PS IP4
IE7
EA
Вызов прерываний аппаратно аналогично команде LCALL, если она не заблокирована одним из условий. Текущий машинный цикл не последний в цикле выполняемой команды. Выполняется команда RETI (возврат из подпрограммы обработки прерывания с разрешением прерывания) или любая команда, связанная с обращением к регистрам IE, IP по аппаратно сформированному коду LCALL. Система прерывания помещает в стек содержимое СК и загружает в СК адрес-вектор соответствующей подпрограммы. По необходимости программист должен учитывать, что PSW, аккумулятор, регистр В, указатель данных DPTR и прочее в стеке не сохраняются, т.о. для этого следует пользоваться командами PUSH, POP. Подпрограмма обслуживания прерывания заканчивается командой RETI, по которой РС перезагружается из стека.