М.В. АГУНОВ
МИКРОПРОЦЕССОРЫ В ВОПРОСАХ И ОТВЕТАХ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ТОЛЬЯТТИНСКИЙ ПОЛИТЕХН...
28 downloads
305 Views
2MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
М.В. АГУНОВ
МИКРОПРОЦЕССОРЫ В ВОПРОСАХ И ОТВЕТАХ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ТОЛЬЯТТИНСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
М.В. АГУНОВ
МИКРОПРОЦЕССОРЫ В ВОПРОСАХ И ОТВЕТАХ
Допущено Министерством образования Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по электротехническим специальностям
Тольятти 2000
УДК 681.31-181.48
Агунов М.В. Микропроцессоры в вопросах и ответах: Учебное пособие. – Тольятти: ТолПИ, 2000, 82с. Приведены вопросы, задачи и упражнения по разделам: архитектура микропроцессорных систем, представление информации в микропроцессорных системах и машинная арифметика, архитектура микропроцессора К1816ВЕ51 и его интерфейсы, программное обеспечение микропроцессора К1816ВЕ51, проектирование устройств и систем на базе микропроцессоров, современные способы диагностирования микропроцессорных систем и устройств. Для студентов электротехнических специальностей вузов. Ил.25. Табл 10. Библиогр.: 12 назв.
Научный редактор Засл. деят. Науки и техн. д.т.н., проф. Ивашин В.В.
Рецензенты: кафедра “Сервис бытовой радиоэлектронной аппаратуры” ПТИС (зав. кафедрой д.т.н., проф. Абрамов Г.Н.); кафедра “Математики” ТФ ВИТУ (зав. каф. к.т.н., доц. Зарубин Б.М.); Лауреат Государственной премии Молдовы в области науки и техники, д.т.н., проф. Аникин В.И.
Утверждено редакционно-издательской секцией методического совета института.
ISBN 5-8259-0031-4
© М.В. Агунов, 2000 © ТолПИ, 2000
Достижения микропроцессорной техники широко используются практически во всех сферах человеческой деятельности. В связи с этим знание современными специалистами микропроцессорной техники становится обязательным условием успешной производственной деятельности. Чтобы овладеть знаниями необходимо, кроме усвоения теории научиться решать конкретные задачи, связанные с выбором того или иного элемента, той или иной схемы микропроцессорной системы, овладеть хотя бы простейшими расчётами, понять физическую сущность явлений и процессов, происходящих в микропроцессорных системах, освоить элементарные приёмы программирования. Именно эта цель преследовалась при подборе предлагаемых вопросов, задач и упражнений. Значительную часть учебного пособия составляют вопросы, которые могут использоваться как для самопроверки, так и для закрепления материала, ответы на которые студент найдёт, познакомившись с краткой теорией, приводимой вначале каждой главы. Некоторые вопросы потребуют изучения дополнительной литературы.
1. АРХИТЕКТУРА МИКРОПРОЦЕССОРНЫХ СИСТЕМ 1.1. Краткие теоретические сведения Первая электронная цифровая вычислительная машина (ЭВМ) была построена в США в 1946 году под руководством американского учёного Д. Неймана. Она содержала около 18000 ламп, которые использовались для построения арифметического и запоминающего устройств, основу которых составляли триггерные ячейки. В 1950 году под руководством академика С.А. Лебедева была создана первая отечественная ЭВМ - малая электронная счётная машина (МЭСМ). Несмотря на своё несовершенство, первые ЭВМ продемонстрировали грандиозные возможности цифровой вычислительной техники, под которой подразумевают совокупность средств, предназначенных для ускорения и автоматизации процессов, связанных с вычислениями. Для автоматического выполнения сложных математических расчётов требуются не отдельные вычислительные устройства, а целые комплексы
3
вычислительных и вспомогательных устройств с общей системой управления, которые и принято называть ЭВМ или компьютерами. На рис. 1.1 представлена простейшая структурная схема ЭВМ. В общем случае вычислительная машина состоит из собственно вычислительного устройства, где выполняются арифметические и логические действия; устройств ввода, предназначенных для ввода исходных данных; устройств вывода, предназначенных для представления результатов вычислений в виде, удобном для практического использования; устройства управления, осуществляющего координацию работы всех устройств машины. Вычислительное устройство совместно с устройством управления называют процессором. Память служит для приёма, хранения и выдачи чисел. Память делится на оперативное (ОЗУ) и постоянное (ПЗУ) запоминающие устройства. ОЗУ осуществляет приём, хранение и выдачу промежуточных результатов, а также данных и программ, участвующих в ближайшем ряде операций. ПЗУ хранит постоянные величины (константы), а также программы по которым выполняются часто встречающиеся (периодические) действия. Управление режимами работы машины осуществляется с пульта (терминала). Управление реальными объектами осуществляется контролерами управляющими вычислительными машинами. Контролеры отличаются от обычных ЭВМ главным образом своими входными и выходными устройствами, а также режимом работы. В качестве входных устройств здесь используются устройства связи с объектом (в простейшем случае - аналогово-цифровые преобразователи (АЦП)), а в качестве выходных - преобразователи сигналов (в простейшем случае - цифро-аналоговые преобразователи (ЦАП)). Приведённая на рис. 1.1 структурная схема вычислительной машины носит название радиальной, а машины, построенные по такой схеме, - ЭВМ с радиальной архитектурой. Архитектура ЭВМ - это искусство организации вычислительной машины, определяющее процесс обработки данных в конкретной вычислительной машине и включающее методы кодирования данных, состав, назначение, принципы взаимодействия технических средств и программного обеспечения. Существует большое многообразие ЭВМ с различными архитектурами, сущность которых определяется талантом и изобретательностью их разработчиков. На рис. 1.2 приведена структурная схема ЭВМ, построенной по магистральной архитектуре.
4
Магистраль (шина) - это группа линий передачи информации, объединённых общим функциональным признаком (например, магистраль данных, адресов, управления). Магистраль представляет собой набор проводников, к которым параллельно подсоединены все компоненты ЭВМ. Посылая по магистрали электрические сигналы, любая компонента ЭВМ может передавать информацию другим компонентам. В определённый момент времени обмен информацией может происходить только между определёнными двумя компонентами ЭВМ. В современных ЭВМ обмен информацией происходит на частотах десятков мегагерц, что позволяет рассматривать магистраль как длинную линию,
5
т.е. такую линию, физические размеры которой сравнимы с длинной волны передаваемого по ней сигнала. В длинных линиях время распространения тока и напряжения получается такого же порядка, что и период передаваемых сигналов. Вследствие этого в таких линиях процессы рассматриваются не только во времени, но и в пространстве. Когда к длинной линии подключен генератор переменной ЭДС, то вдоль линии движется волна, представляющая собой распространение электромагнитного поля в одном направлении, в данном случае от генератора к концу линии. Для каждой линии отношение амплитуды напряжения волны к амплитуде тока является постоянной величиной и называется волновым сопротивлением линии ρ .
Волновое сопротивление определяется по формуле
линии ρ=
зависит
от
её
конструкции
и
L , C
где L и С соответственно распределенные индуктивность и емкость линии. Движущаяся волна, дойдя до конца линии, отражается и двигается обратно к генератору. Таким образом, в линии распространяются две волны: падающая - движется от генератора и отраженная - движется в обратном направлении. Сложение этих двух волн приводит к искажению передаваемого сигнала и потере работоспособности магистрали. Для характеристики режима линии пользуются коэффициентом бегущей волны (кбв), введенным А.А. Пистолькорсом в 1927 г.: ρ R
кбв= .
6
При ρ = R , кбв=1. Другими словами, отраженной волны не будет, если линию нагрузить активным сопротивлением R, равным волновому сопротивлению линии ρ. Для образования режима бегущей волны в линии ( т.е. такого режима, когда отраженная волна отсутствует ) магистраль должна быть согласована на концах. Согласование магистралей производят с помощью заглушек, схема которых показана на рис. 1.3. Кроме согласования волнового сопротивления линии, заглушка должна обеспечить требуемый уровень напряжения на линии. Поскольку шина питания и общий провод в заглушке соединены между собой конденсаторами, сопротивления которых на высоких частотах порядка 10 МГц в соответствии с Zc=
1 , 2π ⋅ fC
где f - частота в Гц, С - емкость в Ф, становится пренебрежимо малым, эквивалентная схема заглушки на рабочих частотах будет представлять параллельное соединение сопротивлений (рис. 1.4). Таким образом, для заглушки, выполненной, как показано на рис. 1.3, условием согласования линии магистрали является равенство R1 R2= ρ . В современных ЭВМ за каждой линией закреплен соответствующий сигнал, причем конструктивно за каждым сигналом закреплен один и тот же контакт на всех разъемах, предназначенных для подключения внешних устройств к магистрали. Последнее позволяет гибко менять состав и структуру ЭВМ, осуществлять наращивание ее аппаратных средств в зависимости от требования решаемого круга задач. Связь между блоками, подключенными к магистрали, осуществляется, как правило, с помощью трех шин ( групп линий магистрали ): шины адресов, шины данных и шины управления. Шина данных - это двунаправленные линии, по которым передается информация между устройствами ЭВМ. Процесс однократного обращения к шине данных называется шинным циклом. Шинный цикл обычно состоит из нескольких периодов - машинных тактов и сопровождается сигналами управления, определяющими тип цикла (цикл чтения данных, цикл записи данных и т.д.). Если одним из устройств, участвующих в обмене данными, является процессор, то сигналы на линии управления поступают от процессора.
7
Кроме сигналов управления процессор выставляет сигналы адреса на линии шины адреса, определяющие номер устройства, с которым в данный момент происходит обмен данными. Кроме процессора, сигналы для линий управления и линий адреса могут формироваться некоторыми устройствами, так называемыми контролерами прямого доступа к памяти.
Прямой доступ к памяти (ПДП) -это способность системы передавать или принимать данные непосредственно от устройств ввода-вывода в ОЗУ или из ОЗУ без использования процессора. Для инициирования ПДП, контролер по одной из линий шины управления, выделенной для этой цели, выставляет запрос ПДП в процессор. Процессор, получив запрос ПДП, отключается от линий магистрали (переводит свои выводы в состояние с высоким сопротивлением,
8
так называемое высокоимпедансное состояние) и выдаёт на шину управления подтверждение ПДП. Получив подтверждение ПДП, контроллер ПДП захватывает магистраль, т.е. становится задатчиком сигналов на шине управления и шине адреса. Закончив обмен данными, контролер ПДП снимает запрос ПДП, и процессор возобновляет свою работу. ПДП позволяет увеличить скорость обмена данными в системе, поскольку в режиме ПДП обмен данными между элементами системы происходит непосредственно, минуя процессор. Иногда в процессе работы системы, в моменты времени, заранее не известные, может возникнуть некоторое внешнее условие, требующее обработки (обслуживания) специальной программой обработки (подпрограммой). Реакция процессора на это условие называется прерыванием. Процесс прерывания осуществляется следующим образом. Устройство, в котором возникло условие, требующее обслуживания, вырабатывает (генерирует) по специально выделенной для этого линии шины управления запрос на прерывание и поддерживает его до тех пор, пока приём этого сигнала не будет подтверждён процессором. После подтверждения прерывания устройство, требовавшее обслуживания, выставляет на шину данных так называемый вектор прерывания (номер(адрес) ячейки памяти, с которой начинается подпрограмма обслуживания прерывания ). Процессор считывает вектор прерывания и переходит к выполнению подпрограммы обслуживания прерывания. По окончанию обслуживания процессор возобновляет свою работу по основной программе с места, в котором произошло прерывание. Чтобы возобновить работу с того места, в котором произошло прерывание, необходимо запомнить промежуточные результаты работы процессора, а также адрес ячейки ОЗУ, в которой находится команда, которая бы выполнялась следующей, если бы прерывание не произошло. Для этих целей в ОЗУ выделяется некоторое количество ячеек, называемых стеком. Стек - это структура данных или устройство памяти, организованное по принципу “последним вошёл - первым вышел”, т.е. данные, поступившие в стек, будут извлекаться из него в обратном порядке. Для организации стека в процессоре предусмотрен специальный указатель стека. Указатель стека - это регистр-счётчик, содержимым которого всегда является адрес. Указатель стека загружается адресом, представляющим собой вершину стека (точку входа в стек). Рассмотрим функционирование стека на следующем примере. Пусть в момент возникновения прерывания процессор должен был бы приступить к выполнению команды с адресом в ОЗУ 800АН, при этом промежуточные результаты, которые необходимо сохранить, обозначим как А, а указатель стека пусть содержит 220АН, что на единицу старше первой ячейки памяти стека 2209Н. Последовательность событий при работе со стеком здесь может быть следующей.
9
1. Указатель стека декрементируется (уменьшается на единицу) от 220АН до 2209Н. 2. В ячейку памяти с адресом с адресом 2209Н помещаются данные 800АН. 3. Указатель стека снова декрементируется от 2209Н до 2208Н. 4. В ячейку памяти с адресом 2208Н загружаются данные А. Стек может продолжать расти, если в процессе обслуживания прерывания возникнет следующее прерывание (так называемое вложенное прерывание) и т.д. Стек не имеет ограничений за исключением тех, которые обусловлены наличием других программ в ОЗУ (т.е. стек не должен перекрывать ячейки ОЗУ, содержащие другие программы и их данные). По окончании обслуживания прерывания работа со стеком будет следующей. 1. Указатель стека указывает на ячейку 2208Н. 2. Из ячейки с адресом 2208Н выбираются данные А. 3. Содержимое указателя стека инкрементируется (увеличивается на единицу) с 2208Н до 2209Н. 4. Из ячейки памяти с адресом 2209Н выбираются данные 800АH. 5. Содержимое указателя стека снова инкрементируется от 2209Н до 220АН. Механизм прерывания является одной из важнейших характеристик компьютера, предоставляющий системе эффективное средство быстрого отклика на непредсказуемые события. Обработка прерываний повышает пропускную способность вычислительной системы, позволяет периферийным устройствам выдавать на микропроцессор запросы на обслуживание в тех случаях, когда они в нем нуждаются. Это гораздо эффективнее опроса периферийных устройств с целью выявления того, необходимо ли им обслуживание. 1.2. Вопросы и задачи Термины и определения 1. Что такое вычислительная техника ? 2. Что принято называть ЭВМ ? 3. Что называют процессором ЭВМ ? 4. Что такое контроллер ? 5. Дайте определение понятия “Архитектура ЭВМ“. 6. Что такое стек ? 7. Что такое прямой доступ к памяти ? 8. Дайте определение понятия прерывания.
10
Архитектура ЭВМ 9. Какие типы архитектуры ЭВМ вы знаете ? 10. Что такое магистраль ? 11. Укажите отличия однонаправленной магистрали от двунаправленной. 12. Какой тип памяти сокращенно называется ПЗУ ? 13. Какой тип памяти сокращенно называется ОЗУ ? 14. Где располагаются временные данные и результаты промежуточных вычислений ? 15. Временно или постоянно размещены данные в ПЗУ ? 16. Какие, по меньшей мере, шесть основных устройств входят в типовую микро-ЭВМ ? Волновое сопротивление магистрали 17. Длинная линия это: а) линия большой длины; б) линия, длина которой много меньше длины волны распространяющегося в ней сигнала; в) линия, длина которой сравнима с длиной волны распространяющегося в ней сигнала. Какое из утверждений а, б, в - правильное ? 18. Чем определяется волновое сопротивление линии ? Напишите формулу для его определения. 19. Что такое “режим смешанных волн в линии“ ? 20. Что такое “режим бегущей волны в линии“ ? 21. В каком случае говорят, что линии согласованы ? 22. Напишите формулу определения коэффициента бегущей волны. 23. Как называются устройства, предназначенные для согласования волнового сопротивления магистрали ? 24. Приведите схемы согласования магистрали. 25. Объясните, почему эквивалентная схема “заглушки“, показанной на рис. 1.3, выглядит на рабочих частотах магистрали так, как показано на рис. 1.4. 26. Определите параметры “заглушки“ (рис. 1.3), если волновое сопротивление магистрали 110 Ом, напряжение высокого уровня на магистрали 3,3 В, а напряжение питания “заглушки“ 5 В. 27. Чему равно волновое сопротивление магистрали, если резисторы R1 и R2 “ заглушки “ (рис. 1.3) одинаковы и равны 300 Ом. ? 28. Чему равен уровень напряжения в магистрали, если резисторы “заглушки“ (рис 1.3) равны R1=100 Oм, R2=250 Oм, а напряжение питания “заглушки“ 5В ? Определите волновое сопротивление магистрали.
11
1.3. Ответы 14. В ОЗУ. 15. Постоянно. 17. в. 26. Ток делителя “заглушки“ I=
5 . R1 + R2
(1.1)
Учитывая, что напряжение на линии магистрали равно 3,3 В, выражение для этого тока можно записать в следующем виде: I=
3,3 . R2
Подставляя (1.2) в (1.1), получим R1=0,5R2. Условие согласования магистрали определяется как
(1.2) (1.3)
R1R2 . R1 + R2
(1.4)
110∗1,5 = 330 (Ом) 0,5
(1.5)
110=
Подстановкой (1.3) в (1.4) определим величину резистора R2: R2= Из (1.3) находим R1=165 (Ом). 27. 150 Ом. 28. 3,6 В; 71 Ом.
12
2. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В МИКРОПРОЦЕССОРНЫХ СИСТЕМАХ И МАШИННАЯ АРИФМЕТИКА 2.1. Краткие теоретические сведения В ЭВМ арифметические и логические действия производятся над числами, представленными в виде специальных ( машинных ) кодов в принятых для данной машины системе счисления. Под системой счисления понимается способ наименования и изображения чисел с помощью символов, имеющих определенные количественные значения. Символы, применяемые для изображения чисел, называются цифрами. В зависимости от способа изображения чисел с помощью цифр системы счисления делятся на позиционные и непозиционные. Позиционной называется система счисления, в которой количественное значение каждой цифры зависит от ее места ( позиции ) в числе. Примером такой системы может служить общепринятая в настоящее время арабская ( десятичная ) система счисления. В непозиционной системе счисления цифры не меняют своего количественного значения при изменении положения в записи числа. К таким системам, например, относится римская система счисления, которая, однако, из-за сложности записи в ней многозначных чисел для вычислений не применяется. В позиционной системе счисления числа записываются в виде последовательности цифр A = am-1 am-2 ... ak ... a1 a0 . Позиции, пронумерованные индексами k ( в данном случае в пределах 0 ≤ k ≤ m − 1 ), называются разрядами числа. Индекс m соответствует количеству разрядов. Каждая цифра ak в записанной последовательности может принимать одно из некоторого количества N возможных значений, т.е. N − 1 ≥ ak ≥ 0 .
Количество ( N ) различных цифр, используемых для изображения чисел в позиционной системе счисления, называется основанием системы счисления. Поскольку цифра ak соответствует количеству единиц k-го разряда, содержащихся в числе, то основание ( N ) позиционной системы счисления указывает, во сколько раз единица ( k+1 )-го разряда больше единицы младшего
13
k-го разряда. Следовательно, записанную выше последовательность цифр, соответствующих целому числу, можно представить в виде: A( N ) = am −1 N m−1 + am− 2 N m − 2 + ...+ a1 N 1 + a0 N 0 .
В общем случае выражение для любого числа, состоящего из целой и дробной частей (неправильная дробь ), будет представлять собой ряд: A( N ) = ±[ am −1 N m− 1 + am − 2 N m− 2 + .. .+ a1 N 1 + a0 N 0 + a−1 N −1 +.. .+ a− l N − l ] ,
(2.1)
где m и l - число разрядов соответственно целой и дробной частей числа. Следует заметить, что в записи вида (2.1) основание N может быть разным для различных разрядов, например, запись угловых величин в градусах, минутах и секундах или запись величин, характеризующих время. Такие системы называются неоднородными, в отличии от однородных систем с равными основаниями для всех разрядов. В настоящее время в вычислительных машинах используются только однородные системы счисления. Основание N позиционной системы счисления определяет и ее название. Так, например, общепринятая десятичная система счисления имеет основание N=10. Любое число в этой системе записывается с помощью различных цифр: ak = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В качестве основания можно выбирать любое другое число. Такими числами, а следовательно и основаниями, могу быть: два, три, четыре, пять и т.д. Исторически так сложилось, что именно десятичная система оказалась общепринятой и широко применяемой при ручном счете и в электромеханических вычислительных устройствах. Однако с точки зрения простоты конструктивного выполнения отдельных устройств для ЭВМ оказываются удобными также другие системы счисления с основаниями два двоичная, восемь -восьмеричная и шестнадцать -шестнадцатиричная. Для записи чисел в двоичной системе счисления используются только две цифры: 0 и 1. В восьмеричной системе счисления числа изображаются с помощью восьми цифр: 0, 1, 2, 3, 4, 5, 6, 7. Для изображения чисел в шестнадцатиричной системе счисления требуется шестнадцать различных цифр. В этом случае берут обычные десять цифр от 0 до 9 и добавляют к ним шесть первых букв латинского алфавита от А до F, что означает: А- десять; В- одиннадцать; С- двенадцать; D- тринадцать; Ечетырнадцать; F- пятнадцать. 14
В подавляющем большинстве современных ЭВМ для представления чисел и выполнения арифметических и логических операций над ними применяется двоичная система счисления. Многоразрядные числа в двоичной системе счисления складываются, умножаются и делятся по тем же правилам, что и в десятичной системе счисления. Например: Сложение В десятичной системе 11,625 + 9,125 20,750
В двоичной системе 1011,101 + 1001,001 10100,110
Вычитание 11,750
1011,110
-
9,125 2,625
1001,001 0010,101
Умножение 13,50
1101,10 * 101,01 1101 10 00000 0 110110 000000 110110 . 1000110,1110
* 5,25 6750 2700 6750 . 70,8750
15
Деление 35 | 7 - 35 5 00
100011 | 111 - 111 101 00111 - 111 000
Как видно, операции в двоичной системе выполняются проще, чем в десятичной, поскольку в каждом разряде двоичного числа может быть только одна из двух цифр: 1 или 0. Некоторое неудобство двоичной системы счисления заключается в необходимости перевода в эту систему исходных числовых данных, представленных в десятичной системе счисления, а также обратного перевода результатов решения. Чтобы осуществить автоматический перевод десятичных чисел в двоичную систему счисления, используется двоично-десятичная запись (кодирование) чисел. Все десятичные цифры от 0 до 9 можно изобразить с помощью четырех двоичных разрядов, имеющих веса 8, 4, 2, 1 (23, 22, 21, 20). Эти четырехразрядные двоичные числа, изображающие разряды десятичных чисел, называются двоичными тетрадами. При двоично-десятичной записи каждая цифра десятичного числа записывается в виде соответствующей двоичной тетрады. Например, двоичное число 26,7 в двоично-десятичной записи будет иметь вид: А(2-10) =
8 4 2 1 0 0 1 0 2
8 4 2 1 0 1 1 0 , 6
8 4 2 1 0 1 1 1 7
Перевод двоично-десятичных чисел в двоичную систему счисления осуществляется в соответствии с ( 2.1 ). Например: 183 = 1 * 102 + 8 * 101 + 3 * 100 → 8 4 2 1 8 4 2 1 8 4 2 1 0 0 0 1 * 1100100 + 1 0 0 0 * 1010 + 0 0 1 1 * 1 = 10110111 1 102 101 100 8 3
16
Представление двоичного числа в десятичном виде, также производится в соответствии с ( 2.1 ): 10110111 = 1* 2 7 + 0 * 2 6 + 1* 2 5 + 1* 2 4 + 0 * 2 3 + 1* 2 2 + 1* 21 + 1* 2 0 = . = 128 + 0 + 32 + 16 + 0 + 4 + 2 + 1 = 18310 Для перевода числа из десятичной системы счисления в двоичную пользуются следующей процедурой преобразования:
18310 : 2 = 91 9110 : 4510 : 2210 : 1110 : 510 : 210 : 110 :
2 = 45 2 = 22 2 = 11 2=5 2=2 2=1 2=0
остаток = 1 - младший разряд двоичного числа остаток = 1 остаток = 1 остаток = 0 остаток = 1 остаток = 1 остаток = 0 остаток = 1 - старший разряд двоичного числа
010 Перевод двоичного числа в двоично-десятичное осуществляется аналогично, только в этом случае основание системы счисления 1010 представляется в виде 1010. Например:
17
Восьмеричная система счисления удобна тем, что перевод чисел из восьмеричной системы в двоичную осуществляется очень просто. Так как основание восьмеричной системы счисления представляет собой целую степень числа два, т.е. 8 = 23, то для перевода восьмеричного числа в двоичное достаточно каждый восьмеричный разряд представить тремя двоичными разрядами (триадами). Например, восьмеричному числу А8 = 456 соответствует число: А8 =
4 2 1 1 0 0 4
4 2 1 1 0 1 5
4 2 1 1 1 0 . 6
Для перевода двоичного числа в восьмеричную систему счисления необходимо разбить его на триады и каждую триаду заменить восьмеричной цифрой. Шестнадцатеричная система счисления, поскольку 16 = 24 , позволяет делать еще более компактные записи двоичных чисел. Для этого вместо триад необходимо рассматривать двоичные тетрады. Например, число 7F будет представлено в двоичном виде: 8 4 2 1 0 1 1 1 7
8 4 2 1 1 1 1 1 F
В любой ЭВМ числа представляются некоторым, определенным для каждой конкретной машины количеством разрядов. При этом удобнее рассматривать двоичную последовательность как представление дробной части некоторого целого числа. Например, число 13 можно рассматривать как дробную часть числа 100 или числа 1000, т.е. 13/100 = 0,13; 13/1000 = 0,013.
18
При таком представлении чисел применяются две формы изображения: естественная с фиксированным положением запятой и полулогарифмическая с плавающей запятой. При естественной форме запятая в числе всегда фиксируется перед старшим разрядом. Естественно, что и при конечном числе разрядов, с которыми оперирует машина, в результате вычислений могут получиться числа по абсолютной величине большие 0,111...11 или меньшие 0,000...01 (в десятичной системе счисления соответственно 0,999...99 и 0,000...01). Возникновение чисел, по абсолютной величине больших или равных единице, называется переполнением разрядной сетки машины. В этих случаях теряются старшие разряды чисел. Числа, по абсолютной величине меньшие единицы младшего разряда разрядной сетки, называются машинным нулем. Как переполнение разрядной сетки, так и границу возникновения нуля необходимо учитывать при решении задач соответствующим масштабированием величин, используемых при вычислениях. Полулогарифмическая форма представления с плавающей запятой основывается на изображении чисел в виде А = ± p , ±m ,
(2.2)
соответствующем записи А = N p ⋅ m , где p - порядок числа А; m - мантисса числа А. Запись вида (2.2) называется полулогарифмической потому, что в логарифмической форме представляется не всё число, а только часть его N p . При представлении числа в полулогарифмической форме, положение запятой в мантиссе определяется величиной порядка. При изменении порядка в большую или меньшую сторону, запятая смещается соответственно влево или вправо, т.е. “плавает” в изображении числа. В разрядной сетке машины число в полулогарифмической форме состоит из двух групп цифр, из которых одна группа соответствует порядку, а другая мантиссе. Если старшая цифра мантиссы отлична от нуля, число называют нормализованным, в противном случае - ненормализованным. Например, для двоичной системы счисления 0,110100∗10100 -нормализованное число, а 0 , 001101∗10 110 - ненормализованное число. Нормализованное представление чисел позволяет сохранять в разрядной сетке большее количество значащих цифр и, следовательно, повышает точность вычислений. ЭВМ производят вычисления как с положительными, так и с отрицательными числами. Для кодирования знака числа используется дополнительно вводимый двоичный разряд, называемый знаковым, в котором 19
положительный знак изображается цифрой 0, а отрицательный - цифрой 1. В машинах с фиксированной запятой знаковый разряд располагается перед старшим разрядом мантиссы (перед запятой). Например, двоичные числа +0,0111 и -0,0101 в естественной форме при закодированных знаках будут иметь соответственно вид: 00111 и 10101 (запятая между знаковым и старшим разрядами подразумевается). В машинах с плавающей запятой, помимо разряда для изображения знака мантиссы, имеется знаковый разряд для изображения знака порядка. Например, двоичные числа +0,1011 * 10 −011 и −0,1001 * 10 +101 в полулогарифмической форме с закодированными знаками будут иметь соответственно вид: Порядки 1011 0101
Мантиссы 01011 11001 Знаковые разряды
Двоичные числа с закодированными знаками называются прямым кодом числа. Заметим, что из сказанного выше следует, что в машине нуль имеет два изображения: 000...0 и 100...0. Для упрощения конструкции арифметико-логических устройств (АЛУ) ЭВМ операцию вычитания заменяют операцией сложения, при этом одно из слагаемых рассматривается как отрицательное число. Для упрощения операций с отрицательными числами применяются двоичные коды, основанные на представлении отрицательных чисел в виде дополнений до 10m или 10m - 10-l, где m - число разрядов целой части числа, l - число разрядов дробной части числа. Первый вид дополнения получил название дополнительного кода, второй - обратного кода. Формулы для образования дополнительного и обратного кодов отрицательных дробных чисел имеют вид: [A]доп = 10+А ; [A]обр = 10 − 10 −l + A ,
где А = -0,a-1 а-2 а-3 ... а-l. Например, если А = -0,1011, то [A]доп = 10+(-0,1011)=10101; [A]обр = 10 − 0,0001 + ( −0,1011) = 10100. Замена вычитания двоичных чисел А1 - А2 (или в прямых кодах [A1]пр [A2]пр) сложением [A1]пр+[-A2]доп или [A1]пр+[-A2]обр, позволяет оперировать со 20
знаковыми разрядами так же, как и с цифровыми. При этом знаковые разряды складываются, как и остальные значащие разряды числа, а перенос из старшего значащего разряда обычным порядком подсуммируется к значению суммы знаковых разрядов. Однако правила учёта переносов из знакового разряда суммы и, следовательно, получение правильного результата для дополнительного и обратного кодов различны. При суммировании в дополнительном коде, если А1-А2 > или =0 единица переноса из знакового разряда не учитывается. Например: А1 = +0,1011 -А2 = -0,0101 [A1]пр =
01011 +
[-A2]доп = 11011 _________________________ [A1]пр+[-A2]доп =
*00110 Единица переноса не учитывается т.к. A1>A2 .
Если А1-А2А2
[A1-A2]пр =
Если А1-А2 < 0, то значение разности получается в обратном коде, который необходимо перевести в прямой. Например: А1 = +0,0111 -А2 = -0,1011 [A1]пр =
00111 +
[-A2]обр = 10100 _________________________ [A1]пр+[-A2]обр = 11011} Результат получен в обратном коде т.к. А1 < А2 [A1-A2]пр = 10100 Особенностью сложения обратных кодов является то, что слагаемые должны иметь одинаковое количество цифровых разрядов. В связи с этим до перевода слагаемых в обратные коды необходимо выровнять количество цифровых разрядов их прямых кодов. Выравнивание производится приписыванием соответствующего количества нулей. Следует заметить, что в ЭВМ это условие выполняется автоматически.
22
2.2. Вопросы, задачи и упражнения Системы счисления 1. Записать двоичное число один - нуль - один - нуль в цифровой форме. 2. Перевести в десятичный код следующие двоичные числа: а) 0101; б) 1101; в) 1110; г) 1001. 3. Перевести в десятичный код следующие двоичные числа: а) 01011010; б) 11011011; в) 10101010; г) 11011110. 4. Перевести в двоичный код следующие десятичные числа: а) 44; б) 51; в) 32; г) 97. 5. Перевести следующие двоичные числа в шестнадцатиричный код: а) 1011; б) 1110; в) 0111 ; г) 1001. 6. Перевести следующие шестнадцатиричные числа в десятичный код: а) 1F; б) DE; в) 37; г) CB. 7. Записать следующие восьмеричные числа в двоичном коде: а) 5; б) 4; в) 23; г) 46. 8. Записать следующие двоичные числа в восьмеричном коде: а) 101111; б) 110101; в) 111111; г) 101101. 9. Записать следующие десятичные числа в двоично-десятичном коде: а) 23; б) 46; в) 59; г) 98. 10. Записать следующие двоично-десятичные числа в десятичном коде: а) 1001 1000; б) 0011 1000; в) 0101 1000; г) 1000 1001. 11. Перевести следующие двоично-десятичные числа в двоичный код: а) 0101 0111; б) 0010 0111; в) 1001 0101; г) 0011 0100. 12. Перевести следующие двоичные числа в двоично-десятичный код: а) 10110110; б) 11011010; в) 11101111; г) 10110110. Арифметические операции 13. Выполнить следующие сложения двоичных чисел: а) 1011 б) 0111 в) 0110 г) 1101 + + + + 0101 1001 1001 0011 14. Выполнить следующие вычитания двоичных чисел: а) 1101 б) 1011 в) 1000 г) 1111 1001 0111 0111 0101
23
15. Выполнить следующие умножения двоичных чисел: а) 1001 б) 1011 в) 1010 г) 1101 * * * * 0101 1101 0110 0011 16. Какой арифметической операции эквивалентен сдвиг двоичного числа влево на два разряда? 17. Какой арифметической операции эквивалентен сдвиг двоичного числа вправо на один разряд? 18. Что такое нормализация вправо? 19. Что такое нормализация влево? 20. Нормализовать следующие двоичные числа: а) 0,0011; б) 0,0101; в) 1,0110; г) 11,0010. Прямой, обратный, дополнительный коды 21. Представить в прямом коде следующие двоичные числа: а) 0,1011; б) 0.1010; в) 0.0111; г) -0,1111. 22. Представить в обратном коде следующие двоичные числа: а) 0.1101; б) -0,1010; в) -0,1101; г) 0,1010. 23. Представить в дополнительном коде следующие двоичные числа: а) 0,1000; б) 0,1111; в) -0,1011; г) -0,0111. Замена вычитания сложением 24. Заменить операцию вычитания операцией сложения с использованием обратных кодов: а) 0,1011 б) 0,0111 в) 0,1011 0,0101 0,1000 0,1100 25. Заменить операцию вычитания операцией сложения с использованием дополнительных кодов: а) 0,1111 б) 0,1001 в) 0,0111 0,0110 0,1101 0,1101 2.3. Ответы 1. 1010. 2. а) 5; б) 13; в) 14; г) 9. 3. а) 90; б) 219; в) 170; г) 222. 4. а) 101100; б) 110011; в) 100000; г) 1100001.
24
5. а) B; б) E; в) 7; г) 9. 6. а) 31; б) 222; в) 55; г) 203. 7. а) 101; б) 100; в) 010011; г) 100110. 8. а) 57; б) 65; в) 77; г) 55. 9. а) 00100011; б) 01000110; в) 01011001; г) 10011000. 10. а) 98; б) 38; в) 58; г) 89. 11. а) 111001; б) 11011; в) 1011111; г) 100010. 12. а) 000110000010; б) 001000011000; в) 001000111001; г) 000110000010. 13. а) 10000; б) 10000; в) 1111; г) 10000. 14. а) 0100; б) 0100; в) 0001. 15. а) 101101; б) 10001111; в) 111100; г) 100111. 16. Умножению на 4. 17. Делению на 2. 20. а) 0,11 * 10−10 ; б) 0,101 * 10−10 ; в) 0,10110 * 1001 ; г) 0,110010 * 1010 . 21. а) 0,1011; б) 1,1010; в) 0,0111; г) 1,1111. 22. а) 0,0010; б) 1,0101; в) 1,0010; г) 0,0101. 23. а) 0,1000; б) 0,0001; в) 1,0101; г) 1,1001. 24. а) 0,0110; б) -0,0001; в) -0,0001. 25. а) 0,1001; б) -0,0100; в) -0,0110.
25
3. АРХИТЕКТУРА МИКРОПРОЦЕССОРА KI816BE51 И ЕГО ИНТЕРФЕЙСЫ 3.1. Краткие теоретические сведения Микропроцессор (МП) - это программно управляемое устройство, осуществляющее процесс обработки цифровой информации и управление им, построенное на основе одной или нескольких больших (сверхбольших) интегральных схем. Этот микроэлектронный прибор стал в последние годы ядром многих электронных систем автоматического регулирования и управления аппаратурой и технологическими процессами, измерительных устройств и устройств отображения и обработки информации. Такое широкое внедрение микропроцессора в обширный класс устройств обусловлено, в первую очередь, тем, что МП в отличие от традиционных интегральных схем выполняет не одну какую-либо функцию, а набор арифметических и логических функций и, кроме того, экономичен в изготовлении как стандартное изделие в условиях серийного производства. Первый МП был разработан фирмой Intel inc. в 1973 г. Это был МП с фиксированной длиной слова и системой команд, физически оформленный в виде 4-х разрядной p-МОП большой интегральной схемы с названием I 4004. Первым, действительно универсальным в рамках широкого круга решаемых задач стал разработанный этой же фирмой МП I 8080. Этот МП имеет довольно большое (64К слов) адресное пространство и универсальную мощную (78 команд) систему команд. Существует большое количество разновидностей МП, выпускаемых различными фирмами, как отечественными, так и зарубежными, отличающихся друг от друга как по архитектуре, так и по другим различным признакам. Рассмотрим некоторые особенности их построения и функционирования на примере отечественного аналога однокристальной ЭВМ I 8051, однокристального микроконтроллера КМ1816BE51. Микроконтроллер (МК) KM1816BE51 выполнен на основе высокоуровневой n-МОП технологии и выпускается в корпусе, имеющем 40 выводов. Отечественные и зарубежные фирмы предлагают полный аналог этого МК, выполненный по другим технологиям, например, МК KM1830BE51 (I 87C51) выполнен по К-МОП технологии. На рис. 3.1 показана цоколевка корпуса МК51 и имена выводов. Для работы МК51 требуется один источник электропитания +5В. Через 4 программируемых порта ввода/вывода МК51 взаимодействует с внешними устройствами в стандарте ТТЛ - схем с тремя состояниями выхода.
26
В состав МК51 входят: 8-битные АЛУ; ПЗУ емкостью 4 Кбайт; ОЗУ емкостью 128 байт; два 16-битных таймера/счетчика; последовательный порт с максимальной скоростью приемопередачи в асинхронном режиме - 375 Кбит/сек; двухуровневая система прерываний от 5 источников; 32 двунаправленные программируемые линии ввода/вывода. Имеется возможность расширения памяти программ и внешней памяти данных. Отличительной особенностью системы команд МК51 является наличие быстрых команд деления и умножения, возможность логической обработки отдельно адресуемых бит, развитая система условных ветвлений. При тактовой частоте 12 МГц большинство команд выполняется за 1-2 мкс. Приведем краткое описание выводов МК51: __ EA/UPP - отключение резидентной памяти программ / дополнительное питание +21В в режиме программирования резидентной ПЗУ; GND - общая точка, земля; +5В - основное напряжение питания +5В; RST/UPD - системный сброс / аварийное питание +5В в режиме пониженного энергопотребления;
27
28
ALE/PROG - строб адреса внешней памяти (используется для фиксации на внешнем регистре младшей половины адреса внешней памяти) / строб программирования резидентной памяти программ; PSEN - разрешение внешней памяти программ; является стробом чтения; XTAL1, XTAL2 - вход и выход внутреннего синхрогенератора; служат для подключения кварцевого резонатора, допускается также подача внешнего синхросигнала на вывод XTAL2 при заземлении XTAL1; (P0.0 ... P0.7), (P1.0 ... P1.7), (P2.0 ... P2.7), (P3.0 ... P3.7) - 32 индивидуально программируемые двунаправленные линии ввода/вывода портов 0, 1, 2, 3; линии порта 0 и 2 используются также при обращении к внешней памяти, линии порта 3 могут использоваться как линии специального назначения. Основу структурной схемы МК51 (рис. 3.2) образует внутренняя двунаправленная 8-битная шина, которая связывает между собой все основные узлы и устройства: резидентную память, АЛУ, блок регистров специальных функций (РСФ), устройство управления и порты ввода/вывода. Рассмотрим основные элементы структуры и особенности организации вычислительного процесса в МК51. АЛУ. 8-битное АЛУ может выполнять арифметические операции сложения, вычитания, умножения, деления, логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т.п. В АЛУ имеются регистры временного хранения операндов Т1 и Т2, схемы десятичной коррекции, формирования признаков результата операции. Важной особенностью АЛУ является его способность оперировать с битами. Отдельные программно доступные биты (флаги) могут быть установлены, сброшены, инвертированы, переданы и проверены в логических операциях. Эта способность АЛУ оперировать с битами столь важна, что можно говорить о наличии в нем “Булевского процессора”. Таким образом, АЛУ может оперировать с четырьмя типами информационных объектов: Булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). При выполнении многих команд в АЛУ формируется ряд признаков операции (флагов), которые фиксируются в регистре слова состояния процессора PSW. На рис. 3.3 показан формат PSW. Функции аккумулятора “Булевского процессора” выполняет флаг переноса (С). АЛУ не управляет флагами селекции банка регистров (RS1,RS0). Их состояние полностью определяется прикладной программой, у которой имеется возможность выбора одного из четырех регистровых банков. Хотя
29
процессор в МК51 и имеет в своей основе аккумулятор, он может выполнять множество команд и без его участия. 7 6 5 4 3 2 1 0 C AC F0 RS1 RSO OV ---
P
Рис. 3.3 Формат PSW C - флаг переноса / заема, устанавливается и сбрасывается при выполнении арифметических, логических и некоторых команд пересылки; AC - флаг вспомогательного переноса, формируется при выполнении команд сложения и вычитания и сигнализирует о переносе / заеме в бите 3; F0 - программный флаг общего назначения; OV - флаг переполнения, формируется при выполнении арифметических команд, принимает единичное значение при возникновении переполнения, т.е. при выходе результата за диапазон -128 ... +127 ; P - флаг паритета, формируется в каждом цикле любой команды и постоянно фиксирует нечетное (1) / четное (0) значение числа единиц в аккумуляторе; RS1, RS0 - программно управляемые флаги выбора рабочего банка регистров 00 - банк 0 (00H÷07H);01 - банк 1 (08H÷0FH); 10 - банк 2 (10H÷17H);11- банк 3 (18H÷1FH)
Например, данные могут быть переданы из любой ячейки резидентной памяти данных в любой регистр, или любой регистр может быть загружен непосредственным операндом и т.д. Многие логические операции также могут быть выполнены без участия аккумулятора. Восьмибитный регистр - указатель стека SP может адресовать любую область резидентной памяти данных. Его содержимое инкрементируется прежде, чем данные будут запомнены в стеке, и декрементируется после извлечения данных из стека. Подобный способ адресации элементов стека называют преинкрементным - постдекрементным. Двухбайтный регистр указатель данных DPTR обычно используется как источник 16-битного адреса при обращении к внешней памяти. Командами МК51 этот регистр может быть использован или как 16-битный регистр, или как два независимых 8-битных регистра (DPH и DPL). Устройство управления и синхронизации. Кварцевый резонатор, подключаемый к выводам XTAL1 и XTAL2, управляет работой внутреннего генератора, который, в свою очередь, формирует системные сигналы синхронизации.
30
Устройство управления МК51 на основе сигналов синхронизации формирует машинный цикл, равный 12 периодам синхросигнала или 6 состояниям первичного управляющего автомата (S1-S6). Каждое состояние управляющего автомата содержит 2 фазы (P1, P2). В фазе P1, как правило, выполняется операция в АЛУ, а в фазе P2 осуществляется межрегистровая передача. Весь машинный цикл состоит из 12 фаз, начиная с фазы S1P1 и заканчивая фазой S6P2. Внешним наблюдаемым сигналом, кроме сигнала генератора, является сигнал строба адреса внешней памяти ( ALE), который формируется дважды за один машинный цикл(S1P2÷S2P1 и S4P2÷S5P1) и используется для управления процессом обращения к внешней памяти (рис. 3.4). Большинство команд МК51 выполняется за один или два машинных цикла. Только команды деления и умножения требуют четырех машинных циклов. При частоте резонатора 12 МГц время машинного цикла составляет одну микросекунду. Резидентная память МК51. ОЗУ и ПЗУ, размещенные на кристалле МК51 (резидентная память), физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции. Резидентное ПЗУ имеет емкость 4 Кбайт и предназначено для хранения команд, констант, таблиц перекодировки и т.п. МК51 имеет 16-битную шину адреса, на которую имеют выход счетчик команд РС и регистр-указатель данных DPTR. Последний выполняет функции базового регистра при косвенных переходах по программе и используется при чтении констант из памяти программ. Резидентная память данных предназначена для хранения переменных прикладной программы, адресуется одним байтом и имеет емкость 128 байт. В начале адресного пространства (00H÷1FH) резидентной памяти данных располагается 4 регистровых банка по 8 регистров в каждом. Далее (20Н÷2FH) размещается область программных флагов (до 128), которые могут быть использованы по усмотрению разработчика. Начиная с адреса 30Н и до конца адресного пространства (7FH) размещается свободная зона, используемая для хранения данных и/или в качестве стека. Приведенное распределение не является обязательным. Например, с целью расширения свободной зоны разработчик может отказаться от использования двух старших регистровых банков и области программных флагов. В этом случае свободная область резидентной памяти данных расширяется с 80 до 112 байт. К адресному пространству резидентной памяти данных примыкает пространство регистров специальных функций, перечисленных в табл. 1. Хотя резидентная память данных и регистры специальных функций имеют единое адресное пространство, однако механизмы их адресации различаются. 31
32
Таблица 1. Регистры специальных функций. Имя
Наименование
ACC* Аккумулятор B*
Адрес 0E0H
Регистр-расширитель аккумулятора
PSW* Слово состояния программы
0F0H 0D0H
Регистр-указатель стека
81H
DPТR Регистр-указатель данных (DPH) (DPL)
83H 82H
SP
P0* P1* P2* P3*
Порт 0 Порт 1 Порт 2 Порт 3
80H 90H 0A0H 0B0H
IP*
Регистр приоритетов
0B8H
IE*
Регистр разрешения прерываний
0A8H
TMOD Регистр режима таймера/счетчика
89H
TCON* Регистр управления / состояния таймера 88H TH0 TL0 TH1 TL1
Таймер 0 (старший байт) Таймер 0 (младший байт) Таймер 1 (старший байт) Таймер 1 (младший байт)
8CH 8AH 8DH 8BH
SCON* Регистр управления / состояния УАПП
98H
SBUF Буфер приемопередатчика
99H
PCON Регистр управления мощностью
87H
Примечание: Регистры, имена которых отмечены звездочкой (*), допускают адресацию отдельных бит.
33
Резидентная память данных допускает прямую и косвенную, а регистры специальных функций - только прямую адресацию. Внешняя память МП-системы. ОЗУ, так же, как и ПЗУ, может быть расширено до 64 Кбайт путем подключения внешних БИС памяти. Доступ к внешнему ПЗУ осуществляется при помощи управляющего сигнала PSEN, который выполняет функцию строб - сигнала чтения. Доступ к внешнему ОЗУ обеспечивается управляющими сигналами RD и WR. При обращении к внешнему ПЗУ всегда используется 16-битный адрес. Доступ к внешнему ОЗУ возможен с использованием 16-битного или 8-битного адреса. В случае использования 16-битного адреса старший байт адреса появляется (и сохраняется неизменным в течение одного цикла записи или чтения) на выводах порта 2. Если очередной цикл внешней памяти следует не сразу же за предыдущим циклом внешней памяти, то неизменное содержимое регистразащелки порта 2 восстанавливается в следующем цикле. Если используется 8битный адрес, то состояние порта 2 остается неизменным. Через порт 0 в режиме временного мультиплексирования осуществляется выдача младшего байта адреса и передача байта данных. Сигнал ALE стробирует запись младшего байта адреса во внешний регистр. Затем в цикле записи выводимый байт данных появляется на внешних выводах порта 0 перед появлением сигнала WR. В цикле чтения вводимый байт данных принимается в порт 0 по фронту сигнала RD. При любом обращении к внешней памяти устройство управления МК51 загружает в регистр-защелку порта 0 константу 0FFH, стирая прежнюю информацию. Доступ к внешнему ПЗУ возможен в двух случаях: либо на вход отключения резидентной памяти программы ЕА/UPP подается активный нулевой сигнал, либо содержимое счетчика команд превышает значение 0FFFH. Используя вход EA/UPP, можно обеспечить доступ к младшим адресам (4К) внешнего ПЗУ микроконтроллера, не имеющего резидентной памяти программы (МК 31). Временные диаграммы на рис. 3.4 иллюстрируют процесс генерации управляющих сигналов при обращении к внешней памяти. Необходимо отметить, что цикл обращения к внешнему ПЗУ занимает половину машинного цикла (т.е. 0,5 мкс), а цикл доступа ОЗУ - полный машинный цикл (1,0 мкс). Порты ввода/вывода МК51. Микроконтроллер имеет 4 восьмибитных порта ввода/вывода Р0, Р1, Р2 и Р3. Каждый разряд любого порта может быть индивидуально настроен на ввод или вывод. Для настройки разряда на ввод необходимо в соответствующий бит порта записать 1. Каждый разряд порта содержит D-триггер, буфер чтения
34
состояния триггера и состояния линии ввода/вывода, а также выходной каскад (рис. 3.5). В тех случаях, когда порт является одновременно операндом и местом назначения результата, устройство управления автоматически реализует специальный режим, который называется “чтение - модификация - запись”. Этот режим обращения предполагает ввод сигналов не с внешних выводов порта, а из его буферного регистра (из D-триггеров), что исключает влияние нагрузки, подключенной к выводу, на правильность считывания ранее выведенной информации. Выходы портов 1, 2, 3 имеют схему внутренней “подпитки” через транзистор Т3. Эти порты часто называют “квазидвунаправленными” в отличии от двунаправленного порта 0, который такой схемы “подпитки” не имеет. Выходной транзистор Т2 открыт во время, пока D-триггер данного разряда порта находится в состоянии 0. В отличие от Т2 транзистор Т1 открывается на короткое время (S1P1 и S1P2) только при переключении разряда из состояния 0 в состояние 1. Тем самым достигается быстрый заряд паразитной выходной емкости. В дальнейшем Т1 закрыт, и уровень 1 поддерживается через Т3, включенный как сопротивление. Ток короткого замыкания выхода на землю в этом состоянии равен 0,25 мA, тогда как при открытии Т1 ток достигает величины 30 мА. Порт 0 имеет ту особенность, что в нормальных операциях ввода/вывода его выходной транзистор Т1 остается всегда закрытым (Т1 открывается только в случае передачи через порт 0 единичного уровня при обращении к внешней памяти). Таким образом, выходы порта 0 являются выходами типа “открытый коллектор”. Кроме обычного ввода/вывода порты 0 и 2 используются в циклах обращения к внешней памяти. По завершении такого цикла порт 2 восстанавливает свое состояние, а в порт 0 записывается код 0FFH. Каждая линия порта 3 имеет свою альтернативную функцию (рис. 3.1). Отметим, что для нормальной работы альтернативной функции в соответствующий разряд порта 3 должна быть записана 1. Выходы портов 1, 2 и 3 могут нагружаться на 4-ТТЛ входа схем серии К555, а порта 0 - на 8 входов. Кроме того, линии порта 0 могут использоваться как входы с очень высоким входным сопротивлением (входные токи линий портов 1, 2 и 3 составляют около 0,25 мА при нулевом входном сигнале). Таймер/счетчик. Два программируемых 16-битных таймера/счетчика (Т/С0 и Т/С1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера, содержимое Т/С инкрементируется в каждом машинном цикле (МЦ), т.е. каждые 12 периодов синхросигнала.
35
Рис.3.5 Схемотехника поров ввода/вывода: а) схема одного разряда буферного регистра порта; б) схема выходного каскада порта.
36
При работе в качестве счетчика, содержимое Т/С инкрементируется под воздействием перехода из 1 в 0 внешнего сигнала, подаваемого на соответствующий (Т0, Т1) вывод МК51. Так как на распознавание перехода требуется два МЦ, то максимальная частота переключения входных сигналов равна 1/24 тактовой частоты МК51 при длительности единичного импульса не менее одного МЦ.
7 TMOD
6
GATE C/T
5 M1
4
3
2
M0 GATE C/T
T/C1
1
0
M1
M0
T/C0
Рис. 3.6 Регистр режима таймера/счетчика: GATE - управление внешней блокировко Т/С, при установке разрешает внешнему входу INTx блокировать счет Т/С, при этом единичное значение входа INTx разрешает счет, нулевое - запрещает; С/Т - выбор режима работы Т/С: 0 - таймер; 1 - счетчик; М1,М0 - выбор одного из четырех режимов работы: 00 - режим 0, 01 - режим 1, 10 - режим 2, 11 - режим 3.
Для управления режимами работы Т/С и для организации взаимодействия таймеров с системой прерывания используется 2 регистра специальных функций (TMOD и TCON), описание которых приводится на рис. 3.6 и рис. 3.7 соответственно. Как следует из описания управляющих бит TMOD, для обоих Т/С режимы работы 0, 1 и 2 одинаковы. Режимы 3 для Т/С0 и Т/С1 различны. Рассмотрим кратко работу Т/С во всех четырех режимах. Режим 0. Перевод любого Т/С в режим 0 делает его похожим на 8-битный счетчик, на входе которого подключен 5-битный предделитель. Работу Т/С1 в режиме 0 иллюстрирует рис. 3.8а. В этом режиме таймерный регистр имеет разрядность 13 бит. При переходе из состояния “все единицы” в состояние “все нули” устанавливается флаг прерывания от таймера (TF1). Синхросигнал поступает на вход Т/С, когда управляющий бит TR1 установлен, и либо управляющий бит GATE (управление блокировкой) равен 0, либо на внешнем выводе запроса прерывания INT1 присутствует уровень 1. Режим 1. Работа любого Т/С в режиме 1 такая же, как и в режиме 0, за исключением того, что таймерный регистр имеет разрядность 16 бит.
37
7 TCON
6
5
4
3
TF1 TR1 TF0 TR0 IE1
2
1
0
IT1
IE0
IT0
Рис. 3.7 Регистр управления/состояния таймера/счетчика: TF1, TF0 - флаги переполнения Т/С1 и Т/С0, устанавливаются при переполнении Т/С, сбрасываются при входе в подпрограммы обслуживания прерывания; TR1, TR0 - управление пуском/остановом Т/С1 и Т/С0, 1- счет, 0 останов; IE1, IE0 - флаг внешнего прерывания устанавливается при переходе сигнала из 1 в 0 на выходах входах INT1 и INT0, сбрасывается при выходе из подпрограммы обслуживания прерывания; IT1, IT0 - управление типом прерывания; прерывание фиксируется: 1 - по спаду, 0 по нулю на входах INT1 и INT0.
Режим 2. В режиме 2 работа организована таким образом, что переполнение (переход из состояния “все единицы” в состояние “все нули”) 8битного счетчика TL1 приводит не только к установке флага TF1 (рис. 3.8б), но и автоматически перезагружает в TL1 содержимое старшего байта (ТН1) таймерного регистра, которое предварительно было задано программным путем. Перезагрузка оставляет содержимое ТН1 неизменным. Режим 3. В режиме 3 Т/С1 и Т/С0 работают по-разному. В режиме 3 Т/С1 останавливается и сохраняет неизменным свое текущее содержимое. Иными словами, эффект такой же, как и при сбросе управляющего бита TR1. Работу Т/С0 в режиме 3 иллюстрирует рис. 3.8в. В режиме 3 TL0 и TH0 функционирует как 2 независимых 8-биттных Т/С. Работу TL0 определяют управляющие биты Т/С0. Работу ТН0, который может выполнять только функции таймера, определяет управляющий бит TR1. При этом ТН0 использует флаг переполнения TF1. Режим 3 используется в тех случаях, когда требуется наличие дополнительного 8-битного Т/С. Можно считать, что в режиме 3 МК51 имеет в своем составе 3 таймера/счетчика. Работа Т/С0 в режиме 3 ограничивает функциональные возможности Т/С1, который при этом однако может использоваться, например, для задания скорости приемопередачи последовательного порта или для других целей, не требующих прерываний от таймера. Последовательный интерфейс. Через универсальный асинхронный приемопередатчик (УАПП) осуществляется прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена. В состав УАПП, называемый часто последовательным портом, 38
входят принимающий и передающий сдвигающие регистры, а также специальный буферный регистр (SBUF) приемопередатчика. Последовательный порт МК51 может работать в 4-х различных режимах. Выбор режима осуществляется через регистр управления / состояния (SCON) УАПП (рис.3.9). Режим 0. В этом режиме информация (8 бит) и передается и принимается через вход приемника (RXD). Через выход передатчика (TXD) выдаются импульсы сдвига, которые сопровождают каждый бит. Частота приемопередачи равна 1/12 тактовой частоты. Режим 1. В этом режиме передаются через TXD или принимаются из RXD 10 бит информации: старт-бит (0), 8 бит данных и стоп-бит (1). Скорость приемопередачи задается Т/С1. Режим 2. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт-бит, 8 бит данных, программируемый 9-й бит и стопбит. Например, для повышения достоверности передачи путем контроля по четности, в 9-й бит может быть программно помещено значение флага паритета из PSW. Режим 3. Режим 3 совпадает с режимом 2 во всех деталях за исключением частоты приемопередачи, которая задается Т/С1. В режимах 1, 2 и 3 скорость приемопередачи зависит от бита SMOD регистра управления мощностью PCON (рис.3.10) и определяется выражениями: 2SMOD f2 =
f OSC
;
64 2SMOD f 1,.3 =
fпереполнения Т/С1 32.
Прерывание от таймера 1 в этом случае должно быть заблокировано. Сам Т/С1 может работать и как таймер, и как счетчик событий в любом из 3-х режимов. Однако наиболее удобно использовать режим таймера с автоперезагрузкой. В этом случае fOSC fпереполнения Т/С1=
. 12*(256-(TH1))
39
Рис. 3.8 Режимы работы таймера/счетчика: а) Т/С1 в режимах 0 и 1; б) Т/С1 в режиме 2; в) Т/С0 в режиме 3
40
7 SCON
6
5
4
3
2
1
SM0 SM1 SM2 REN TB8 RB8 TI
0 RI
Рис. 3.9 Регистр управления / состояния УАПП: SM0, SM1 - управление режимом работы: 00 - режим 0, 01 - режим 1, 10 - режим 2, 11 - режим 3; SM2 - если 1, то флаг RI не будет устанавливаться при приеме тех символов, у которых 9-й бит данных (для режимов 2 и 3) или стоп-бит (режим 1) равен 0; REN - разрешение приема: 1 - разрешение, 0 - запрет; ТВ8 - 9-й передаваемый бит данных; RB8 - 9-й принятый бит данных; TI, RI - флаги прерывания передатчика и приемника
7 PCON SMOD
6
5
4
3
2
1
0
---
---
---
GF1
GF0
PD
IDL
Рис. 3.10 Регистр управления мощностью: SMOD - управление скоростью приемопередачи УАПП; GF1, GF0 - программные флаги общего назначения; PD - управление энергопотреблением: 1 - пониженное, 0 нормальное энергопотребление; IDL - бит холостого хода, при IDL=1 МК переходит в режим холостого хода.
Во всех четырех режимах работы передача из УАПП инициируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Прием в УАПП в режиме 0 осуществляется при условии, что RI=0 и REN=1. В режимах 1, 2, 3 прием начинается с приходом старт-бита в том случае, если REN=1. В бите ТВ8 программно формируется значение 9-го передаваемого бита данных в режимах 2 и 3. В бите RB8 фиксируется (в режимах 2 и 3) 9-й принимаемый бит данных. В режиме 1, если SM2=0, в бит RB8 заносится стопбит. В режиме 0 бит RB8 не используется. Флаг прерывания передатчика TI (приемника RI) устанавливается аппаратно в конце периода передачи (приема) 8-го бита данных в режиме 0 и в начале (середине) периода передачи (приема) стоп-бита в режимах 1, 2 и 3. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит TI (RI).
41
В режимах 1, 2 и 3 прием начинается при обнаружении перехода сигнала на входе RXD из состояния 1 в состояние 0. Для этого под управлением внутреннего счетчика вход RXD опрашивается 16 раз за период следования бита. Как только переход из 1 в 0 при входе RXD обнаружен, так внутренний счетчик по модулю 16 сбрасывается и перезапускается для выравнивания его переходов с границами периодов представления принимаемых бит. Таким образом, каждый период представления бита делится на 16 интервалов с помощью внутреннего счетчика. В состояниях 7, 8 и 9 счетчика производится опрос сигнала на входе RXD. Считанное значение принимаемого бита - это то, которое было получено по меньшей мере дважды из трех замеров (мажоритарное голосование 2 из 3-х). Если значение, принятое в первом такте (предполагаемый старт-бит) не равно 0, то блок управления приемом вновь возвращается к поиску перехода из 1 в 0. Этот механизм обеспечивает подавление ложных (сбойных) старт-бит. Система прерываний. Упрощенная структура системы прерываний показана на рис. 3.11. маскирование и присвоение приоритетов осуществляется программно через специальные регистры разрешения прерываний (IE) и управления приоритетами (IP). Форматы этих регистров приведены на рис. 3.12 и 3.13. Всего существует 5 источников прерываний и два уровня приоритетов (высший и низший). Флаги внешних прерываний (IE0, IE1) и биты выбора типа внешних прерываний располагаются в регистре TCON (рис. 3.7). Сброс флагов IE1 и IE0 выполняется в том случае, если прерывание было вызвано по переходу (заднему фронту сигнала запроса). Если же прерывание вызвано нулевым уровнем входного сигнала, то сбросить флаг IE должна соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания. Флаги запросов прерывания от таймеров TF0 и TF1 сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерываний от УАПП (RI и TI) должны сбрасываться соответствующими подпрограммами. Система прерываний сформирует аппаратно вызов соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий: 1) в данный момент обслуживается запрос прерывания равного или более высокого уровня приоритета; 2) текущий машинный цикл не последний в цикле выполняемой команды; 3) выполняется команда RETI или команда, связанная с обращением к регистрам IE и IP.
42
IT0 = 0
Адрес вектора
1
INT0
IE 0
0003H
IT0 = 1 TF 0
000BH IT1 = 0
1
INT1
IE 1
0013H
IT1 = 1 TF 1
001BH 1
TI
0023H
RI
Рис. 3.11 Структура системы прерываний.
7 IE
6
5
EA --- ---
4
3
2
1
0
ES ET1 EX1 ET0 EX0
Рис. 3.12 Регистр разрешения прерываний: ЕА - бит общего разрешения: 0 - все прерывания замаскированы, 1 - каждый источник разрешается своим собственным битом IE.X; ES - разрешение прерываний от УАПП; ET1, ET0 - разрешение прерывания от Т/С1, Т/С0; EX1, EX0 - разрешение прерывания от INT1, INT0.
При этом в стек загружается адрес точки возврата в основную программу. Подпрограмма обслуживания прерывания должна обязательно заканчиваться командой возврата RETI, которая сообщает системе прерываний, что обслуживание данного прерывания закончено.
43
7 IP
6
5
4
3
2
1
0
--- --- --- PS PT1 PX1 PT0 PX0 Рис. 3.13 Регистр управления приоритетами:
PS - бит приоритета УАПП; РТ1, РТ0 - биты приоритетов Т/С1 и Т/С0; РХ1, РХ0 - биты приоритетов INT1 и INT0; бит = 1 - высший приоритет, 0 - низший.
Сброс, режим холостого хода и режим пониженного энергопотребления. Сброс. Сброс МК51 осуществляется путем подачи на вход RST сигнала 1. Для уверенного сброса МК51 этот сигнал 1 должен быть удержан на входе RST по меньшей мере в течение двух машинных циклов (24 - периодов синхросигнала). Квазидвунаправленные буферные схемы внешних выводов ALE и PSEN находятся при этом в режиме ввода. Под воздействием сигнала RST сбрасывается содержимое регистров: PC, ACC, B, PSW, DPTR, TMOD, TCON, T/C0, T/C1, IE, IP и SCON, в регистре PCON сбрасывается только старший бит, в регистр указатель стека загружается код 07 Н, а в порты Р0-Р3 коды 0FFH. Состояние регистра SBUF - неопределенное. Сигнал RST не воздействует на содержимое ячеек ОЗУ. Когда включается электропитание, содержимое ОЗУ неопределенно, за исключением операции возврата из режима пониженного энергопотребления. Для автоматического формирования сигнала RST при включении электропитания необходимо между входом RST и +5В включить конденсатор емкостью 10 мкФ, а между RST и GND - резистор сопротивлением 8,2 кОм. Режим холостого хода. Любая команда, по которой установится управляющий бит IDL (PCON.0) в регистре управления мощностью (рис. 3.10), переведет МК51 в режим холостого хода. При этом продолжает работу внутренний генератор синхросигналов. Все регистры сохраняют свое значение. На выводах всех портов удерживается то логическое состояние, которое на них было в момент перехода в режим холостого хода. На выводах ALE и PSEN формируется уровень 1. Выйти из режима холостого хода можно по прерыванию. Любой из разрешенных сигналов прерывания приведет к аппаратному сбросу бита IDL и прекратит тем самым режим холостого хода. После исполнения команды RETI (выход из подпрограммы обслуживания прерывания) будет исполнена команда, которая следует в программе за командой, переведшей МК51 в режим холостого хода. Режим пониженного энергопотребления. Перевод МК51 в этот режим возможен по команде, которая установит бит PD в регистре управления мощностью. В этом режиме блокируется генератор синхросигналов, 44
содержимое ОЗУ и регистров специальных функций сохраняется, а на выходных контактах портов удерживаются значения, соответствующие содержимому их регистров. Выходы сигналов ALE и PSEN сбрасываются. Аварийное питание МК будет осуществляться по входу RST/UPD, при этом основное напряжение электропитания (+5В) может быть снято. После восстановления уровня основного питания (+5В), аварийное питание должно быть удержано еще на 2 машинных цикла для отработки МК функций системного сброса. Режим загрузки и верификации прикладных программ. Под воздействием внешних электрических сигналов МК51 может быть электрически запрограммирован или, иными словами, в ПЗУ МК могут быть загружены объектные коды прикладной программы. Содержимое ПЗУ МК может быть уничтожено выдержкой под ультрафиолетовым источником света (стирание) для последующего перепрограммирования. МК имеет средство защиты, обеспечивающее невозможность прочтения содержимого ПЗУ в конечном изделии и, следовательно, сохранение профессиональных секретов разработчика прикладного программного обеспечения. Загрузка программы в ПЗУ. В режиме программирования МК51 должен работать на пониженной частоте (с резонатором 4÷6 МГц). Адрес ячейки ПЗУ, в которую должен быть загружен байт прикладной программы, подается на выводы порта 1 и выводы Р2.0÷Р2.3 порта 2. При этом загружаемый байт поступает в МК через порт 0. Выводы Р2.4÷Р2.6 и PSEN должны быть заземлены, а на выводы Р2.7 и RST необходимо подать уровень логической 1. На входе EA/UPP поддерживается уровень +5В, но перед моментом загрузки байта он должен быть повышен до 21В. В это время уровень на входе ALE/PROG должен быть не менее чем на 50 мс сброшен в 0. После этого напряжение на входе EA/UPP возвращается к уровню +5В. Источник напряжения +21В (UPP) должен быть стабилизирован, т.к. превышение предельного значения +21,5В приводит к необратимым повреждениям ПЗУ. Запись бита защиты. Бит защиты ПЗУ, будучи установлен, запрещает доступ к ПЗУ любыми внешними средствами. Процедура записи бита защиты такая же, как и при загрузке программ в ПЗУ, но на вывод Р2.6 должен подаваться уровень 1. Сигналы на выводах портов Р0, Р1 и Р2.0-Р2.3 могут быть в любом состоянии. Однажды установленный бит защиты можно сбросить только путем полного стирания ПЗУ. Верификация программ. Если бит защиты не запрограммирован, то содержимое ПЗУ может быть прочитано с целью проверки правильности загрузки прикладной программы, либо по ходу программирования, либо после окончания программирования МК51. Доступ к ячейкам ПЗУ осуществляется так же, как и при программировании ПЗУ, за исключением того, что на вывод Р2.7 подается сигнал 0, используемый в качестве строб-сигнала чтения. 45
Стирание ПЗУ. Для стирания содержимого ПЗУ МК следует поместить под источник ультрафиолетового излучения с длиной волны менее 4000 ангстрем. После стирания в матрице ПЗУ содержатся все единицы. 3.2. Вопросы 1. Что такое микропроцессор ? 2. С какими типами информационных объектов может оперировать МК51? 3. Какая зона адресов ОЗУ может быть использована в качестве стека? 4. Чем отличаются механизмы адресации ОЗУ и регистров специальных функций? 5. Каким сигналом стробируется доступ к внешнему ПЗУ? 6. Каким сигналом стробируется запись младшего байта адреса во внешний регистр? 7. Чем отличается схемотехника порта 0 от схемотехники портов 1, 2 и 3? 8. Перечислите, в каких режимах могут работать таймеры МК51? 9. Как рассчитать скорость приема - передачи через последовательный порт в режимах 1, 2 и 3? 10.Сколько источников и уровней приоритетов прерываний существует в МК51? 11.Что необходимо сделать для автоматического формирования сигнала RST в МК51 при включении электропитания? 12.Как осуществляется выход МК51 из режима холостого хода? 13.Сохраняется ли содержимое ОЗУ МК51 при его переводе в режим пониженного энергопотребления? 14.На каких частотах должен работать МК51 в режиме загрузки программ в ПЗУ? 15.Каким образом можно сбросить однажды установленный бит защиты в МК51? 16. Может ли быть прочитано внешними устройствами содержимое ПЗУ в МК51, если бит защиты установлен? 17.Какая информация содержится в ПЗУ МК51 после стирания? 18.Какую длину волны ультрафиолетового излучения должен иметь источник для обеспечения стирания содержимого ПЗУ МК51?
46
4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРОПРОЦЕССОРА К1816ВЕ51 4.1.Краткие теоретические сведения Система команд МК51 состоит из 111 базовых команд. Большинство команд (94) имеют формат 1 или 2 байта и выполняются за 1 или 2 машинных цикла (99 команд). МК обрабатывает операнды 4-х типов: биты, 4-битные цифры, байты и 16-битные слова. Для доступа к данным используется 4 способа адресации: прямая, непосредственная, косвенная и неявная. Ассемблер ASM51 допускает использование символических имен регистров специальных функций и портов, приведенных в табл.1, а также их отдельных бит. Символическое имя бита имеет следующую структуру: . Например, имя АСС.5 определяет 5-й бит аккумулятора. Команды, модифицирующие флаги результата в PSW, приведены в табл.2. значение флага паритета Р напрямую зависит от содержимого аккумулятора. Кроме того, флаги могут изменяться при выполнении команд, в которых местом назначения определено PSW. При описании отдельных команд МК51 приняты следующие сокращения: А - аккумулятор (неявная адресация); ad - прямой 8-битный адрес байта ОЗУ (0-127), порта или регистра специальных функций (конкретные значения адресов регистров специальных функций приведены в табл.1); add - прямой 8-битный адрес назначения; ads - прямой 8-битный адрес источника; ad 11 - прямой 11-битный адрес передачи управления; ad 16 - прямой 16-битный адрес передачи управления; ad 16h - старший байт прямого 16-битного адреса; ad 16l - младший байт прямого 16-битного адреса; bit - прямой 8-битный адрес бита или флага, адреса конкретных бит и флагов приведены на рис. 4.1; #d - 8-битный непосредственный операнд (константа); #d16 - 16-битный непосредственный операнд (константа); #d16h - старший байт 16-битного непосредственного операнда; #d16l - младший байт 16-битного непосредственного операнда; i - бит в коде операции (КОП), определяющий регистр косвенного адреса: i=0, 1 (R0, R1); PC - программный счетчик или счетчик команд; rel - 8-битный относительный адрес передачи управления в пределах 128...+127 байт относительно адреса команды, следующей за командой перехода, ASM 51 позволяет вместо rel указывать метку перехода;
47
Ri - обобщенное имя регистра косвенного адреса (R0 или R1); Rn - обобщенное имя рабочего регистра (n= 0 ÷ 7); rrr - 3-битное поле в коде операции, определяющее регистр общего назначения (R0 ÷ R7); SP - указатель стека; ← - оператор присваивания (замещения); ↔ - оператор взаимного обмена; ∨, ∧, ∀ - операторы логических операций: И (конъюнкция), ИЛИ (дизъюнкция), исключающее ИЛИ; (a) - префикс косвенной адресации; # - префикс непосредственного операнда; (Y) - содержимое регистра или ячейки памяти с именем Y (прямая адресация); ((Y)) - содержимое ячейки памяти, адресуемой содержимым Y (косвенная адресация). Кроме этого, при написании исходного текста программ для МК51 удобно пользоваться следующими обозначениями, принятыми в ассемблере ASM51: текущее содержимое счетчика команд МК; В - суффикс двоичного кода; Н - суффикс шестнадцатеричного кода; HIGH - логическая операция выделения старшего байта из d16 при ассемблировании; LOW - логическая операция выделения младшего байта из d16 при ассемблировании; AND - логическая операция “конъюнкция” при ассемблировании; NOT - логическая операция “инверсия” при ассемблировании; OR - логическая операция “дизъюнкция” при ассемблировании. Все команды МК51 по формату, типу операндов, способу адресации и передачи управления можно разделить на 13 типов, представленных на рис. 4.2. Далее в табличной форме приводится описание системы команд, разбитой на 5 групп: передачи данных (табл.3), арифметических операций (табл. 4), логических операций (табл.5), операций с битами (табл. 6) и передачи управления (табл. 7). Для каждой команды приводится мнемокод, код операции, тип (Т) команды (согласно рис. 4.2), формат (Б) в байтах, время выполнения в машинных циклах (Ц) и выполняемая операция. Смысловое содержание мнемокодов команд раскрывается в табл. 8.
48
Рис. 4.1. Карта адресуемых бит: а) в ОЗУ; б) в регистрах специальных функций Необходимо отметить, что ассемблер ASM51 допускает использование обобщенных команд перехода JMP и вызова CALL. В процессе трансляции, исходя из реального расстояния перехода, ASM51 заменит обобщенные команды оптимальными (по формату) командами перехода (SJMP, AJMP, LJMP) и вызова (ACALL, LCALL).
49
D7
D0
1
КОП
2
КОП
3
КОП
#d dd ad
4
КОП
bit
5
КОП
rel
D7
6 А10...А8 КОП 3 7 КОП 3 КОП 8 9 КОП
D0
A7
A0
D7
D0
ad
#d
ad
rel
ads
add
10 3 11
КОП
#d
rel
КОП
bit
rel
12
КОП
ad16h
ad16l
13
КОП
# d16h g16d16
# d16l g16d16
Рис. 4.2 Типы команд МК51
50
Таблица 2
Команды, модифицирующие флаги в PSW
Команды
Флаги
ADD ADDC SUBB MUL DIV DA RRC RLC SETB C CLR C CPL C ANL C, b ANL C, /b ORL C, b ORL C, /b MOV C, b CJNE
C, OV, AC C, OV, AC C, OV, AC C=0, OV C=0, OV C C C C=1 C=0 C =C С С С С С С
51
Таблица 3 Группа команд передачи данных. Мнемокод
КОП
Т
Б
Ц
MOV A,Rn MOV A,ad MOV A, (a) Ri MOV A, #d MOV Rn, A MOV Rn, ad MOV Rn, #d MOV ad, A MOV ad, Rn MOV add, ads MOV ad, (a)Ri MOV ad, #d MOV (a)Ri, A MOV (a)Ri, ad MOV (a)Ri, #d MOV DPTR, #d16 MOVC A, (a)A+DPTR MOVC A, (a)A + PC
11101rrr 11100101 1110011i 01110100 11111rrr 10101rrr 01111rrr 11110101 10001rrr 10000101 1000011i 01110101 1111011i 0110011i 0111011i 10010000 10010011 10000011
1 3 1 2 1 3 2 3 3 9 3 7 1 3 2 13 1 1
1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1
1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2
MOVX A, (a)Ri MOVX A, (a)DPTR MOVX (a)Ri, A MOVX (a)DPTR, A PUSH ad
1110001i 11100000 1111001i 11110000 11000000
1 1 1 1 3
1 1 1 1 2
2 2 2 2 2
POP ad
11010000
3
2
2
XCH A, Rn XCH A, ad XCH A, (a)Ri XCHD A, (a)Ri
11001rrr 11000101 1100011i 1101011i
1 3 1 1
1 2 1 1
1 1 1 1
52
Операция (A)←(Rn) (A)←(ad) (A)←((Ri)) (A)←#d (Rn)←(A) (Rn)←(ad) (Rn)←#d (ad)←(A) (ad)←(Rn) (add)←(ads) (ad)←((Ri)) (ad)←#d ((Ri))←(A) ((Ri))←(ad) ((Ri))←#d (DPTR)←#d16 (A)←((A)+(DPTR)) (PC)←(PC)+1 (A)←((A)+(PC)) (A)←((Ri)) (A)←((DPTR)) ((Ri))←(A) ((DPTR))←(A) (SP)←(SP)+1 ((SP))←(ad) (ad)←((SP)) (SP)←(SP)-1 (A)↔(Rn) (A)↔(ad) (A)↔((Ri)) (A0÷3)↔((Ri)0÷3)
Таблица 4 Группа команд арифметических операций Мнемокод
КОП
Т Б Ц
ADD A,Rn ADD A, ad ADD A, (a)Ri ADD A, #d ADDC A, Rn ADDC A, ad ADDC A, (a)Ri ADDC A, #d DA A
00101rrr 00100101 0010011i 00100100 00111rrr 00110101 0011011i 00110100 11010100
1 3 1 2 1 3 1 2 1
1 2 1 2 1 2 1 2 1
1 1 1 1 1 1 1 1 1
SUBB A, Rn SUBB A, ad SUBB A, (a) Ri SUBB A, #d INC A INC Rn INC ad INC (a)Ri INC DPTR DEC A DEC Rn DEC ad DEC (a)Ri MUL AB DIV AB
10011rrr 10010101 1001011i 10010100 00000100 00001rrr 00000101 0000011i 10100011 00010100 00011rrr 00010101 0001011i 10100100 10000100
1 3 1 2 1 1 3 1 1 1 1 3 1 1 1
1 2 1 2 1 1 2 1 1 1 1 2 1 1 1
1 1 1 1 1 1 1 1 2 1 1 1 1 4 4
53
Операция (A) ← (A) + (Rn) (A) ← (A) + (ad) (A) ← (A) + ((Ri)) (A) ← (A) + #d (A) ← (A) + (Rn) + (С) (A) ← (A) + (ad) + (C) (A) ← (A) + ((Ri)) + (C) (A) ← (A) + #d + (C) если [(A0 ÷ 3)>9] ∨ [(AC) = 1], то (A0 ÷ 3) ← (A0 ÷ 3) + 6, затем если [(A4 ÷ 7) >9] ∨ [(C) = 1], то (A4 ÷ 7) ← (A4 ÷ 7) + 6 (A) ← (A) - (С) - (Rn) (A) ← (A) - (С) - (ad) (A) ← (A) - (С) - ((Ri)) (A) ← (A) - (С) - #d (A) ← (A) +1 (Rn) ← (Rn) + 1 (ad) ← (ad) + 1 ((Ri)) ← ((Ri)) + 1 (DPTR) ← (DPTR) + 1 (A) ← (A) - 1 (Rn) ← (Rn) - 1 (ad) ← (ad) - 1 ((Ri)) ← ((Ri)) - 1 (B) (A) ← (A) × (B) (A) (B) ← (A) / (B)
Таблица 5 Группа команд логических операций Мнемокод
КОП
Т Б Ц
ANL A, Rn ANL A, ad ANL A, (a)Ri ANL A, #d ANL ad, A ANL ad, #d ORL A, Rn ORL A, ad ORL A, (a)Ri ORL A, #d ORL ad, A ORL ad, #d XRL A, Rn XRL A, ad XRL A, (a)Ri XRL A, #d XRL ad, A XRL ad, #d CRL A CPL A RL A
01011rrr 01010101 0101011i 01010100 01010010 01010011 01001rrr 01000101 0100011i 01000100 01000010 01000011 01101rrr 01100101 0110011i 01100100 01100010 01100011 11100100 11110100 00100011
1 3 1 2 3 7 1 3 1 2 3 7 1 3 1 2 3 7 1 1 1
1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1
1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1
RLC A
00110011
1
1
1
RR A
00000011
1
1
1
RRC A
00010011
1
1
1
SWAP A
11000100
1
1
1
54
Операция (A) ← (A) ∧ Rn (A) ← (A) ∧ (ad) (A) ← (A) ∧ ((Ri)) (A) ← (A) ∧ #d (ad) ← (ad) ∧ (A) (ad) ← (ad) ∧ #d (A) ← (A) ∨( Rn ) (A) ← (A) ∨ (ad) (A) ← (A) ∨ ((Ri)) (A) ← (A) ∨ #d (ad) ← (ad) ∨ (A) (ad) ← (ad) ∨ #d (A) ← (A) ∀ Rn (A) ← (A) ∀ (ad) (A) ← (A) ∀ ((Ri)) (A) ← (A) ∀ #d (ad) ← (ad) ∀ (A) (ad) ← (ad) ∀ #d (A) ← 0 (A) ← A (An+1)← (An), n=0 ÷ 6 (A0) ← (A7) (An+1)← (An), n=0 ÷ 6 (A0)← (C), (C) ← (A7) (An)← (An+1), n=0 ÷ 6 (A7) ← (A0) (An)← (An+1), n=0 ÷ 6 (A7)← (C), (C) ← (A0) (A3÷0) ↔ (A7÷4)
Таблица 6
Группа команд операций с битами
Мнемокод
КОП
CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit MOV C, bit MOV bit, C
11000011 11000010 11010011 11010010 10110011 10110010 10000010 10110000 01110010 10100000 10100010 10010010
Т Б Ц 1 4 1 4 1 4 4 4 4 4 4 4
55
1 2 1 2 1 2 2 2 2 2 2 2
1 1 1 1 1 1 2 2 2 2 1 2
Операция (C) ← 0 (b) ← 0 (C) ← 1 (b) ← 1 (C) ← (C) (b) ← (b) (C) ← (C) ∧ (b) (C) ← (C) ∧ (b) (C) ← (C) ∨ (b) (C) ← (C) ∨ (b) (C) ← (b) (b) ← (C)
Таблица 7 Группа команд передачи управления Мнемокод
КОП
Т
Б Ц
1 LJMP ad 16 AJMP ad 11 SJMP rel JMP (a)A+DPTR JZ rel
2 00000010 a10a9a800001 10000000 01110011 01100000
3 12 6 5 1 5
4 3 2 2 1 2
JNZ rel
01110000
5
2 2
JC rel
01000000
5
2 2
JNC rel
01010000
5
2 2
JB bit, rel
00100000
11 3 2
JNB bit, rel
00110000
11 3 2
JBC bit, rel
00010000
11 3 2
DJNZ Rn , rel
11011rrr
5
2 2
DJNZ ad, rel
11010101
8
3 2
CJNE A, ad, rel
10110101
8
3 2
CJNE A, #d, rel
10110100
10 3 2
CJNE Rn , #d, rel
10111rrr
10 3 2
56
5 2 2 2 2 2
Операция 6 (PC) ← ad 16 (PC) ← (PC)+2, (PC0 ÷ 10) ← ad 11 (PC) ← (PC) + 2, (PC)←(PC)+rel (PC) ← (A) + (DPTR) (PC) ← (PC) + 2, если (A)=0, то (PC) ← (PC) + rel (PC) ← (PC) + 2, если (A) ≠ 0, то (PC) ← (PC) + rel (PC) ← (PC) + 2, если (C) = 1, то (PC) ← (PC) + rel (PC) ← (PC) + 2, если (C) = 0, то (PC) ← (PC) + rel (PC) ← (PC) + 3, если (b) = 1, то (PC) ← (PC) + rel (PC) ← (PC) + 3, если (b) = 0, то (PC) ← (PC) + rel (PC) ← (PC) + 3, если (b) = 1, то (b) ← 0 и (PC) ← (PC) + rel (PC) ← (PC) + 2, (Rn) ← (Rn) - 1, если (Rn) ≠ 0, то (PC) ← (PC)+rel (PC) ← (PC) + 2, (ad) ← (ad) - 1, если (ad) ≠ 0, то (PC) ← (PC)+rel (PC)←(PC)+3, если (A) ≠ (ad), то (PC)←(PC) + rel, если (A) < (ad), то (C) ← 1, иначе (C) ← 0 (PC)←(PC) + 3, если (A) ≠ #d, то (PC) ← (PC) + rel, если (A) < #d, то (C) ← 1, иначе (C) ← 0 (PC)←(PC) + 3, если (Rn) ≠ #d, то (PC) ← (PC) + rel, если (Rn) < #d, то (C) ← 1, иначе (C) ← 0
Продолжение табл. 7
1 CJNE (a)R, #d, rel
2 1011011i
3 10
LCALL ad16
00010010
12
ACALL ad11
a10a9a810001 6
RET
00100010
1
RETI
00110010
1
NOP
00000000
1
4 5 6 3 2 (PC)←(PC)+3, если ((Ri)) ≠ #d, то (PC)←(PC) + rel, если ((Ri)) < #d, то (C) ← 1, иначе (C) ← 0 3 2 (PC) ← (PC) + 3. (SP) ← (SP) +1, ((SP))←(PC0 ÷ 7), (SP) ← (SP) +1, ((SP)) ← (PC8 ÷ 15), (PC) ← ad 16 2 2 (PC) ← (PC) + 2. (SP) ← (SP) +1, ((SP))←(PC0 ÷ 7), (SP) ← (SP) +1, ((SP))←(PC8 ÷ 15), (PC0 ÷ 10)←ad 11 1 2 (PC8 ÷ 15)←((SP)), (SP) ← (SP) - 1, (PC0 ÷ 7) ← ((SP)), (SP) ← (SP) - 1 1 2 (PC8 ÷ 15)←((SP)), (SP) ← (SP) - 1, (PC0 ÷ 7) ← ((SP)), (SP) ← (SP) - 1 1 1 (PC) ← (PC) + 1
57
Таблица 8. Мнемокоды команд МК Мнемокод ADD ANL CALL CJNE CLR CPL DA DEC DIV DJNZ INC JMP MOV MUL NOP ORL POP PUSH RET RL (RLC) RR (RRC) SETB SUBB SWAP XCH XRL Jxx
Выполняемая операция или действие Сложение Конъюнкция Вызов подпрограммы Сравнение и переход, если не равно Сброс (обнуление) Инвертирование Десятичная коррекция Декремент Деление Декремент и переход, если не нуль Инкремент Безусловный переход Пересылка данных Умножение Холостая команда Дизъюнкция Извлечение из стека Загрузка в стек Возврат в основную программу Сдвиг влево (циклический) Сдвиг вправо (циклический) Присвоить биту единичное значение Вычитание Обмен тетрад в байте Обмен Исключающее ИЛИ Условный переход (xx - код условия)
58
4.2. Упражнения. 1. Составить программу на ассемблере и в машинных кодах, которая после выполнения системного сброса осуществляет переход к выполнению команд, расположенных, начиная с ячейки ПЗУ с адресом 0030Н, извлекающих число из регистра R7, инвертирующих его и записывающих результат в регистр R6, после чего переводит МК51 в режим холостого хода. 2. Составить программу сортировки массива чисел на четные и нечетные. 3. Составить программу поиска максимального числа в массиве однобайтных целых чисел (без знака). 4. Составить программу сортировки однобайтных чисел со знаками, представленных в дополнительном коде. 5. Составить программу определения суммы массива однобайтных чисел со знаками (при условии, что переполнения не происходит). 6. Составить программу вывода “бегущей единицы” через разряды порта 1. 7. Составить программу, выдающую 200 периодов прямоугольного сигнала типа меандр с длительностью периода 500 мкс через вывод 4 порта 3. 8. Составить программу приема трех байт информации их инвертирования и передачи. 9. Составить программу, которая запускает программу, описанную в упражнении 7 при возникновении прерывания INT0. 4.3. Ответы 1.
Программа на ассемблере состоит из строк, каждая из которых может содержать: • метку, символически указывающую адрес команды, которой передается управление; метка отделяется от команды символом “:” ; • команду, мнемоническое обозначение операции; • операнд или операнды, указывающие регистр, пару регистров, один или два непосредственных байта данных или адреса; операнды разделяются запятыми; • комментарии, поясняющие содержание операций в программе; комментарии отделяются от команды символом “;” . Программа на ассемблере будет записана в следующей форме: Метка BEGIN:
Мнемокод LJMP BEGIN MOV A, R7 CPL A
Комментарий ; Перейти к началу ; Получить число из R7 ; Инвертировать число 59
END :
; Записать результат в R6 ; Перейти в режим холостого хода
MOV R6, A MOV PCON, #01
При занесении программы в ПЗУ необходимо перевести мнемокоды команд в машинные коды, при этом понимается, что в зависимости от длины (одно-, двух- или трехбайтная), команды в памяти будут занимать от одной до трех последовательно ячеек. Программу в таком виде удобно записать следующим образом. В левом столбце - адреса команд в программе, далее следует машинный код команды и комментарий к команде. Адрес 0000Н 0001Н 0002Н 0030Н 0031Н 0032Н 0033Н 0034Н 0035H 2.
Машинный код 00000010 00000000 00110000 11101111 11110100 11111110 01110101 10000111 00000001
Комментарий ; код команды LJMP ad16 ; старший байт адреса 00Н ; младший байт адреса 30Н ; код команды MOV A, Rn ; код команды CPL A ; код команды MOV Rn, A ; код команды MOV ad, #d ; адрес PCON - 87 H ; данные, заносимые в PCON - 01H
Признаком четности двоичного числа является наличие 0 в младшем разряде. Словесное описание алгоритма такой программы может быть следующим: а) занести в регистр адрес массива четных чисел (команда MOV Rn, #d); б) занести в другой регистр адрес массива нечетных чисел; в) занести в третий регистр адрес исходного массива; г) занести в аккумулятор число исходного массива (команда MOV A, (a)
Ri);
д) сложить число в аккумуляторе с нулем с целью активизации регистра признаков и последующей проверкой числа на нуль (команда ADD A, #d); е) проверить наличие нулевого результата в аккумуляторе и в случае присутствия признака передать управление на окончание программы (команда JZ rel); ж) осуществить кольцевой сдвиг содержимого аккумулятора, объединив его с битом переноса PSW (команда RRC A); з) восстановить элемент исходного массива в аккумуляторе, переместив его из памяти; и) проверить наличие переноса в PSW, в случае присутствия признака передать управление пункту н) настоящего описания алгоритма (команда JC rel);
60
к) переписать элемент исходного массива из аккумулятора в память по адресу массива четных чисел (команда MOV (a)Ri, A); л) увеличить на единицу содержимое регистра адреса массива четных чисел (команда INC Rn) и содержимое регистра адреса исходного массива; м) передать управление по адресу, где хранится команда, реализующая пункт г) для выборки следующего элемента исходного массива (команда SJMP rel); н) переписать элемент исходного массива из аккумулятора в память по адресу массива нечетных чисел; о) увеличить на единицу содержимое регистра адреса массива нечетных чисел и содержимое регистра исходного массива; п) передать управление по адресу, где хранится команда, реализующая пункт г) ; р) останов программы. Перевести МК51 в режим холостого хода (команда MOV ad, #d).
61
5. ПРОЕКТИРОВАНИЕ УСТРОЙСТВ И СИСТЕМ НА БАЗЕ МИКРОПРОЦЕССОРОВ 5.1. Краткие теоретические сведения Использование микропроцессоров при проектировании различных систем позволяет создавать устройства, особенностью которых является то, что аппаратные средства и программное обеспечение существуют здесь в форме неделимого аппаратно-программного комплекса. Процесс разработки такого аппаратно-программного комплекса удобно представить в виде последовательности трех фаз проектирования: 1. разработки (и/или выбора типовых) аппаратных средств; 2. разработки прикладного программного обеспечения; 3. комплексирования аппаратных средств и программного обеспечения и отладки прототипа системы. При использовании микропроцессора в качестве комплектующего элемента разработчик системы избавлен от необходимости проектировать и сопровождать технической документацией самую сложную центральную часть изделия. Проектная документация на аппаратные средства изделия содержит только документацию на аппаратуру сопряжения микропроцессора с датчиками и исполнительными механизмами объекта управления. С появлением аналоговых (сигнальных) микропроцессоров, интегральных ЦАП и АЦП, разнообразных больших интегральных схем (БИС) специализированных контроллеров все более сложные функциональные части системы переходят из разряда подсистем в разряд комплектующих элементов. Так как эти комплектующие элементы являются сложно организованными приборами, функционирующими под управлением программы, то удельный вес прикладного программного обеспечения в микропроцессорных системах имеет устойчивую тенденцию к увеличению, а удельный вес аппаратных средств - к снижению. Если задача уже поставлена, то наиболее трудоемким и сложным (из-за тесной связи с областью приложения будущей программы) этапом работы является этап формирования алгоритма решения поставленной задачи. Связано это с тем, что этот этап практически не поддается формализации, и следовательно, не может быть автоматизирован обычными средствами. Проектная работа здесь носит глубоко творческий характер и сильно зависит от опыта и квалификации разработчика. Проиллюстрируем вышесказанное одним из возможных подходов к созданию систем с использованием микропроцессора на примере проектирования цифрового фильтра. Пусть требуется создать фильтр низкой частоты (ФНЧ) первого порядка.
62
На рис. 5.1 (а) показана принципиальная схема такого фильтра. Порядок фильтра определяется числом входящих в него реактивных элементов, т.е. конденсаторов и катушек индуктивности. Сигналы низких частот проходят через фильтр низкой частоты на его выход. Высокочастотные сигналы "замыкаются" через конденсатор на землю и не появляются на выходе фильтра. На рис. 5.1 (б) приведена амплитудно-частотная характеристика (АЧХ) этого фильтра. Граничная частота фильтра (частота излома, перегиба) логарифмической АЧХ ωc=1/τ (рад/сек), где τ=RC - постоянная времени. Для представления частоты в герцах используется соотношение ωc=2πf Uв х Uв ых
R Uв х
C
Uвы ω
ωc б
a)
Рис. 5.1 Фильтр нижних частот: а) принципиальная схема; б) АЧХ Запишем дифференциальное уравнение, описывающее происходящие в ФНЧ, показанном на рис. 5.1, с учетом, что
процессы,
Uвых + R i = Uвх, а i = C dUвых/dt, тогда уравнение будет иметь вид Uвых + RC dUвых/dt = Uвх..
(5.1)
Рассмотрим значения входного и выходного сигналов в дискретные моменты времени n∆t, где n = 0,1,...,... и заменим производную конечной разностью dUвых ≈ Uвыхn∆t - Uвых(n-1)∆t dt ∆t тогда (5.1) примет вид Uвыхn∆t + RC Uвыхn∆t - RC Uвых(n-1) ∆ t = Uвхn∆t. ∆t
63
(5.2)
Проделаем с (5.2) следующие преобразования: ∆tUвыхn∆t + RCUвыхn∆t - RCUвых(n-1) ∆ t = ∆tUвхn∆t.
(5.3)
Объединим первые два члена в (5.3) и вынесем за скобки Uвыхn∆t, (∆t + RC)Uвыхn∆t - RCUвых(n-1)∆t = ∆tUвхn∆t.
(5.4)
Перенесем второй член (5.4) в правую часть равенства и разделим левую и правую часть полученного равенства на (∆t + RC). Тогда Uвыхnt =
∆tUвхnt ∆t + RC
+
RCUвых(n-1)∆t ∆t + RC
(5.5)
Разделим числитель и знаменатель членов в правой части (5.5) на ∆t: Uвыхn∆t = Наконец, обозначив
RC/∆t 1+RC/∆t
Uвхn∆t + 1+RC/∆t 1 1+RC/∆t
= k1, а
* Uвых(n-1)∆t .
(5.6)
RC/∆t = k2, 1+RC/∆t
получаем Uвыхnt = k1 Uвхn∆t + k2 Uвых(n-1)∆t
(5.7)
Реализовав (5.7) в виде программы для микропроцессора и использовав схему на рис. 5.2 при ∆t | log2 Um/∆U | . 3. Минимальная частота дискретизации (минимальная тактовая частота всей системы) f: fmin = Vm/∆U.
65
измеряемой
величины
4. Требуемое число запоминающих элементов L: L > NR / SP. Ограниченные возможности существующей элементной базы, например по быстродействию, а также трудности, связанные с программным исполнением некоторых операций обработки, могут привести к необходимости выполнения ряда операций с помощью аналоговых устройств. Разумное сочетание аналоговых и цифровых операций позволяет снизить требования к элементной базе и значительно упростить реализацию всего устройства. 5.2. Вопросы и задачи 1. Перечислите основные фазы проектирования микропроцессорных устройств. 2. Какую тенденцию имеет удельный вес программного и аппаратного обеспечения в современных микропроцессорных устройствах ? 3. Назовите наиболее сложный этап создания микропроцессорного устройства. 4. Назовите преимущества устройств созданных на базе микропроцессоров перед аналоговыми устройствами. 5. Чем вызваны основные недостатки устройств реализованных на базе МП ? 6. Какие исходные данные необходимы для выбора элементной базы микропроцессорного устройства ? 7. Что позволяет снизить требования к элементной базе микропроцессорного устройства ? 8. Определите максимально возможное время предоставленное на выполнение программы если частота выдачи управляющих воздействий: а) 10 Гц; б) 100 Гц; в) 1000 Гц; г) 10000 Гц. 9. Определите требуемую разрядность микропроцессора если максимальное значение измеряемой величины: а) 1; б) 5; в) 10; г) 15, а инструментальная точность соответственно:
66
а) 0,005; б) 0,01; в) 0,1; г) 0,5. 10. Определите минимальную тактовую частоту МП системы если максимальная скорость изменения измеряемой величины: а) 1000; б) 100; в) 10; г) 5. Инструментальную погрешность возьмите из задачи 9. 11. Определите требуемое число микросхем памяти МП устройства, если объем программы составляет 512 байт, объем данных 256 байт, а емкость одного запоминающего элемента 32 четырех разрядных ячейки. 12. Выведите выражение необходимое для реализации цифрового фильтра высокой частоты первого порядка 5.3. Ответы 8. а) 100 мс; б) 10 мс; в) 1 мс; г) 0,1 мс. 9. а) 8; б) 9; в) 7; г) 5. 10. а) 200 кГц; б) 10 кГц; в) 100 Гц; г) 10 Гц. 11. 48. 12. Учитывая, что напряжение на конденсаторе фильтра u = 1/C ∫ idt, а ток через конденсатор i = Uвых/R, и заменяя интеграл суммой, выражение для реализации цифрового фильтра высокой частоты первого порядка ∞
Uвыхn = Uвхn - 1/RC
∑
n= 0
67
Uвых (n-1) .
6. СОВРЕМЕННЫЕ СПОСОБЫ ДИАГНОСТИРОВАНИЯ МИКРОПРОЦЕССОРНЫХ СИСТЕМ И УСТРОЙСТВ 6.1. Краткие теоретические сведения В отличии от обычных логических схем МП схемы с большим трудом поддаются анализу неисправностей, тем более, если нет на них достаточно полной документации. Нахождение неисправных элементов, например, в плане МП устройства требует детального знакомства со схемой и может занимать очень много времени. Это обусловлено двумя принципиальными обстоятельствами. Во-первых, в сложных современных системах, имеющих к тому же шинную структуру, стало трудно, а иногда и невозможно, не делая разрывов, "изолировать" на время проверки группы элементов и микросхемы. Это обстоятельство усложняется еще и тем, что во многих приборах, имеющих шинную структуру, шины - двунаправленные. Поэтому необходимо на этапе проектирования изделия вводить в схему дополнительные переключатели и вентили для организации целенаправленных потоков информации во время тестирования схемы. Во-вторых, существовавших до недавнего времени видов измерительной техники "не хватает" для обеспечения диагностики и локализации неисправных компонентов схем. Дело в том, что правильность работы сложной схемы БИС может быть однозначно охарактеризована при подходящем тесте только выходной последовательностью очень большой длины. Для современных микросхем с большой степенью интеграции, содержащих много внутренних состояний в силу наличия в схеме элементов "памяти" (триггеров, элементов задержек), длина информативной последовательности данных на выходах микросхем может быть до 10000 бит и более. При таких длинах данных очень трудно увидеть на осциллографе небольшие изменения в них, тогда как изменение одного бита данных в цифровых устройствах может сделать прибор неработоспособным. Осциллографы, логические анализаторы, частотомеры и т.п. обеспечивают либо слишком много, либо слишком мало информации. Чтобы сделать ремонт таких изделий возможным, необходимо средство для сжатия длинных потоков данных в краткие, простые для написания информативные показания - метки. В 1977 году фирма "Hewlett - Packard" разработала приборы, осуществляющие такое сжатие информации в информативные метки, сигнатуры. Основными особенностями таких приборов, получивших название сигнатурных анализаторов (СА), являются:
68
- "сжатие" исходной информации, позволяющее заменить "эталонные образцы" проверяемого изделия сигнатурами с комментариями в документации на это изделие; - "стимулирование" проверяемого изделия во время проверки сигналами, которые вырабатываются в самом изделии. Последнее особенно ценно, поскольку при обслуживании и ремонте изделий при проверке работоспособности и нахождении неисправности требуется только один измерительный прибор - анализатор сигнатур. Принцип сжатия цифровых данных показан на рис. 6.1, а принципиальная схема портативного СА показана на рис. 6.2 Основным элементом СА является 16-битовый сдвиговый регистр с обратными связями, преобразующий двоичную последовательность выбранной длины от конкретного узла проверяемой схемы в четырехзначную шестнадцатиричную ( 164 = 216 ) "метку" - сигнатуру проверяемого узла. Обрабатываемые двоичные последовательности суммируются по модулю два с сигналами четырех разрядов обратной связи сдвигового регистра. Регистр синхронизируется теми же тактовыми сигналами, что и обрабатываемая двоичная последовательность. Входные последовательности могут быть любой фиксированной длины, но в конце обработки они превращаются в 16 бит. Эти 16-битные наборы воспроизведенные в шестнадцатиричном формате (в алфавите 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, С, F, H, P, U), и являются искомыми сигнатурами. Применение СА позволяет снабдить схемы тестируемых изделий и (или) их описания сигнатурами с комментариями подобно тому, как это делается в схемах аналоговых устройств. Специалист по обслуживанию и ремонту изделия определяет сигнатуры контрольных точек и сравнивает их с эталонными сигнатурами. При этом на СА подаются сигналы "старт", "синхро", "стоп", определяющие формат и размер входной последовательности по которой определяется сигнатура. Составление алгоритма поиска неисправности начинают с построения функциональной модели объекта диагностирования (ОД). При построении функциональной модели предполагается, что ОД можно разделить на некоторое число в общем случае связанных между собой функциональных элементов. Под функциональным элементом понимается часть ОД (узел, группа каскадов, каскад, отдельная деталь), которая может находится только в одном из двух несовместимых состояний: работоспособна или неработоспособна.
69
Сигнатура Данные
∑ 15
11
8
6
0
Содержимое сдвигового регистра Такт
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Разряд
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0
12 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1
11 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1
10 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0
9 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0
8 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1
7 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0
6 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1
5 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 0
4 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1
3 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0
2 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0
1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1
Вход сдвиг. рег. 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 =
Данные 1 1 1 1 1 1 1 0 ∑ 0 0 0 0 1 1 1 1 1 1 1 1 1 =
Рис. 6.1 Схема поясняющая принцип работы анализатора сигнатур на примере обработки последовательности 20 бит
70
71
72
73
74
Состояние функционального элемента определяется путем выполнения проверки, т.е. путем измерения сигнатуры на выходе элемента и сравнения ее с эталоном. Для построения функциональной модели должны быть заданы принципиальная схема ОД и глубина поиска дефекта (узел, каскад, деталь). При построении функциональной модели ОД принимают следующие допущения: - для каждого функционального элемента известна сигнатура на его выходе; - функциональный элемент модели ОД считается неисправным, если при нормальных входных сигнатурах, на его выходе появляется сигнатура отличная от эталонной; - при отличии хотя бы одной из входных сигнатур от эталонной выходная сигнатура также отличается от эталонной; - внешние входные сигналы всегда принимают только номинальные значения (в том числе и источники питания); - если выходной сигнал i - го функционального элемента является входным для j - го функционального элемента, то сигнатуры этих сигналов совпадают; - линии связи между функциональными элементами всегда исправны; - любой функциональный элемент модели может иметь только один выход при произвольном числе входов; - выход любого элемента можно соединять с любым числом входов, в то время как вход любого элемента может быть соединен только с одним выходом. Функциональная модель строится непосредственно по принципиальной электрической схеме с учетом приведенных выше допущений. На рис. 6.3 приведена функциональная модель расширителя интерфейса для IBM PC совместимых компьютеров, принципиальная схема которого показана на рис. 6.4. После построения функциональной модели необходимо определить множество ее возможных состояний, т.е. перечислить все возможные комбинации отказавших элементов. Для определения множества возможных состояний ОД составляется таблица состояний. Общее число всех возможных состояний ОД при его разделении на N функциональных элементов и двух альтернативном исходе состояния каждого элемента (исправен - неисправен) равно 2 N - 1. Учитывая, что одновременное появление двух независимых дефектов является маловероятным событием, целесообразно считать, что в каждом состоянии ОД может быть дефект только в одном функциональном элементе модели. Тогда число возможных состояний
75
уменьшится до N. При составлении таблицы состояний необходимо руководствоваться следующими положениями: - таблица состояний представляет собой квадратную матрицу, в которой число строк равно числу контрольных точек на функциональной модели, а число столбцов - числу функциональных элементов; - таблица состояний заполняется на основании анализа функциональной модели ОД; - предполагается. что если ОД находится в Si состоянии, то неисправен только i-й функциональный элемент, а номер состояния соответствует номеру неисправного функционального элемента модели; - если неисправен i-й функциональный элемент, то этому событию соответствует несовпадение сигнатуры в контрольной точке Zi и тогда на пересечении Si - столбца и Zi- й строки записывается символ "0"; - если при этом значение сигнатуры любого другого k-го функционального элемента должно также отличаться от эталонной, то на пересечении Si-го столбца и Zk-й строки также записывается символ “0”; - в случае если эталонная и контролируемая сигнатуры совпадают, то на пересечении записывается символ "1"; - для каждой строки таблицы вычисляется функция предпочтения вида Wi = ∑ "0" - ∑"1" , при этом к таблице добавляется столбец Wi. Так, для схемы на рис. 6.3. получим таблицу 9. Поиск неисправного элемента начинают с контрольной точки с минимальным значением Wi. В таблице 9 это точки Z1 - Z8, поэтому первой необходимо проверять любую из контрольных точек Z1 - Z8. Если начать, например проверку с контрольной точки Z8, и сигнатура в этой точке отлична от эталонной, то это говорит о возможной неисправности функциональных элементов 8, 11, 13 - 21 (поскольку в столбцах 8, 11, 13 - 21 строки 8, таблицы 9 записаны 0). Для состояний этих элементов и их контрольных точек составляется новая таблица состояний и определяется контрольная точка, которую необходимо проверять второй, в случае несовпадения сигнатур. Новая таблица состоит из элементов таблицы 9 с номерами (строка - столбец): 8 - 8, 8 - 11, 8 13 / 8 -21; 11 - 8, 11 - 11, 11 - 13 / 11 - 21; 13 - 8, 13 - 11, 13 - 13 / 13 - 21; 14 - 8, 14 - 11, 14 - 13 / 14 - 21; 15 - 8, 15 - 11, 15 - 13 / 15 - 21; 16 - 8, 16 - 11, 16 - 13 / 16 - 21; 17 - 8, 17 - 11, 17 - 13 / 17 - 21; 18 - 8, 18 - 11, 18 - 13 / 18 - 21; 19 - 8, 19 - 11, 19 - 13 / 19 - 21; 20 - 8, 20 - 11, 20 - 13 / 20 - 21; 21 - 8, 21 - 11, 21 - 13 / 21 - 21. Если параметр в точке Z8 совпадает с эталоном, то это говорит об исправности элементов 8, 11, 13-21 и возможной неисправности остальных
76
функциональных элементов. В этом случае по аналогии с выше описанным для них необходимо составлять свою таблицу состояний и определять контрольную точку, которую необходимо проверять второй в случае совпадения сигнатур. Аналогичным образом анализируются все остальные состояния функциональной модели и составляется схема поиска дефекта. Схема поиска дефекта это графическое изображение последовательности измерений. При составлении схемы поиска руководствуются следующим: - контрольные точки, в которых должна производиться очередная проверка (измерение), изображаются в виде окружностей, внутри которых указываются номера контрольных точек; направление контроля, который должен осуществляться последовательно от одной контрольной точки к другой, изображается прямыми со стрелками на концах, указывающими направление контроля; - индексы у стрелок показывают результаты контроля в предыдущей контрольной точке и изображаются над стрелками, указывающими направление контроля после данного результата проверки, если выходной сигнал был не в норме - "0", если выходной сигнал был в норме - "1"; - если в результате контроля очередной контрольной точки однозначно определяется неисправный функциональный элемент, то у конца стрелки с индексом результата контроля изображается прямоугольник, внутри которого показывается номер неисправного функционального элемента. На рис. 6.5 показана схема поиска дефекта для расширителя интерфейса (рис. 6.4). При практическом использовании схемы поиска дефекта до начала измерений необходимо определить вид тестового воздействия на ОД и значение эталонных сигнатур в контрольных точках, здесь может оказаться полезным словарь сигнатур постоянного уровня "1" при различных размерах окна данных, приведенный в таблице 10.
77
Таблица 9 Таблица состояний расширителя интерфейса. Zi/Si 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
4 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
5 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
6 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
7 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
9 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1
78
11 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1
12 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
13 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0
14 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0
15 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0
16 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0
17 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0
18 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0
19 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0
20 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0
Wi 1 1 1 1 1 1 1 1 20 20 20 20 20 20 20 20 20 9 7 20 3
Таблица 10. Словарь сигнатур уровня “1” Длина окна 2
0
1 1 2
2 2 2
4 3
2
8 4
2
16 5
2
32
Сигнатура Длина 6 0001 2 7 0003 2 8 000U 2 9 00UP 2 10 UP73 2 11 3951 2
окна
1024
Сигнатура Длина 12 A70F 2 13 6PCP 2 14 CC34 2 15 4596 2 16 8PS4 2
2048
7A70
64 128 256 512
окна
Стгнатура
4096
826P
8192
P254
16384 1180 32768 755U 65536 0001
6.2. Вопросы и задачи 1. Чем вызваны трудности анализа неисправностей в МП системах? 2. Объясните принцип работы СА, пользуясь рис. 6.1. 3. Что такое сигнатура? 4. Что такое функциональная модель ОД? 5. Какие допущения принимают при построении функциональной модели ОД? 6. Определите число всех возможных состояний ОД, если он состоит из 26 функциональных элементов? 7. До какого числа уменьшится количество возможных состояний ОД, если дефект может быть только в одном из его функциональных элементов? 8. Перечислите положения, которыми руководствуются при составлении таблицы состояний ОД. 9. Напишите формулу вычисления функции предпочтения. 10. Что такое схема поиска дефекта? 11. Чем руководствуются при составлении схемы поиска дефекта? 6.3. Ответы 6. 67108863 7. 26
79
Литература 1. Агунов М.В. Выбор микропроцессоров для устройств управления непосредственными преобразователями частоты // Конф. АН МССР "Молодежь, наука, производство": Тез. докл, Кишинев, 1986, с. 257 2. Агунов М.В. Формирователи сигналов управления вентильными умножителями частоты на основе постоянных запоминающих устройств // Конф. АН МССР " Молодежь и современная наука": Сер. физ. - матем. наук. Тез. докл. Кишинев, 1989, с. 109 3. Гилмор Ч. Введение в микропроцессорную технику. Пер. с англ. М.: Мир, 1984, 334 с. 4. Дроздов Е.А., Комарницкий В.А., Пятибратов А.П. Электронные цифровые вычислительные машины. М.: Воениздат, 1968, 600 с. 5. Информационно-справочный материал. Применение однокристальных восьмиразрядных микро ЭВМ 1816ВЕ51. 6. Кирьяков К.Г., Соловейчик Э.Б. К проектированию РЭА ориентированной на диагностику сигнатурным анализом // Техника средств связи: Научн. техн. сб. Сер. радиоизмерит. техн. Вып. 1. М., 1980, 84 с. 7. MCS - 51 8048 to 8051 Assembly Languages Converter Operating Instruction for ISIS-II/Intel Corp. N 121966-002. 8. Соловьев В.В., Екимов В.Д. Разработка технологического процесса диагностирования бытовой РЭА. М.: МТИ, 1986, 91 c. 9. Сташин В.В., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микропроцессорах. М.: Энергоатомиздат, 1990, 224 c. 10. Токахайм Р.Л. Микропроцессоры: Курс и упражнения. Пер. с англ. М.: Энергоатомиздат, 1987, 336 c. 11. Frohwerk R.A. Signature Analysis: A New Digital Field Servise Method. Hewlett Packard Jornal, 1977, May, p. 1-8. 12. Якубовский С.В. и др. Цифровые и аналоговые интегральные микросхемы. Справочник. М.: Радио и связь, 1990, 496 c.
80
СОДЕРЖАНИЕ Стр. 1. Архитектура микропроцессорных систем ......…..........................….....3 1.1. Краткие теоретические сведения ...................................................……..3 1.2. Вопросы и задачи ............................................................................…...10 1.3. Ответы ..............................................................................................…...12 2. Представление информации в микропроцессорных системах и машинная арифметика .... .........................................…..13 2.1. Краткие теоретические сведения ....................................................…..13 2.2. Вопросы, задачи и упражнения ......................................................…...23 2.3.. Ответы ..............................................................................................…..24 3. Архитектура микропроцессора К1816ВЕ51 и его интерфейсы …….26 3.1. Краткие теоретические сведения ................................................….....26 3.2. Вопросы ..........................................................................................…....46 4. Программное обеспечение микропроцессора К1816ВЕ51 ........…….47 4.1. Краткие теоретические сведения ................................................….....47 4.2. Упражнения ...........................................................................................59 4.3. Ответы ....................................................................................................59 5. Проектирование устройств и систем на базе микропроцессоров ........................................................................…....62 5.1. Краткие теоретические сведения ..............................….......................62 5.2. Вопросы и задачи ..................................................................................66 5.3. Ответы ....................................................................................................67
81
6. Современные способы диагностирования микропроцессорных систем и устройств ................................................................................68 6.1. Краткие теоретические сведения ..........................................................68 6.2. Вопросы и задачи ...................................................................................79 6.3. Ответы .....................................................................................................79 Литература ...................................................................................................80
82
Агунов Михаил Викторович
МИКРОПРОЦЕССОРЫ В ВОПРОСАХ И ОТВЕТАХ Учебное пособие
Редактор Н.А. Фомичева
ЛР 020673 от 09.12.97г. Подписано в печать 01.08.2000г. Формат 60х84/16. Печать оперативная. Усл. п. л. 5,0. Уч. Изд. л. 4,6. Тираж 2000 экз. Заказ № 3237
Тольяттинский политехнический институт. Тольятти, Белорусская, 14.
ОБ АВТОРЕ Агунов Михаил Викторович – кандидат технических наук, доцент, много лет проработал с цифровой вычислительной техникой. В последнее время сочетает научно-исследовательскую и преподавательскую деятельность. Автор научной монографии, многочисленных научных статей и учебнометодических работ.