Скачиваний:
130
Добавлен:
21.02.2014
Размер:
10.48 Mб
Скачать

2.1.7 Система прерываний. Упрощенная схема прерываний мк51 приведена на рисунке 6.

Рисунок 6 - Упрощенная схема реализации прерываний МК ВЕ51

Внешние прерывания INT0 и INT1 могут быть вызваны либо низким логическим уровнем, либо переходом из 1 в 0 на входах МК51 в зависимости от значений IT0 и IT1 - управляющих бит, представленных в регистре TCON (timer control register - регистр управления таймерами) разрядами TCON.0 и TCON.2. При появлении запросов от внешних источников прерываний устанавливаются флаги IE0 и IE1 в разрядах TCON.1 и TCON.3. При переполнении таймеров устанавливаются флаги запроса прерываний от таймеров TF0 и TF1 (TCON.5 и TCON.7), которые сбрасываются автоматически при передаче управления программе обслуживания прерываний. Флаги запросов на прерывания от приемника и передатчика RI и TI устанавливаются универсальным приемопередатчиком и должны сбрасываться программно.

Два регистра специальных функций IE и IP позволяют управлять режимами прерываний и уровнями приоритета. Каждому запросу соответствует адрес вектора прерывания в поле адресов памяти программ (рисунок 5). По адресу вектора прерывания должна быть записана команда безусловного перехода (JMP) к подпрограмме обслуживания прерывания. Возврат в основную программу осуществляется по команде RETI.

2.1.8 Система команд МК ВЕ51. Система насчитывает 111 команд, из них 49 однобайтовых, 45 двухбайтовых и 17 трехбайтовых. Появление трехбайтовых команд связано с расширением объемов CSEG и XSEG, а также вводом прямой адресации в DSEG. Все команды выполняются за один или два машинных цикла (12 тактов ALE) за исключением команд MUL и DIV, которые требуют четыре цикла. Большинство двухбайтовых команд одноцикловые, а все трехбайтовые команды - двухцикловые. Это объясняется тем, что за один машинный цикл в МК ВЕ51 может вводиться до двух байтов программного кода.

Все множество команд ВЕ51 удобно разбить на пять групп: пересылки, логической обработки, арифметической обра­ботки, передачи управления, булевого процессора.

