
- •Сандық техниканы және басқару микробақылауыштарын программалау
- •5В070200-Автоматтандыру және басқару мамандығының студенттері
- •Мазмұны
- •Кіріспе
- •1 Зертханалық жұмыс. Байттық және биттік командалар. Логика
- •1.1 Зертханалық жұмыс тапсырмасы
- •1.2 Жұмысты орындау тәртібі
- •1.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •1.4 Бақылау сұрақтары
- •2 Зертханалық жұмыс. Маскілеу. Массив қосындысын алу
- •2.1 Зертханалық жұмыс тапсырмасы
- •2.1 Сурет– Массивті суммалау және орташаны табу блок-сұлбасы
- •2.2 Жұмысты орындау тәртібі
- •2.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •2.4 Бақылау сұрақтары
- •3 Зертханалық жұмыс. Бояу камерасын автоматтандыру. Ішкі программалар
- •3.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •3.1 Сурет–Құрылғылардыжалғау сұлбасы
- •3.2 Сурет–Бояу камерасының уақыттық диаграммасы
- •3.2 Жұмысты орындау тәртібі
- •3.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •3.3 Сурет– Блок-сұлба
- •3.4 Бақылау сұрақтары
- •4 Зертханалық жұмыс. Көбейту және бөлу
- •4.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •4.2 Жұмысты орындау тәртібі
- •5 Зертханалық жұмыс. Газ шығынын реттеу
- •5.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •5.2 Жұмысты орындау тәртібі
- •5.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •5.4 Бақылау сұрақтары
- •6.3 Жұмысты орындау тәртібі
- •6.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •6.4 Бақылау сұрақтары
- •7 Зертханалық жұмыс. Буып-түю жұмысын автоматтандыру. Дыбыс түзу
- •7.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •7.2 Жұмысты орындау тәртібі
- •7. 3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •7.2 Сурет– Буып-түйгіш жұмысының уақыттық диаграммасы
- •7.4 Бақылау сұрақтары
- •8 Зертханалық жұмыс. Сандарды 2-санақ жүйесінен 2_10 санақ жүйесіне ауыстыру
- •8.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •8.2 Жұмысты орындау тәртібі
- •8.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •8.2 Сурет– Блок-сұлба
- •8.3 Сурет – Жеті сегментті индикатор
- •8.4 Бақылау сұрақтары
- •9 Зертханалық жұмыс. Таймер tmr1
- •9.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •9.2 Жұмысты орындау тәртібі
- •9.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •9.4 Бақылау сұрақтары
- •10 Зертханалық жұмыс. Үзулер
- •10.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •10.3 Жұмысты орындау тәртібі
- •10.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •10.4 Бақылау сұрақтары
- •11 Зертханалық жұмыс. Екі байттық сандарды қосу
- •11.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •11.3 Жұмысты орындау тәртібі
- •11.1 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •11.4 Бақылау сұрақтары
- •А қосымшасы Status регистрі
- •Б қосымшасы pic* мб нұсқауларының сипаттамасы
- •В қосымшасы Модуль tmr1 таймері
- •Г қосымшасы pic16877 микропроцессорының жады картасы
- •Д қосымшасы умк-7 сипаттамасы
- •Әдебиеттер тізімі
- •5В070200- Автоматтандыру және басқару мамандығының студенттері үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқау
- •050013, Алматы, Байтұрсынұлы көшесі, 126
- •Сандық техниканы және микробақылауыштарды программалау
- •5В070200- Автоматтандыру және басқару мамандығының студенттері үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқау
11.4 Бақылау сұрақтары
Санақ жүйесінің негізі деген не?Олар қандай болады?
255-тен жоғары сан МБ жадысында қалай орналасады?
Санды ондық санақ жүйесінен оналтылық санақ жүйесіне және кері қалай ауыстырады?
Толу битін қай кезде пайда болады?
Толу битінің қосындының үлкен байтына қандай қатынасы бар?
Екібаттық сандарды қосқанда қанша регистр қажет?
F+1жәнеFF+1 санарын қосқанда қандай нәтиже болады?
Бөлшек сандарды қосуға бола ма?
А қосымшасы Status регистрі
А.1 кестесінде status регистрі биттерінің аты және олардың орналасуы көрсетілген. Олар арифметикалық және логикалық операцияларды басқаруда, банктерді таңдауда және басқа мақсаттарда қоданылады.
А.1 кесте – Status регистрінің биттері
Нөмірлер |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Аттар |
IRP |
RP1 |
RP0 |
-TO |
-PD |
Z |
DC |
C |
А.1 кестесінде келесі атаулар қабылданған:
IRPжанама адресация кезінде банкті таңдау биті(IRP=1 - банк 2немесебанк 3 таңдалады,IRP=0 - банк 0немесебанк1 таңдалады);
RP1,RP0тура адресация кезінде банкті таңдау биттері.Банк таңдау кезіндегі биттердің мәндері А.2 кестесінде көрсетілген;
TOбақылаушы таймердің толу флагы;
PDқорек көзінің қосылу флагы;
Z нөлдік нәтиже флагы. Арифметикалық немесе логикалық операциялар нәтижесі нөлге тең болса оған “1” жазылады.
DC ондық ауысу немесе қарызға алу флагы. Ондық-екілік жүйеде қосу және алу командалары үшін егер кіші жартыбайттан ауысу болса “1” жазылады. Қарызға алу инверсиялы мән;
Cауысу неме қарызға алу флагы.Қосу және айырмасын алу командалары үшін егер үлкен биттен ауысу болса “1” жазылады.Қарызға алу инверсиялы мән;
А.2 кесте– RP1 және RP0 биттерімен банк нөмірін таңдау
RP1 |
RP0 |
Банк нөмірі |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
2 |
1 |
1 |
3 |
Регистрдің әрбір битімен аты бойынша немесе нөмірі бойынша қатынасуға болады.BTFSCSTATUS,Zкомандасы BTFSCSTATUS, 2 командасына пара-пар.
Status регистрін тазартқаннан кейінгі оның биттерінің мәндері А.3 кестесінде көрсетілген.
А.3 кесте – CLRF STATUS командасынан кейінгі status регистрінің мәні.
IRP |
RP1 |
RP0 |
-TO |
-PD |
Z |
DC |
C |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
Б қосымшасы pic* мб нұсқауларының сипаттамасы
Нұсқауларда константаkсимволымен берілген. Нұсқаулар сипаттамасында оның орындалуы кезінде өзгеретін флагтар көрсетілген.Нұсқауларда dпараметрі(dest) нәтиже қайда жазылатынын көрсетеді. Егер d=0 болса нәтиже W регистрінде сақталады. Егер d=1 болса, нәтиже f (file-сөзінен) регистрінде сақталады.Программалардыdпараметрінде‘0’орнына ‘W’ жазуға,ал ‘1’орнына ‘f’ жазуға болады.
Программалардырегистр адресінің орнына оның символдвқ атын жазған ыңғайлы. Мысалы, егер h’21’ адресіті регистр аты R1 болса, онда ADDWF f, d нұсқауын программада екі әдіспен жазуға болады: ADDWF h’21’ , W немесе ADDWF R1, W.
ORGh’xx’ – бұл ассемблера көрсеткіші,осы өрнектен кейінгі код ЭППЗУ-дың h’xx’ адресінен басталатынын көрсетеді.
ADDLW - W мен тұрақтыны қосу
Синтаксис: [label] ADDLW k
Оперантар: 0 £ k £ 255
Операция: (W) + k (W)
Өзгеретін флагтар: С, DC, Z
ADDWF - W және f –ты қосу
Синтаксис: [label] ADDWF f,d
Оперантар: 0£f£127
Операция: (W) + (f) -»(dest)
Өзгеретін флагтар: C, DC, Z
ANDLW - тұрақты мен W арасындағы бит бойынша (побитная) 'ЖӘНЕ' операцисы
Синтаксис: [labef] ANDLW k
Операндтар: 0£k£255
Операция: (W) .AND. k (W)
Өзгеретін флагтар: Z
ANDWF - W және f арасындағы бит бойынша 'ЖӘНЕ'
Синтаксис: [label] ANDWF f,d
Операндтар: 0 £ f £ 127
Операция: (W) .AND. (f) (dest)
Өзгеретін флагтар: Z
BCF - f регистріндегі b битін тазарту
Синтаксис: [label] BCF f,b
Операндтар: 0£f£127; 0£b<£
Операция: 0 (f<b>)
Өзгеретінжолақша: Жоқ
BSF - f регистрінде b битін орнату
Синтаксис: [label] BSF f,b
Операндтар: 0£f£127; 0£b£7
Операция: 1f<b>
Өзгеретін флагтар: Жоқ
BTFSC - f регистріндегі b битін тексеру, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] BTFSC f,b
Операндтар: 0£f£127; 0£b£7
Операция: егер (f<b>) = 0 болса келесі командадан өтіп кету
Өзгеретін флагтар: Жоқ
Сипаттамасы: Егер f регистріндегі b биті '1'-ге тең болса, онда келесі нұсқау орындалады. Егер f регистріндегі b биті '0'-ге тең болса, онда келесі нұсқау орындалмайды.
BTFSS - f регистріндегі b битін тексеру, егер (f<b>) = 1 болса келесі командадан өтіп кету
Синтаксис: [label] BTFSS f,b
Операндтар: 0£f£ 127: 0£b£7
Операция: егер b биті '0'-ге тең болса келесі нұсқау орындалады, ал '1'-ге тең болса, онда келесі нұсқау орындалмайды.
CALL ішкі программаны шақыру
Синтаксис: [label] CALL
Операндтар: 0 £ k £ 2047
Операция: (PC)+1TOS
kPC<10:0>,
(PCLATH<4:3>) PC<12:11>
Өзгеретін флагтар: Жоқ
Сипаттамасы: Ішкі программаны шақыру. Келесі команда адресі (РС+1) стектің ең жоғары жағына орналасады. Адрестің онбір биті команда кодынан команда санығышына (счетчигіне) РС<10:0> қондырылады. Екі үлкен биті PCLATH регистрінің комада санығышына РС<12:11> қондырылады. CALL командасы екі цикл орындалады.
CLRF - f-ті тазарту
Синтаксис: [label] CLRF
Операндтар: 0 £f £ 127
Операция: 00h à (f); 1 àZ
Өзгеретін флагтар: Z
Сипаттамасы:f регистрін тазарту және Z=1 флагын орнату.
CLRW - W регистрін тазарту
Синтаксис: [label] CLRW
Операндтар: Жоқ
Операция: 00h à (W), 1 à Z
Өзгеретін флагтар: Z
Сипаттамасы: W регистрін тазарту және Z=1 флагын орнату.
CLRWDT – WDT регистрін тазарту
Синтаксис: [label] CLRWDT
Операндтар: Жоқ
Операция: 00h à WDT,
00h à алдыңғы бөлгіш WDT,
1à -TO, 1 àPD
Өзгеретін флагтар: -TO, -PD
Сипаттамасы: CLRWDT командасы WDT- ны және алдыңғы бөлгішті де WDT-ға қосылып тұрса тазартады. Status регистрінде ТО және PD биттерін орнатады.
COMF - f инверсиясын алу.
Синтаксис: [label] COMF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (-f) à (dest)
Өзгеретін флагтар: Z
Сипаттамасы: f регистрінің барлық биттерінің инверсиясын алу.
DECF - f-ті 1-ге кеміту
Синтаксис: [label] DECF f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) - 1 -> (dest)
Өзгеретін флагтар: Z
DECFSZ - f-ті 1-ге кемітіп, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] DECFSZ f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) -1 à (dest);
Өзгеретін флагтар: Жоқ
Сипаттамасы: f регистрін декременттеу. Егер оның нәтижесі '0'-ге тең болмаса келесі жол орындалады, ал 0-ге тең болса келесі жол орындалмайды.
GOTO – шартсыз өту операциясы
Синтаксис: [label] GOTO 0 £ k £ 2047
Операндтар:
Операция: Белгіге көшу
Өзгеретін флагтар: Жоқ
INCF - f –регистрін 1-ге өсіру
Синтаксис: [ label] INCF f,d
Операндтар: 0£f£127 dÎ[0,1]
Операция: (f) + 1 à (dest)
Өзгеретін флагтар: Z
INCFSZ - f-ті 1-ге өсіріп, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] DECFSZ f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) -1 à (dest);
Өзгеретін флагтар: Жоқ
Сипаттамасы: Егер оның нәтижесі '0'-ге тең болмаса келесі жол орындалады, ал 0-ге тең болса келесі жол орындалмайды.
IORLW - тұрақтыжәне W арасындағы бит бойынша 'НЕМЕСЕ'
Синтаксис: [label] IORLW k
Операндтар: 0 £ k £ 255
Операция (W).OR. kà (W)
Өзгеретін флагтар: Z
IORWF - W және f арасындағы бит бойынша 'НЕМЕСЕ'
Синтаксис: [label] IORWF f.d
Операндтар: 0 £ f £ 127 dÎ [0,1]
Операция: (W).OR. (f)->(dest)
Өзгеретін флагтар: Z
MOVF - f мәнін жіберу
Синтаксис: [label] MOVF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f) -> (dest)
Өзгеретін флагтар: Z
Сипаттамасы: f регистрінің мәні адресат регистріне ауысады. Егер d=0 болса, мәні W регистрінде сақталады. . Егер d=1 болса, мәні f регистрінде сақталады. d=1 мәні f регистрін 0-ге тексеру үшін қолданылады.
MOVLW - тұрақтыны W-ға жіберу
Синтаксис: [label] MOVLW k
Операндтар: 0 £ k £ 255
Операция: kà(W)
Өзгеретін флагтар: Жоқ
Сипаттамасы: Қолданылмайтын биттерге ассемблер '0' орнатады.
MOVWF - W -ны f-ке жіберу
Синтаксис: [label] MOVWF f
Операндтар: 0£f£127
Операция: (W) à (f)
Өзгеретін флагтар: Жоқ
NOP - операция жоқ
RETFIE - ішкі программадан үзуге рұқсатпен қайту
Синтаксис: [ label] RETFIE
Операндтар: Жоқ
Операция: TOS à PC, 1à GIE
Өзгеретін флагтар: Жоқ
Сипаттамасы: үзуді өңдейтін ішкі программадан қайту. TOS стегінің басы PC команда санағышқа қондырылады. GIE(INTCON<7>) толық үзуге рұқсат беру флагы '1'-ге орнатылады.
RETLW -тұрақтыны W регистрға орната ішкі программадан қайту
Синтаксис: [label] RETLW k
Операндтар: 0 £ k £ 255
Операция k à (W), TOS à PC
Өзгеретін флагтар: Жоқ
Сипаттамасы: W регистрына 8-разрядты тұрақты қондырылады. TOS стегінің басы PC команда санағышқа қондырылады.
RETURN -ішкі программадан қайту
Синтаксис: [label] RETURN
Операндтар: Жоқ
Операция: TOS à PC
Өзгеретін флагтар: Жоқ
Сипаттамасы: Ішкі программадан қайту. TOS стегінің басы PC команда санағышқа қондырылады.
RLF - f регистрін алмасу арқылы циклдық солға жылжыту
Синтаксис: [label] RLF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: Сипаттамасын қара
Өзгеретін флагтар: С
Сипаттамасы: f регистрінің ішін status регистрінің С биті арқылы циклдық солға жылжыту орындалады.
RRF - f регистрін алмасу арқылы циклдық оңға жылжыту
Синтаксис: [label] RRF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: Сипаттамасын қара
Өзгеретін флагтар: С
Сипаттамасы: f регистрінің ішін status регистрінің С биті арқылы циклдық оңға жылжыту орындалады.
SLEEP- SLEEPрежиміне өту
Синтаксис: [label] SLEEP
Операндтар: Жоқ
Операция; 00h à WDT, 00h à алдыңғы бөлгіш WDT 1 à -ТО
0 à PD
Өзгеретін флагтар: -ТО, -PD
Сипаттамасы: PD - қорек көзі қосылу флагын '0'-ге орнату. ТО – WDT толу флагын '1'-ге орнату. WDT таймерін және оның алдыңғы бөлгішін тазарту. Микробақылауышты SLEEP режиміне ауыстырып, такттік генераторды өшіру.
SUBLW - тұрақтыдан W мәнін шегеру
Синтаксис: [label] SUBLW k
Операндтар: 0 £ k £ 255
Операция: k - W à W
Измен, флаги: C, DC, Z
SUBWF – f-тен W мәнін шегеру
Синтаксис; [label] SUBWF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f) –(W) à (dest)
Өзгеретін флатар: C, DC, Z
SWAPF - f регистріндегі жартыбайттарды алмастыру
Синтаксис: [label] SWAPF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f<3:0>) à (dest<7:4>)
Өзгеретін флагтар: Жоқ
XORLW - W және тұрақты арасындағы бит бойынша 'НЕМЕСЕ-ні жоққа шығару '
Синтаксис: [ label] XORLW k
Операндтар: 0£k£255
Операция: (W) .XOR. k à (W)
Өзгеретін флагтар: Z
XORWF - W және f арасындағы бит бойынша 'ЕРЕКШЕ НЕМЕСЕ'
Синтаксис: [label] XORWF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (W) .XOR. (f) à (dest)
Өзгеретін флагтар: Z