Увод у програмирање 8051 на скупштинском језику

Испробајте Наш Инструмент За Елиминисање Проблема





Асемблерски језик је програмски језик ниског нивоа који се користи за писање програмског кода у смислу мнемотехнике. Иако тренутно постоји много језика високог нивоа, програмски језик монтаже се популарно користи у многим апликацијама. Може се користити за директне хардверске манипулације. Такође се користи за писање 8051 програмски код ефикасно са мањим бројем циклуса такта трошећи мање меморије у поређењу са осталим језицима високог нивоа.

8051 Програмирање на скупштинском језику

8051 Програмирање



8051 Програмирање на скупштинском језику

Асемблерски језик је потпуно повезан са хардвером програмски језик. Уграђени дизајнери морају да имају довољно знања о хардверу одређеног процесора или контролера пре писања програма. Склопни језик развијају мнемотехника, па га корисници не могу лако разумети да би изменили програм.


8051 Програмирање на скупштинском језику

8051 Програмирање на скупштинском језику



Програмски језик скупштине развијају различити компајлери и куглана' је најпогоднији за микроконтролерпрограмирање развој. М.микроконтролериили процесори могу да разумеју само бинарни језик у облику „0с или 1с“ Асемблер претвара склопни језик у бинарни језик, а затим га складишти умикроконтролермеморија за обављање одређеног задатка.

8051 Мицроцонтроллер Арцхитецутуре

8051микроконтролерје Харвардска архитектура заснована на ЦИСЦ-у , а има периферне уређаје попут 32 И / О, тајмере / бројаче, серијску комуникацију и меморије. Тхемикроконтролерзахтева програм за извођење операција којима је потребна меморија за чување и читање функција. 8051микроконтролерсастоји се од РАМ и РОМ меморија за чување упутстава.

8051 Арцтитецутуре микроконтролера

8051 Мицроцонтроллер Арцхитецутуре

Регистар је главни део програма процесори имикроконтролери која се налази у меморији која омогућава бржи начин прикупљања и чувања података. Програмирање 8051 асемблерског језика засновано је на меморијским регистрима. Ако желимо да манипулишемо подацима са процесором или контролером извршавањем одузимања, сабирања итд., Не можемо то да учинимо директно у меморији, већ су му потребни регистри за обраду и чување података.Микроконтролерисадрже неколико врста регистара који се могу класификовати у складу са њиховим упутствима или садржајем који у њима делује.

8051 Програми микроконтролера на скупштинском језику

Асемблерски језик чине елементи у којима се сви користе за писање програмасеквенцијални начин. Придржавајте се датих правила за писање програмирања на асемблерском језику.


Правила скупштинског језика

  • Код склопа мора бити написан великим словима
  • Ознаке мора пратити двотачка (ознака :)
  • Сви симболи и ознаке морају почињати словом
  • Сви коментари се куцају малим словима
  • Последњи ред програма мора бити наредба ЕНД

Мнемотехнички подаци склопног језика су у облику оп-кода, као што су МОВ, АДД, ЈМП итд., Који се користе за извођење операција.

Оп код: Оп-код је једна инструкција коју ЦПУ може извршити. Овде је оп-код МОВ упутство.

Операнди: Операнди су један део података којим се може управљати помоћу оп-кода. На пример, операцију множења изводе операнди који се множе операндом.

Синтакса: МУЛ а,б

Елементи програмирања скупштинског језика:

  • Саставите смернице
  • Упутства
  • Адресирање режима

Саставите упутства:

Директиве о склапању дају упутства за ЦПУ. 8051микроконтролерсастоји се од различитих врста директива о монтажи како би се дао смер управљачкој јединици. Најкорисније директиве су програмирање 8051, као што су:

  • ОРГ
  • ДБ
  • ЕКУ
  • КРАЈ

ОРГ(порекло): Ова директива означава почетак програма. Ово се користи за подешавање адресе регистра током монтаже. На пример, ОРГ 0000х саопштава компајлеру сав наредни код који почиње на адреси 0000х.

Синтакса: ОРГ 0000х

ДБ(дефинишите бајт): Бајт за дефинисање користи се за омогућавање низа бајтова. На пример, испишите „ЕДГЕФКС“, при чему сваки знак узима адреса, а на крају ДБ исписује „низ“ директно двоструким наводницима.

Синтакса:

ОРГ 0000х

МОВ а, # 00х
————-
————-
ДБ “ЕДГЕФКС”

ЕКУ (еквивалентно): Еквивалентна директива се користи за изједначавање адресе променљиве.

Синтакса:

рег екв,09х
—————–
—————–
МОВрег,# 2х

КРАЈ: Директива ЕНД се користи да означи крај програма.

Синтакса:

рег екв,09х

—————–
—————–
МОВрег,# 2х
КРАЈ

Начини адресирања:

Начин приступа подацима назива се начин адресирања. ЦПУ може приступити подацима на различите начине помоћу начина адресирања. 8051микроконтролерсастоји се од пет начина адресирања као што су:

  • Режим тренутног адресирања
  • Региструјте начин адресирања
  • Режим директног адресирања
  • Режим индиректног адресирања
  • Режим адресирања основног индекса

Режим тренутног адресирања:

У овом режиму адресирања извор мора бити вредност коју може следити „#“, а одредиште мора бити СФР регистри, регистри опште намене и адреса. Користи се за тренутно чување вредности у меморијским регистрима.

Синтакса:

МОВ А, # 20х // А јеанрегистар акумулатора, 20 се чува у А //
МОВ Р0,# 15 // Р0 је регистар опште намене 15 се чува у регистру Р0 //
МОВ П0, # 07х // П0 је СФР регистар07 је ускладиштен у П0 //
МОВ 20х,# 05х // 20х је адреса регистра 05 чуваног у 20х //

Бивши:

МОВ Р0, бр. 1
МОВ Р0, # 20 // Р0<—R0[15] +20, коначна вредност се чува у Р0 //

Региструјте начин адресирања:

У овом начину адресирања, извор и одредиште морају бити регистар, али не и регистри опште намене. Дакле, подаци се не премештају унутар банкарски регистри опште намене .

Синтакса:

МОВ А, Б // А је СФР регистар, Б је регистар опште намене //
МОВ Р0, Р1 // Неисправна инструкција, ГПР на ГПР није могућ //

БИВША:

МОВ Р0, # 02х
МОВ А, # 30х
ДОДАЈ Р0, А // Р0<—R0+A, the final value is stored in the R0 register//

Режим директног адресирања

У овом начину адресирања, извор или одредиште (или и извор и одредиште) морају бити адреса, али не и вредност.

Синтакса:

МОВ А,20х // 20х је адреса А је регистар //
МОВ 00х, 07х // оба су адресирана са ГПС регистара //

Бивши:

МОВ 07х,# 01х
МОВ А, # 08х
ДОДАЈ А.,07х // А<—A+07h the final value is stored in A//

Режим индиректног адресирања:

У овом начину адресирања мора бити извор или одредиште (или одредиште или извор)доиндиректна адреса, али не и вредност. Овај начин адресирања подржава концепт показивача. Показивач је променљива која се користи за чување адресе друге променљиве. Овај концепт показивача користи се само за регистре Р0 и Р1.

Синтакса:

МОВР0, # 01х // 01 вредност се чува у регистру Р0, Р0 адреса је 08х //
МОВ Р1, # 08х // Р1 је променљива показивача којапродавницеадреса (08х) Р0 //
МОВ 20х,Вредност @ Р1 ​​// 01 се чува у 20-сатној адреси ГП регистра //

Режим индиректног адресирања

Режим индиректног адресирања

Режим адресирања основног индекса:

Овај начин адресирања користи се за читање података са спољна меморија или РОМ меморија . Сви режими адресирања не могу читати податке из меморије кода. Код се мора прочитати кроз ДПТР регистар. ДПТР се користи за усмеравање података у коду или спољној меморији.

Синтакса:

МОВЦ А, @ А + ДПТР // Ц означава меморију кода //
МОЦКС А, @ А + ДПТР // Кс означава спољну меморију //
ПРИМЕР: МОВ А, # 00Х // 00Х се чува у регистру А //
МОВ ДПТР, # 0500Х // ДПТР тачке 0500х адреса у меморији //
МОВЦ А, @ А + ДПТР // пошаљу вредностдорегистар А //
МОВ П0, А // датум А послати регистратору поруџбине //

Упутства:

Скуп инструкција је структура контролера или процесора која даје команде контролеру за вођење контролера за обраду података. Сет инструкција састоји се од упутстава, изворних типова података, начина адресирања, регистара прекида, изузетног руковања и архитектуре меморије. Тхе 8051микроконтролер може следити упутства ЦИСЦ са архитектуром Харварда. У случају програмирања 8051, различите врсте ЦИСЦ упутстава укључују:

  • Сет упутстава за пренос података
  • Сет секвенцијалних упутстава
  • Сет аритметичких упутстава
  • Подружница И.нструцтионкомплет
  • Сет за петље
  • Сет условних упутстава
  • Сет безусловних упутстава
  • Сет логичких упутстава
  • Сет логичких упутстава

Сет аритметичких упутстава:

Аритметичка упутства изводе основне операције као што су:

  • Сабирање
  • Множење
  • Одузимање
  • Дивизија

Додатак:

ОРГ 0000х
МОВ Р0, # 03Х // премештање вредности 3 у регистар Р0 //
МОВ А, # 05Х // премештање вредности 5 у акумулатор А //
Додајте А, 00Х //аддАвредност са вредношћу Р0 и чува резултатинА//
КРАЈ

Множење:

ОРГ 0000х
МОВ Р0, # 03Х // премештање вредности 3 у регистар Р0 //
МОВ А, # 05Х // премештање вредности 5 у акумулатор А //
МУЛ А, 03Х //Помноженорезултат се чува у Акумулатору А //
КРАЈ

Одузимање:

ОРГ 0000х
МОВ Р0, # 03Х // премештање вредности 3 у регистар Р0 //
МОВ А, # 05Х // премештање вредности 5 у акумулатор А //
СУББ А, 03Х // Вредност резултата се чува у акумулатору А //
КРАЈ

Дивизија:

ОРГ 0000х
МОВ Р0, # 03Х // премештање вредности 3 у регистар Р0 //
МОВ А, # 15Х // премештање вредности 5 у акумулатор А //
ДИВ А, 03Х // коначна вредност се чува у акумулатору А //
КРАЈ

Условна упутства

ЦПУ извршава упутства на основу услова проверавањем статуса појединачног бита или бајта. 8051микроконтролерсастоји се од различитих условних упутстава као што су:

  • ЈБ -> Скочи доле
  • ЈНБ -> Скочи ако није испод
  • ЈЦ -> Скочи ако носиш
  • ЈНЦ -> Скочи аконеНоси
  • ЈЗ -> Скочи ако је нула
  • ЈНЗ -> Скочи аконеНула
Условна упутства

Условна упутства

1. Синтакса:

ЈБ П1.0, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ

2. Синтакса:

ЈНБ П1.0, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ

3. Синтакса:

ЈЦ, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ

4. Синтакса:

ЈНЦ, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ
5. Синтакса:

ЈЗ, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ

6. Синтакса:

ЈНЗ, етикета
- - - - - - - - -
- - - - - - - - -
Ознака: - - - - - - - -
- - - - - - - - -
КРАЈ

Упутства за позив и скок:

Упутства за позивање и прелазак користе се да би се избегла репликација кода програма. Када се неки одређени код користи више пута на различитим местима у програму, ако напоменемоодређено имедокод ондамогли бисмо да користимо то име било где у програму без уношења кода за сваки пут. Ово смањује сложеност програма. Програмирање 8051 састоји се од упутстава за позивање и прелазак као што су ЛЦАЛЛ, СЈМП.

  • ЛЦАЛЛ
  • ПОЗИВ
  • СЈМП
  • ЉМП

1. Синтакса:

ОРГ 0000х
- - - - - - - - -
- - - - - - - - -
АЦАЛЛ, лабел
- - - - - - - - -
- - - - - - - - -
СЈМП СТОП
Ознака: - - - - - - - -
- - - - - - - - -
- - - - - - - - -
јел тако
ЗАУСТАВИТИ:НОП

2. Синтакса:

ОРГ 0000х
- - - - - - - - -
- - - - - - - - -
ЛЦАЛЛ, етикета
- - - - - - - - -
- - - - - - - - -
СЈМП СТОП
Ознака: - - - - - - - -
- - - - - - - - -
- - - - - - - - -
јел тако
ЗАУСТАВИТИ:НОП

Упутства за позивање и прелазак

Упутства за позивање и прелазак

Лооп Упутства:

Упутства петље се користе за понављање блока сваки пут током извођења операција прираста и смањења. 8051микроконтролерсастоје се од две врсте упутстава за петљу:

  • ЦЈНЕ -> упореди и скочи ако није једнако
  • ДЈНЗ -> смањивање и скок ако није нула

1. Синтакса:

