Микроконтроллеры Intel MCS-51

1. Общая характеристика семейства MCS-51

Семейство MCS-51 однокристальных 8-разрядных микроконтроллеров фирмы Intel является одним из наиболее развитых в данном классе устройств. Основные характеристики некоторых представителей семейства приведены в табл.1.

Табл. 1

Характеристики МК семейства MCS-51

МК

Память программ (байт)

Память данных (байт)

Таймеры /

счетчики

Аналоговые входы

Тактовая частота

8751BH

8752BH

87C51

87C52

87C54

87C51FA

87C51FB

87C51FC

87C51GB

4K

8K

4K

8K

16K

8K

16K

32K

8K

128

256

128

256

256

256

256

256

256

2

3

2

3

3

3

3

3

3

0

0

0

0

0

0

0

0

8

12

12

12,16,20,24

12,16,20,24

12,16,20,24

12,16,20,24

12,16,20,24

12,16,20,24

12,16

Базовое ядро МК семейства MCS-51 включат следующие устройства:

- центральное процессорное устройство (ЦПУ);

- память данных и память программ;

- 4 параллельных порта ввода/вывода;

- 2 таймера/счетчика;

- блок прерываний;

- последовательный порт.

На рис. 1. представлена обобщенная структурная схема базового МК. Старшие модели контроллеров содержат три таймера, шесть параллельных портов, АЦП с 8 входными каналами, массив программируемых счетчиков.

2 Организация памяти

МК семейства MCS-51 выпускаются в следующих вариантах:

- без встроенного ПЗУ программ (маркировка 80xxx);

- со встроенным масочным ПЗУ (маркировка 83xxx);

- со встроенным ПЗУ, программируемым пользователем (маркировка 87xxx).

Память программ и память данных физически и логически разделены, имеют различные механизмы адресации и работают под управлением различных сигналов.

НЕ нашли? Не то? Что вы ищете?

Резидентная память программ (РПП) имеет емкость от 4K до 32K и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных данных и т. п. РПП имеет 16-разрядную шину адреса, который формируется в счетчике команд (PC) или в регистре-указателе (DPTR). Последний выполняет функции базового регистра при косвенных переходах в программе и используется в командах, оперирующих с таблицами. Память данных (ОЗУ) предназначена для хранения переменных в процессе выполнения программы и имеет емкость 128 или 256 байт. К адресному пространству резидентной памяти данных примыкают адреса регистров специального назначения. Как память программ, так и память данных могут быть расширены до 64K байт путем подключения внешних БИС.

Слово состояния программы (PSW) хранит признаки, вырабатываемые АЛУ при выполнении различных команд, а также биты управления выбором регистрового банка.

Рис. 1. Структура базового МК семейства MCS-51

3. Параллельные порты ввода/вывода.

Параллельные порты P0-P3 предназначены для побайтного ввода или вывода информации. Каждый порт содержит управляемые регистр-защелку, входной буфер и выходной драйвер. Порт 0 является двунаправленным, а порты 1, 2 и 3 – квазидвунаправленными. Каждая линия портов может быть использована независимо для ввода или вывода информации. Чтобы некоторая линия порта использовалась для ввода, в D-триггер регистра-защелки порта должна быть записана 1, которая закрывает МОП-транзистор выходной цепи. По сигналу сброса в регистры-защелки всех портов записываются единицы, настраивающие их тем самым на режим ввода.

Порты P0 и P2 используются при обращении к внешней памяти. При этом через P0 в режиме временного мультиплексирования сначала выводится младший байт адреса, а затем выдается или принимается байт данных. Через порт P2 выводится старший байт адреса в тех случаях, когда разрядность адреса равна 16 бит. Таким образом при наличии внешней памяти порты P0 и P2 не могут использоваться для ввода/вывода данных от внешних устройств.

Выводы порта P3, как правило, используются для реализации альтернативных функций: выдачи сигналов чтения (ØRD) и записи (ØWR) при обращении к внешней памяти данных, приема входных сигналов таймеров/счетчиков (T0, T1) и сигналов внешних прерываний (ØINT0, ØINT1), а также приема и выдачи данных последовательного порта (RxD, TxD). Альтернативные функции могут быть задействованы путем записи 1 в соответствующие разряды регистра защелки порта P3.

Линия порта P0 может быть нагружена на два ТТЛ-входа, а выходные линии портов P1-P3 могут работать на одну ТТЛ-схему.

4. Таймеры/счетчики

Микроконтроллеры семейства MCS-51 имеют в своем составе от одного до трех 16-разрядных счетчика T/C, которые могут выполнять функции таймера, либо счетчика внешних событий. В режиме таймера содержимое T/C инкрементируется в каждом машинном цикле, состоящем из 12 тактов. В режиме счетчика внешних событий T/C инкрементируется под воздействием отрицательного фронта входного сигнала на соответствующем выводе МК. Рассмотрим работу таймеров/счетчиков на примере МК, содержащих два таймера/счетчика.

Режим 0. В этом режиме T/C функционирует как 13-разрядный таймер или счетчик внешних событий. При переполнении таймера/счетчика (переходе из состояния «все единицы» в состояние «все нули») устанавливается соответствующий флаг прерывания TF в регистре TCON. Счетные импульсы поступают на таймер/счетчик при выполнении следующего условия: TR&(INT Ú ØGATE). Таким образом, установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсных сигналов, поступающих на вход INT.

Режим 1. Отличается от режима 0 только тем, что разрядность T/C равна 16.

Режим 2. В этом режиме младший регистр TL работает как 8-разрядный счетчик, при переполнении которого (переходе в состояние «все нули») устанавливается флаг TF запроса прерывания и выполняется автоматическая перезагрузка TL содержимым старшего регистра ТН. Содержимое регистра ТН формируется предварительно программно, и при перезагрузке TL не изменяется.

Режим 3. В этом режиме T/C0 и T/C1 функционируют различно. TL0 и ТН0 работают как два независимых счетчика. Регистр TL0 использует все биты управления T/C0: GATE, С/Т, TR0, TF0 и вход INT0. Регистр ТН0 может работать только в режиме таймера, при этом он использует только биты TR1 и TF1. T/C1 в режиме 3 остановлен, что эквивалентно сбросу флага TR1 в нуль.

Для управления работой таймеров/счетчиков и их взаимодействием с системой прерываний используются два регистра специальных функций:

n регистр режимов таймеров/счетчиков - TMOD;

n регистра управления/состояния таймеров/счетчиков - TCON.

5. Организация системы прерываний

В МК семейства MCS-51 предусмотрена приоритетная система прерываний, обслуживающая запросы на прерывание от следующих источников:

n двух внешних источников прерываний (запросы должны поступать от внешних устройств на входы ØINT0, ØINT1 микроконтроллера);

n таймеров/счетчиков T/C0 и T/C1 (при переполнении);

n порта последовательной передачи данных (при передаче или приеме очередного байта информации).

При поступлении запроса на прерывание от одного из источников, устанавливаются соответствующие биты (флаги прерывания) в регистрах TCON (для таймеров/счетчиков и внешних устройств) и SCON (для последовательного порта), содержимое которых можно считать программно.

Любое прерывание можно разрешить (запретить) программно, путем установки (сброса) соответствующего бита в регистре масок прерываний IE. Если прерывание от данного устройства разрешено, выполняется переход на подпрограмму обслуживания прерывания. При этом сбрасываются флаги прерывания (за исключением рассмотренных ниже случаев), содержимое программного счетчика РС заносится в стек, а в РС загружается адрес, зависящий от источника прерывания:

Источник Адрес перехода

Внешнее прерывание 0 0003h

Таймер/счетчик 0 000Вh

Внешнее прерывание 1 0013h

Таймер/счетчик 1 001Вh

Последовательный порт 0023h

Программа обработки прерывания должна заканчиваться командой RETI, которая загружает из стека программный счетчик.

Внешние прерывания могут быть вызваны либо отрицательным фронтом (перепадом из 1 в 0), либо низким уровнем сигнала на входах ØINT0 и ØINT1 и приводят к установке флагов IE0 и IE1 в регистре TCON. Выбор типа прерывания (фронт или уровень) определяется битами IT0, IT1 регистра TCON. Сброс флагов прерывания IE0, IE1 выполняется аппаратно при обслуживании прерывания только в том случае, когда прерывание было вызвано фронтом сигнала. Если прерывание было вызвано уровнем сигнала, то сброс флага IE должна выполнять программа обслуживания прерывания, воздействуя на источник прерывания для снятия им запроса. Флаги запросов прерывания от таймеров сбрасываются аппаратно при передаче управления подпрограмме обработки прерывания.

Каждому из пяти источников прерываний может быть присвоен один из двух уровней приоритета (высший или низший) путем программной установки или сброса соответствующего бита в регистре IP. Установленный в 1 бит соответствует высшему уровню приоритета, сброшенный - низшему.

Источник с высшим уровнем приоритета может прервать программу обслуживания прерывания от источника с низшим уровнем приоритета. Программа обслуживания прерывания от источника с высшим уровнем приоритета не может быть прервана. Если одновременно поступают два запроса на прерывание от источников с одинаковыми приоритетами, то будет обслужен источник с более высоким рангом. Ранги всех источников жестко фиксированы в следующем порядке (по убыванию ранга):

n внешнее прерывание 0;

n таймер/счетчик 0;

n внешнее прерывание 1;

n таймер/счетчик 1;

n последовательный порт.

6. Последовательный порт

Последовательный порт, который также называют универсальным асинхронным приемопередатчиком (УАПП), предназначен для приема и передачи информации в последовательной форме (младшими битами вперед). Порт обеспечивает полный дуплексный режим обмена, то есть позволяет работать одновременно на выдачу и на прием информации.

В состав УАПП входят принимающий и передающий сдвигающие регистры, а также буферный регистр SBUF приемопередатчика, через который программно доступны как принимающий, так и передающий регистры. Запись байта в регистр SBUF приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Порт позволяет начинать прием нового байта до того, как из приемного регистра считан предыдущий байт, однако, если первый байт еще не считан к тому моменту, когда закончится прием второго байта, то он будет потерян.

УАПП может работать в четырех различных режимах.

Режим 0. Последовательная информация передается и принимается 8-битными посылками через вывод RXD входа приемника. Через вывод TXD выхода передатчика выдаются тактовые импульсы, сопровождающие каждый бит. Таким образом в данном режиме информация записывается/считывается синхронно с тактовыми импульсами. Скорость обмена фиксирована и составляет 1/12 частоты тактового генератора.

Режим 1. В этом режиме посылка содержит 10 бит, которые передаются (через TXD) либо принимаются (через RXD) в следующей последовательности:

старт-бит (логический "0");

8 бит данных (младший бит первым);

стоп-бит (логическая "1").

При приеме стоп-бит заносится в разряд RB8 регистра SCON. Скорость обмена задается пользователем, для чего используется таймер/счетчик 1.

Режим 2. В этом режиме каждая посылка содержит 11 бит, которые передаются (через TXD) и/или принимаются (через RXD) в следующей последовательности:

старт-бит (логический "0");

8 бит данных (младший бит первым);

программируемый 9-й бит данных;

стоп-бит (логическая "1").

При передаче 9-й бит данных (размещается в разряде ТВ8 регистра SCON) может принимать фиксированное значение 0 или 1, либо формироваться программно, например, для контроля передаваемого байта по четности (в этом случае в него может быть помещено значение флага паритета из регистра PSW).

При приеме 9-й бит данных поступает в разряд RB8 регистра SCON. Скорость обмена в режиме 2 составляет 1/64 или 1/32 частоты внешнего тактового генератора и зависит от состояния бита SMOD (старший бит в регистре специального назначения PCON). Если SMOD=0 (устанавливается по сбросу МК), то скорость обмена составляет 1/64 частоты внешнего тактового генератора. Если SMOD=1, То скорость обмена составляет 1/32 частоты тактового генератора.

Режим 3. Данный режим совпадает с режимом 2, за исключением частоты приема/передачи, которая управляется программно с помощью таймера/счетчика 1.

Для задания режима работы последовательного порта используются регистры SCON и PCON.

7. Система команд

Базовая система команд МК семейства MCS-51 включает 111 команд, которые можно разделить на пять функциональных групп:

n команды пересылки данных;

n арифметических операций;

n логических операций;

n операций с битами;

n команды передачи управления.

Полный перечень команд приведен в таблице 4.2. Для задания источников и приемников операндов в командах используются пять режимов адресации: регистровая, прямая, косвенно-регистровая, непосредственная и базово-индексная.

Регистровая адресация. В качестве источника/приемника операнда используются: аккумулятор А, регистр-расширитель В, аккумулятор А, регистр-расширитель В, регистры R0-R7 текущего банка рабочих регистров, регистр-указатель DPTR.

Прямая адресация. Позволяет адресовать ячейки встроенного ОЗУ данных и регистры специального назначения. Например, команда MOV A, 30h пересылает в аккумулятор содержимое ячейки встроенного ОЗУ с адресом 30h.

Адреса регистров специального назначения приведены выше в табл. 2.2. Команда MOV R1, P0, пересылающая содержимое порта Р0 в регистр R1, эквивалентна команде MOV R1, 80h (т. к. порт Р0 имеет адрес 80h), но первая запись более наглядна.

Косвенно-регистровая адресация. Позволяет обращаться к любым ячейкам как встроенного так и внешнего ОЗУ данных. Ячейки встроенного ОЗУ адресуются косвенно через регистры R0 или R1 текущего банка. Например, команда MOV A,

Табл.4.2

Система команд микроконтроллеров 8xC51

Мнемокод

Число байт

Число

циклов

Операция

Команды пересылки данных

MOV A, Rn

MOV A, ad

MOV 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,@Ri

MOV ad,#d

MOV @Ri, A

MOV @Ri, ad

MOV @Ri,#d

MOV DPTR,#d16

MOVC A,@A+DPTR

MOVC A,@A+PC

MOVX A,@Ri

MOVX A,@DPTR

MOVX @Ri, A

MOVX @DPTR, A

PUSH ad

POP ad

XCH A, Rn

XCH A, ad

XCH A,@Ri

XCHD A,@Ri

1

2

1

2

1

2

2

2

2

2

3

2

3

1

2

2

3

1

1

1

1

1

1

1

2

2

1

2

1

1

1

1

1

2

1

1

2

2

2

2

1

2

1

2

2

2

2

2

2

2

2

2

1

1

1

1

(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)

Команды арифметических операций

ADD A, Rn

ADD A, ad

ADD A,@Ri

ADD A,#d

ADDC A, Rn

ADDC A, ad

ADDC A,@Ri

ADDC A,#d

DA A

SUBB A, Rn

SUBB A, ad

SUBB A,@Ri

SUBB A,#d

1

2

1

2

1

2

1

2

1

1

1

2

1

1

1

1

1

1

1

1

1

1

1

1

1

1

(A) (A)+(Rn)

(A) (A)+(ad)

(A) (A)+((Ri))

(A) (A)+ #d

(A) (A)+(Rn)+(C)

(A) (A)+(ad)+(C)

(A) (A)+((Ri))+(C)

(A) (A)+ #d +(C)

Десятичная коррекция

(A) (A)-(C)-(Rn)

(A) (A)-(C)-(ad)

(A) (A)-(C)-((Ri))

(A) (A)-(C)- #d

Продолжение табл. 4.2

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3