• Ешқандай Нәтиже Табылған Жоқ

РћқСѓ құралы

N/A
N/A
Protected

Academic year: 2022

Share "РћқСѓ құралы"

Copied!
97
0
0

Толық мәтін

(1)

1

Қазақстан Республикасы Білім және ғылым министрлігі

«Алматы энергетика және байланыс университеті»

коммерциялық емес акционерлік қоғамы

О.Т. Шанаев

ЦИФРЛЫҚ ЖҮЙЕЛЕРДІ

PIC МИКРОКОНТРОЛЛЕРЛЕРІ НЕГІЗІНДЕ ҚҰРУ Оқу құралы

Алматы АЭжБУ

2016

(2)

2 ӘОЖ 681.3.06/075.81

ББК 32.844я73 Ш20

Пікір берушілер:

техника ғылымдарының докторы, Нархоз университетінің профессоры Э.К. Абдылдаев,

техника ғылымдарының кандидаты, Абай атындағы ҚазҰПУ профессоры Ш.И.Хамраев,

физика-математика ғылымдарының докторы, АЭжБУ профессоры С.Б.Бимурзаев

ҚР БҒМ РОӘК-нің энергетика, радиотехника, электроника және телекоммуникациялар мамандықтары бойынша Оқу-әдістемелік секциясы

«5В070400 – Есептеу техникасы және бағдарламалық қамтамасыз ету» және

«5В071900 – Радиотехника, электроника және телекоммуникациялар»

мамандықтарының бакалаврларына оқу құралы ретінде басуға ұсынды (№ 4 хаттама 27.12.2016 ж.). АЭжБУ 2016 ж. ведомостік әдебиеттер басылымдарын

шығарудың тақырыптық жоспары бойынша басылады, реті 37.

Шанаев О.Т.

Ш20 Цифрлық сұлбақұралым: Оқу құралы (жоғары оқу орындарының

«Радиотехника, электроника и телекоммуникациялар» мамандығы студенттеріне арналған) / О.Т. Шанаев. – Алматы: АЭжБУ, 2016. – 97 б.: кесте 15, ил. 10, әдеб. көрсеткіші – 7атау.

ISBN 978-601-7436-73-5

Оқу құралында цифрлық құрылғылардың элементтік негіздері келтіріліп, қиыстырма және тізбектеме құрылғылардың базалық негіздері суреттелген және онымен қатар микропроцессорлық жүйелердің құрылым принциптері мен олардың жұмысының ұйымдастырылу тәртібі қарастырылған.

Цифрлық құрылғылардың құрылымын логикалық және схемотехникалық тұрғыдан құру мүмкіншілігін көрсету мақсатында нақтылы алгоритмдерді жүзеге асырушы бірнеше цифрлық құралымның және ерекше құрылымды және сәйкесті командалар жүйесімен қамтылған микропроцессорлық жүйенің моделі келтірілген.

ӘОЖ 681.3.06/075.81 ББК 32.844я73

ISBN 978-601-7436-73-5 © АЭжБУ, 2016 Шанаев О.Т., 2016

(3)

3 Кіріспе

Микропроцессорлық жүйелер (МПЖ) өзінің бастапқы даму кезеңінде, әрбіреуі нақтылы жеке қызметке арналған, бірнеше үлкен және аса үлкен жинамалы сұлбалар (ҮЖС и АҮЖС) негізінде құрылған жүйелер болатын.

Заманауи даму кезеңінде МПЖ, құрамына микропроцессорлық жүйелердің негізгі элементтерінің бәрі (орталық процессор, тұрақты жады, қызмет жадысы, енгізу/шығару порттары, таймерлер және т.б. қызмет блоктары) біріктірілген, жеке кристалды микроконтроллерлер (МК) түрінде шығарылады.

Микроконтроллерлердің аса көп таралған түріне өнеркәсіпте, тұрмыстық және компьютерлік техникада кең пайдаланылатын 8-разрядты аспаптар жатады. Олар өзінің даму барысында құрамына мүмкіндігі онша жоғары емес шеткі құрылғылар (перифериялар) енгізілген қарапайым аспаптардан бастап, нақтылы уақыт масштабында басқарудың күрделі алгоритмдерінің жүзеге асырылуын қамтамасыз етуші заманауи жан-жақты контроллерлерге дейін жетті.

