Микроконтролери MCS-51 програмен модел, структура, команди

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

Програмна памет

модел
7. 3. 1" w /> Програмната памет е само за четене и при достъп:

● не се генерира сигнал за четене към вътрешната памет и циклите на обмен се използват във вътрешната шина на микроконтролера.

Памет за данни

Характеристиките на организацията на долната област на вътрешната RAM са отразени в таблица 7.3.3.

Битови адреси

Адресите на битовете са дадени в таблица 7.3.3.

Командна структура.

Общи сведения за командната система.

От 111 инструкции 64 се изпълняват в един машинен цикъл, 45 в два цикъла и само две инструкции (MUL - умножение и DIV - деление) се изпълняват в 4 цикъла. При тактова честота от 12 MHz, продължителността на машинния цикъл (12 цикъла) е 1 µs. Отборите могат да бъдат разделени на пет групи според техните функционални характеристики. По-долу е дадено описание на командите от всяка група, представени под формата на таблици. За компактността на таблиците избираме група от команди (Таблица 7.3.6), чието изпълнение влияе (отбелязано със знак +) на състоянието на регистърните флагове на думата за състояние на PSW.

микроконтролери
7. 3. 6" w />

Команди за трансфер на данни

Командите за прехвърляне могат да бъдат разделени на отделни подгрупи. Команди за изпращане и обмен на данни между клетките на вътрешната памет (Таблица 7.3.7).

Команди 17-20 осигуряват обмен на информация между две клетки от вътрешната памет за данни (или двупосочен трансфер). При изпълнение на XCH команди се обменят байтове, докато XCHD команди се обменят с по-ниски тетради от байтови операнди.

Команди за пренос на данни между вътрешна и външна памет за данни (Таблица 7.3.8).

Тези инструкции са за четене на таблици от програмна памет.

MOVC инструкция A,@A + DPTRизползва се за достъп до таблица с 0 до 255 записа.

Операциите MUL умножение и DIV деление се извършват върху съдържанието на регистрите A и B. При умножаване горните 8 бита от резултата се записват в регистър B, долните 8 бита в регистър A. Ако произведението е по-голямо от 255, се задава флагът за препълване OV; флагът за пренасяне C винаги се нулира. Инструкцията DIV разделя 8-битовия акумулиращ операнд A на 8-битовия регистров операнд B. По време на разделянето частното (старши битове) се записва в регистъра в A, остатъкът (малки битове) в B. Флаговете за пренасяне C и препълване OV се изчистват. Опит за разделяне на 0 задава флага за препълване OV. Операцията за деление се използва по-често за смени и основни преобразувания.

Когато едно двоично число се раздели на 2 N, то измества N бита наляво. Излишните битове се прехвърлят в регистър B.

Операции върху еднобайтови операнди (Таблица 7.3.11).

Команди за логически операции.

Двойни операции

Единични операции

(Таблица 7.3.13). Групата включва и редица единични операции върху съдържанието на акумулатор A: изчистване (CLR), логическо добавяне или инверсия (CPL), циклични и разширени циклични измествания с 1 бит надясно (RL, RLC) и наляво (RR, RRC), обмен на тетради или циклично байтово изместване с 4 бита (SWAP), както и нулева операция (NOP), в резултат на което състоянието на всички MK регистри (с изключение на програмен брояч) остава непроменен.

модел
7. 3. 13" w />

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

Команди за безусловен скок

Инструкции за условен скок

Инструкциите JZ и JNZ прескачат, ако съдържанието на акумулатора е съответно равно или различно от нула. АдресСкокът се изчислява чрез добавяне на отместването на относителния знак rel към съдържанието на компютърния програмен брояч след добавяне на числото 2 (дължината на инструкцията в байтове) към него.

Съдържанието на акумулатора остава непроменено. Командите не засягат флаговете.

mcs-51
7. 3. 15" w /> CJNE инструкции (3-6) се използват за прилагане на условно разклоняване въз основа на резултата от сравняване на два 8-битови операнда, чието местоположение е посочено в инструкциите. Ако техните стойности не са равни, се извършва разклонение.

Адресът за прескачане се изчислява чрез добавяне на отместването rel към съдържанието на PC брояча, увеличено с 3. В противен случай се изпълнява следната команда.

Колоната Алгоритъм показва влиянието на стойностите на сравняваните 8-битови операнди върху флага за пренасяне C. Командите DJNZ (7) са предназначени да организират програмни цикли.

Адресът за прескачане се изчислява чрез добавяне на отместването към съдържанието на брояча, предварително увеличено с дължината на инструкцията (с 2 или 3). Флаговете на командите не са засегнати.

Команди за извикване на подпрограми и връщане от програми

В този случай логиката на прекъсването спира да отговаря на заявки от нивото, което е прието за обслужване. За понижаване на нивото на прекъсване се използва инструкцията за връщане на прекъсване RETI, която в допълнение към операцията, еквивалентна на RET, включва операция за разрешаване на прекъсване на това ниво. Типичните условни операции MK51 включват също операции JZ, JNZ. Има обаче нова CJNE операция за сравнение и прескачане.

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

По същество командата CJNE е член на израз на език от високо ниво като CASE.

Екипът на DJNZ е доразвит. Сега програмистът може да използва не само един от работещите регистри Rn като брояч, но и всяка клетка от паметта DSEG.

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

Групата се състои от 12 команди, които ви позволяват да извършвате операции с един или два бита (нулиране, настройка, инверсия на битове, A, както и логически И и ИЛИ), и 5 команди, предназначени за изпълнение на условни преходи (Таблица 7.3.17).

структура
7. 3. 17" w />

При извършване на операции върху два еднобитови операнда тригерът на регистъра PSW се използва като логически акумулатор, който съхранява флага за пренасяне C (Таблица 7.1.2).

Групата също така включва инструкции (13–17) за прилагане на операции за условен скок с относително 8-битово отместване rel. Скоковете могат да бъдат изпълнени или с бит за пренасяне или флаг, зададен (команди 13, 16) или изчистени (команди 14, 17).