Группа команд пересылки содержит команды MOV (пересылки данных между DSEG и RSEG), MOVC (между CSEG и A), MOVX (между XSEG и А или RSEG), команды обращения к стеку PUSH и POP, а также две команды обмена ХСН и XCHD. Наиболее емкой инструкцией является команда MOV, которая использует четыре способа адресации: регистровый (A, Rn, DPTR), прямой (direct), косвенный (@Ri) и непосредственный (#data, #data 16). Для указания приемника служат три способа адресации (кроме непосредственного), для указания источника все четыре.

Группа команд логических операций содержит три типовые двухместные операции: ANL - логическое И, ORL - логическое ИЛИ и XRL - логическое исключающее ИЛИ. Источником первого операнда и одновременно приемником результата служит либо аккумулятор А, либо прямо адресуемая ячейка памяти. Второй операнд задается одним из четырех основных методов адресации. В состав группы входит также ряд одноместных операций: CLR - очистки, CPL - логического до­полнения (инверсия), а также RL, RLC, RR и RRC - операции циклического и расширенного сдвигов вправо и влево. Все операции манипулируют содержимым только аккумулятора А. Сюда же включена операция обмена тетрад в аккумуляторе SWAP, которая может интерпретироваться как циклический сдвиг байта на четыре разряда.

В состав группы команд арифметической обработки входят: операция сложения ADD, сложения с учетом переноса ADDC, вычитания с учетом займа SUBB, увеличения и уменьше­ния на единицу INC и DEC, десятичная коррекция сложения в 2/10-коде упакованного формата DA, умножение MUL и деление DIU. Операции выполняются над беззнаковыми целыми числами.

В операциях сложения и вычитания первым операндом и приемником результата служит аккумулятор. В качестве второго операнда выступает либо рабочий регистр Rn, п = 0 - 7, выбран­ного регистрового банка, либо ячейка памяти данных, адресуемая прямо direct или косвенно @Ri, i = 0 - 1, либо непосредственные данные #data. Операции INC и DEC применимы к аккумулятору, одному из рабочих регистров или к ячейке памяти, адресуемой как прямо, так и косвенно. Кроме этого операция увеличения на единицу может быть применена к содержимому регистра указате­ля DPTR.

В составе группы команд передачи управления находятся команды перехода AJMP, LJMP, SJMP, JMP, условного перехода JZ, JNZ, CJNE, вызова ACALL, LCALL, возврата RET, RETI и модификации с условным переходом DJNZ. Сюда же включена пустая команда NOP.

В командах передачи управления широко применяется относи­тельная адресация, которая поддерживает перемещаемые про­граммные модули.

К типовым условным операциям ВЕ51 относятся также операции JZ и JNZ, JC и JNC. Две последние включены в группу булевых. Однако появилась новая операция «Сравнить и перейти» CJNE. По данной команде операнд сначала сравнивается по правилам вычитания целых чисел с константой и в соответствии с результатом сравнения выставляется флажок CY. Затем в случае несовпадения с константой выполняется ветвление. Сравнивая аккумулятор, регистр или ячейку памяти с последовательностью констант, получаем удобный способ проверки на совпадения, например с целью выявления особых случаев.

Ряд команд, предназначенных для выполнения операций пересылки, проверки условий и логической обработки булевых (одноразрядных) переменных, образует отдельную группу. В качестве одного из операндов они применяют флажок переноса CY, в качестве другого служит прямо адресуемый элемент пространства BSEG. Флажок CY при выполнении операций И и ИЛИ может рассматриваться как булевый аккумулятор.

2.2 Функциональное описание ВЕ51

2.2.1 Интерфейс расширения. Внутренние ресурсы МК ВЕ51 могут быть расширены внешними средствами. При этом память программ CSEG достигает 64К байт, а память данных увеличивается за счет ввода в действие внешней памяти XSEG, максимальная емкость которой тоже 64К байт. Внешняя часть CSEG и область XSEG могут быть объединены в одно физическое пространство. Расширение области ВВ выполняется за счет части пространства XSEG (совмещенный ВВ).

Для связи со средствами расширения МК имеет встроенную системную магистраль, которая физически частично совмещена с портами Р0, Р1 и РЗ. В состав магистрали входят двунаправленная шина AD (порт Р0), шина старшей части адреса А (порт Р2), стробы фиксации адреса ALE, чтения памяти программ PSEN, записи WP (линия Р3.6) и чтения RD (линия Р3.7) внешней памяти данных XSEG.

По срезу ALE передаваемая через порт Р0 младшая часть адреса фиксируется во внешнем регистре. Старшая часть принимается из порта Р2. Стробы PSEN (IOL = 3,2 мА), RD и WR определяют тип доступа. При чтении CSEG (операция PSEN) данные считываются по фронту строба PSEN (фаза S1P1 и S4P1), при чтении XSEG (операция RD) - по фазе S3P1, при записи в XSEG (операция WR) данные действи­тельны на всем стробе.

2.2.2 Работа таймеров/счетчиков. Каждый из таймеров/счетчиков СТ0 - СТ1 (СТ2) выполняет функцию таймера (С/Т=0) или счетчика (С/Т=1). Функция таймера состоит в счете синхроим­пульсов, следующих с частотой OSC/12, функция счетчика - в счете числа переходов из 1 в 0 на выходах Т0, Т1 или Т2. В этом режиме соответствующий вход тестируется в течение фазы S5P2 каждого машинного цикла. При обнаружении состоя­ния 1 в одном цикле и состояния 0 в следующем за ним значение связанного со входом счетчика увеличивается на 1. В фазе S3P1 нового машинного цикла модифицированное значение отражается в регистровой паре. Так как процедура обнаружения перехода длится два машинных цикла, то максимальная скорость счета не должна превышать OSC/24. Существует единственное ограничение, накладываемое на временную последовательность входных им­пульсов, подлежащих счету: каждый уровень (1 или 0) должен удерживаться неизменным по крайней мере в течение одного машинного цикла. В рамках выбранной функции определены четыре режима работы для СТ0, СТ1 (М0, Ml) и три для СТ2 (CP/RL2, RCLK, TCLK).

В режиме 0 счетный регистр имеет длину 13 бит (5 младших разрядов TLj и THj, j = 0-1), три старших разряда TLj игнорируются.

Режим 1 подобен режиму 0, за исключением того, что в нем используется полный 16-разрядный счетчик ТН, TL.

Режим 2 конфигурирует 8-разрядный счетчик TLj с автозагруз­кой содержимым THj.

Режим 3 для СТ0 и СТ1 осуществляется по-разному. В случае СТ0 два счетных регистра TL0 и ТН0 рассматриваются независи­мо друг от друга. Логика управления работой TL0 аналогична режиму 1. Второй счетчик работает в режиме таймера, управляемого флажком TR1. Сигнал переполнения фиксируется флажком TF1. В случае СТ1 режим 3 останавливает счет, подобно тому, как это было при TR1=0 в других режимах. Использование режима 3 позволяет увеличить число счетчиков МК ВЕ51 до трех, что может быть необходимо в некоторых практических случаях.

2.2.3 Работа последовательного канала связи. Встроенный в ВЕ51 последовательный канал связи может быть запрограммирован для работы в одном из четырех режимов. В режиме 0 данные принимаются или передаются последовательно через линию ТхD со скоростью OSC/12 младшими битами вперед по 8 разрядов за операцию. Для синхронизации внешних средств используется линия ТхD. Передача инициируется всякий раз, когда новые данные записываются в SBUF. Признаком окончания передачи служит установка флажка TI. Операция ввода данных активизируется при разрешенном приеме (REN = 1) по сбросу флажка RI. Установка флажка RI свидетельствует о готовности введенных данных для считывания из SBUF.

Выдаваемый на линию ТхD синхросигнал переходит в состояние 0 в фазе S3PI второго машинного цикла, следующего за циклом исполнения команды записи данных в SBUF или команды сброса RI при REN=1 (рисунок 7, а). Затем он переключается через каждые шесть тактов, переходя в состояние 1 в фазе S6P1 и воз­вращаясь в состояние 0 в фазе S3P1 до тех пор, пока не будут переданы или приняты все 8 бит. Флажок RI или TI в зависимости от выполняемой операции устанавливается после фронта восьмого синхроимпульса. Прием выходных данных внешними средствами следует осуществлять по фронту синхросигнала. Ввод данных от внешних средств выполняется перед очередным фронтом синхро­сигнала в фазе S5P2.

а) режим 0; б) режим 1; в) режим 2 и 3

Рисунок 7 - Форматы передачи данных

В отличие от режима 0 в трех оставшихся режимах реализу­ется асинхронный обмен данными, форматы которых приве­дены на рисунке 7, б, в. Для повышения помехоустойчивости приема в режимах 1-3 каждый бит данных опрашивается трижды. Для этого период передачи бита данных делится на 16 интервалов. Опрос осуществляется в интервалах 7-9. Решение о состоянии бита данных принимается голосованием «два из трех».

До прихода стартового бита приемник проверяет вход RхD 16 раз за период. При обнаружении перехода из 1 в 0 на входе RхD приемник начинает счет периодов передачи данных. В интервалах 7 - 9 первого периода приемник проверяет правильность генера­ции стартового бита. Если стартовый бит не подтверждается, то переход принимается за помеху, в противном случае реализуется операция последовательного приема 8 или 9 бит данных, которые запоминаются в регистре SBUF и во флажке RB8 (режим 2 и 3) при приеме последующего стопового бита. Одновременно с этим устанавливается флажок готовности приемника RI, свидетельст­вующий о приеме очередного кадра.

Данные передаются на вход ТxD после их записи в SBUF независимо от состояния TI. Передача стартового бита начинается в фазе S1P1 машинного цикла, следующего за первым сигналом переполнения счетчика, который используется в качестве генерато­ра скорости. Таким образом, начало передачи данных оказывается синхронизированным по отношению к генератору скорости. Кадр завершается выдачей стопового бита. Перед началом передачи стопового бита устанавливается флажок TI, свидетельствующий об окончании передачи данных.

