Регистрира роботизирани и микроконтролери Образователни знания - Мрежа за върхови постижения

Често за начинаещи „регистърът“ е най-трудната за научаване част от микроконтролерите. За съжаление не можете без тази концепция, ако искате да се занимавате с микроконтролери. За да може читателят да се запознае с понятието регистър, този материал е опростен до ниво на начинаещ.

Регистрите могат да бъдат сравнени с клавиатурата на някои домашни устройства, където има превключватели, които могат да се включват и изключват. Например касетофон, който имаше 6 бутона:

Всеки бутон има свое предназначение, но само когато се използва правилно. Например бутонът „Stop“ не прави нищо, преди да започне да свири на касетата, само след това ще може да направи нещо - спира да свири на касетата. Можете да натиснете бутоните за напред или назад по всяко време, защото лентата ще започне да се върти както при възпроизвеждане на касетата, така и при спиране. Касетофонът ще започне да записва само ако натиснете бутона "Запис" заедно с бутона "Възпроизвеждане".

Регистрите на микроконтролера, както и бутоните на касетофона имат свои специфични функции. Разбира се, в регистрите няма бутони като магнетофон, но има много транзистори, които включват и изключват електричеството. В най-простите микропроцесори регистърът се състои от електрически ключове, базирани на 8 транзистора. Регистърът може да бъде разгледан на примера на 8-битовата бройна система, където всеки бит показва състоянието на бутона. Например битова стойност 1 показва бутон за включване, а 0 означава деактивирана.

Тъй като състоянието на превключвателите на регистър може да се сравнява с числа и обратно, регистърът може да се сравнява с памет, която може да съхранява данни от едно число. Благодарение на тези сравнения стигнахме до заключението, че всъщност регистрите са места на паметта. Задачата на клетка с памет обикновено е да съхранява информация и в регистър тази информация контролира нещо. Ако в регистъра, показан на фигурата, въведете битова стойност 01100001, тогава се натискат 3 въображаеми превключвателя и нещо започва да се случва.

Използвайки

В програма C, за да напишете или прочетете стойност на регистъра, трябва да я посочите като променлива. Следващият пример демонстрира запис на двоична стойност към измислен регистър REG и четене на тази стойност към променлива reg. Двоичната стойност се предшества от 0b (водеща нула), така че компилаторът да разбира числовата система.

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

регистрира

За разлика от двоичната система, където числата са 0 и 1, или от десетичната система, където числата са от 0 до 9, в шестнадесетичната система - от 0 до F. Едно шестнадесетично число се формира от четири бита. Таблицата по-долу показва шестнадесетични числа и съответстващите им двоични числа. Те се четат поред отляво надясно и номерирането им започва от нула. Напред е двоичната стойност на регистъра 01100001, която в шестнадесетичната бройна система съответства на 61, а на езика C е записана като 0x61 (водеща нула).

За да промените отделни битове в число (регистър, променлива или другаде), трябва да използвате двоични операции. Двоична операция е операция между двоични числа, където се извършват отделни логически операции между битовете на тези числа. Повечето микроконтролери използват четири двоични операции, всяка от които има няколко имена. Следва логическа операция, съответстваща на всичките четири двоични операции с един бит или битове.

Всичко по-горе е необходимо за промяна на стойностите на отделните битове. Но само теорията няма да е достатъчна, затова ето някои типични примери с регистри.

Задаване на един бит високо

За да зададете един или повече бита във високия регистър, т.е. единица, трябва да използвате операцията за логическо добавяне. Единият операнд на операцията по събиране трябва да бъде регистър, а вторият - двоично число, където максимумът е само битът, който искате да зададете високо в регистъра. Това второ двоично число се нарича битова маска. Съседната операция C изглежда така: