Таблица 2.6
Биты | Наименование | Назначение |
7 | EA | Бит управления всеми источниками прерываний одновременно. EA=0 - прерывания запрещены, EA=1 - прерывания могут быть разрешены индивидуальными разрешениями EX0, EX1, ET0, ET1, ES. |
6 | - | Не используется. |
5 | - | Не используется. |
4 | ES | Бит управления прерыванием от последовательного порта. ES=0 - прерывание запрещено, ES=1 - прерывание разрешено. |
3 | ET1 | Бит управления прерыванием от T/C1. ET1=0 - прерывание запрещено, ET1=1 - прерывание разрешено. |
2 | EX1 | Бит управления прерыванием от внешнего источника EX1=0 - прерывание запрещено, EX1=1 - прерывание разрешено. |
1 | ET0 | Бит управления прерыванием от T/C0. ET0=0 - прерывание запрещено, ET0=1 - прерывание разрешено. |
0 | EX0 | Бит управления прерыванием от внешнего источника EX0=0 - прерывание запрещено, EX0=1 - прерывание разрешено. |
Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ни от одного из источников. Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производится в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов:
Источник | Приоритет внутри уровня |
IE0 | высокий |
| |
IE1 | |
TF1 | |
RI, TI | низкий |
Необходимо особо подчеркнуть, что структура "Приоритет внутри уровня" работает только в тех случаях, когда определяется последовательность обслуживания запросов на прерывания, которые приняты одновременно и при этом имеют одинаковый уровень приоритета.
Таблица 2.7
Биты | Наименование | Назначение |
7 | - | Не используется. |
6 | - | Не используется. |
5 | - | Не используется. |
4 | PS | Бит установки уровня приоритета прерывания от последовательного порта. |
3 | PT1 | Бит установки уровня приоритета прерывания от таймера/счетчика T/C1. |
2 | PX1 | Бит установки уровня приоритета прерывания от внешнего источника |
1 | PT0 | Бит установки уровня приоритета прерывания от таймера/счетчика T/C0. |
0 | PX0 | Бит установки уровня приоритета прерывания от внешнего источника |
Регистр PSW (Program Status Word). Наименование и назначение разрядов регистра PSW приведены в табл.2.8.
Аккумулятор A представляет собой 8-разрядный регистр, который является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверки на нуль, формирование флага паритета и т. п.
Регистр B - 8-разрядный регистр, используемый в сочетании с аккумулятором при выполнении операций умножения и деления для хранения второго входного операнда и помещения возвращаемых 8-ми битов результата. В других операциях регистр B является обычным регистром общего назначения.
Таблица 2.8
Биты | Наименование | Назначение | |||||
7 | C | Флаг переноса. Устанавливается в "1" (сбрасывается в "0") аппаратно или программно. Аппаратно устанавливается (сбрасывается) во время выполнения команды сложения или вычитания при наличии (отсутствии) соответственно переноса или заема в 7-ом бите результата. Во время выполнения команды умножения или деления флаг всегда аппаратно сбрасывается. | |||||
6 | AC | Флаг дополнительного переноса. Устанавливается (сбрасывается) аппаратно или программно. Аппаратно устанавливается (сбрасывается) во время выполнения команды сложения или вычитания при наличии (отсутствии) соответственно переноса или заема в 3-ем бите результата. | |||||
5 | F0 | Программно управляемый флаг пользователя. | |||||
4 3 | RS1 RS0 | Разряды управления выбором банка рабочих регистров. Устанавливаются (сбрасываются) программно. | |||||
RS1 | RS0 | Банк | |||||
0 | 0 | 0 | |||||
0 | 1 | 1 | |||||
1 | 0 | 2 | |||||
1 | 1 | 3 | |||||
2 | OV | Флаг переполнения. Устанавливается (сбрасывается) аппаратно или программно. Аппаратно устанавливается во время выполнения команды сложения (вычитания) если есть перенос (заем) в 6-ом бите результата и нет переноса (заема) в бите 7, или есть перенос (заем) в бите 7 и нет в бите 6, в противном случае флаг сбрасывается. Во время выполнения команды деления флаг аппаратно сбрасывается, а в случае деления на нуль - устанавливается. При умножении флаг аппаратно устанавливается если результат больше 255, в противном случае - сбрасывается. | |||||
1 | без имени | Флаг пользователя. Устанавливается (сбрасывается) программно. Доступен по чтению. | |||||
0 | P | Флаг паритета. Программно доступен только по чтению. Аппаратно сбрасывается (устанавливается) в каждом машинном цикле для индикации четности (нечетности) количества разрядов аккумулятора, находящихся в состоянии "1". Если в аккумуляторе все разряды сброшены в "0", флаг аппаратно сбрасывается. |
2.2. Ассемблерный язык микроконтроллера 8051
Для эффективной разработки прикладного программного обеспечения микропроцессоров и микроконтроллеров необходимо выбрать подходящий язык программирования. Если требуется не очень сложная и при этом быстрая и компактная программа, которая не содержит сложных вычислительных операций, то для ее написания лучше выбрать язык низкого уровня (язык ассемблера). Язык высокого уровня (ЯВУ) следует выбрать в том случае, если необходимо производить сложные вычисления: операции над 16-, 32-разрядными числами, числами с плавающей точкой и др. Очень часто наиболее подходящей является смешанная модель, где критичные к быстродействию части программы написаны на ассемблере, а вычислительные процедуры реализованы на ЯВУ, например, на Си.
Изучение языков программирования целесообразнее всего начинать с ассемблера, поскольку он дает наглядное представление о функционировании аппаратной части целевого микропроцессора (микропроцессора для которого разрабатывается прикладная программа), что в конечном счете обеспечивает получение оптимальных схемотехнических решений разрабатываемой микропроцессорной техники. Язык ассемблера относится к группе машинно-ориентированных языков. Иначе говоря, каждому типу микропроцессоров или микроконтроллеров соответствует свой ассемблерный язык.
Оператором языка ассемблера микроконтроллера 8051 (языка АСМ51) является строка исходного текста микроконтроллерной программы (МК-программы), имеющая следующий формат:
<метка> | < команда/ директива > | ;<комментарий> | |
<операция> <операнды> |
Поле <команда/ директива> является главным полем строки и состоит из поля <операция> и поля <операнды>, разделенных пробелом.
Поле <операция> содержит мнемоническое обозначение команды или директивы ассемблера, которое является сокращением (аббревиатурой) полного английского наименования выполняемого действия. Например: MOV - move - переслать, JMP - jump - перейти, DB - define byte - определить байт. Кроме того, поле <операция> может содержать символическое имя ассемблерной макрокоманды.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |


