Как да направите порт за получаване на mcs 51. MCS-51 микроконтролери

UDC 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 и 73

Щербина А. Н.Изчислителни машини, системи и мрежи. Микроконтролери и микропроцесори в системите за управление: Cheb. помощ / A.N. Щербина, П.А. Нечаев-СПб.: От политехн. ун-та, 2012.-226 с.

Съответства на съдържанието на държавния образователен стандарт за направления на подготовка и специалности в областта на управлението на техническите системи, електроенергетиката и електротехниката и съдържанието на примерната учебна програма на дисциплината „Компютри, системи и мрежи“.

Основните въпроси на логическата организация на микропроцесорните системи се разглеждат на примера на основната архитектура на семейството микроконтролери MCS-51 от Intel. Описана е технологията за програмиране на микроконтролери на асемблер и SI езици.

Може да бъде полезен за студенти и преподаватели от висши технически институции, специалисти по автоматизация на технологични процеси и производствено оборудване, както и за инженери-конструктори на микропроцесорни системи.

Съответства и на съдържанието на държавния образователен стандарт на дисциплините "Микроконтролери и микропроцесори в системите за управление" и "Електронни средства за автоматизация" на бакалавърска, инженерна и магистърска подготовка в направление 140400 "Електроенергетика и електротехника".

Публикува се по решение на редакционно-издателския съвет

Държавен политехнически университет в Санкт Петербург.

© Щербина А. Н., Нечаев П. А., 2012

© Държава Санкт Петербург

политехнически университет, 2012г

ISBN 978-5-7422-3553-8


Въведение.. 7

Глава 1. Архитектура на семейството MCS51. 10

1.1 Общи характеристики 10

1.2 Блокова диаграма 11



1.3 8051 щифтове за микроконтролер 15

1.4 Организация на паметта 17

1.4.1 Програмна памет (ROM) 18

1.4.2 Памет за данни (RAM) 19

1.4.3 Регистри на специални функции. 20

1.4.4 Флагов регистър (PSW) 23

1.5 Устройство за управление и синхронизация 26

1.6 Организиране на I/O портове 27

1.6.1 Обща информация. 27

1.6.2 Алтернативни функции. 27

1.7. Таймери / броячи на микроконтролери от семейството 8051. 28

1.7.1. Устройство на таймери-броячи. 28

1.7.2 Режими на работа на таймери-броячи. тридесет

1.8. Сериен порт 32

1.8.1. Структурата на серийния порт. 32

1.8.2. Регистър за управление/състояние на трансивър SCON.. 34

1.8.3. Регистър за контрол на мощността PCON.. 36

1.9. Система за прекъсване 37

1.9.1. Структурата на системата за прекъсване. 37

1.9.2 Изпълнение на процедурата за прекъсване. 40

Глава 2 Характеристики на микроконтролера 80C51GB.. 42

2.1 Характеристики 42

2.2 I/O портове P0-P5 43

2.2.1 Работа на I/O портовете. 43

2.2.2 Писане в порт.. 46

2.3 Характеристики на системата за прекъсване 8XC51GB.. 49

Активиране/деактивиране на прекъсвания. 50

Прекъснете управлението на приоритетите. 51

външни прекъсвания. 54

2.3. ADC възел 56

2.4. Хардуерен пазач 61

2.5. Откриване на повреда на часовника 63

2.6. Матрица от програмируеми броячи RSA 64

2.6.1. Структура PCA.. 64

2.6.2. PCA Counter Mode Register (CMOD) 66

2.6.3. Контролен регистър на PCA брояч (CON) 67

2.6.4. Сравнете/поправете модули. 68

2.7. Подобрен сериен порт 76

2.8. Таймери/Броячи 79

Разпределение на щифтове на 8XC51GB.. група микроконтролери 86

Глава 3 Програмиране на MK 8051GB.. 89

3.1. Софтуерен модел 89

3.2 Типове данни 93

3.3 Начини за адресиране на данни 93

3.4 Командна система 95

3.4.1 Общи характеристики. 95

3.4.2 Типове команди. 96

3.4.3 Видове операнди. 97

3.4.4 Команди за трансфер на данни от микроконтролера. 98

3.4.5 Аритметични инструкции 8051.101

3.4.6 8051 MCU логически команди 104

3.4.7 Команди за битови операции 8051. 106

3.5 Програми за отстраняване на грешки 111

Глава 4. Език за програмиране ASM-51. 112

4.2 Писане на програмен текст 113

4.3 Езикова азбука. 114

4.4 Идентификатори. 115

4.5 Числа 117

4.6 Директиви 118

4.7 Внедряване на подпрограми в ASM51 122

4.7.1 Структурата на подпрограмата-процедура в езика ASM51. 122

4.7.2 Предаване на променливи на параметри към подпрограма. 123

4.7.3 Реализация на подпрограми-функции на езика ASM51. 123

4.7.4 Внедряване на процедури за обработка на прекъсвания на езика ASM51. 124

4.8 Структурно програмиране на асемблер. 125

4.9 Особености на превода на многомодулни програми.. 126

4.10 Използване на сегменти 128

4.10.1 Разделяне на MK паметта на сегменти .. 128

4.10.2 Абсолютни сегменти на паметта. 129

4.10.2 Преместваеми сегменти на паметта. 131

Глава 5. Езикът за програмиране C-51. 134

5.1 Общи характеристики на езика 134

5.3 Структура на програмите C-51 136

5.3. Елементи на езика за програмиране C-51 138

5.3.1. Символи.. 138

5.3.2. Лексикални единици, разделители и използване на интервали. 141

5.3.3 Идентификатори.. 142

5.3.4 Ключови думи. 143

5.3.5 Константи.. 143

5.4. Изрази в езикови изрази 146

програмиране C-51 146

5.5. Оперативни приоритети 148

5.6. Изявления на езика за програмиране C-51 149

5.6.1. декларационни оператори. 150

5.6.2 Изпълними оператори.. 150

5.6.3 Оператор за присвояване. 151

5.6.4 Условен оператор. 151

5.6.5 Структурен оператор (). 152

5.6.6 Изявлението за цикъл. 152

5.6.7 Инструкция за цикъл с проверка на условието до тялото на цикъла while. 153

5.6.8 Инструкция за цикъл с проверка на условието след тялото на цикъла do while. 154

5.6.9 Инструкцията за прекъсване. 155

5.6.10 Операторът continue. 155

5.6.11 Изявление за избор на превключвател. 155

5.6.12 Операторът goto. 157

5.6.13 Операторен израз. 158

5.6.14 Инструкция за връщане от подпрограма за връщане. 158

5.6.15 Празен оператор. 158

5.7. Деклариране на променливи в езика за програмиране C-51. 159

5.7.1. Декларация на променлива. 159

5.7.3 Целочислени типове данни. 161

5.7.4 Числа с плаваща запетая. 162

5.7.5 Променливи от изброен тип. 162

5.7.6. Деклариране на масиви в езика за програмиране C-51. 164

5.7.7. Конструкции.. 165

5.7.8. Асоциации (смеси) 166

5.8. Използване на указатели в C-51 167

5.8.1. Деклариране на указатели. 167

5.8.2. Нетипизирани указатели. 168

5.8.3. Зависещи от паметта указатели. 169

5.9. Деклариране на нови типове променливи 169

5.10. Инициализация на данни 170

5.11. Използване на подпрограми в езика за програмиране C-51. 170

5.11.1. Дефиниция на подпрограми.. 171

5.11.2. Параметри на подпрограмата .. 173

5.11.3. Предварителна декларация на подпрограми.. 174

5.11.4 Извикване на подпрограми.. 176

5.11.5 Рекурсивно извикване на подпрограма.. 176

5.11.6 Процедури за прекъсване. 177

5.11.7 Обхват на променливи и подпрограми.. 178

5.12. Многомодулни програми 179

Глава 6. Подготовка на програми в интегрираната среда за разработка Keil μVision2. 182

6.1 Създаване на проект ASM-51 182

6.2 Пример за създаване на C проект за контролер за обучение в Keil μVision2 IDE 188

Глава 7 Описание на контролера за обучение .. 199

7.1. Структура на контролера 199

7.2. Адресно пространство 200

7.2.1. Разпределение на паметта. 200

7.2.2 Външна памет. 201

7.2.3. Вътрешна памет за данни. 202

7.3. Разпределение на I/O портове 202

7.4. Сериен порт………………………………...203

7.5. Работа с LCD 205

7.6. Контролни панели…………………………………………………213

ПРИЛОЖЕНИЕ П2СТРУКТУРА НА ДОКЛАДА ОТ ЛАБОРАТОРНАТА РАБОТА……..217

Приложение P3 Кодове на машинни команди. 217

Използвана литература... 224


Въведение

В развитието на специалностите, свързани с автоматизацията на технологичните процеси и производството, изучаването на микроконтролери е един от важните раздели.

В света има непрекъснато развитие и поява на все повече и повече 16- и 32-битови микроконтролери и микропроцесори, но най-големият дял от световния пазар на микропроцесори все още принадлежи на 8-битовите устройства. Според всички прогнози на аналитичните компании за близко бъдеще, водещата позиция на 8-битовите микроконтролери на световния пазар ще продължи.

В момента сред всички 8-битови микроконтролери семейството MCS-51 е безспорен лидер в броя на разновидностите и броя на компаниите, произвеждащи неговите модификации. Той носи името си от първия представител на това семейство - микроконтролер 8051. Успешен набор от периферни устройства, гъвкав избор на външна или вътрешна програмна памет и достъпна цена гарантират успеха на този микроконтролер на пазара.

Предимства на семейството MCS-51:

архитектура, която е де факто стандартът;

Изключителната широта на семейството и разнообразието от възможности;

Наличие на високопроизводителни и разширени версии на процесори;

значителен брой свободно достъпни софтуерни и хардуерни разработки;

лекота на хардуерно програмиране, включително вътрешносхемно програмиране;

ниска цена и наличие на основни чипове;

Наличие на специализирани версии на контролери за специални условия на употреба

Наличие на версии на контролери с намалено ниво на електромагнитни смущения;

· широка популярност сред разработчиците от по-старото поколение, както в света, така и в страните от ОНД;

Подкрепа на архитектурата от водещи образователни институции в света.

И накрая, основното предимство: след като сте усвоили основния чип на семейството, е лесно да започнете да работите с такива компютърни „чудовища“ като микроконтролери Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

Семейството MCS-51 включва цял набор от микросхеми от най-простите микроконтролери до доста сложни. Към днешна дата има повече от 200 модификации на микроконтролери от семейството 8051, произведени от почти 20 компании. Всяка година има все повече и повече варианти на представители на това семейство.

Основните области на развитие са:

увеличаване на скоростта (увеличаване на тактовата честота и преработване на архитектурата);

намаляване на захранващото напрежение и консумацията на енергия;

· увеличаване на обема RAM и FLASH памет на чип с възможност за вътрешносхемно програмиране;

· въвеждане на сложни устройства като системи за управление на задвижване, CAN и USB интерфейси и др. в периферията на микроконтролера.

Микроконтролерите от семейството MCS-51 ви позволяват да изпълнявате както задачите за управление на различни устройства, така и внедряване на отделни възли на аналоговата верига. Всички микросхеми от това семейство работят с една и съща командна система. Повечето от тях се извършват в едни и същи кутии със същия щифт (номериране на краката за корпуса). Това дава възможност да се използват микросхеми на различни производители за разработеното устройство, без да се променя електрическата схема на устройството и програмата.

Основните производители на разновидности от 51-то семейство в света са Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems и редица други.

Характеристиките на аналозите на микроконтролерите от семейството MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) с разширени функции са дадени в таблица. В 1.

Таблица Б.1

RAM ROM SAR ADC WDT T/C След раждане. Канали Особености
Atmel: AT89C2051
- - - - UART Flash 2 Kb
AT89C4051 - - - - UART Flash 4 Kb
AT89S4D12 128K - - - UART, SPI Flash 4 Kb
DALLAS Semiconductor: DS5000FP
- - - + UART начално зареждане
DS5001FP - - - + UART начално зареждане
DS8xC520 16K - - + 2xUART 2DPTR
SIEMENS: C505C
16K - + + UART, CAN 8DPTR
C515C 64K - + + UART+SSC+CAN 4 ШИМ, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, ниво 4 прекъсване, часовник, Flash 8K
P51XAG1x 8K - - + 2 UARTs
Intel: 8xC51RA
8K - + + UART 4 нива IRQ, clock out
8XC196KC 64K 16K - + - UART 3 ШИМ
80C196KB 64K 8K - + - UART ШИМ

Глава 1 Семейна архитектура на MCS51

8-битовите едночипови микроконтролери от семейството MCS-51 придобиха голяма популярност сред разработчиците на микропроцесорни системи за управление поради тяхната добре проектирана архитектура. Архитектурата на микроконтролера е набор от вътрешни и външни софтуерно достъпни хардуерни ресурси и система от команди. Архитектурата на фамилията MCS-51 до голяма степен се определя от нейното предназначение – изграждане на компактни и евтини цифрови устройства. Микроконтролерите, които изпълняват всички функции на микрокомпютър, използвайки една микросхема, се наричат ​​едночипови компютри (OEVM).

Intel пусна около 50 модела, базирани на операционното ядро ​​на микроконтролера Intel 8051. В същото време много други компании, като Atmel, Philips, започнаха производството на своите микроконтролери, разработени в стандарта MCS-51.

Основни характеристики

Основните характеристики на семейството:

· 8-битов централен процесор (CPU), фокусиран върху управлението на изпълнителни устройства;

· Централният процесор има вградена схема на 8-битово хардуерно умножение и деление на числа;

Наличието в набора от инструкции на голям брой операции за работа с директно адресируеми битове позволява да се говори за процесор за работа с битови данни (булев процесор);

вътрешна (в чип) програмна памет от маска или препрограмируем тип, която има обем от 4 до 32 Kb за различни кристали, липсва в някои версии;

· най-малко 128 байта резидентна RAM за данни, която се използва за организация, регистрационни банки, стек и съхранение на потребителски данни;

· най-малко 32 двупосочни интерфейсни линии (портове), индивидуално конфигурирани за въвеждане или извеждане на информация;

· два 16-битови многорежимни брояча/таймера, използвани за отчитане на външни събития, организиране на времеви закъснения и часовник на комуникационния порт;

· Двупосочен дуплексен асинхронен трансивър (UART), предназначен да организира комуникационни канали между микроконтролера и външни устройства с широк диапазон от скорости на предаване на информация. Има средства за хардуерно-софтуерно интегриране на микроконтролери в свързана система;

· двустепенна система за прекъсване с приоритет, която поддържа поне 5 вектора за прекъсване от 4 вътрешни и 2 външни източника на събития;

вграден тактов генератор.

Структурна схема

Блоковата схема на контролера е показана на Фигура 1.1 и се състои от следните основни функционални единици: управляващо устройство, аритметично логическо устройство, устройство за таймер/брояч, устройство за сериен интерфейс и прекъсване, програмен брояч, памет за данни и програмна памет. Двустранният обмен се осъществява чрез вътрешна 8-битова магистрала за данни. Почти всички представители на семейството MCS-51 са изградени по тази схема. Различните микросхеми от това семейство се различават само в регистрите със специално предназначение (включително броя на портовете).

Блок за управление и синхронизация (Синхронизиране и контрол)- предназначени за генериране на синхронизиращи и управляващи сигнали, които осигуряват координацията на съвместната работа на блоковете на OEVM във всички допустими режими на неговата работа. Блокът за управление включва:

устройство за формиране на времеви интервали;

входно-изходна логика;

регистър на инструкциите;

регистър за управление на потреблението на електроенергия;

команден декодер, логика за компютърно управление.

Ориз. 1.1. Структурна схема на контролера I8051.

Устройство за времеви интервалие предназначен за генериране и извеждане на вътрешни сигнали за синхронизация на фази, цикли и цикли. Броят на машинните цикли определя продължителността на изпълнение на инструкцията. Почти всички команди на OEVM се изпълняват в един или два машинни цикъла, с изключение на инструкциите за умножение и деление, чиято продължителност е четири машинни цикъла. Нека означим честотата на главния осцилатор чрез F g.Продължителността на машинния цикъл е 12/F g, или 12 периода на сигнала на главния осцилатор. Входно-изходната логика е предназначена да приема и издава сигнали, които осигуряват обмен на информация с външни устройства през входно-изходните портове P0-P3.

Регистър на командитее проектиран да записва и съхранява 8-битов операционен код на изпълняваната команда. Операционният код с помощта на команден декодер и компютърна управляваща логика се преобразува в микропрограма за изпълнение на команда.

Регистър за контрол на търсенето (PCON)ви позволява да спрете работата на микроконтролера, за да намалите консумацията на енергия и да намалите нивото на смущения от микроконтролера. Още по-голямо намаляване на консумацията на енергия и намаляване на шума може да се постигне чрез спиране на главния осцилатор на микроконтролера. Това може да се постигне чрез превключване на битове в PCON контролния регистър на търсенето. За опцията за производство на nMOS (серия 1816 или чужди чипове, които нямат буквата "c" в средата на името), регистърът за контрол на мощността PCON съдържа само един бит, който контролира скоростта на предаване на SMOD серийния порт, и там нямат контролни битове за консумация на енергия.

Аритметична логическа единица (ALU)е паралелно осембитово устройство, което осигурява аритметични и логически операции. ALU се състои от:

акумулаторни регистри, регистри за съхранение TMP1 и TMP2;

ROM константи;

суматор;

допълнителен регистър (регистър B);

батерия (ACC);

регистър на състоянието на програмата (PSW).

Регистрирам акумулаторни и холдингови регистри- осембитови регистри, предназначени да приемат и съхраняват операнди за продължителността на операциите върху тях. Тези регистри не са програмно достъпни.

ROM константиосигурява разработването на коригиращ код за представяне на двоично-десетични данни, код на маска за битови операции и константен код.

Паралелен 8-битов суматоре схема от комбиниран тип с последователен трансфер, предназначена за извършване на аритметични операции събиране, изваждане и логически операции събиране, умножение, нееквивалентност и идентичност.

Регистрирайте Б- осембитов регистър, използван по време на операциите за умножение и деление. За други инструкции може да се счита за допълнителен регистър на скречпада.

Батерия- осембитов регистър, предназначен да получава и съхранява резултата, получен при извършване на аритметично-логически операции или операции на смяна

Сериен интерфейс и блок за прекъсване (SIP)предназначени за организиране на входа - изхода на последователни информационни потоци и организация на системата за прекъсване на програмата. Блокът включва:

буфер PIP;

управляваща логика;

контролен регистър;

предавателен буфер;

буфер на приемника;

трансивър със сериен порт;

регистър на приоритета на прекъсване;

регистър за разрешаване на прекъсване;

логика за обработка на флаг за прекъсване и схема за генериране на вектор.

Програмен брояче проектиран да формира текущия 16-битов адрес на вътрешната програмна памет и 8/16-битов адрес на външната програмна памет. Програмният брояч се състои от 16-битов компютърен буфер, компютърен регистър и верига за нарастване (увеличаване на съдържанието с 1).

Памет за данни (RAM)е предназначен за временно съхранение на информация, използвана по време на изпълнение на програмата.

Портове P0, P1, P2, P3са квази-двупосочни входно-изходни портове и са предназначени да осигурят обмен на информация между OEVM и външни устройства, образувайки 32 входно-изходни линии.

Регистър на състоянието на програмата (PSW)е предназначен да съхранява информация за състоянието на ALU по време на изпълнение на програмата.

Програмна памет (EPROM)предназначен за съхраняване на програми и е памет само за четене (ROM). Различни микросхеми използват маскирани, UV-изтриваеми или FLASH ROM.

Регистър на указателя на данни (DPTR)проектиран да съхранява 16-битов адрес на външна памет за данни.

Указател на стека (SP)е осембитов регистър, предназначен да организира специална област на паметта за данни (стек), в която можете временно да съхранявате всяка клетка от паметта.

1.3 8051 щифтове на микроконтролера(фиг. 1.2)

· U ss - потенциалът на общия проводник ("земя");

U cc - основно захранващо напрежение +5 V;

· X1,X2 - изводи за свързване на кварцов резонатор;

· RST - вход на общото нулиране на микроконтролера;

PSEN - разрешение за външна програмна памет, издадено само при достъп до външен ROM;

· ALE - строб адрес на външна памет;

· EA - забранете вътрешната програмна памет; ниво 0 на този вход кара микроконтролера да изпълнява програмата само от външния ROM; игнориране на вътрешното (ако последното съществува);

Ориз. 1.2. Присвояване на щифта 8051.

P1 - осембитов квази-двупосочен порт за вход/изход, всеки бит от порта може да бъде програмиран както за вход, така и за изход на информация, независимо от състоянието на другите битове;

· P2 - осем-битов квази-двупосочен порт, подобен на P1, щифтовете на този порт се използват за издаване на адресна информация при достъп до външна програма или памет за данни (ако се използва 16-битово адресиране на последната). В допълнение, щифтовете на порта се използват при програмиране за въвеждане на битовете от висок ред на адреса в микроконтролера;

· РЗ - осембитов квази-двупосочен порт, подобен на Р1, щифтовете на този порт могат да изпълняват редица алтернативни функции, които се използват при работата на таймери, сериен входно-изходен порт, контролер за прекъсване и външни памет за програми и данни;

· P0 - мултиплексиран осембитов двупосочен порт за вход-изход на информация, през този порт в различни моменти от време се извеждат малкия байт на адреса и данните.

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

Цялата серия MCS-51 има архитектура на Харвард, т.е. отделни програмни и адресни пространства на паметта за данни. Структурата на паметта е показана на фиг. 1.3.

Количеството вътрешна (резидентна) програмна памет (ROM, EPROM или OTP ROM), разположена на чип, в зависимост от типа на микросхемата, може да бъде 0 (ROMless), 4K (базов чип), 8K, 16K или 32K. Ако е необходимо, потребителят може да разшири програмната памет чрез инсталиране на външен ROM. Достъпът до вътрешен или външен ROM се определя от стойността на сигнала на щифта EA (външен достъп):

EA=V cc (захранващо напрежение) - достъп до вътрешна ROM;

EA=V ss (земен потенциал) - достъп до външен ROM.

За чипове без ROM, изводът EA трябва да бъде постоянно свързан към V ss.

Ориз. 1.3. Организация на паметта на семейството MCS-51

External ROM read strobe - (Program Store Enable) се генерира при достъп до външна програмна памет и е неактивен при достъп до ROM, разположен на чипа. Ниската адресна област на програмната памет се използва от системата за прекъсване. Архитектурата на базовия чип 8051 поддържа пет източника на прекъсване:

две външни прекъсвания;

две прекъсвания от таймери;

прекъсвания от серийния порт.

На фиг. 1.4 показва карта на долната област на паметта на програмата.

Ориз. 1.4. Карта на долната област на паметта на програмата

Програмна памет (ROM)

За микроконтролерите от семейството 8051 програмната памет и паметта за данни са независими и независими устройства, адресирани от различни команди и управляващи сигнали.

Размерът на вградената програмна памет, разположена на чипа на микроконтролера 8051, е 4 KB (в семейството до 32). При достъп до външна програмна памет всички микроконтролери 8051 винаги използват 16-битов адрес, което им осигурява достъп до 64 KB ROM. Микроконтролерът осъществява достъп до паметта на програмата, когато чете кода на операцията и операндите (използвайки програмния брояч на компютъра), както и когато изпълнява команди за копиране на байт от паметта на програмата в акумулатора. Когато изпълнявате команди за копиране на данни, адресирането на клетката от паметта на програмата, от която ще се четат данните, може да се извърши както с помощта на компютърния брояч, така и със специален двубайтов регистър на указателя на данни DPTR.

Памет за данни (RAM)

Размерът на паметта за данни в чипа е 128 байта. Външната памет за данни може да бъде до 64 KB. Първите 32 байта са организирани в четири банки от регистри с общо предназначение, обозначени съответно банка 0 - банка 3. Всяка от тях се състои от осем регистъра R0-R7. По всяко време програмата е достъпна, с адресиране на регистъра, само една банка от регистри, чийто номер се съдържа в третия и четвъртия бит на думата за състояние на програмата PSW.

8051 Адреси на битовата област на микроконтролера

Таблица 1.1

Байт адрес (шестнадесетичен) Бит адреси по бит
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B
2E
2D 6F 6E 6D 6C 6B
2C
2B 5F 5E 5 Д 5C 5B
4F 4E 4D 4C 4B
3F 3E 3D 3C 3B
2F 2E 2D 2C 2B
1F 1E 1D 1C
0F 0E 0D 0C
20ч

Останалото адресно пространство може да бъде конфигурирано от разработчика по негово усмотрение: то може да побере областите на стека, системата и потребителските данни. Клетките с памет за данни могат да бъдат достъпни по два начина. Първият начин е директно адресиране на клетка от паметта. В този случай адресът на клетката е операндът на съответната инструкция. Вторият метод е индиректно адресиране с помощта на указателни регистри R0 или R1: преди да се изпълни съответната команда, един от тях трябва да съдържа адреса на клетката, до която е необходим достъп.

За достъп до външна памет за данни се използва само индиректно адресиране с помощта на регистрите R0 и R1 или с помощта на 16-битовия указателен регистър DPTR.

Част от паметта за данни е битова област, която има способността да използва специални битови команди за адресиране на всяка цифра от клетките на паметта. Адресът на директно адресируемите битове може също да бъде записан във формата (ByteAddress).(Bit). Съответствието между тези два метода на адресиране може да се определи от табл. 1.1.

Intel е създателят на семейната архитектура MCS-51, която носи името си от първия представител на тази фамилия - микроконтролера 8051, пуснат през 1980 г., базиран на n-MOS технология. Добър набор от периферни устройства, гъвкав избор на външна или вътрешна програмна памет и достъпна цена гарантираха успеха на този микроконтролер на пазара. От гледна точка на технологията микроконтролерът 8051 беше много сложен продукт за времето си - в кристала бяха използвани 128 хиляди транзистора, което беше 4 пъти повече от броя на транзисторите в 16-битовия микропроцесор 8086. Този микроконтролер остава ядрото от семейството MCS-51 до днес.

Основните елементи на основната архитектура на семейството (8051 микроконтролерна архитектура) са:

8-битов ALU;

4 банки регистри, по 8 във всяка;

Вътрешна (резидентна) програмна памет 4 KB, имаща тип ROM или EPROM (8751);

Вътрешна (резидентна) памет за данни 128 байта;

21 регистъра със специални функции;

Булев процесор;

Два 16-битови таймера/брояча;

Контролер на сериен порт (UART);

Контролер за прекъсвания с две нива на приоритет;

Четири 8-битови I/O порта, два от които се използват като шина за адрес/данни за достъп до външна памет за програми и данни;

Вграден тактов генератор.

След това беше пуснат микроконтролерът 8052, който включваше увеличено количество резидентна памет за програми и данни, въведено от трети таймер и съответно разширен контролер за прекъсване.

Следващата фундаментална стъпка в развитието на MCS-51 беше прехвърлянето на производствената технология към CMOS (модификация 8xC51). Това направи възможно прилагането на режимите Idl (неактивен) и Power Down (ниска консумация), които осигуряват рязко намаляване на консумацията на енергия на кристала и отвориха пътя за използване на микроконтролер в летливи приложения, например в автономни устройства, захранвани от батерии.

И последният важен етап в развитието на MK 8051 от Intel беше пускането на микроконтролери 8xC51FA / FB / FC и 8xC51RA / RB / RC, които за краткост често се наричат ​​8xC51Fx и 8xC51Rx. Основната отличителна черта на тази група кристали е наличието на специализиран таймер / брояч (PCA). В допълнение, микроконтролерите 8xC51Rx допълнително съдържат таймер за наблюдение (WDT). Разгледайте по-подробно архитектурата и функционалността на PCA.

RSA включва:

16-битов таймер/брояч;

Пет 16-битови примерни и сравнителни модула, всеки свързан към различна линия на I/O порт на микроконтролера.

Таймерът/броячът обслужва всичките пет модула за проби и сравнение, които могат да бъдат програмирани да изпълняват една от следните функции:

16-битово семплиране на стойността на таймера на положителния фронт на външния сигнал;

16-битово семплиране на стойността на таймера по отрицателния фронт на външния сигнал;

16-битово вземане на проби от стойността на таймера на всеки фронт на външния сигнал;

16-битов програмируем таймер;

16-битово високоскоростно изходно устройство;

8-битова ШИМ.

Изпълнението на всички изброени функции става в PCA на хардуерно ниво и не натоварва централния процесор. Това ви позволява да увеличите общата пропускателна способност, да подобрите точността на измерванията и обработката на сигнала и да намалите времето за реакция на микроконтролера към външни събития, което е особено важно за системите в реално време. PCA, внедрен в 8xC51Fx (8xC51Rx), се оказа толкова

Обозначаване

Макс. честота (MHz)

ROM/EPROM (байт)

броячи

За щастие архитектурата на тези микроконтролери се е превърнала в индустриален стандарт, а самият PCA е многократно възпроизвеждан в различни модификации на MK 8051.

Някои характеристики на редица микроконтролери MCS-51, произведени от Intel, са дадени в таблица 1.1.

Първоначално тесните места на архитектурата MCS-51 бяха 8-битово базирано на батерии ALU и сравнително бавно изпълнение на инструкции (необходими са 12 цикъла за изпълнение на най-бързите инструкции).

Таблица 1.1

I/O

ADC входове x цифри

периферия,

особености

U любимец. (IN)

Опция за ниско напрежение

4 нива IRQ, clock out

4 нива IRQ, clock out

Версия за ниско напрежение 8xC51Fx

4 нива IRQ, clock out

4 нива IRQ, clock out

4 нива IRQ, clock out

периоди на тактова честота (MC синхронизираща честота)). Това ограничи използването на семейни микроконтролери в приложения, изискващи повишена производителност и сложни изчисления (16- и 32-битови). Въпросът за фундаменталната модернизация на архитектурата на MCS-51 стана спешен. Проблемът с модернизацията се усложнява от факта, че до началото на 90-те години вече са създадени много разработки в областта на софтуера и хардуера на семейството MCS-51, във връзка с което една от основните задачи за проектиране на Новата архитектура трябваше да реализира хардуерна и софтуерна съвместимост с разработки, базирани на MCS -51.

За решаването на този проблем беше създадена съвместна група от специалисти от Intel и Philips, но по-късно пътищата на тези две компании се разминаха. В резултат на това през 1995 г. се появиха две значително различни семейства: MCS-251/151 на Intel и MCS-51XA на Philips (вижте подраздел 1.2).

Основни характеристики на архитектурата MCS-251:

24-битово линейно адресно пространство, адресиране до 16 MB памет;

Архитектура на регистъра, която позволява регистрите да бъдат наричани байтове, думи и двойни думи;

Режим на адресиране на страници за по-бързо извличане на команди от външна програмна памет;

Опашка с инструкции;

Разширен набор от инструкции, включващ 16-битови аритметични и логически операции;

Разширено стеково адресно пространство (до 64 KB);

Изпълнение на най-бързата команда в 2 цикъла.

Наборът инструкции MCS-251 включва два набора инструкции - първият набор е копие на набора инструкции MCS-51, а вторият се състои от разширени инструкции, които се възползват от архитектурата MCS-251. Преди да използвате микроконтролера, той трябва да бъде конфигуриран, т.е. като използвате програмиста, "запишете" конфигурационните битове, които определят кои от наборите инструкции ще станат активни след включване на захранването. Ако инсталирате първия набор от инструкции, тогава в този случай MK от семейството MCS-251 ще бъде съвместим с MCS-51 на ниво двоичен код. Този режим се нарича двоичен режим. Ако първоначално инсталирате набор от разширени инструкции (режим на източника), тогава програмите, написани за MCS-51, ще изискват повторно компилиране на кръстосани инструменти за MCS-251. Source Mode ви позволява да използвате архитектурата MCS-251 с максимална ефективност и да постигнете най-висока производителност.

За потребители, фокусирани върху използването на микроконтролери MCS-251 като механичен заместител на MCS-51, Intel пуска микроконтролери MCS-151, които вече са програмирани в състояние на двоичен режим.

Някои характеристики на редица микроконтролери MCS-251/151 са дадени в таблица 1.1.

В момента Intel, насочена към пазара на процесори Pentium, ограничава производството на кристали MCS-51. По принцип за конкретен разработчик това може да остане незабелязано, освен ако не използва микроконтролери 8xC51GB и 80C152Jx, които нямат точни аналози сред продуктите на други компании. Що се отнася до всички други микроконтролери от фамилията MCS-51, всички те се копират многократно от други компании.

ЛЕКЦИОНЕН ПЛАН

1. Въведение

2. Аритметични и логически инструкции

3. Команди за пренос на данни

4. Булеви операции

5. Инструкции за скок

1. Въведение

Командна система MCS-51поддържа единичен набор от инструкции, който е проектиран да изпълнява 8-битови алгоритми за управление на изпълнителни механизми. Възможно е да се използват бързи методи за адресиране на вътрешната RAM, извършване на битови операции върху малки структури от данни. Съществува разширена система за адресиране на еднобитови променливи като независим тип данни, което позволява използването на отделни битове в логически и контролни команди на булева алгебра.

Режими на адресиране : набор от инструкции MCS-51поддържа следните режими на адресиране. Директно адресиране: Операндът се определя от 8-битов адрес в инструкцията. Директното адресиране се използва само за долната половина на вътрешната памет за данни и регистрите SFR. индиректно адресиране: Инструкцията адресира регистъра, съдържащ адреса на операнда. Този тип адресиране се използва за външна и вътрешна RAM. Регистрите могат да се използват за указване на 8-битови адреси R0И R1избрана регистърна банка или указател на стека SP. За 16-битово адресиране се използва само регистърът на указателя на данни. ДПТР.

Инструкции за регистрация : регистри R0–R7текущата регистърна банка може да бъде адресирана чрез специфични инструкции, съдържащи 3-битово поле, указващо номера на регистъра в самата инструкция. В този случай в командата няма съответно поле за адрес. Операции с помощта на специални регистри: някои инструкции използват отделни регистри (например акумулаторни операции, ДПТРи т.н.). В този случай адресът на операнда изобщо не е посочен в инструкцията. Той е предварително определен от кода на операцията.

Непосредствени константи : константата може да бъде директно в командата зад кода на операцията.

Индексно адресиране : Индексираното адресиране може да се използва само за достъп до програмната памет и само в режим на четене. В този режим се преглеждат таблиците в програмната памет. 16-битов регистър ( ДПТРили програмен брояч) показва базовия адрес на желаната таблица, а акумулаторът показва входната точка към нея.

Набор от командиима 42 командни мнемоники за указване на 33 функции на тази система. Синтаксисът на повечето инструкции на асемблерния език се състои от мнемонична функция, последвана от операнди, указващи методи за адресиране и типове данни. Различните типове данни или режими на адресиране се определят от зададените операнди, а не от промени в мнемоничната нотация.

Командната система може условно да се раздели на пет групи: аритметични команди; логически команди; команди за трансфер на данни; битови инструкции за процесор; команди за разклоняване и прехвърляне. Обозначенията и символите, използвани в командната система, са дадени по-долу.

Таблица. Означения и символи, използвани в командната система

Обозначение, символ

Предназначение

Батерия

Регистри на текущо избраната регистърна банка

Номерът на заредения регистър, посочен в командата

директен

Директно адресируем 8-битов вътрешен адрес на местоположението на данните, който може да бъде вътрешно местоположение на RAM за данни (0-127) или регистър на специална функция SFR (128-255)

Индиректно адресируемо 8-битово вътрешно RAM място за данни

8-битов директенданни, включени в кода на операцията (COP)

данниH

MSB (15-8) на незабавни 16-битови данни

данниL

Ниски битове (7-0) на незабавни 16-битови данни

11-битов адрес на дестинация

addrL

Най-малко значимите битове от адреса на дестинацията

8-битов отместен байт със знак

Директно адресируем бит, чийто адрес съдържа CPC, разположен във вътрешната RAM памет за данни или специален функционален регистър SFR

a15, a14...a0

Битове на адреса на местоназначението

Съдържанието на елемента X

Съдържание на адреса, съхранен в елемент X

Разряд M елемент X


+

*
И
ИЛИ
XOR

Операции:
допълнения
изваждане
умножение
разделение
логическо умножение (операция И)
логическо добавяне (операция ИЛИ)
добавяне по модул 2 (XOR)
елемент X инверсия

Функционалната мнемоника е уникално свързана със специфични комбинации от методи за адресиране и типове данни. Общо 111 такива комбинации са възможни в командната система.

2. Аритметични и логически инструкции

Как да пример аритметична инструкция, операцията по добавяне може да се извърши чрез една от следните команди.

ДОБАВЯНЕА,7 Е 16 - добавете числото 7 към съдържанието на регистър А F 16 и запишете резултата в регистър A;

ДОБАВЯНЕА,@ Р0 - добавете към съдържанието на регистър А номера, чийто адрес (@ – търговски при ) се съхранява в регистъраР 0 (непряко адресиране) и съхранява резултата в регистър A;

ДОБАВЕТЕ A,R7- добавя към съдържанието на регистър А съдържанието на регистъраР 7 и запишете резултата в регистър А;

ДОБАВЕТЕ A, #127- добавете към съдържанието на регистър А число, чийто адрес на клетка за съхранение е 127 ( # - цифров символ) и запишете резултата в регистъра T- повторно А.

Всички аритметични инструкции се изпълняват в един машинен цикъл с изключение на инструкцията INC DPTR(изместване на показалеца на данни ДПТРдо следващия байт), изискващи два машинни цикъла, както и операции за умножение и деление, извършени в 4 машинни цикъла. Всеки байт във вътрешната памет за данни може да се увеличава и намалява без използване на акумулатора.

Инструкция MUL ABизвършва умножение (умножение) на данните в акумулатора с данните в регистър B, като поставя произведението в регистри A (долна половина) и B (горна половина).

Инструкция DIV ABдели (разделя) съдържанието на акумулатора на стойността в регистър B, оставяйки остатъка в B и частното в акумулатора.

Инструкция DA Aпредназначен за двоично-десетични аритметични операции (аритметични операции върху числа, представени в двоично-десетичен код). Не преобразува двоичен файл в двоичен десетичен, но дава правилния резултат само при добавяне на две BCD числа.

Пример логическа команда: логическата операция И може да се извърши чрез една от следните команди:

ANLА,7 Е 16 - логическо умножение на съдържанието на регистър А с числото 7 F 16 и резултатът се съхранява в регистър А;

ANLА,@ Р1 - логическо умножение на съдържанието на регистър А по номера, чийто адрес се съхранява в регистъраР 1 (индиректно адресиране) и съхранява резултата в регистър A;

ANL A,R6- логическо умножение на съдържанието на регистър А по съдържанието на регистъраР 6 и запаметете резултата в регистър А;

ANL A,#53 - логическо умножение на съдържанието на регистър A с число, чийто адрес на клетка за съхранение е 53 16, и запишете резултата в регистър A.

Всички логически операции върху съдържанието на акумулатора се извършват в един машинен цикъл, останалите - в два. Булевите операции могат да се извършват върху всеки от долните 128 байта на вътрешната памет за данни или върху всеки регистър SFR (специални функционални регистри) в режим на директно адресиране без използване на батерията.

Операциите за завъртане RL A, RLC A и т.н. преместват съдържанието на акумулатора с един бит надясно или наляво. В случай на ляво циклично изместване, най-малко значимият бит се премества в най-значимата позиция. В случай на дясно циклично изместване се случва обратното.

Операция СМЕНА Аизвършва обмен на младши и старши тетради в акумулатора.

3. Команди за пренос на данни

Екип MOV dest,srcпозволява прехвърляне на данни между вътрешни RAM клетки или област на специален регистър на функцията SFRбез използване на батерия. В този случай работата с горната половина на вътрешната RAM може да се извършва само в режим на индиректно адресиране и достъп до регистрите SFR– само в режим на директно адресиране.

Във всички микросхеми MCS-51стекът се поставя директно в резидентната памет на данните и расте нагоре. Инструкция НАТИСНЕТЕпърво увеличава стойността в регистъра на указателя на стека SPи след това избутва байтове данни в стека. Екипи НАТИСНЕТЕИ POPсе използват само в режим на директно адресиране (когато записват или възстановяват байт), но стекът е винаги наличен при индиректно адресиране през регистър SP. По този начин стекът може да използва и горните 128 байта памет за данни. Същите съображения изключват използването на стекови инструкции за адресиране на регистри. SFR.

Инструкциите за прехвърляне на данни включват 16-битова операция за прехвърляне MOV DPTR,#данни16, който се използва за инициализиране на регистъра на указателя на данни ДПТРкогато преглеждате таблици в програмната памет или за достъп до външна памет за данни.

Операция XCH A,байтизползва се за обмен на данни между акумулатора и адресирания байт. Екип XCHD A,@Riподобен на предишния, но само за по-ниски тетради, участващи в обмена на операнди.

За достъп до външната памет за данни се използва само индиректно адресиране. В случай на еднобайтови адреси се използват регистри R0или R1текущата регистърна банка, а за 16-битовите - регистърът на указателя на данни ДПТР. При всеки метод за достъп до външна памет за данни батерията играе ролята на източник или приемник на информация.

За достъп до таблици, намиращи се в паметта на програмата, се използват следните команди:

MOVC A,@A+ ДПТР ;

MOVC A,@A+ настолен компютър .

Съдържанието на съответния регистър на указателя на данни се използва като основен адрес на таблицата. ДПТРили настолен компютър(софтуерен брояч), а отместването се взема от А. Тези инструкции се използват изключително за четене на данни от програмната памет, а не за запис в нея.

4. Булеви операции

Микросхеми MCS-51съдържа булев процесор. Вътрешната RAM има 128 директно адресируеми бита. Специално функционално регистрационно пространство SFRможе също да поддържа до 128 битови полета. Инструкциите за битове изпълняват условни скокове, трансфери, нулиране, инверсии, И и ИЛИ операции.Всички посочени битове са налични в режим на директно адресиране.

Носете малко CFв специалния функционален регистър "дума за състоянието на програмата PSW' се използва като еднобитов булев акумулатор на процесора.

5. Инструкции за скок

Адресите на операциите за прескачане се обозначават на асемблер с етикет или реална стойност в пространството на програмната памет. Условните адреси на разклонения се сглобяват в относително отместване - знаков байт, добавен към програмния брояч настолен компютърако условието за преход е изпълнено. Границите на такива скокове са между минус 128 и 127 спрямо първия байт след инструкцията. В регистъра на специалната функция „дума за състоянието на програмата PSW» няма флаг за нула, така че инструкциите ДЖЕЙ ЗИИ JNZпроверете условието "равно на нула" като тестване на данните в акумулатора.

Има три вида безусловни инструкции за разклоняване: SJMP, LJMPИ AJMP– адреси на дестинация, които се различават по формат. Инструкция SJMPкодира адреса като относително отместване и заема два байта. Разстоянието за прескачане е ограничено до диапазон от минус 128 до 127 байта спрямо следната инструкция SJMP.

В инструкциите LJMPадресът на дестинация се използва като 16-битова константа. Командата е дълга три байта. Адресът на дестинацията може да бъде разположен навсякъде в програмната памет.

Екип AJMPизползва 11-битова адресна константа. Командата се състои от два байта. Когато тази инструкция се изпълни, долните 11 бита на брояча на адресите се заменят с 11-битовия адрес от инструкцията. Петте най-значими бита на програмния брояч настолен компютъростават непроменени. По този начин скокът може да бъде направен вътре в 2K-байтовия блок, който съдържа инструкцията, следваща инструкцията AJMP.

Има два вида инструкции за извикване на подпрограма: LCALLИ ОБАЖДАНЕ. Инструкция LCALLизползва 16-битовия адрес на извиканата подпрограма. В този случай подпрограмата може да се намира навсякъде в програмната памет. Инструкция ОБАЖДАНЕизползва 11-битов адрес на подпрограма. В този случай извиканата подпрограма трябва да се намира в същия 2K-байтов блок със следната инструкция ОБАЖДАНЕ. И двете версии на инструкцията изпращат адреса на следващата инструкция в стека и я зареждат в програмния брояч. настолен компютър съответната нова стойност.

Подпрограмата завършва с инструкцията RET, което ви позволява да се върнете към инструкцията след командата ОБАДЕТЕ СЕ. Тази инструкция изважда обратния адрес от стека и го зарежда в програмния брояч. настолен компютър . Инструкция РЕТИизползвани за връщане от рутинни процедури за прекъсване. Единствената разлика РЕТИот RETе това РЕТИИнформира системата, че обработката на прекъсването е приключила. Ако в момента на изпълнение РЕТИняма други прекъсвания, идентичен е RET.

Инструкция DJNZпредназначен за контрол на цикъла. За да стартирате цикъл н след като трябва да заредите в брояча байтове със стойността н и затворете тялото на цикъла с командата DJNZ, което показва началото на цикъла.

Екип CJNEсравнява двата си операнда като цели числа без знак и скача до адреса, посочен в него, ако сравнените операнди не са равни. Ако първият операнд е по-малък от втория, тогава битът за пренасяне CF настроен на "1".

Всички инструкции в сглобена форма заемат 1, 2 или 3 байта.

Основна версия MCS-51 Кратка информация. Съвременните 8-битови микроконтролери (MC) имат такива ресурси за управление в реално време, за които преди това са използвани скъпи многочипови оформления под формата на отделни микрокомпютърни платки, а именно:

● да има достатъчен капацитет на паметта, нейното физическо и логическо разделение на програмна памет и памет за данни (архитектура на Харвард) и командна система, ориентирана към изпълнение на управляващи алгоритми;

● включват всички устройства (процесор, ROM, RAM, входно/изходни портове, система за прекъсване, инструменти за обработка на битова информация и др.), необходими за внедряване на микропроцесорна система за управление с минимална конфигурация. През 70-те години фирмата Intelразработи и усвои търговското производство на семейство от 8-битови микроконтролери MCS-48, обединени от редица общи характеристики (разряден капацитет, командна система, набор от основни функционални блокове и др.). Основната версия на това семейство включва:

● 8 битов процесор;

● вътрешна програмна памет (1/2/4K байта);

● вътрешна памет за данни (64/128/256 байта);

● до 27 вътрешни и 16 външни I/O линии;

● един 8-битов таймер-брояч;

● едностепенна система за прекъсване с два източника на заявки. През 1980 г. същата компания разработва ново семейство от осембитови микроконтролери MCS-51, което е съвместимо с архитектурата на семейството MCS-48, но има по-широки възможности.

Архитектурата на семейството MCS-51 се оказа толкова успешна, че и до днес е един от стандартите за 8-битови MK. Ето защо за обект на изследване бяха избрани МК от това семейство, които се използват широко в сравнително прости системи за управление.

За фамилията MCS-51 са разработени различни инструменти за подготовка на програми (компилатори, хардуерно-софтуерни емулатори и др.) и има голям брой библиотеки от стандартни подпрограми. Семейството включва различни модификации на микросхеми (версии на чипове) на микроконтролери. Статиите от този раздел разглеждат достатъчно подробно основната версия на микроконтролерите от семейството MCS-51 (8051 микросхема съответства на домашния аналог KP1816BE51), най-простата в структурно и функционално отношение и по отношение на разбирането.

Следващите серии от микросхеми, като същевременно поддържат съвместимост с основната версия, се различават от нея с подобрена технология на производство, електрически параметри, допълнителен хардуер и функционалност. Следващите статии са посветени на структурните и функционални характеристики на следващите модификации на микросхемите от семейството MCS-51.
Обобщена блокова схема на MCS–51. Съставът на MC, чиято обобщена блокова схема е показана на фиг. 7.1.1, включва:

● 8-битов централен процесор CPU, състоящ се от ALU, устройства за управление uuи генератор на адреси Е;

● маскиран ROM с капацитет 4K байта за съхранение на програми;

● 128 байта RAM за съхранение на данни;

● четири програмируеми порта Р0–Р3 за вход-изход на информация;

● BPI сериен интерфейсен блок за обмен на информация с външни устройства по двупроводна линия;

● блок таймери/броячи BT/C за поддържане на режим в реално време;

● Блок за прекъсване на BP за организиране на прекъсвания на изпълними програми. Тези средства формират резидентчаст от микроконтролера, разположена директно върху чипа. МК включва голям брой регистри, които са присвоени на отделни функционални блокове и не са показани на диаграмата.

Диаграмата също не показва управляващите вериги. Двустранният обмен на информация между блоковете се осъществява чрез вътрешен 8-битов шина за данни SD-8.

Чрез вътрешни 16-битови адресна шина SHA-16, адресът, формиран в процесора, се показва в ROM (12 бита от адреса) и в RAM (8 ниски бита).

Когато използвате външна памет, 8 бита от нисък ред от адреса се извеждат към порт P0 и 3 или 8 бита от висок ред се извеждат към порт P2.

За логическото разширение на интерфейса се използва комбинацията от функциите на портовите линии. Като пример, на фиг. 7.1.1 пунктирана линия показва линиите на порта P3, изпълняващ алтернативафункции за предаване на управляващ сигнал, чиято цел ще бъде разгледана по-долу. За да се създаде вътрешен генератор на часовник, кварцов резонатор и два кондензатора са свързани към изходите на микросхемата MK (фиг. 7.1.1). Вместо вътрешен тактов генератор може да се използва външен осцилатор за синхронизация. Конвенционалното графично обозначение на микросхемата MK е показано на фиг. 7.1.2, обозначение и цел на заключенията - в табл. 7.1.1. Помислете за функционалните блокове на МК и принципа на тяхната работа. Аритметично-логическо устройство. Аритметично-логическата единица е предназначена за извършване на аритметични (включително умножение и деление) и логически операции върху осембитови операнди, както и операции на логическо изместване, нулиране, настройка и др. Блоковата схема на ALU е показана на фиг. 7.1.3.

ALU включва

● паралелен осембитов суматор SM комбиниран тип с последователен трансфер, извършващ аритметични (събиране и изваждане) и логически (събиране, умножение, несъответствие и идентичност) операции;

батерия А,осигуряване на функциите на главния аритметичен регистър;

регистрирам B, използван за изпълнение на операциите умножение и деление, или като допълнителен супероперативен регистър, чиито функции се определят от потребителя;

регистри(програмно недостъпен) временно съхранениеРВХ1, РВХ2, предназначени за приемане и съхраняване на операнди за времетраенето на операцията;

● ROM константи ROM, съхраняващ коригиращ код за представяне на двоично-десетични данни, код на маска за битови операции и постоянен код;

регистър на думата за състояние на програмата PSW, фиксиращ състоянието на ALU след извършване на операцията. В табл. 7.1.2 предоставя информация за присвояването на битове на отделни цифри на регистъра PSW. Контролно устройство. Контролен блок на процесора (CU) предназначенида координира съвместната работа на всички MK възли, използвайки генерираните часовникови и управляващи сигнали. Тя включва (фиг. 7.1.4):

блок за синхронизация и управление USU, който генерира тактови импулси, които задават машинните цикли и техните индивидуални състояния (S) и фази (P), и в зависимост от режима на работа на МК генерира необходимия набор от управляващи сигнали. За изпълнение на инструкцията се разпределят един, два или четири машинни цикъла.

Всеки машинен цикъл има шест щата S1–S6, A всяко състояние включва двуфазен P1, P2, чиято продължителност е периодът на трептене на тактовия генератор T 0SC .

Продължителността на машинния цикъл е 12T 0SC. Всички машинни цикли са еднакви, като се започне с фаза S1P1 и се завърши с фаза S6P2.

В допълнение към тактовите импулси, часовниковото устройство във всеки машинен цикъл генерира два (понякога един) стробиращи сигнала на ниския байт на ALE адреса под формата на положителен импулс във фази S1P2-S2P1 и S4P2-S5P1. Времевите диаграми на фиг. 7.1.5 илюстрира организацията на машинните цикли;

● RK команден регистър, команден декодер DC и PLA, позволяващи във всеки машинен цикъл да се формира набор от микрооперации в съответствие с микропрограмата на изпълняваната команда;

● входно-изходна логика на LVV за приемане и подаване на сигнали, осигуряващи обмен на информация между MC и външни устройства през портове Р0–Р3;

● PCON регистър, който има един разрешен SMOD бит в позиция PCON.7 за удвояване на скоростта на данни на серийния порт. Останалите битове са запазени за бъдеща употреба.
Генератор на адреси. Форматиращ адрес (FA) или компютърен брояч на команди, предназначениза формиране на текущия 16-битов адрес на програмната памет и 8/16-битов адрес на външната памет за данни. Той включва (фиг. 7.1.6):

● 16-битов буфер B, който комуникира между 8-битовата шина за данни на SD и 16-битовата вътрешна шина (IS) на генератора на адреси;

● SI инкрементна схема за увеличаване на стойността на текущия програмен адрес на паметта с единица;

● регистър за съхраняване на текущия адрес на PTA командите, идващи от SI;

● Регистър на указател на данни DPTR , състоящ се от два 8-битови регистъра DPH и DPL. Служи за съхраняване на 16-битов адрес на външната памет за данни и може да се използва като два независими софтуерно достъпни RON;

● Регистър на генератор на RFA адреси за съхраняване на изпълнителния 16-битов програмен адрес на паметта или 8/16-битов външен адрес на паметта за данни. Този регистър се използва и за прехвърляне на данни през порт P0 към външни устройства, когато се изпълняват инструкциите MOVX @Rm, A и MOVX @DPRT, A.

Памет за данни. Памет за данни предназначениза получаване, съхраняване и издаване на информация, използвана в процеса на изпълнение на програмата. Вътрешната (резидентна) памет (фиг. 7.1.7) на данните се състои от RAM с капацитет 128 байта, указател на стека SP, адресен регистър RAM RA и декодер Dsh. Указателят на стека на SP е 8-битов регистър, който получава и съхранява адреса на местоположението на стека, до което последно е имало достъп. След нулиране указателят на стека се настройва на адрес 07H, което съответства на началото на стека с адрес 08H. Адресният регистър RA заедно с декодера Dsh позволява достъп до необходимата клетка от паметта, съдържаща байт или бит информация.