Ұсынылып отырған оқу құралы («Microchip» фирмасының PIC (Peripheral Interface Controller) микроконтроллерлерінің параметрлері мен іскерлік мүмкіндіктері туралы және олардың жұмысын бағдарламалы ұйымдастыру ерекшеліктері жөнінде білім қалыптастыру мақсатында құрылған. Қойылған мақсатқа жету оқу құралында 14-разрядты командалармен жұмыс істеуші орта деңгейлі микроконтроллерлердің құрамымен, құрылымымен және аппаратық мүмкіндіктерімен таныстыру арқылы және осындай микроконтроллерлердің жұмысын ұйымдастыруға қолданылатын әртүрлі бағдарламалы құрылымдарды тәптіштеп түсіндіру арқылы жүзеге асырылады.

Орта деңгейлі көптеген микроконтроллерлер жинамдарына, құрамына аналогты компараторлар, аналогты-цифрлық түрлендіргіштер, тізбекті SPI, USART және I2C интерфейстерін басқарушылар (контроллерлер), таймер- санауыштар, ұсталым/салыстырым/енді-импульсті модуляторлар модулі, бақылау таймерлері, супервизорлық сұлбалар және т.б. іскерлік құрылғылар енгізілген микроконтроллерлер біріктірілгендігін айта кету керек. Демек, микроконтроллерлердің осы түрін оқу арқылы алынған мәліметтер студенттердің жалпы микроконтроллерлер жөніндегі білім негізін қалайды деп санауға болады. Ал бұл олардың іскерлік мүмкіншілігі жоғарырақ микроконтроллерлерді («Microchip» фирмасының да, одан өзге фирмалардың да) өздігімен оқуға ұмтылысының қалыптасуына үміт артуға мүмкіндік береді. ««

Ұсынылған оқу құралы автордың көпжылдық педагогикалық қызметінің негізінде құрастырылды және ол 5В070400 – Есептеу техникасы және бағдарламалық қамтамасыз ету мамандығында оқитын студенттерге арналған.

(4)

4

1 PIC16F8X микроконтроллерлерінің құрылымы

Микроконтроллерлердің құрамын, құрылымын және олардың аппаратық аспап-құралдарының мүмкіндіктерін қарастыруға мысал ретінде орта деңгейлі PIC16F8X микроконтроллерін аламыз да, ал нақтылы бағдарламалы құрылымдарды жүзеге асыруға аса кең таралған және бастапқы оқуға ыңғайлы келетін PIC16F84A микроконтроллерін қолданамыз. Бұл микроконтроллер, орта деңгейлі микроконтроллердің барлығы сияқты, RISC- процессорлы Гарвард архитектурасымен құрылған және оның келесі ерекшеліктері бар:

 35 қарапайым команда пайдаланылады;

 деректер желісі (8 бит) мен командалар желісі (14 бит) бөлінген;

 1024х14 бағдарлама жадысы Flash- жады арқылы құрылған;

 15 сегізразрядты арнайы қызмет регистрлері;

 68 сегізразрядты жалпы қызмет регистрлері;

 сегіздеңгейлі аппараттық стек;

 төрт үзіліс көзі;

 64x8 электр тәсілімен бағдарланатын EEPROM-жады;

 дербес генератормен жұмыс істеуші WDT бақылау таймері.

PIC микроконтроллерлерінің құрамына кез келген регистрмен әртүрлі сілтеу тәсілдерін пайдалану арқылы операция орындауға мүмкіндік беретін симметриялы командалар жүйесі бар RISC-процессор кіреді. Пайдаланушы операция нәтижесін регистр-аккумулятордың өзінде немесе операцияға пайдаланылатын екінші регистрде сақтай алады.

1.1 PIC16F84A микроконтроллерінің архитектурасы

PIC16F84A микроконтроллерлерінің архитектурасы, орта деңгейлі барлық микроконтроллерлер сияқты, деректер мен командаларға арналған дербес желілер мен дербес жады аймақтарының құрылуына (Гарвард архитектурасы) негізделген. Дерек желісі мен дерек жадысының ені 8 бит, ал бағдарлама желісі мен бағдарлама жадысының ені 14 бит. Бағдарлама жадысының 14-битті ені 14-битті команданың бір циклде шығарылуын қамтамасыз етеді. Екісатылы конвейер команда шығарылымы мен команда орындалуының бір мезгілде жүзеге асырылуын қамтамасыз етеді.

PIC16F84A микроконтроллерінің қарапайым құрылым сұлбасы 1.1 суретте келтірілген. Микроконтроллер құрамындағы 8-разрядты арифметикалық-логикалық құрылғы (ALU, Arithmetic Logic Unit) жұмыс регистрі (W) мен микроконтроллердің кез келген регистрі арасында арифметикалық және логикалық операциялар орындайды. Операция нәтижесіне байланысты, ALU STATUS регистрінің C (Carry), DC (Digit Carry) и Z (Zero) биттерінің мәндерін өзгертуі мүмкін.

(5)

5 1.1 сурет

1.2 Бағдарлама жадысының ұйымдастырылымы

PIC микроконтроллерлеріндегі команда көрсеткішінің (IP, Instruction Pointer) ені 13 бит, демек оның көлемі 8Кх14 бит бағдарлама жадысына сілтеу қабілеті бар. Бірақ PIC16F84A микроконтроллерінің кристалында іс жүзінде көлемі 1Кх14 жады жүзеге асырылған және ондағы команда санауышының ені 10 бит.

Бағдарлама жадысында арнайы бөлінген адрестер бар. Тазарту векторы – 0000h адресі бойынша, ал үзіліс векторы 0004h адресі бойынша орналасқан.

Әдетте 0004h адресі бойынша үзілістерді ажырату және өңдеу бағдарламасы орналасады, ал 0000h адресі бойынша үзіліс бағдарламасынан кейін орналастырылған белгіге ауыстыру командасы қойылады.

1.3 Дерек жадысының ұйымдастырылымы

Микроконтроллердің дерек жадысы екі аймаққа бөлінген. Бастапқы 12 адрес – арнайы қызмет регистрлерінің (SFR, Special Function Registers) аймағы, ал екіншісі – жалпы қызмет регистрлерінің (GPR, General Purpose Registers) аймағы. Жадының әрбір аймағы өз кезегінде 0 және 1 банктерге бөлінген. PIC16F84A микроконтроллерінің әрбір банкісінің көлемі 80 байт, яғни оның дерек жадысы 04Fh адресіне дейін ғана орналасады.

(6)

6

Жады ұяшықтарына әрбір регистрдің адресі бойынша тура сілтеуге немесе FSR көрсеткіші арқылы жанама сілтеуге болады. Жанама сілтеу кезінде нақтылы банкке байланысу үшін STATUS регистрінің RP1:RP0 разрядтарының мәндері пайдаланылады.

1.4 Арнайы қызмет регистрлері

Арнайы қызмет регистрлері нақтылы адрестер бойынша орналастырылған және олардың стандартты аталымдары өзгертілмейді.

Олардың құрамын, яғни биттерінің мәндерін өзгерту (кейбір биттеріне 0 немесе 1 қою) арқылы микроконтроллердің ішкі құрылым элементтерінің жұмысын бағдарламада жоспарланған жұмыстардың орындалуын қамтамасыз етуге бағыттауға болады.

Кейбір арнайы қызмет регистрлері екі банкте де қайталанады (1.2 сурет). Бұндай регистрлердің көпшілігімен жұмыс нөлінші банкте жүргізіледі.

Бұл кезде нөлінші банктегі регистрлердің құрамы бірінші банктегі сәйкесті регистрлерде қайталанады.

Банк 0 Банк 1

00 INDF 80 INDF

01 TMR0 81 OPTION

02 PCL 82 PCL

03 STATUS 83 STATUS

04 FSR 84 FSR

05 PORTA 85 TRISA 06 PORTB 86 TRISB

07 87

08 EEDATA 88 EECON1 09 EEADR 89 EECON2 0A PCLATCH 8A PCLATCH 0B INTCON 8B INTCON

0C 8C

. .

. .

. .

4F 8F

1.2 сурет

Кейбір арнайы қызмет регистрлерінде микроконтроллердің құрамын реттеу биттерінен басқа оның реттеліміне әсер етпейтін биттер де болады, олар тулар деп аталады. Қарапайым тілмен айтқанда, бұл биттер өзгеріс туғызатындай әрекет қылмайды, бірақ олардың құрамына қарап, орындалған операцияның нәтижесі туралы мәлімет алып (мысалы, операция нәтижесінің

(7)

7

нөл немесе нөл еместігі туралы), сосын бұл мәліметті бағдарламаның одан арғы жұмысының бірнеше бағытының (сценариінің) біреуін таңдауға пайдалануға болады. Сонымен, тулар жұмыс әрекеттеріне жанама түрде қатыса алады. Сәйкесті тулардың жағдайын талдау бағдарлама жұмысын реттеуге көптеген пайдалы ақпарат береді.

Арнайы қызмет регистрлерімен және олардың биттерімен бұл регистрлердің алда қарастырылатын бағдарламаларда пайдаланылу кезінде танысамыз.

1.5 Команда көрсеткіші

PCH және PCL регистрлерінен тұратын команда көрсеткішінің (IP, Instruction Pointer) разряд саны 13 бит. Команда көрсеткішінің кіші байтын (PCL) оқуға да, оған дерек жазуға да болады. Команда көрсеткішінің үлкен байтын тікелей оқуға да, оған дерек жазуға да болмайды. Оның құрамы PCLATH (PC Latch High) регистрінің құрамымен анықталады. PCLATH құрамы команда көрсеткішінің үлкен байтына кіші байтқа (PCL) жаңа мән енгізілген кезде жіберіледі.

Команда көрсеткішіне CALL, GOTO командаларының орындалу кезінде жаңа мән жіберілуіне немесе команда көрсеткішінің кіші байтына сан жазылуына байланысты PCLATH құрамының команда көрсеткішінің үлкен байтына жіберілуі, 1.3 суретте көрсетілгендей, әртүрлі тәсілмен енгізіледі.

1.3 сурет

CALL және GOTO командалары, көлемі 2К сөз бағдарлама жадысының парағының шегінде ығыстыруға жеткілікті, 11-разрядты адрестік кеңістікте істейді. PIC16F8X микроконтроллерлері үшін бұл жеткілікті.

Микроконтроллерлердің болашақ модельдерінің командалар жадысының кеңейтілу мүмкіншілігін қамтамасыз ету үшін команда көрсеткішінің екі

(8)

8

үлкен битінің PCLATH<4:3> регистрінен енгізілуі ескерілген. CALL және GOTO командаларының пайдаланылуы кезінде пайдаланушы парақ биттерінің қажетті параққа шығуға бағдарланғанына көзін жеткізу керек.

CALL командасының орындалуы кезінде немесе үзіліс кезінде 13 битті команда көрсеткіші түгелдей стекке (Stack) жіберіледі, сондықтан қосалқы бағдарламадан қайту үшін PCLATH<4:3> разрядтарымен ешқандай әрекеттің керегі жоқ. PIC16F8X микроконтроллерлері бағдарлама жадысының, күрделірек микроконтроллерлердің жадысының 1-, 2- және 3-парақтарына шығуға пайдаланылатын PCLATH<4:3> биттерінің мәнін қажет қылмайды.

PIC16F8X микроконтроллерлерінің құрамына ені 13 бит сегіздеңгейлі аппаратты стек енгізілген. CALL командасының орындалуы кезінде немесе үзіліс кезінде команда көрсеткішінің кезекті мәні стекке жіберіледі. Қосалқы бағдарламадан қайту процедурасының орындалу кезінде (retlw, retfie және return командалары) команда көрсеткішінің құрамы стектен қайтарылады.

PCLATH регистрінің құрамы стекпен операциялар кезінде өзгермейді.

2 PIC16F8X микроконтроллерлерінің командалары

PIC16F8X микроконтроллерінің әрбір командасы, операция кодына (OpCode) және бір немесе одан көбірек операндтарға арналған аймақтарына бөлінген, 14-битті сөз түрінде құрылған. Микроконтроллер командаларының негізгі форматтары 2.1 суретте көрсетілген.

Байттармен істеуші командалар

13 8 7 6 0

OpCode d f

d = 0 – w; d = 1 – f; f– регистр адресі Биттермен істеуші командалар

13 10 9 7 6 0

OpCode b f

b – бит нөмірі; f – регистр адресі

Басқару және константамен істеу командалары

13 8 7 0

OpCode k

k – константа

CALL және GOTO командалары

13 11 10 0

OpCode k

k – константа 2.1 сурет

(9)

9

PIC16F84A микроконтроллерінің командалар жүйесі небәрі 35 командадан тұрады. PIC16F8X микроконтроллерлерінің командалар жүйесіне байттармен, биттермен істеу командалары, басқару және константалармен операцииялар жүргізу командалары кіреді (2.1 кесте).

2.1 кесте – PIC16F8X микроконтроллерінің командалар жүйесі

Мнемоника Команда суреттемесі Ахуал

биттері

addwf f, d W және f регистрлерін қосу C ,DC ,Z

andwf f, d W және f регистрлерін логикалық көбейту Z

clrf f f регистрін тазарту Z

clrw W регистрін тазарту Z

comf f, d f регистрін терістеу Z

decf f, d f регистрін декременттеу Z

decfsz f, d f регистрінің декременттелу нәтижесі 0 болса, келесі команда орындалмайды

incf f, d f регистрін инкременттеу Z

incfsz f, d f регистрінің инкременттелу нәтижесі 0 болса, келесі команда орындалмайды

iorwf f, d W және f регистрлерін логикалық қосу Z

movf f, d f регистрін d регистріне жіберу Z

movwf f W регистрін f регистріне жіберу nop Орындалмайтын команда

rlf f, d f регистрін тасымал арқылы солға ығыстыру C rrf f, d f регистрін тасымал арқылы оңға ығыстыру C

subwf f, d f регистрінен W регистрін алу C,DC,Z

swapf f, d f регистрінің тетрадаларының орнын ауыстыру

xorwf f, d W және f регистрлерін арифметикалық қосу Z bcf f, b f регистрінің b битін тазарту

bsf f, b f регистрінің b битін бірге қою

btfsc f, b b биті 0 болса, келесі команда орындалмайды btfss f, b b биті 1 болса, келесі команда орындалмайды

addlw k W регистріне константа қосу C, DC, Z

andlw k W регистрі мен константаны логикалық көбейту Z call k Қосалқы бағдарламаны шақыру

clrwdt Бақылау таймерін (WDT) тазарту /TO, /P

goto k Адрес бойынша ауыстыру

iorlw k W регистрі мен константаны логикалық қосу Z movlw k W регистріне константа жіберу

retfie Үзілістен қайту

retlw k Қосалқы бағдарламадан W регистріне константа қабылдау арқылы қайту

return Қосалқы бағдарламадан қайту

sleep SLEEP режиміне ауыстыру /TO, /P

sublw k W регистрін константадан алу C, DC, Z

xorlw k W регистріне константаны арифметикалық қосу Z

(10)

10 Кестеге түсініктемелер:

Байттармен істеуші командаларда f әрекет жүргізілуші регистрді білдіреді, ал d нәтиже орналастырылатын регистрді анықтайды. Нәтиже d = 0 кезінде – w регистріне, d=1 кезінде f регистріне орналастырылады.

Биттермен істеуші командаларда b әрекет жүргізілуші f регистрінің операцияға қатысты бит нөмірін анықтайды.

Басқару командалары мен константами операцияларда k сегіз- немесе онбірбитті константаны анықтайды.

Командалардың барлығы дерлік бір команда циклінде орындалады. Екі жағдайда екі команда циклінде орындалады:

шартты тексеру және оның орындалғандығына байланысты ауысу;

команданың орындалуына байланысты команда көрсеткішінің құрамының өзгеруі.

Бір команда циклінің ұзақтығы тактілік микроконтроллер генераторының төрт периодын құрады. Сонымен, жиілігі 4 МГц генератор үшін команда циклінің ұзақтығы 1 мкс болады.

2.1 Байттармен істеуші командалар

Байттармен істеуші командалар PIC микроконтроллерлерінде регистрлер арасында дерек таратуға және олардың құрамына математикалық операциялар жүргізуге пайдаланылады. Командалар санының аздығына қарамай, олар көптеген операциялардың жүзеге асырылуын мүмкіндік береді.

Оны командада операция нәтижесінің орналастылу адресін көрсету мүмкіндігімен түсіндіруге болады.

Қарастырылып отырған микроконтроллердің командалар жүйесінің тағы бір артықшылығына регистрлерге әртүрлі тәсілмен байланысу мүмкіндігі жатады. Регистр адресін тікелей команданың сәйкесті 7-битті аймағында көрсетуге болады. Бұл кезде кезекті банк шегіндегі деректерге ғана шығуға болады. Деректерге шығуды INDF аталымды жанама сілтеу регистрін пайдаланып, индекстік FSR регистрі арқылы да жүзеге асыруға болады.

Регистрлер арасында дерек таратылымы қызметі әртүрлі movf және movwf командаларымен жүзеге асырылады. Movf командасы нақтылы регистрдің құрамына байланысты нөлдік белгі қоюға пайдаланылады және оны нақтылы регистрдегі деректі w регистріне жіберу үшін қолдануға болады.

Movwf командасы w регистрінің құрамын микроконтроллердің көрсетілген регистріне жіберуге пайдаланылады. Егер осындай регистр ретінде INDF көрсетілсе, онда бағытталым регистрінің адресі FSR регистрінен алынады.

Бұл команданың орындалу кезінде ахуал биттері өзгермейді.

Сlrf f және clrw командалары микроконтроллердің көрсетілген регистрін және жұмыс регистрін (аккумуляторды) тазалауға пайдаланылады. Бұл кезде нөлдік белгі қойылатындығын есте ұстау керек.

Көбірек пайдаланылатын арифметикалық операцияға, addwf f,d командасымен орындалатын, қосу операциясы жатады. Бұл операция барлық

(11)

11

ахуал биттерін өзгерте алады. Subwf f, d командасымен орындалатын алу операциясы екінші операндтың қосымша кодын қосу арқылы жүзеге асырылады, яғни d = f – w операциясының орнына d = f + (-w) орындалады.

Логикалық операция командалары (andwf f, d, iorwf f, d және xorwf f, d) көрсетілген регистр мен w регистрінің сәйкесті биттерінің арасында негізгі логикалық операциялардың орындалуына мүмкіндік береді. STATUS регистріндегі нөлдік бит алынған нәтиже мәніне байланысты қойылады.

Xorwf f, d командасы регистр құрамын тексеруге пайдалануға ыңғайлы келеді.

Ол үшін берілген санды w регистріне енгізіп, сосын тексерілуші регистр мен w арасында xorwf f, d операцисын орындау керек. Егер регистр құрамы w құрамына тең болса, онда операция нәтижесі нөлге тең болады да, нөлдік бит бірге қойылады.

Comf f, d регистр биттерінің бәрінің мәндерін терістеуге пайдаланылады. Бұл команданың санды теріс санға айналдырмайтынын, яғни оны қосымша кодқа аудармайтынын айта кету керек. Теріс санды регистр құрамының терістелген мәнін бірге ұлғайту (инкременттеу) арқылы алуға болады.

Swapf f, d командасы регистр тетрадаларының орнын ауыстырады.

Басқа командалардағы сияқты нәтижені регистрдің өзіне немесе w регистріне жазуға болады. Бұл команда ешқандай ахуал битінің мәнін өзгертпейтіндіктен оны үзіліс бағдарамасынан қайтар алдында контексттік регистрлердің құрамын қалпына келтіруге пайдалануға болады. Swapf f, d командасын екі цифрды бір регистрде сақтап, пайдаланылу қажеттігіне байланысты олардың орнын ауыстыру үшін қолдануға болады. Сосын дисплейде көрсету үшін swapf f, d командасы арқылы байтты екі тетрадаға бөлуге болады.

Айналымды ығыстыру командалары (rlf f, d және rrf f, d) арқылы регистр құрамы оңға немесе солға ығыстырылып, тасымал биті – босаған орынға, ал ығысып шыққан бит тасымалға қойылады. Айналымды ығыстыру командаларын екінің n дәрежесіне көбейту немесе бөлу үшін пайдалануға болады. Оларды деректердің тізбелі түрде енгізілуін жүзеге асыру үшін және байттың шеткі битінің мәнін тексеру үшін қолдануға болады.

Инкремент және декремент командалары (incfsz f, d және decfsz f, d) регистр құрамын бірге өзгерту үшін пайдаланылады. Бұл командалар орындалғаннан кейін нөлдік бит қана өзгере алады.

Шартты ауыстырылымдарды жүзеге асыруға арналған incfsz f, d және decfsz f, d командалары дерек өңдеу жағынан қарағанда incf f, d және decf f, d командаларына ұқсас келеді. Олардың негізгі айырмашылығы – бұл командалардың орындалу нәтижесі нөл болғанда, келесі команданың орындалмай жібере салынуында. Демек, incfsz f, d және decfsz f, d командаларын бағдарлама циклдерін ұйымдастыруға пайдалануға болады. Бұл командалардың тағы бір ерекшелігі – олар STATUS регистрінің ахуал биттеріне әсер етпейді.

(12)

12

Nop командасы орындалмайтын операцияны көрсетеді. Ол әдетте бағдарламаның жүйе құрамындағы әртүрлі құрылғылардың уақыттық сипаттамаларымен сәйкестендірілуін қамтамасыз етуге пайдаланылады.

2.2 Биттермен істеуші командалар

Бұл командалар микроконтроллер регистрлерінің жеке биттерімен әрекеттесінді. Регистр құрамының кез келген жеке битін бірге және нөлге қою bsf f, b және bcf f, b командаларымен жүзеге асырылады.

Қарастырылушы микроконтроллердің командалар жүйесінде шартты ауыстырым командалары жоқ. Олардың орнына келесі команданың орындалмай жібере салынуына мүмкіндік беретін командалар бар. Олардың қатарына жататын жоғарыда қарастырылған incfsz f, d және decfsz f, d командалары бағдарлама циклдерін ұйымдастыруға ыңғайлы келеді..

Бағдарламаның орындалу процесін басқару үшін, берілген регистрдегі нақтылы биттің ахуалына байланысты, бағдарламаның келесі командасының орындамай жібере салынуына мүмкіндік беретін, биттермен істеуші btfsc f, b және btfss f, b командалары пайдаланылады. Берілген регистр ретінде STATUS регистрі пайдаланылатын болса, онда бағдарламадағы ауыстырылымдардың басқарылуын операция нәтижесін сипаттаушы ахуал биттеріне байланысты ұйымдастыруға болады.

2.3 Басқару командалары және константамен жұмыс жүргізу

Константамен жұмыс жүргізу командалары, команда кодының бір бөлігі ретінде қойылған, тікелей берілген операндтармен операция орындауға пайдаланылады.

Movlw k командасы жұмыс регистріне (w) константа (k) жазуға пайдаланылады. Бұл кезде STATUS регистрінің құрамы өзгермейді.

Addlw k командасы тікелей берілген k шамасын w регистрінің құрамына қосады. Бұл команда нөл, тасымал және ондық тасымал биттерінің мәнін addwf f, d командасы сияқты өзгертеді.

Sublw k командасы w регистрінің құрамын берілген k константасының мәнінен алады. Бұл кезде алу операциясы константаға екінші операндтың қосымша кодын қосу арқылы жүзеге асырылатынын, яғни d = f – w операциясының орнына d = f + (-w) орындалатынын ескеру керек. Осы команданы sublw 0 түрінде пайдаланып, w регистрінің құрамының таңбасын өгертуге болады.

Константамен логикалық операция жүргізу командалары (andlw, iorlw және xorlw) тікелей берілген константа биттері мен w регистрінің сәйкесті биттерінің арасында сәйкесті логикалық операциялар орындайды. Бұл командалар STATUS регистріндегі нөлдік битті ғана нәтиже мәніне байланысты қояды. Алынған нәтиже w регистрінде сақталады.

(13)

13

Iorlw 0 командасы арқылы w регистрінің құрамының нөлге тең екендігін анықтауға болады. W регистрінің құрамы нөлге тең болған жағдайда нөлдік бит бірге қойылады.

Goto k, call k, return және retfie командалары бағдарламаны басқаруға пайдаланылады.

Goto k және call k командаларында нақтылы парақ шегіндегі ауыстырым адресі тікелей беріледі. Парақ мөлшері микроконтроллер түріне байланысты:

PIC микроконтроллерлерінің кіші деңгейлі моделдеріне – 256/512 адрес, орта деңгейлі моделдеріне (оның ішінде PIC16F8X) – 2К адрес және үлкен деңгейлі моделдеріне – 8К адрес. Ауыстырым адресі парақ шегінен шығатын болса, онда PCLATH регистрінде жаңа парақ туралы дұрыс ақпарат болу керек.

Орта деңгейлі PIC микроконтроллерлерінде қосалқы бағдарламадан қайтудың return, retlw k және retfie командаларымен анықталатын үш түрлі тәсіл бар. Бұл тәсілдердің бәрінде де адрес мәні стек төбесінен шығарылады да, команда көрсеткішіне енгізіледі. Бұл адрестер қосалқы бағдарламадан немесе үзілістен қайтуға пайдалынылады.

Return командасының қалыпты қолданылымында қосалқы бағдарламаны шақыру командасынан кейінгі команда адресі бұрынғы қалпына қайтарылады. Бұл кезде ешқандай регистрдің құрамы өзгермейді.

Retlw k командасы деректер кестесінен қажетті дерек шығаруға пайдаланылады. Retlw k командасының орындалуы кезінде W регистріне k константасы жазылады да, одан кейін стек бойынша қайту жүзеге асырылады.

Retfie командасы үзілістен қайтуға пайдаланылады. Ол return командасы сияқты жүзеге асырылады, бірақ оның орындалуы кезінде үзілісті басқарушы INTCON регистрінің GIE битін бірге қойылады. Бұл осы команда орындалғаннан кейін бірден өз кезегін күтіп тұрған үзілістерді өңдеуге ауысуға мүмкіндік береді.

Микроконтроллер жұмысын тікелей басқаруға арналған екі ғана команда бар, олар – clrwdt және sleep. Сlrwdt командасы бақылау таймерінің (WDT) құрамы мен алғы бөлгішті (егер ол бақылау таймеріне қосылған болса) нөлге қойып, бақылау таймерінің уақыт санауын қайта бастайды. Clrwdt командасының енгізілу мақсаты – бағдарламаның қалыпты орындалып, микроконтроллер жұмысының қайта басталуына жол бермеу.

Sleep командасы тоқтатылған микроконтроллердің жұмысын жалғастыруға мүмкіндік беретін оқиға туғанша, оның кезекті жағдайының күту режимінде сақталуын қамтамасыз етеді.

Sleep командасы екі түрлі қызметке пайдаланылады. Олардың біріншісі – бағдарлама жұмысы орындалып біткеннен кейін, микроконтроллерді ажырату. Микроконтроллерді осылай оның нақтылы бір жұмысты орындау үшін ғана, ал одан кейін оның кажет болмайтын жағдайында пайдаланады.

Sleep командасының пайдаланылу қызметінің екіншісі – микроконтроллердің нақтылы бір оқиғаны күту режимін жүзеге асыру.

Микроконтроллерді күту режимінен шығара алатын үш түрлі оқиға бар.

(14)

14

Олардың біріншісі – микроконтроллердің тазарту кірісіне іске қосу сигналын беру арқылы оның жұмысы қайта басталады да, ол бағдарламаны бірінші адрестен бастап орындай бастайды.

Екінші оқиға – бақылау таймерінен микроконтроллерді «ояту»

сигналының түсуі.

Үшінші «ояту» тәсіліне сыртқы оқиғаға байланысты туған үзіліс жатады. Кез келген «ояту» тәсілінде sleep командасын пайдалану күту циклін ұйымдастыру қажеттігінен құтылуға және жүйенің энергия тұтылымын кемітуге мүмкіндік береді. Бұл кезде микроконтроллердің күту режимінен шығуы, кем дегенде, 1024 такт алатынын ескеру керек. Сондықтан сыртқы оқиғаға байланысты әрекет тез болу керек жағдайларда sleep командасын пайдалануға болмайды.

2.4 PIC микроконтроллерлерін бағдарлау ерекшеліктері

PIC микроконтроллерлерінің архитектурасын жүйе жұмысын бағдарлау және реттеу тұрғысынан талдау келесі қорытындылар жасауға мүмкіндік береді:

 командалардың RISC-жүйесі олардың орындалу жылдамдығының жоғары болуын қамтамасыз етеді, бірақ күрделірек алгоритмдерді бағдарлау кезінде қиындық тудырып, жұмыс өнімділігін төмендетеді. Командалар жүйесіндегі командалардың бір адресті болуына байланысты, кез келген регистрге константа енгізуге екі команда қажет болады. Алдымен константа жұмыс регистріне (w) енгізіледі де, сосын оның құрамы дерек жадысының қажетті ұяшығына жіберіледі (movlw k және movwf f);

 осы сияқты, барлық арифметикалық-логикалық операцияларды жұмыс регистрін (w) қатыстыру арқылы орындауға тура келеді;

 жоғары дәрежелі тез әрекеттілікті қамтамасыз ету, негізінде, командалар конвейерінің қолданылуына байланысты жүзеге асырылады.

Команда көрсеткішін өзгертуші тарамдау командалары (шартсыз ауыстырылым, есептелімді ауыстырылым) ретінде кезектегі командалар пайдаланылмайды, сондықтан олар екі машина циклінде орындалады да, бағдарламаның орындалу қарқынын төмендетеді;

 үзіліс векторының біреу болуы және үзіліс сұраныстарын мәртебесі бойынша өңдеудің дамытылған тәртібінің болмауы күрделірек басқару мәселелерінің шешілуін қиындатады. Кез келген үзіліс көзінен сұраныс түскенде, өңдеу процедурасына ауысу жалғыз вектор арқылы орындалады.

Өңдеу процедурасында да сұраныс көзін белгі биттері бойынша анықтауға тура келеді, оның үстіне тарамдалу шарттары, жоғарыда айтылғандай, күрделі талданады да, нәтижесінде әрекет уақытын ұлғайтады. Үзіліс өңделгеннен кейін сұраныс биті бағдарламалы жолмен тазартылу керек;

 тереңдігі 8 сөз аппаратты стектің асып түсу белгісі жоқ, сондықтан ол үзіліс процедураларының енгізілу мөлшерін шектейді. Стектің асып түспеуін бағдарлаушының өзі бақылау керек;

(15)

15

 PIC16 микроконтроллерлерінің кезекті банкін анықтау үшін STATUS регистрінің сәйкесті биттері пайдаланылады;

 бағдарлама жадысы, мөлшері 2К сөз, парақтарға бөлінген. Қажетті адреске call және goto командалары арқылы шығу үшін кезекті парақ таңдау биттері PCLATH регистрінде дұрыс қойылған болу керек;

 орта деңгейлі PIC микроконтроллерлерінің мүмкіншіліктерінің шектелгендігі жоғарғы деңгейлі тілдерде бағдарлау мүмкіндігін қиындатады.

PIC микроконтроллерлерінің архитектурасының көрсетілген ерекшеліктеріне қарамай, бұндай аспаптар (әсіресе PIC16 микроконтроллерлері) жиі қолданады.

3 PIC микроконтроллерлерін бағдарлаудың қалыпты тәсілдері

Алда орта деңгейлі PIC микроконтроллерлерінің нақтылы түрін (PIC16F84A) қарапайым, бірақ нақтылы мәселелерді шешуге бағдарлау арқылы, микроконтроллерлерді бағдарлаудың қалыпты тәсілдерімен танысамыз, яғни күрделірек мәселелерді шешу бағдарламаларын құру барысында пайдаланылатын базалық бағдарламалы құрылымдарды көрсе- теміз.

Сәйкесті бағдарламалы құрылымдарды көрсету және оларды талдау барысында әртүрлі арнайы қызмет регистрлерімен (SFR, Special Function Registers) кездесеміз. Осы регистрлердің және олардың биттерінің қызметімен танысу олардың алда қарастырылатын бағдарламаларда пайдаланылу кезінде жүзеге асырылады.

Қойылған мәселелердің іс жүзінде жүзеге асырылуын тексеруге және олардың орындалғанына көз жеткізуге, қажетті аспап-құралдармен кең қамтылған және микроконтроллерлердің құрылымы мен жұмыс принциптерін оқуға да, микроконтроллерлер негізінде әртүрлі құрылғыларды жобалау мәселелерінің шешілу жолдарын қарастыруға арналған оқыту дәрістерін ұйымдастыруға да мүмкіндік беретін, OshonSoft фирмасының PIC Simulator IDEаталымдыбағдарламалы симуляторын пайдалануды ұсынамыз.

3.1 Импульстер тізбесін қалыптастыру

Қарастырылып отырылған микроконтроллер түрінің жұмыс бағдарламасының құрылу тәртібін суреттеу үшін және бағдарлау кезінде кең пайдаланылатын регистрлер мен олардың биттерінің қызметімен бастапқы таныстыру үшін жиілігі 5 kHz (меандр түріндегі) импульстер тізбесінің нақтылы ұзақтықты кідірістер қолдану арқылы қалыптастырылуын жүзеге асырушы бағдарламаны қарастырамыз.

; Meander 5.0 KHz

;============================

; Microcontroller PIC16F84A

; Clock Frequency 4.0 MHz

(16)

16

;============================

Sec equ 0Ch

;---

org 0

goto Start

;--- Start bsf STATUS,RP0

clrf TRISB movlw .1 movwf TRISA

bcf STATUS,RP0 clrf PORTB

clrf PORTA

;--- btfss PORTA,0 goto $-1

;============================

Pulse bsf PORTB,0 movlw .32

movwf Sec nop

nop

decfsz Sec,F goto $-1

;--- bcf PORTB,0 movlw .31

movwf Sec nop

decfsz Sec,F goto $-1

btfss PORTA,0 goto Start goto Pulse

;--- end

Бағдарламаның жоғарғы бөлігінде «бағдарлама басы» орналастырылған.

Онда жобаның (яғни, моделденуші құрылғының) аталымы, микроконтроллердің нақтылы түрі (біздің жағдайда, PIC16F84A) және микроконтроллерге қосылатын тактілік генератордың жиілігі көрсетіледі.

Бағдарламаның келесі бөлігінде бағдарламада пайдаланылатын жалпы қызмет регистрлеріне қолдануға ыңғайлы аталымдар қойылуы жүзеге асырылады (біздің жағдайда – 0Ch адресі бойынша орналастырылған

(17)

17

регистрге). Ұзақтығы 100 мкс кідірісті жүзеге асыруға арналған бұл регистр бірлік деңгей қалыптастыру барысында да, нөлдік деңгей қалыптастыру барысында да пайдаланылады.

Одан кейін бағдарламаның бірінші командасының орналастырылу адресін анықтаушы директива (org 0) мен бағдарламаның орындалу басына ауыстыру командасы (әдетте, goto Start) орналастырылған. Goto Start командасы бірден org 0 директивасынан кейін орналастырылғандықтан және осы команданың бағдарлама жадысындағы орны нөлдік адреспен анықталатындықтан, бағдарламаның орындалуы осы команданың өзінен басталады.

Микроконтроллер түрі, регистрлердің аталымдарының қойылуы, бағдарламаның орындала басталуына рұқсат берілуі, оның аяқталу белгісі директивалармен енгізіледі. Күрделірек бағдарламалар үшін «бағдарлама басы», әрине, біздің жағдайдағыдан үлкенірек болуы және ондағы аталымдары қойылған регистрлер саны мен директивалардың (оның ішінде басқа тұрлері де) саны көбірек болуы мүмкін.

Порт шықпаларының жұмысын «шығысқа» немесе «кіріске» қою TRISA және TRISB регистрлері арқылы жүзеге асырылады. Бұл регистрлер 1-банкте орналасқандықтан, банктердің ауыстырылуын жүзеге асыру керек (микроконтроллер жұмысының басында, яғни, бастапқы жағдайда, 0-банк қойылған).

1-банк (RP0) STATUS регистрінің 5-битін (RP0) бірге қою арқылы таңдалады, ал оның тазартылуында 0-банк таңдалады (3.1 кесте). STATUS регистрінде RP0 битімен қатар RP1 биті микроконтроллердің жаңартылған түрлеріндегі төрт банкке байланысуға мүмкіндік береді.

3.1 кесте – STATUS регистрі

Бит Аталымы Суреттемесі

7 IRP Дерек банкінің парағын таңдау (жанама сілтеу кезінде пайдаланылады): 0 – 0,1 банктері; 1 – 2,3 банктері

6-5 RP1, RP0 Дерек банкінің парағын таңдау (тура сілтеу кезінде пайдала- нылады): 00 – 0-банк; 01 – 1-банк; 10 – 2-банк; 11 – 3-банк 4 T0’

Бақылау таймерінің әрекеті: 0 – бақылау таймерінің қойылған уақытының біткенінде; 1 – қорек көзі қосылғаннан кейін, оған қоса clrwdt және sleep командаларымен

3 RD’ Тұтынылушы энергияның кемуі: 0 – sleep командасымен;

1 – қорек көзі қосылғаннан кейін және clrwdt командасымен 2 Z Нөлдік ту

1 DC Үшінші разрядтан ауысу туы 0 C Жетінші разрядтан ауысу туы

Сонымен, STATUS регистрінің 5-битін бірге қою керек (bsf STATUS,5 немесе bsf STATUS, RP0). RB1…RB7 шықпаларының жұмыс бағыты бізге қажет болмағандықтан, TRISB регистрінің барлық битін нөлге қоя саламыз,

(18)

18

яғни, бұл регистрді тазартамыз (бастапқы жағдайда, порттардың шықпалары

«кіріс» ретінде реттелген). RA0 шықпасы генератор жұмысын басқару кірісі ретінде (импульстер тізбесінің қалыптастырылу режимін қосу/ажырату) белгіленген, сондықтан бұл шықпа, TRISA регистрінің сәйкесті битін бірге қою арқылы (movlw .1 және movwf TRISA) «кіріс» ретінде істеуге қойылған.

Сонымен, RB0 шықпасы «шығыс» ретінде (оған индикатор немесе осциллограф қосылған), ал RA0 шықпасы «кіріс» ретінде істейді (оған құрылғының жұмыс режимін ауыстыру түймесі қосылған). Алдағы жұмыс 0- банкте жүргізілетіндіктен, 0-банкке қайтып келеміз (bcf STATUS, RP0).

Жоғарыда келтірілген операцияларды дайындық операциялары ретінде қарастыруға болады. Олар құрылғының шығыс сигналының бастапқы деңгейін және режим ауыстыру түймесін нөлдік жағдайға қоюмен аяқталады (clrf PORTB және clrf PORTA).

Бағдарламаның «жұмыс тәртібін» тиянақталық. Сигнал «меандр»

түрінде болғандықтан, сәйкесті деңгейлердің қалыптастырылу ұзақтығы бірдей болу керек. біздің бағдарламада ол – 100 мкс. Құрылғының жұмыс режимін ауыстыру түймесін (RA0) күту режимінен импульстер тізбесін қалыптастыру режиміне ауыстырғаннан кейн RB0 шықпасында 100 мкс ұзақтығында бірлік деңгей, сосын келесі 100 мкс ұзақтығында нөлдік деңгей қалыптастыру керек.

Период шегінде екідеңгейлі сигнал қалыптастырушы автотербелісті мультивибратордың жұмыс принципіне байланысты, бағдарламаның жұмыс нүктесі нақтылы уақыт шамасында бір циклде (бағдарламаның 1 деңгейін қалыптастыру бөлігінде), ал сосын – екінші циклде (бағдарламаның 0 деңгейін қалыптастыру бөлігінде) кідіре тұру керек. Сонымен, құрылғы импульстер тізбесін қалыптастыру режимінде тұрғанда, бағдарламаның толық циклі периодты түрде айналымда болу керек.

Кідірістің қосалқы бағдарламасы, қарапайым жағдайда, decfsz командасынан басталады да, ол алдында нақтылы сан (константа) енгізілген жалпы қызмет регистріне шығады. Регистрдегі сан мөлшері кідіріс ұзақтығын («айналым» санын) анықтайды.

Бағдарламаның бірлік деңгей қалыптастыру бөлігінде Sec регистріне .32 саны (константа) енгізілген. Бағдарламаның жұмыс нүктесі, оның кідіріс бөлігіне кіргенінен кейін одан кідіріс толықтай біткенше шықпайды. Бұл

«айналымның» мағынасын былай түсіндіруге болады. Decfsz командасының орындалуы мен декремент операциясында нөлдік нәтиже болмауында, ауысу decfsz командасының өзіне болады да, бұл процесс регистрдегі сан нөлге дейін кемігенше қайталана береді, нәтижесінде қажетті кідіріс қалыптасады.

Операцияның нөлдік нәтижесінде бағдарламаның жұмыс нүктесі кідіріс бөлігінен шығады.

Машина циклінің ұзақтығы арқылы кідіріс ұзақтығын дәл есептеуге болады. Алдымен Sec регистрінің бастапқы құрамын анықтап алу керек.

Біздің жағдайда Sec регистріне .32 саны (нүкте – ондық санау жүйесінің атрибуты) жазылады. Бұл операция W регистрі арқылы жүзеге асырылады

(19)

19

(movlw .32 және movwf Sec). Жоғарыда суреттелгендей, RB0 шықпасында нөлдік деңгей қалыптастыру үшін Sec регистріне келесі константа (.31 саны) жазылады.

Сонымен, В портының RB0 шықпасын басқаруға бәрі дайын. RB0 шықпасында бірлік деңгей қалыптастыру үшін биттік bsf командасын қолданамыз да, онда PORTB регистрінің бір қойылуы керек нөлдік битін көрсетеміз (bsf PORTB,0). RB0 шықпасында нөл қою бір қойылуындай істеледі, тек қана оған bcf командасы қолданылады (bcf PORTB,0).

Бірлік деңгей қалыптастырылуын қамтамасыз етуші константаның мәні неге .32 болу керектігін түсіндірелік. Қолданылатын кварц жиілігі – 4 МГц, демек, бір машина циклі – 1 мкс. Сонымен, RB0 шықпасында бір қойылған мезеттен оны нөлге ауыстырғанша 100 машина циклі өту керек. Егер Sec регистрінің құрамын декременттеу нәтижесі нөлге тең болмаса, онда бағдарламаның бір «айналымы» 3 машина циклінде орындалады: decfsz командасы бір машина циклінде, ал goto командасы – екі машина циклінде.

Сонымен, Sec регистрінің құрамының бірге кемітілуі 3 машина циклінде (3 мкс) орындалады. Sec регистрінің құрамының декременттелу нәтижесі нөлге тең болғанда, онда goto командасы орындалмайды да, бұл бағдарламадан шығу 2 машина циклінде жүзеге асырылады. Демек,.32 константасына 32х3-1=95 машина циклі (95мкс) сәйкес келеді. Оған Sec регистріне RB0 шықпасында бірлік деңгейдің уақытын қалыптастырушы константа қою командаларының (movlw .32 және movwf Sec) 2 машина циклін және RB0 шықпасында нөл қою командасының (bcf PORTB,0) 1 машина циклін қосамыз. Алынған 98 мкс уақытына қосымша енгізілген екі nop командасының 2 машина циклін қосамыз да, нәтижесінде дәл 100 мкс аламыз.

Sec регистрінің құрамын декременттеу нәтижесі нөлге тең болғаннан кейін бағдарламаның жұмыс нүктесі «айналымнан» шығады.

Осы сияқты қалыптастырылатын импульстер тізбесінің нөлдік деңгейінің ұзақтығын есептеп, бағдарламаның осы бөлігінде қойылған константа мәнінде (.31) бұндағы кідірістің де 100 мкс құратынына көз жеткізуге болады.

Кезекті импульстің нөлдік деңгейі қалыптастырылып біткеннен кейін құрылғының жұмыс режимін ауыстыру түймесі тексеріліп (btfss PORTA,0), оның жағдайына байланысты импульстер тізбесінің қалыптастырылуы жалғастырылады (goto Pulse) немесе құрылғы күту режиміне ауыстырылады (goto Start).

Симуляторды пайдаланып және құрылғыны жұмыс режимін ауыстыру түймесінің (RA0 шықпасының) жағдайын өзгерту арқылы құрылғыны күту режимінен жұмыс режиміне ауыстырып, импульстер тізбесінің қалыптастырылуын бақылауға (3.1 сурет) және оған қоса (өлшеу арқылы) оның параметрлерінің жоспарланған мәндерге сәйкес келетініне көз жеткізуге болады.

(20)

20 3.1 сурет 3.2 Сандар тізбесін қалыптастыру

Алдыңғы бағдарламада STATUS регистрі пайдаланылып, оның RP0 биті арқылы дерек банктерінің ауыстырылуы жүзеге асырылған болатын.

Арифметикалық операциялардың орындалуын жүзеге асыру бағдарламаларында осы регистрдің, тулар деп аталатын, өзге биттері де (алдыңғы тараудағы 3.1 кестені қараңыз) пайдаланылады. Бұл тулардың ахуалы операцияның орындалу нәтижесі туралы ақпарат береді, яғни нақтылы оқиғалардың туғанын куәләйді. Мысалы, Z туының қойылуы – нөлдік нәтижеге, ал C және DC туларының қойылуы оларға сәйкесті жетінші және үшінші разрядтардан тасымал шыққанына сәйкес келеді. Бұл деректер бағдарламадағы одан арғы әрекеттердің сәйкесті сценариін таңдауға мүмкіндік береді.

Арифметикалық операциялардың орындалуын суреттеуге ыңғайлы мәселе ретінде Фибоначчи1 сандарының бір байт шегіндегі (0..255) мәндері түріндегі деректер тізбесін қалыптастыру және оларды өсуі мен кемуі тәртібінде көрсету бағдарламасын қарастыралық.

Фибоначчи сандарының тізбесі {Fn} келесі сызықты рекуррентті қатынаспен беріледі:

F0 = 0; F1 = 1; Fn = Fn-1 + Fn-2 (n ≥ 2).

3.2.1 Деректерді тура сілтеу.

Төменде келтірілген бағдарламада деректерге шығу тура сілтеу тәсілімен жүзеге асырылатын арифметикалық операциялар (қосу және алу) арқылы деректер тізбесі қалыптастырылады.

1 Ортағасырлық математик Леонардо Пизанский (Фибоначчи ретінде белгілі) құрметіне аталған.

Ақпарат көздері

СӘЙКЕС КЕЛЕТІН ҚҰЖАТТАР

(r, s) мәндер жұбы Х хабарламаның цифрлік қолтаңбасы болып табылады. Қолтаңбаны алған соң k мәні жойылады. Қолтаңба дұрыс болып есептеледі, егер алынған

Студенттердің оқу түрінің ерекшеліктеріне бейімделуі уақыттың жетіспеушілік кезінде түрлі ақпараттарды бір мезгілде қабылдауы жəне өңдеу, жұмыстың едəуір

ҚР халықты әлеуметтік қамтамасыз ету және әлеуметтік қорғаудың нақты міндеттері мен тәртібін айқындайтын жұмыстың негізгі бағыттарын ҚР Еңбек

кестесінде кӛрсетілген, не бюджетте қор ӛте аз(2 дБ), әдетте мұндай қорды ВОСП тәжірибелі инженерлері жеткіліксіз санайды.Егер лазерлік

Реле электрическое направления тока Электрлік ток бағытталған реле Реле электрическое напряжения Электрлік кернеу релесі.

1) Уақыт бойынша жұмыс режімі – үздіксіз (1-ші қисық) және циклдық (2 қисық) қозғалыстар. Механизм жұмысының үздіксіз режімінде оның жұмысының,

Синхронды машинаның қоздырушы тогының ӛзгеруі онда тек қана реактивті токтарды тудырады немесе реактивті токтың және реактивті қуаттың ӛзгеруіне

Қадам қысқартылған да болуы мүмкін, онда ол полюстік бӛліктен қысқа болады (y&lt; τ), ол 3.2 суретте кӛрсетілген. Айнымалы ток машиналарында индукцияның