одЦЈНЕ
МОВ А, # 00Х
МОВ Б, # 10Х
Ознака: ИНЦ А
- - - - - -
- - - - - -
ЦЈНЕ А, етикета

2. Синтакса:

одДЈНЕ

МОВ Р0, # 10Х
Ознака: - - - - - -
- - - - - -
ДЈНЕ Р0, етикета
- - - - - -
- - - - - -
КРАЈ

Сет логичких упутстава:

Сет инструкција микроконтролера 8051 пружа АНД, ОР, КСОР, ТЕСТ, НОТ и логичке логичке инструкције за сет и брише битове на основу потреба у програму.

Сет логичких упутстава

Сет логичких упутстава

1. Синтакса:

МОВ А, # 20Х / 00100000 /
МОВ Р0, # 03Х / 00000101 /
ОРЛ А, Р0 // 00100000/00000101 = 00000000 //

2. Синтакса:

МОВ А, # 20Х / 00100000 /
МОВ Р0, # 03Х / 00000101 /
АНЛ А, Р0

3. Синтакса:

МОВ А, # 20Х / 00100000 /
МОВ Р0, # 03Х / 00000101 /
КСРЛ А, Р0

Пребацивање оператора

Оператори смене се користе за ефикасно слање и примање података. 8051микроконтролерсастоје се од четири оператора смене:

  • РР -> Ротирај удесно
  • РРЦ -> Ротирај удесно кроз ношење
  • РЛ -> Ротирај улево
  • РЛЦ -> Ротирај улево кроз ношење

Ротирај удесно (РР):

У овој операцији пребацивања, МСБ постаје ЛСБ и сви се битови серијски померају према десној страни.

Синтакса:

МОВ А, # 25х
РР А

Ротирај улево (РЛ):

У овој операцији пребацивања, МСБ постаје ЛСБ и сви се битови серијски померају према левој страни.

Синтакса:

МОВ А, # 25х
РЛ А

РРЦ ротирај десно кроз ношење:

У овој операцији пребацивања, ЛСБ се помера за ношење и ношење постаје МСБ, а сви битови се померају према десној страни мало по мало.

Синтакса:

МОВ А, # 27х
РРЦ А

РЛЦ ротирај лево кроз ношење:

У овој операцији пребацивања, МСБ се помера за ношење и ношење постаје ЛСБ и сви се битови померају према левој страни у положају по бит.

Синтакса:

МОВ А, # 27х
РЛЦ А.

Основни уграђени Ц програми:

Тхемикроконтролерпрограмирање се разликује за сваки тип оперативног система. Постоје многи оперативни системи као што су Линук, Виндовс, РТОС и тако даље. Међутим, РТОС има неколико предности за развој уграђеног система. Неки од примера програмирања на нивоу Скупштине дати су у наставку.

ЛЕД трепери користећи 8051микроконтролер:

  • Приказ броја на 7-сегментном дисплеју помоћу 8051 микроконтролера
  • Израчунавање тајмера / бројача и програмирање помоћу 8051микроконтролер
  • Прорачуни и програми серијске комуникације помоћу 8051микроконтролер

ЛЕД програми са 8051 М.микроконтролер

1. ВАП за пребацивање ПОРТ1 ЛЕД диода

ОРГ 0000Х
ТОГЛЕ: МОВ П1, # 01 //потез00000001 у п1 регистар //
ОДЛАГАЊЕ ПОЗИВА // извршити одлагање //
МОВ А, П1 // померањевредност п1до акумулатора //
ЦПЛ А // допуна вредности А //
МОВ П1, А // преместите 11111110 у порт1 регистар //
ОДЛАГАЊЕ ПОЗИВА // извршити одлагање //
СЈМП ТОГЛЕ
ОДЛОЖЕЊЕ: МОВ Р5, # 10Х // регистар оптерећења Р5 са 10 //
ДВА: МОВ Р6, # 200 // регистар учитавања Р6 са 200 //
ЈЕДАН: МОВ Р7, # 200 // регистар учитавања Р7 са 200 //
ДЈНЗ Р7, $ // смањује Р7 док не буде на нули //
ДЈНЗ Р6, ОНЕ // смањује Р7 док не постане нула //
ДЈНЗ Р5, ДВА // смањује Р7 док не буде на нули //
РЕТ // повратак на главни програм //
КРАЈ

Прорачуни тајмера / бројача и програмирање помоћу 8051 М.микроконтролер:

