Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Прог ЦТ лаб_каз_2012_последн вариант.doc
Скачиваний:
18
Добавлен:
01.05.2015
Размер:
4.19 Mб
Скачать

11.4 Бақылау сұрақтары

  1. Санақ жүйесінің негізі деген не?Олар қандай болады?

  2. 255-тен жоғары сан МБ жадысында қалай орналасады?

  3. Санды ондық санақ жүйесінен оналтылық санақ жүйесіне және кері қалай ауыстырады?

  4. Толу битін қай кезде пайда болады?

  5. Толу битінің қосындының үлкен байтына қандай қатынасы бар?

  6. Екібаттық сандарды қосқанда қанша регистр қажет?

  7. F+1жәнеFF+1 санарын қосқанда қандай нәтиже болады?

  8. Бөлшек сандарды қосуға бола ма?

А қосымшасы 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

Операция: 1f<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)+1TOS

kPC<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

SUBWFf-тен 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