Читайте также: |
|
Жанама адрестеу программасын ұйымдастыруды блок-сұлба және Л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-ге өсіріп отырамыз да XORWF IND_EL, W командасының нәтижесі 0 шыққанын тексереміз, мұнда W=Kol_El. Индексі 4 болатын регистрді өңдеп қойғандықтан IND_El=4 болғанда циклдан шығамыз.
Дата добавления: 2015-07-19; просмотров: 94 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат | | | Жұмысты орындау тәртібі |