В режимах 1-3 кадр данных имеет форматы, представленные на рисунке 6, б, в. Если данные D0 - D7 доступны через SBUF, то разряд D8 - через флажки ТВ8 и RB8 управляющего слова SCON. В режиме 2 скорость передачи в зависимости от значения флажка SMOD в регистре PCON может быть равной либо OSC/32 (SMOD = 0), либо OSC/64 (SMOD=l). В режиме 1 и 3 скорость передачи определяется частотой переполнения СТ1 или СТ2 (RCLK=1 или TCLK=1). В случае SMOD=l скорость передачи совпадает с частотой переполнения, а при SMOD = 0 скорость передачи в 2 раза меньше. Таким образом, манипулируя флажком SMOD, можно понизить скорость передачи в режимах 1-3 в 2 раза.

Флажки RI и TI способны осуществлять запрос на прерывание. В режимах 1-3 - установка флажка SM2 разрешает установку флажка RI и генерацию запросов от него только при приеме кадра с D8 = l. Для режима 1 это соответствует контролю кадра на стоповый бит. Для режима 2 и 3 такая организация работы обеспечивает разделение кадров на два класса в зависимости от состояния RB8. В противном случае принятые данные в SBUF не записываются и безвозвратно теряются.

2.2.4 Работа с внешней памятью программ и памятью данных. Режим работы ОМЭВМ с внешней памятью устанавливается путем отключения внутренней памяти заданием низкого уровня напряжения на выводе /DEMA и применяется при отладке программ и контроле процессора. Этот режим используется также, если внутренней памяти программ недостаточно. В этом случае можно совместить внутреннюю (4096 байт) и внешнюю (60 К) памяти программ общим объемом 64К (на выводе /DEMA при этом подается напряжение высокого уровня) или использовать только внешнюю память с максимальным объемом 64К (при этом вывод /DEMA подключается на корпус).

При работе с внешней памятью программ выдача младших разрядов адреса (А7...А0) на внешнюю память и прием кода команд из внешней памяти осуществляется через порт Р0 (Р07 – Р00). При этом адрес фиксируется по сигналу ALE, а команды принимаются по сигналу /PME. Старшие разряды адреса А15...А8 выдаются через Р2 (Р2.7...Р2.0). При увеличении объема памяти за счет подключения внешнего ОЗУ емкостью до 256 байт обмен данными между ОЗУ и ОМЭВМ осуществляется через двунаправленный порт Р0 с помощью команд MOVXA,@R и MOVX@R,А. Для работы с внешним ОЗУ объемом свыше 256 байт (до 64 К) используются команды MOVXA,@DPTR и MOVX@DPTR,А. При этом адрес данных фиксируется по спаду сигнала ALE, а прием и выдача данных - по сигналам /RD и /WR.

В режиме проверки внутренней памяти контролируется правильность хранящихся в памяти программ информации, записанной в процессе производства микросхем для ВЕ51. Подаваемые на одноименные выводы микросхемы сигналы выполняют следующие функции:

P2.7 - при подаче напряжения низкого уровня активизирует режим обращения к внутренней памяти для считывания;

P1.0 ... Р1.7, Р2.0 ... Р2.3 - организует подачу адреса А0 - А11;

P0.0 ...Р0.7 - организуют прием данных для программирования, или выдачу данных для контроля.