Обяснение на работата на устройството с пълна блокова схема.

Съгласно заданието проектираното алармено устройство трябва да се задейства от шест сензора. То трябва да изработва двутонова звукова сигнализация с честоти 950 Hz и 1500 Hz, всяка с продължителност 0,2 s и обща продължителност на сигнала 1 min. Активирането и дезактивирането на алармената система се извършва или с дистанционно устройство, или чрез въвеждане на код с клавиатура.
За да се синтезира звуков сигнал със зададените параметри, са необходими два импулсни генератора – един с превключване на честотите 950 Hz и 1500 Hz, и един с полупериод на импулсите 0,2 s. През единия полупериод на втория генератор на изхода на устройството се извежда честотата 950 Hz, а през другия – 1500 Hz. Така на изхода на устройството се получава двутонов звуков сигнал.

Общата продължителност на звуковия сигнал може да бъде определена чрез двоичен брояч, който да отброи толкова полупериода по   0,2 s, колкото са необходими за формиране на интервал 1 min.
От направеното обяснение на действието на проектираното устройство става ясно, че то трябва да съдържа два импулсни генератора и един двоичен брояч. При използване на микроконтролер функциите на импулсните генератори и двоичния брояч се изпълняват от неговите таймери и регистри за данни.

Офис алармена системаВ изходно състояние алармената система е дезактивирана. След напускане на офиса тя се активира чрез съответно устройство. От този момент нататък микроконтролерът започва да следи състоянието на сензорите в сензорния блок. При задействане на някой от тях той започва да генерира двутонов звуков сигнал с продължителност 1 min или до дезактивиране на системата. Звуковият сигнал се подава на изпълнителния блок чрез буферно стъпало. Изпълнителният блок най-често е високоговорител с определена мощност на възпроизвеждания сигнал, а буферното стъпало – подходящ усилвател на мощност.

Избор на конкретен МК с представена блокова схема и таблица с инструкциите.

Съгласно заданието офис алармената система трябва да бъде проектирана с микроконтролер от фамилия Atmel АТ89Сх5хх. На това означение отговаря само микроконтролерът АТ89С55.

Микроконтролерът АТ89С55 представлява по-нататъшно развитие на основния модел 80С51. Той има пълна програмна съвместимост с него. Микроконтролерът АТ89С55 притежава 20 Кбайта репрограмируема Flash памет, 256 х 8 бита вътрешна RAM памет, 32 програмируеми входно-изходни линии обособени в четири порта (Р0 ÷ Р3), три 16-битови таймер/броячи.
Тъй като микроконтролерът АТ89С55 притежава 8-битов процесор, то и програмно достъпните регистри са 8-битови, с изключение на един 16-битов регистър.
Най-често използваният регистър е акумулаторът (АСС). Обменът на информация с външната памет за данни се осъществява чрез него. Регистърът В има отношение към операциите умножение и деление. Регистърът за състоянието на програмата (PSW) включва флагове като пренос и препълване. Стековите операции са свързани с регистъра указател на стека (SP). Указателят на стека се увеличава с единица преди да се запишат данните в паметта. Стекът е разположен във вътрешната памет за данни.
Регистърът указател на данните (DPTR) е 16-битов регистър, но може да се разглежда и като съставен от два 8-битови регистъра: старши байт DPH и младши байт DPL.
Програмният брояч (РС) адресира инструкциите в паметта.
Интегрираните периферни устройства се състоят от 4 паралелни порта, сериен порт, три таймер/брояча и блок (система) за прекъсване. Паралелните портове са изградени от изходни регистри  (Р0 – Р3) и буфери. Важна особеност е, че портове 0 и 2 осъществяват интерфейса към външната памет.

Порт 3 може да бъде програмиран и за други функции, показани в горната таблица. Най-често използваните входове с посочените функции са входове Р3.2 и Р3.3, чрез които може да се генерират заявки за програмни прекъсвания.
Системата инструкции на микроконтролера АТ89С55 включва 111 инструкции. От тях 49 са еднобайтови, 45 са двубайтови и 17 са с дължина 3 байта. В следващите таблици са показани всички инсрукции на микроконтролера с краткото им описание.

Аритметични операции

Мнемоника Описание Код Байтове Цикли
ADD       A,Rn Събиране 28-2F 1 1
ADD       A,dir Събиране 25 2 1
ADD       A,@Ri Събиране 26,27 1 1
ADD       A,#data Събиране 24 2 1
ADDC    A,Rn Събиране с пренос 38-3F 1 1
ADDC    A,dir Събиране с пренос 35 2 1
ADDC    A,@Ri Събиране с пренос 36,37 1 1
ADDC    A,#data Събиране с пренос 34 2 1
SUBB     A,Rn Изваждане със заем 98-9F 1 1
SUBB     A,dir Изваждане със заем 95 2 1
SUBB     A,@Ri Изваждане със заем 96,97 1 1
SUBB     A,#data Изваждане със заем 94 2 1
INC        A Увеличаване с единица 04 1 1
INC        Rn Увеличаване с единица 08-0F 1 1
INC        dir Увеличаване е единица 05 2 1
INC        @Ri Увеличаване с единица 06-07 1 1
DEC       A Намаляване с единица 14 1 1
DEC       Rn Намаляване с единица 18-1F 1 1
DEC       dir Намаляване с единица 15 2 1
DEC      @Ri Намаляване с единица 16-17 1 1
INC       DPTR Увеличаване с единица A3 1 2
MUL     AB Умножение А4 1 4
DIV       AB Деление 84 1 4
DA         A Десетична настройка D4 1 1

Логически операции

Мнемоника Описание Код Байтове Цикли
ANL      A,Rn Логическо И 58-5F 1 1
ANL      A,dir Логическо И 55 2 1
ANL      A,@Ri Логическо И 56,57 1 1
ANL      A,#data Логическо И 54 2 1
ANL      dir,A Логическо И 52 2 1
ANL      dir,#data Логическо И 53 3 2
ORL      A,Rn Логическо ИЛИ 48-4F 1 1
ORL      A,dir Логическо ИЛИ 45 2 1
ORL      A,@Ri Логическо ИЛИ 46,47 1 1
ORL      A,#data Логическо ИЛИ 44 2 1
ORL      dir,A Логическо И 42 2 1
ORL      dir,#data Логическо И 43 3 2
XRL      A,Rn Изключващо ИЛИ 68-6F 1 1
XRL      A,dir Изключващо ИЛИ 65 2 1
XRL      A,@Ri Изключващо ИЛИ 66,67 1 1
XRL      A,#data Изключващо ИЛИ 64 2 1
XRL      dir,A Изключващо ИЛИ 62 2 1
XRL      dir,#data Изключващо ИЛИ 63 3 2
CLR      A Нулиране Е4 1 1
CPL       A Логическо НЕ F4 1 1
RL         A Ротация 23 1 1
RLC      A Ротация 33 1 1
RR          A Ротация 03 1 1
RRC       A Ротация 13 1 1
SWAP   A Разменяне на тетрадите C4 1 1

Обмен на данни

Мнемоника Описание Код Байтове Цикли
MOV       A,Rn Преместване E8-EF 1 1
MOV       A,dir Преместване Е5 2 1
MOV       A,@Ri Преместване Е6,Е7 1 1
MOV       A,#data Преместване 74 2 1
MOV       Rn,A Преместване F8-FF 1 1
MOV       Rn,dir Преместване A8-AF 2 2
MOV       Rn,#data Преместване 78-7F 2 1
MOV       dir,A Преместване F5 2 1
MOV       dir,Rn Преместване 88-8F 2 2
MOV       dir,dir Преместване 85 3 2
MOV       dir,@Ri Преместване 86,87 2 2
MOV       dir,#data Преместване 75 3 2
MOV       @Ri,A Преместване F6,F7 1 1
MOV       @Ri,dir Преместване А6,А7 2 2
MOV       @Ri,#data Преместване 76,77 2 1
MOV       DPTR,#data16 Преместване 90 3 2
MOVC    A,@A+DPTR Преместване 93 1 2
MOVC    A,@A+PC Преместване 83 1 2
MOVX    A,@Ri Преместване Е2,ЕЗ 1 2
MOVX    A,@DPTR Преместване Е0 1 2
MOVX    @Ri,A Преместване F2,F3 1 2
MOVX    @DPTR,A Преместване F0 1 2
PUSH     dir Запис в стека С0 2 2
POP       dir Четене от стека D0 2 2
XCH      A,Rn Разменяне C8-CF 1 1
XCH      A,dir Разменяне С5 2 1
XCH      A,@Ri Разменяне С6,С7 1 1
XCHD   A,@Ri Разменяне на тетради D6,D7 1 1

Операции с булеви променливи

Мнемоника Описание Код Байтове Цикли
CLR       C Нулиране СЗ 1 1
CLR       bit Нулиране С2 2 1
SETB     C Установяване в 1 D3 1 1
SETB     bit Установяване в 1 D2 2 1
CPL       C Инвертиране ВЗ 1 1
CPL       bit Инвертиране В2 2 1
ANL      C,bit Логическо И 82 2 2
ANL      C,/bit Логическо И В0 2 2
ORL      C,bit Логическо ИЛИ 72 2 2
ORL      C,/bit Логическо ИЛИ А0 2 2
MOV     C,bit Преместване А2 2 1
MOV     bit,C Преместване 92 2 2

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

Мнемоника Описание Код Байта Цикли
ACALL    addr11 Преход към подпрограма * 2 2
LCALL    addr16 Преход към подпрограма 12 3 2
RET Връщане от подпрограма 22 1 2
RETI Връщане от прекъсване 32 1 2
AJMP       addr11 Преход ** 2 2
LJMP       addr16 Преход 02 3 2
SJMP       rel Преход 80 2 2
JMP        @A+DPTR Преход 73 1 2
JZ            rel Преход, ако А = 0 60 2 2
JNZ         rel Преход, ако А < > 0 70 2 2
JC           rel Преход, ако С = 1 40 2 2
JNC        rel Преход, ако С = 0 50 2 2
JB           bit,rel Преход, ако bit = 1 20 3 2
JNB        bit,rel Преход, ако bit = 0 30 3 2
JBC        bit,rel Преход, ако bit = 1 10 3 2
CJNE     A,dir,rel Сравнение и преход В5 3 2
CJNE     A,#data,rel Сравнение и преход В4 3 2
CJNE     Rn,#data,rel Сравнение и преход B8-BF 3 2
CJNE    @Ri,#data,rel Сравнение и преход В6,В7 3 2
DJNZ     Rn,rel Намаляване с 1 и преход D8-DF 2 2
DJNZ     dir,rel Намаляване с 1 и преход D5 3 2
NOP Празна операция 00 1 1

* – двоичното представяне на кода е:  А10 А9 А8 1     0 0 0 1,

където А10 – А8 са старшите три бита на адреса за преход

** – двоичното представяне на кода е:  А10 А9 А8 0     0 0 0 1,

където А10 – А8 са старшите три бита на адреса за преход

Характеристики на сензорите и изходите и връзка с МК.

Както беше обяснено, към входа на аларменото устройство се свързват шест сензора и контактът на устройството за активиране и дезактивиране на системата. Към изхода се включва усилвател на мощност с високоговорител.

Съществуват различни сензори, които реагират на изменението на различни физически величини. Алармените системи за охрана на офиси най-често използват контактни сензори, които се монтират на вратите и прозорците на помещенията.

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

Магнитният сензор се състои от две части: магнит и магнитен превключвател от типа Рид контакт.

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

Контактните сензори имат релеен изход – нормално отворен контакт. При задействане контактът се затваря. Сигналите на използваните шест сензора се обединяват и се подават на микроконтролера за обработването им. На фиг. 3.1 е показан един начин за обединяване на шестте сигнала.

В нормално състояние контактите на сензорите S1 ÷ S6 са отворени, транзисторът Q1 е запушен и на колектора му има напрежение +5 V, колкото е захранващото напрежение на микроконтролера. При задействане на сензор, неговият контакт се затваря, транзисторът се отпушва и изходният сигнал става приблизително 0 V. Тази промяна на изходния сигнал се регистрира от микроконтролера и той започва изпълнение на програма за генериране на алармен сигнал.

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

Връзките на сензорите и усилвателя на мощност с микроконтролера са показани на пълната принципна схема на аларменото устройство.

Микроконтролерът следи затварянето на контактите на сензорите  S1 ÷ S6 и на контакта K1 на устройството за активиране и дезактивиране на системата чрез непрекъсната проверка на сигналите на входове Р3.0 и Р3.1. При задействане на аларменото устройство звуковият сигнал се извежда на изход Р1.0, усилва се по ток, респективно по мощност, от транзистор Q2 и се възпроизвежда от високоговорител LS1.

Микроконтролерът АТ89С55 работи със захранващо напрежение     + 5 V. По задание захранването на аларменото устройство е UDD = + 12 V. Налага се то да бъде преобразувано на + 5 V. За целта може да се използва триизводен интегрален стабилизатор на фиксирано напрежение + 5 V тип μА7805.

Блокова схема на таймера.

Както беше отбелязано, микроконтролерът АТ89С55 има три        16-битови таймер/брояча. Два от тях – таймери 0 и 1, не се различават от тези на микроконтролерите от фамилия MCS-51. Различен е само третият таймер, но тук той няма да бъде използван и затова няма да го разглеждаме.

Структурата на таймер 0 е еднаква със структурата на таймер 1. Двата брояча имат 4 режима на работа. Режим 0 се базира на 13-битов брояч, режим 1 използва 16-битов брояч и режим 2 работи с 8-битов брояч с автоматично презареждане. Режим 3 може да се приложи само за таймер 0, който се разделя на два 8-битови таймера.

Режим 0. Фиг. 4.1 показва структурата на таймер 1 в режим 0. Режим 0 се избира чрез запис на кода 00 в битове М0 и М1 на регистъра TMOD. Функцията таймер се постига с нулиране на бит С/. Поставянето на този бит в 1 разрешава работата на подсистемата като брояч. Тактовата честота се разделя на 12.

При преминаването на брояча от състояние, в което всички битове са 1 към състояние, в което всички разреди са 0, се установява в 1 флагът TF1 от управляващия регистър TCON. По този начин се активира заявка за прекъсване. Флагът TF1 се нулира автоматично чрез хардуер при обработване на прекъсването. Това е илюстрирано на фиг. 4.1 с връзка между векторния адрес 001ВН и входа за нулиране R.

Таймер 1 започва да брои (ключът е затворен), когато флагът TR1 се установи в 1 и същевременно или битът GATE се нулира, или входът  се постави в 1. Измерване на продължителност на импулси може да се осъществи с таймерната функция и установен в 1 бит GATE. Импулсите се подават на входа .

Режим 1. В този режим се използва пълната 8-битова дължина на регистъра TL0 (TL1). Не съществуват други разлики спрямо режим 0.

Режим 2. Фиг. 4.2 показва таймер 1 в режим 2. В този случай ядрото на подсистемата е 8-битов таймер/брояч с автоматично презареждане. Режим 2 се избира чрез запис на код 10 в битовете М1 и М0 на регистър TMOD. В този режим броячът е TL1, а регистърът за автоматично презареждане е ТН1. Когато броячът се препълни, флагът за прекъсване TF1 се установява в 1 и кодът от регистъра ТН1 се записва в брояча TL1. Съдържанието на регистъра ТН1 се фиксира предварително чрез софтуер.

Избор и изчисление на режимите на таймера с параметри по време.

За формиране на изходен звуков сигнал със зададените параметри се налага да се използват два таймера на микроконтролера – единият за формиране на сигнали с честоти 950 Hz и 1500 Hz, а другият – за формиране на интервали 0,2 s.

Микроконтролерът АТ89С55 може да работи с тактова честота fosc до 24 МHz. На входовете на таймер/броячите тя се дели на 12, т.е. входната честота е 12 пъти по-малка от тактовата. Ако изберем тактова честота          fosc = 12 MHz, входната честота на броячите на таймерите ще бъде fin = 1 MHz (период Tin = 1 μs).

Формиране на симетрични импулси (с коефициент на запълване 0,5) се осъществява, като на всеки полупериод се инвертира изхода на микроконтролера. Следователно таймерът трябва да бъде инициализиран за формиране на временен интервал равен на полупериода на импулсите.

За формиране на временни интервали t1 = 526 μs и t2 = 333 μs е необходим брояч с повече от 8 разреда. Поради това ще използваме таймер 0 в режим 1 – работа с 16-битов брояч.

За формиране на временни интервали t = 0,2 s = 200 ms ще използваме таймер 1 в режим 1. Капацитетът обаче на 16-битовия брояч е 65536 и с него могат да се формират интервали до 65,5 ms. За формиране на интервал 200 ms трябва да се организира цикъл от четири последователни пускания на таймера, програмиран за интервал 50 ms.

От обяснението на действието на устройството става ясно, че микроконтролерът формира няколко вида временни интервали:

-         за честота 950 Hz – временни интервали равни на полупериода на звуковия сигнал t1 = 526 μs.

-         за честота 1500 Hz – временни интервали равни на полупериода на звуковия сигнал t2 = 333 μs.

-         за продължителността на всяка честота – временни интервали t3 = 50 ms = 50000 μs.

-         обща продължителност на звуковия сигнал tc = 1 min = 60 s.

Следователно за получаване на честота 950 Hz таймер 0 трябва да генерира заявка за прекъсване след всеки 526 входни импулса (n1 = 526), за честота 1500 Hz – след всеки 333 входни импулса (n2 = 333), а таймер 1 – след всеки 50000 входни импулса (n3 = 50000).

Препълване на 16-битовия брояч TH0, TL0 на таймер 0 настъпва след  входни импулса. За да се получи заявка за прекъсване (препълване на брояча) след n1 = 526 и след n2 = 333 входни импулса, в брояча трябва да се записват начални стойности съответно

р1 = N – n1 = 65536 – 526 = 65010 и

p2 = N – n2 = 65536 – 333 = 65203.

Стойностите р1 = 65010 (FDF2 в шестнадесетичен код) и р2 = 65203 (FEB3 H) се записват предварително в брояча TH0, TL0 на таймера и след всяко прекъсване се презареждат отново.

За да се получи заявка за прекъсване от таймер 1 след n3 = 50000 входни импулса, в брояча трябва да се записва начална стойност

p3 = N – n3 = 65536 – 50000 = 15536.

В шестнадесетичен код десетичното число 15536 има стойност 3CB0. Това число се записва преди всяко пускане на таймера в регистрите му TH1, ТL1.

Програма на Асемблер.

Програмата извършва описаните в предните точки действия. Използва се режим 1 на таймер 0 и на таймер 1.

След инициализиране на таймер 0 в неговите регистри ТН0, TL0 се записва шестнадесетичното число FDF2. Така таймер 0 генерира заявка за прекъсване на всеки 526 μs. При обработката на всяко програмно прекъсване се извършва инвертиране на изход Р1.0 на микроконтролера, при което се получават импулси с период 1052 μs, респективно с честота 950 Hz.

По същия начин преди всяко пускане на таймер 1 в неговите регистри TH1, TL1 се записва шестнадесетичното число 3CB0, което осигурява генериране на заявка за прекъсване на всеки 50 ms. След всеки 4 прекъсвания (200 ms) се сменя числото FDF2, което се записва в регистри ТН0, TL0 с числото FEB3 отговарящо на честота 1500 Hz и обратно. Така на изход Р1.0 се получава двутонов звуков сигнал.

За формиране на временен интервал 60 s се организира двоичен брояч от два регистъра за данни на микроконтролера, който брои програмните прекъсвания от таймер 1. Когато броят им стане 1200 (в шестнадесетичен код 04В0) програмата установява изход Р1.0 в логическа 0 и се връща в изходно състояние. Същото тя прави и при отваряне на ключа K1 при сигнал от устройството за дезактивиране на алармената система.

За изпълнение на описаното действие програмният продукт използва няколко регистри за данни на микроконтролера:

-         R0 – указател за смяна на честотите на изход P1.0;

-         R1, R2 – брояч на прекъсванията на таймер 1 за формиране на временен интервал 60 s;

-         R3 – брояч на интервалите по 50 ms за формиране на временен интервал 0,2 s.

Програма на Асемблер

1.                     ORG      0000H

2.                     LJMP     0400H                ; Преход след RESET

3.                     ORG      000BH

4.                     LJMP     0800H                ; Преход при прекъсване от таймер 0

5.                     ORG      001ВH

6.                     LJMP     0C00H               ; Преход при прекъсване от таймер 1

7.      ; ************************************************************************

8.      ;                                                      Програма OFS.ASM

9.      ; ************************************************************************

10.                   ORG      0400H

11.                   SETB     EТ0                    ; Разрешение на прекъсване от таймер 0

12.                   SETB     EТ1                    ; Разрешение на прекъсване от таймер 1

13.                   SETB     EA                      ; Разрешение на всички прекъсвания

14.                   MOV      TMOD,#11H     ; Режим 1 на таймер 0 и на таймер 1

15.    OFS1:     CLR       P1.0                    ; Ниво 0 на изход P1.0 и на високоговорителя

16.                   MOV      R0,#00H            ; Указание за генериране на 950 Hz

17.    OFS2:     JB           P3.1,OFS2         ; Изчакване активиране на алармата (затваряне K1)

18.    OFS3:     JB           P3.0,OFS3         ; Изчакване сигнал от синзор (затваряне S1÷S6)

19.                   MOV      R1,#B0H            ; Задаване на интервал 60 s (1200 х 50 ms)

20.                   MOV      R2,#04H            ;

21.                   MOV      R3,#04H            ; Задаване на интервал 0,2 s (4 х 50 ms)

22.                   MOV      TL0,#F2H          ; Задаване интервал 526 μs на таймер 0

23.                   MOV      TH0,#FDH         ;

24.                   SETB     TR0                    ; Старт на таймер 0

25.                   MOV      TL1,#B0H          ; Задаване интервал 50 ms на таймер 1

26.                   MOV      TH1,#3CH         ;

27.                   SETB     TR1                    ; Старт на таймер 1

28.    OFS4:     MOV      A,R1                  ; Изчакване формиране на интервал 60 s

29.                   ORL       A,R2                  ;

30.                   JZ           OFS5                  ;

31.                   JNB        P3.1,OFS4         ; Проверка за дезактивиране на алармата

32.    OFS5:     CLR       TR0                    ; Стоп на таймер 0

33.                   CLR       TR1                    ; Стоп на таймер 1

34.                   SJMP      OFS1                  ; Преход към етикет OFS1

35.    ; ************************************************************************

36.    ;                                                  Използвани подпрограми

37.    ; ************************************************************************

38.    ; ————— Подпрограма за обслужване на прекъсванията от таймер 0  —————

39.    ;

40.                   ORG      0800H

41.                   PUSH     A                        ; Съхраняване на акумулатора в стека

42.                   PUSH     PSW                   ; Запис на регистъра на състоянието PSW в стека

43.                   CLR       TR0                    ; Стоп на таймер 0

44.                   MOV      A,R0                  ; Преход за честота 1500 Hz при нечетно R0

45.                   ANL       A,#01H              ;

46.                   JNZ        INT1                  ;

47.                   MOV      TL0,#F2H          ; Задаване интервал 526 μs на таймер 0

48.                   MOV      TH0,#FDH         ;

49.                   SJMP      INT2                  ; Преход към етикет INT2

50.    INT1:     MOV      TL0,#B3H          ; Задаване интервал 333 μs на таймер 0

51.                   MOV      TH0,#FEH         ;

52.    INT2:     SETB     TR0                    ; Старт на таймер 0

53.                   CPL        P1.0                    ; Инвертиране на изход Р1.0

54.                   POP        PSW                   ; Възстановяване на регистър PSW от стека

55.                   POP        A                        ; Възстановяване на акумулатора от стека

56.                   RETI                                 ; Връщане от прекъсване

57.    ;

58.    ; ————— Подпрограма за обслужване на прекъсванията от таймер 1  —————

59.    ;

60.                   ORG      0C00H

61.                   PUSH     A                        ; Съхраняване на акумулатора в стека

62.                   PUSH     PSW                   ; Запис на регистъра на състоянието PSW в стека

63.                   CLR       TR1                    ; Стоп на таймер 1

64.                   DJNZ     R3,INT3             ; Преход, ако няма още 0,2 s

65.                   MOV      R3,#04H            ; Задаване на интервал 0,2 s (4 х 50 ms)

66.                   INC        R0                      ; Увеличаване съдържанието на R0 с 1

67.    INT3:     DEC       R1                      ; Намаляване съдържанието на брояч R2, R1 с 1

68.                   CJNE     R1,#FFH,INT4  ;

69.                   DEC       R2                      ;

70.    INT4:     MOV      TL1,#B0H          ; Задаване интервал 50 ms на таймер 1

71.                   MOV      TH1,#3CH         ;

72.                   SETB     TR1                    ; Старт на таймер 1

73.                   POP        PSW                   ; Възстановяване на регистър PSW от стека

74.                   POP        A                        ; Възстановяване на акумулатора от стека

75.                   RETI                                 ; Връщане от прекъсване

Заключителна част.

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

-         Изработеният проект отговаря напълно на поставеното задание и изискванията към него.

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

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

1.  А. Атанасов, Микропроцесорите, 2009 г.

2.  Здр. Каракехайов и др., Проектиране на вградени микрокомпютърни системи с микроконтролери, 2000 г.

  1. А. Смрикаров и др., Едночипови микрокомпютри, 1999 г.

www.atmel.com

Подобни статии

  • Инспектора на обекти (Object Inspector)
    Инспекторът на обекти е в основата на всички действия и манипулации с обектите в Delphi. Прозорецът на Object Inspector съдържа следните елементи: комбиниран панел (Combo box) за избор на обект; страница със свойства (Properties Page) и страница на събитията (Events Page). Страницата със свойствата ...
  • Развитие на информационните системи
    Развитието на информационните системи се разглежда във връзка с развитието и промените в концепцията на информацията. Тип трансакция Техническо средство Област на приложение Продажба на дребно POS терминал, Сензорен екран, Четец на бар код Търговски обекти, супермаркети Осче...
  • Hyper-Threading
    Hyper-threading е напредък над super-threading. Hyper-threading (официално наричана Hyper-Threading Technology или HTT) е Intel-патентована технология, използвана за подобряване на паралелните изчисления (извършване на множество задачи наведнъж), извършени на PC микропроцесорите. Процесор с Hyper-th...
  • Прозоречно и контекстно меню в MFC (Microsoft Foundation Class Library). Управление на клавиатура
    Системно меню на прозореца. То генерира смс WM_SYSCOMMAND Достъпа става след CMenu *SysMenu-getSystemMenu(FALSE) Добавяне на избор към меню=> pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,ID_SYSMENU_ABOUT,”&About”); void CMainFrame::OnSysCommand(UINT nID,LPARA...
  • Изкуствени интелигентни агенти. Характеристики, класификация и инструментални средства за тяхното създаване.
    Изкуствените интелигентни агенти са възникнали като част на разпределения изкуствен интелект. Основния интерес към него е свързан със създаване на организации от системи способни на изкуствен живот. Дефиницията за изкуствени интелигентни системи и агенти, която предлагат двамата основоположници Уол...
  • Графични обекти и анимационни ефекти в Microsoft PowerPoint
    автор: Таня Маринова курс: "Информационни технологии" 1.Място на провеждане на урока: ОУ „Пейо Кр. Яворов” 2.Учебна дисциплина: Информационни технологии. „Вмъкване на графични обекти и анимационни ефекти в компютърна презентация “ е примерна мето- дическа разработка на урок по информацион...