Кашњење је један од важних фактора у развоју апликативног софтвера. Тхе тајмери ​​и бројачи су хардверске компонентемикроконтролер, који се користе у многим апликацијама за обезбеђивање тачног временског кашњења са бројањем импулса. Б.остали задаци се реализују софтверском техником.

1. ВАП за израчунавање кашњења од 500ус.

МОВ ТМОД, # 10Х // одабир режима тајмера помоћу регистара //
МОВ ТХ1, # 0ФЕХ // време одлагања чува у вишем биту //
МОВ ТЛ1, # 32Х // време одлагања чува у малобитном //
ЈНБ ТФ1, $ // смањује вредност тајмера док не буде нула //
ЦЛР ТФ1 // обришите заставицу тајмерамало//
ЦЛР ТР1 // ИСКЉУЧИВАЊЕ тајмера //

2. ВАП за пребацивање ЛЕД диодаса5секвременско кашњење

ОРГ 0000Х
ПОВРАТАК: МОВ ПО, # 00Х
АЦАЛЛ ДЕЛАИ
МОВ П0, # 0ФФХ
АЦАЛЛ ДЕЛАИ
СЈУМП РЕТУРН
ОДЛОЖЕЊЕ: МОВ Р5, # 50Х // регистар оптерећења Р5 са 50 //
ДЕЛАИ1: МОВ Р6, # 200 // регистар учитавања Р6 са 200 //
ДЕЛАИ2: МОВ Р7, # 229 // регистар учитавања Р7 са 200 //
ДЈНЗ Р7, $ // смањује Р7 док не буде на нули //
ДЈНЗ Р6, ДЕЛАИ2 // смањује Р6 док не буде нула //
ДЈНЗ Р5, ДЕЛАИ1 // смањује Р5 док не буде нула //
РЕТ // повратак на главни програм //
КРАЈ

3. ВАП за бројање 250 импулса помоћу начина0 цоунт0

Синтакса:

ОРГ 0000Х
МОВ ТМОД, # 50Х // одабир бројача //
МОВ ТХ0, # 15 // померање импулса за бројање у виши бит //
МОВ ТХ1, # 9ФХ //потезимпулси за бројање, доњи бит //
СЕТ ТР0 // Укључи тајмер //
ЈНБ $ // смањи вредност бројања на нулу //
ЦЛР ТФ0 // очистите бројач, заставицумало//
ЦЛР ТР0 // заустављање тајмера //
КРАЈ

Програмирање серијске комуникације помоћу 8051 М.микроконтролер:

Серијска комуникација се обично користи за пренос и пријем података. 8051микроконтролерсастоје се од серијске комуникације УАРТ / УСАРТ и сигнали се преносе и примајуТки Рк пинове. УАРТ комуникација преноси податке бит-би-бит серијски. УАРТ је полудуплексни протокол који преноси и прима податке, али не истовремено.

1. ВАП за пренос знакова на хипер терминал

МОВ СЦОН, # 50Х // подешавање серијске комуникације //
МОВ ТМОД, # 20Х // одабир режима тајмера //
МОВ ТХ1, # -3 // подешавање брзине преноса //
СЕТ ТР1 // Укључи тајмер //
МОВ СБУФ, # ’С’ // преноси С у серијски прозор //
ЈНБ ТИ, $ // смањује вредност тајмера док не буде нула //
ЦЛР РИ // обриши прекид пријема //
ЦЛР ТР1 // очисти тајмер //

2. ВАП за пренос знака за примање путем хипер терминала

МОВ СЦОН, # 50Х // подешавање серијске комуникације //
МОВ ТМОД, # 20Х // одабир режима тајмера //
МОВ ТХ1, # -6 // подешавање брзине преноса //
СЕТ ТР1 // на тајмеру //
МОВ СБУФ, # ’С’ // преноси С у серијски прозор //
ЈНБ РИ, $ // смањује вредност тајмера док не буде нула //
ЦЛР РИ // обриши прекид пријема //
МОВ П0, СБУФ // пошаљи вредност регистра СБУФ на порт0 //
ЦЛР ТР1 // очисти тајмер //

Ово је све о 8051 програмирању на скупштинском језику укратко са програмима заснованим на примерима. Надамо се да ће ове одговарајуће информације о скупштинском језику сигурно бити од помоћи читаоцима и радујемо се њиховим драгоценим коментарима у одељку за коментаре испод.