MK предоставя възможност за увеличаване на обема на паметта за данни до 64 KB чрез свързване външни устройства за съхранение.Като пример, на фиг. 7.1.8 показва странирането на външна памет за данни VPD с капацитет от 2K байта, използвайки инструкции като MOVX @ Rm(m = 0; 1). В този случай порт P0 работи като мултиплексирана шина за адрес/данни, три реда на порт P2 се използват за адресиране на външна RAM страница, а останалите пет реда могат да се използват като I/O линии.
На фиг. 7.1.9 показва времедиаграмите на циклите на четене и запис, когато MK работи с външна RAM. Диаграмите показват:

● PCN - старши байт на брояча на командите на компютъра;

● DPL, DPH - ниски и високи байтове на регистъра на указателя на данни DPTR, който се използва като регистър за индиректно адресиране в инструкциите MOVX @DPTR,A и MOVX A,@DPTR;

● P2 SFR - P2 портови ключалки;

● Rm (m = 0, 1) - регистри, използвани в инструкции MOVX @Rm, A и MOVX A, @Rm като индиректни адресни регистри;

● Z - високосъпротивително състояние;

● D - периодът, през който данните от порт P0 се въвеждат в микроконтролера. Програмна памет. Програмната памет е предназначена за съхраняване на програми, има собствено (отделно от паметта за данни) адресно пространство и е само за четене. Включва декодер Dsh и ROM (фиг. 7.1.10). Програмната памет се адресира с помощта на 16-битов компютърен брояч, така че максималният й капацитет е 64K байта. Вътрешната програмна памет се състои от ROM с капацитет 4K байта и 12-битов декодер. Външната памет се свързва съгласно схемата на фиг. 7.1.11. Ако 0 V се приложи към извода ¯EA на MCU (както е показано на фиг. 7.1.11), вътрешната програмна памет е дезактивирана. Всички достъпи до паметта започват от адрес 0000h. Когато изводът ¯EA е свързан към захранването, достъпът до вътрешната програмна памет на адреси 0000h–FFFFh и до външната програмна памет на адреси 0FFFh–FFFFh става автоматично.

За четене на външната програмна памет на МК се генерира сигнал ¯PSEN. При работа с вътрешна памет сигналът за четене не се използва. При достъп до външна програмна памет винаги се формира 16-битов адрес. Малкият байт на адреса се предава през порт P0 през първата половина на машинния цикъл и се фиксира чрез прекъсване на ALE строба в регистъра. През втората половина на цикъла порт P0 се използва за въвеждане на байт данни от външна памет в MCU.

Старшият байт на адреса се предава през порта P2 през цялото време на достъп до паметта.

Времевите диаграми на циклите на четене и запис по време на работа на MK с външна RAM са показани на фиг. 7.1.12.
Диаграмите показват:

● PCL OUT - нисък байт изход на брояча на команди на PC;

● PCN OUT - издаване на старшия байт на брояча на командите на PC;

● DPH е старшият байт на регистъра на указателя на данни DPTR, който се използва като регистър за индиректно адресиране в инструкциите MOVX @DPTR,A и MOVX A,@DPTR;

● P2 SFR - P2 портови ключалки;

● INS IN - въвеждане на байт инструкция (команда) от паметта на програмата;

● ADDR OUT - издаване на младшия байт на адреса на външната памет за данни от регистрите Rm (m = 0, 1) или от регистъра DPL (долен регистър DPTR). I/O портове. Присвояване на порт.Портове P0, P1, P2, P3 предназначениза обмен на информация между МК и външни устройства, както и за изпълнение на следните функции:

● младият байт на адреса А7…A0 се извежда през порт Р0; байт данни се извежда от MK и се въвежда в MK при работа с външна програмна памет и външна памет за данни (с времево разделение);

● старшият байт на адрес A15…A8 се извежда през порт P2 при работа с външна програмна памет и външна памет за данни (само при използване на команди MOVX A,@DPTR и MOVX @DPTR,A);

● Линиите на P3 порт могат да се използват за изпълнение на алтернативни функции, ако 1 е въведено в фиксатора на тази линия, в противен случай на изхода на линията е фиксирано 0. Алтернативните функции на изходите на P3 порт са дадени в таблица. 7.1.3.

Схематични характеристики на портовете

На фиг. 7.1.13 показва диаграми за един канал на всеки от MK портовете, включително:

● резе за фиксиране на получения бит данни;

● усилване на изхода каскада(шофьор);

● възел Връзка сизходен етап (с изключение на P2);

● верига за предаване на бит данни от изходната страна на порта, състояща се от буфери B2 и B3 (за порт P4). Резето е D-тригер, тактован от вътрешния сигнал "Write to latch". Част от данните от директния изход на D-тригера могат да бъдат прочетени от софтуер през буфер B1 чрез сигнала „Read latch“ към линията на вътрешната шина за данни (SD) на MK.

Изходен етаппорт P0 е инвертор, характеристиките на който се проявяват във факта, че товарният транзистор VT2 се отваря само при достъп до външна памет (при прехвърляне на адреси и данни през порта). Във всички останали режими товарният транзистор е затворен. Следователно, за да използвате P0 (фиг. 7.1.13, a) като изходен порт с общо предназначение, към неговите изходи трябва да се свържат външни товарни резистори. При запис на 1 в ключалката на порта, инверторният транзистор VT1 се изключва и външният щифт на порта P0.X се прехвърля в състояние с високо съпротивление. В този режим щифтът на порта P0.X може да служи като вход. Ако порт P0 се използва като I/O порт с общо предназначение, всеки от неговите P0.X щифтове може да работи независимо като вход или като изход. Изходни етапипортове P1, P2, P3 (фиг. 7.1.13, б, в, г)направени по схеми на инвертори с вътрешен товар резистор, който се използва като транзистор VT2.

За да се намали времето за превключване по време на прехода на изходите на порта от състояние 0 към състояние 1, се въвежда допълнителен транзистор VT3 паралелно с товарния транзистор VT2. Транзисторът VT3 с помощта на елементи във веригата на затвора се отключва за време, равно на два периода на трептене на главния кристален осцилатор (по време на фазите S1P1, S2P2 на машинния цикъл). Изходни етапипортовете P0, P2 (фиг. 7.1.13, A, c) с помощта на MX мултиплексора могат да бъдат свързани или към ключалки, или към вътрешните шини "Адрес / данни" и "Адрес". Изходният етап на порт P1 (фиг. 7.1.13, 6) е постоянно свързан към ключалката.

Ако щифтът на порта P3 е изход и ключалката му съдържа 1, тогава неговият изходен етап се управлява от хардуерния вътрешен сигнал „Алтернативна изходна функция“, който осигурява съответната алтернативна функция, т.е. един от сигналите ¯WR, ¯RD или RxD се формира на външния щифт. Ако щифтът на порта се използва като вход, тогава алтернативният сигнал, пристигащ до него (TxD, ¯INT0, ¯INT1, T0, T1), се предава към вътрешната линия „Алтернативна входна функция“.

Режим на запис на порт.

Когато се подаде команда за запис в порт, новата стойност се записва в ключалката във фаза S6P2 и се извежда директно към изходния щифт на порта във фаза S1P1 на следващия машинен цикъл.

Режим на четене на порт

Командите за четене на порт четат информация директно от външните щифтове на щифтовете на порта или от изходите на ключалката. В първия случай битът за данни от изхода на порта се чете програмно през буфер B2 чрез сигнала „Изходи за четене“ към линията на вътрешната шина за данни (SD) на MK. Обърнете внимание, че сигналите "Write to latch", "Read latch", "Read pins" се генерират от хардуера, когато се изпълняват съответните команди.

Във втория случай е реализиран така нареченият режим "Четене-Промяна-Запис", при който командата чете сигнала за състоянието на ключалката, модифицира го, ако е необходимо, и след това го записва обратно в ключалката. Режимът Read-Modify-Write се реализира, когато се изпълняват следните команди: ANL, ORL, XRL, JBC; CPL; I.N.C.; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Четенето на информация от изходите на ключалката елиминира грешките при интерпретиране на логическото ниво на щифта на порта. Прочетете продължението на статията в.



Свързани статии: