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

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

  1. Программа қай банкпен жұмыс істегені қалай анықталады?

  2. ADDWFR1,F нұсқауынені орындайды?

  3. ANDWFR1,Fнұсқауынені орындайды?

  4. XORWFR2,Wнұсқауынені орындайды?

  5. Битті орнату және тазарту нұсқауларын атаңыздар.

  6. R1,R2жәнеREZ регистрлері қай банкта орналасқан.

  7. 230+60 қосқанда МБ регистрінде қандай нәтиже болады?

  8. 130-135 азайтқанда МБ регистрінде қандай нәтиже болады?

  9. TRISCРСН қызметі және оның орналасуы.

  10. W аккумулятордың адресі қандай?

2 Зертханалық жұмыс. Маскілеу. Массив қосындысын алу

Жұмыс мақсаты: мәліметтерді маскілеуді үйрену, массивтің қосындысын табудың алгоритмін және программасын құру.

2.1 Зертханалық жұмыс тапсырмасы

Жанама адрестеу программасын ұйымдастыруды блок-сұлба және Л2 программасы мысалында, ал теориялық мәліметтерді 2.3 тармақтан оқыңыз. FSR регистрі көрсеткіш, ол жұмыс істейтін ұяшықтың адресін сақтайды, ал ұяшықпен жұмыс INDF физикалық емес регистрі арқылы орындалады.

Есеп.Массивке төрт айда тұтынған энергия мөлшері жазылған. Көрсетілген периодқа кеткен суммарлық энергия шығынын және орташа мәнін анықтау керек.

2.1-суретте массивті суммалау және орташаны табу блок-сұлбасы келтірілген. Блок-сұлбада массивке мәлімет жазылған деп қарастырылған.

2.1 Сурет– Массивті суммалау және орташаны табу блок-сұлбасы

Л2. Массивті суммалау программасының фрагменті.

Include<p16f877.inc> EL_MAS_0 EQU h'40' ; массивтің нөлінші элементі.

EL_MAS_1 EQU h'41' ; массивтің бірінші элементі.

EL_MAS_2 EQU h'42' ; массивтің екінші элементі.

EL_MAS_3 EQU h'43' ; массивтің үшінші элементі.

IND_EL EQU h'50' ; қосылатын массив элементінің индексін жазу үшін.

SHAG EQU h'22' ; мәліметтердің өзгеру қадамы.

KOL_EL EQU h'44' ; массив элементтерінің санын сақтауға арналған регистр.

SUM EQU h'51' ; қосындыны сақтауға арналған регистр.

SREDNEE EQU h'52' ; энергияның орташа шығынын сақтауға арналған регистр.

; МБ стандартты реттеу командалары көрсетілмеген.

; массивті 11-17-ге дейін 2 қадаммен мәліметтермен толтыру

;{

MOVLW D'2'

MOVWF SHAG

MOVLW D'11'

MOVWF EL_MAS_0

ADDWF SHAG, W; W= EL_MAS_0+SHAG

MOVWF EL_MAS_1

ADDWF SHAG, W; W= EL_MAS_1+SHAG

MOVWF EL_MAS_2

ADDWF SHAG, W; W= EL_MAS_2+SHAG

MOVWF EL_MAS_3

;}

CLRF SUM

CLRF IND_EL

MOVLW D'4' ; массив элементтерінің саны.

MOVWF KOL_EL

MOVLW EL_MAS_0 ; 0-ші элемент тұрған ұяшық адресін жанама

MOVWF FSR ; FSR адрестеу регистріне жазу.

NEXT_ELEM

MOVF SUM, W

ADDWF INDF, W ; W мен ағымдағы массив элементін қосу.

MOVWF SUM ; алынған қосындыны сақтаймыз.

; Келесі циклға дайындалу

INCF FSR, F ; массивтің келесі элементінің адресіне өту.

INCF IND_EL, F ; сол массив элементінің индексін аламыз.

MOVF KOL_EL, W

XORWF IND_EL, W ; элемент индексінің 4-ке теңдікке тексереміз

BTFSS STATUS, Z ; Z=1 екенін тексереміз

GOTO NEXT_ELEM ; тек Z =0 болса циклды қайталаймыз.

,; Орташа мәнді есептеуге дайындық

MOVF SUM, W ; Z=1 болғандағы қосындыны аламыз.

MOVWF SREDNEE ; SUM-ды SREDNEE регистріне көшіреміз.

; Орташа мәнді есептеуді ары қарай жалғастыру керек.

. . . .

END

Өздігіңізше 4-ке бөлуді SREDNEE регистрін RRF арқылы екі рет оңға жылжыту арқылы орындаңыз, 2.1 кестеге қараңыз. Жылжытар алдында Carryбитін тазартуды ұмытпаңыздар.

Циклды қайталау келесідей: алдымен Kol_El регистріне элементтер саны жазылады, содан кейін циклды әр қайталаған сайын элемент индексін 1-ге өсіріп отырамыз да XORWFIND_EL,W командасының нәтижесі 0 шыққанын тексереміз,мұнда W=Kol_El.Индексі 4 болатын регистрді өңдеп қойғандықтан IND_El=4 болғанда циклдан шығамыз.