
На сортировку / 5 / 77730 / Adaev4laba
.docxНекоммерческое акционерное общество
«АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ»
Кафедра «Инженерной кибернетики»
Лабораторная работа № 4
По дисциплине Программирование цифровой техники и микроконтроллеров управления
Специальность «5В070200 – Автоматизация и управление»
Выполнил Адаев А. . Группа АУТ-15-5
(Ф.И.О.)
Принял доцент Федоренко И.А.
(ученая степень, звание, Ф.И.О.)
__________ ________________ «_____»________________2017 г.
(оценка) (подпись)
Алматы 2017
Задание: Даны четыре двоичных числа. Найти сумму1 и количество1 среди чисел, меньших константы К, и сумму2 и количество2, больших константы К.
R1 = ‘00000001’; 1; R2 = ‘00000010’; 2; R3 = ‘00000100’; 4; R4 = ‘00001000’; 8; K = ‘000000011’; 3
РУЧНОЙ СЧЕТ: Меньше K1 R1 и R2 количество 2 сумма равна 3
Больше K R3 и R4 количесвто 2 сумма равна 12
Начало
MOVLW
B’00000011’
MOVWF
K
MOVLW
B’00000001’
MOVWF
R1
MOVLW
B’00000010’
MOVWF
R2
MOVLW
B’00000100’
MOVWF
R3
MOVLW
B’00001000’
MOVWF
R4
CLRF
SUM
CLRF
I
CLRF
IK
А
MOVF
R1,0
B
MOVWF
FSR
MOVF
K,0
SUBWF
INDF,0
C=0
K>INDF C=1
K<INDF
BTFSS
STATUS,C
MOVF
INDF,0
MOVF
INDF,0
ADDWF
S2,1
ADDWF
S1,1
INCF
K1,1
INCF
K2,1
INCF
FSR,1
INCF
I,1
MOVF
I,0
SUBWF
K,0
BTFSS
STATUS,Z Z=0
I≠IK Z=1
I=IK
Конец
Программа:
include<p16F877.inc>
R1 EQU h'20'
R2 EQU h'21'
R3 EQU h'22'
R4 EQU h'23'
K EQU h'24'
KOL1 EQU h'25'
KOL2 EQU h'26'
SUM1 EQU H'27'
SUM2 EQU H'28'
I EQU h'29'
IK EQU h'30'
org 0x00
nop
nop
nop
START
CLRF STATUS
BSF STATUS,RP0
CLRF TRISC
CLRF STATUS
CLRF PORTC
CLRF R1;
CLRF R2;
CLRF R3;
CLRF R4;
CLRF KOL1;
CLRF KOL2;
CLRF SUM1;
CLRF SUM2;
MOVLW B'00000001'
MOVWF R1
MOVLW B'00000010'
MOVWF R2
MOVLW B'00000100'
MOVWF R3
MOVLW B'00001000'
MOVWF R4
MOVLW B'00000011'
MOVWF K
CLRF I
CLRF IK
MOVLW B'00000100'
MOVWF IK
MOVLW R1
MOVWF FSR
LOOP
MOVF K,0
SUBWF INDF,0
BTFSS STATUS,C
GOTO M1;
BTFSS STATUS,Z
GOTO M2
GOTO L1
M1
INCF KOL1,1
MOVF INDF,0
ADDWF SUM1,1
GOTO L1
M2
INCF KOL2,1
MOVF INDF,0
ADDWF SUM2,1
L1
INCF FSR,1
INCF I,1
MOVF I,0
SUBWF IK,0
BTFSS STATUS,Z
GOTO LOOP
GOTO $
END
WatchWindow:
Задание: Даны четыре двоичных числа. Найти минимум в диапазоне чисел, больших К1 и меньших или равных К2, где К1<K2.
R1='01100110' 102; R2='11111111' 255; R3='10101110' 174; R4='10111001' 185
MIN='11111111' 255; K1='00000001' 1; K2='11111110' 254
Min= B’01100110’; 102
Начало
MOVLW
B’01100110’
MOVWF
R1
MOVLW
B’11111111’
MOVWF
R2
MOVLW
B’10101110’
MOVWF
R3
MOVLW
B’10111001’
MOVWF
R4
MOVLW
B’00000001’
MOVWF
K1
MOVLW
B’11111110’
MOVWF
K2
MOVLW
B’11111111’
MOVWF
MIN
CLRF
I
CLRF
IK
MOVLW
B’00000100’
MOVWF
IK
А
MOVF
R1,0
B
MOVWF
FSR
MOVF
INDF,1
SUBWF
K1,0
C=1
INDF>K1 C=0
INDF<K1
BTFSC
STATUS,C
MOVF
INDF,1
SUBWF
K2,0
BTFSS
STATUS,C C=1
INDF>K2 C=0
INDF<K1
MOVF
INDF,0
SUBWF
MIN
BTFSS
STATUS,C C=1
INDF<MIN C=0
INDF>MIN
INCF
FSR,1
MOVF
INDF,0
INCF
I,1
MOVWF
MIN
MOVF
I,0
SUBWF
K,0
BTFSS
STATUS,Z Z=0
I≠IK Z=1
I=IK
Конец
Программа:
include<p16f877.inc>
R1 EQU h'20'
R2 EQU h'21'
R3 EQU h'22'
R4 EQU h'23'
K1 EQU h'24'
K2 EQU h'25'
MIN EQU h'26'
I EQU h'27'
IK EQU h'28'
org 0x000
nop
nop
nop
START
CLRF STATUS
BSF STATUS, 5
CLRF TRISC
CLRF STATUS
CLRF PORTC
MOVLW B'11111111'
MOVWF MIN
MOVLW B'01100110'
MOVWF R1
MOVLW B'11111111'
MOVWF R2
MOVLW B'10101110'
MOVWF R3
MOVLW B'10111001'
MOVWF R4
MOVLW B'00000001'
MOVWF K1
MOVLW B'11111110'
MOVWF K2
CLRF I
CLRF IK
MOVLW B'00000100'
MOVWF IK
MOVLW R1
MOVWF FSR
LOOP
MOVF INDF,0
SUBWF K1,0
BTFSC STATUS,C
GOTO PEREXOD
MOVF INDF,0
SUBWF K2,0
BTFSS STATUS,C
GOTO PEREXOD
MOVF INDF,0
SUBWF MIN,0
BTFSS STATUS,C
GOTO PEREXOD
MOVF INDF,0
MOVWF MIN
PEREXOD
INCF FSR,1
INCF I,1
MOVF I,0
SUBWF IK,0
BTFSS STATUS,Z
GOTO LOOP
GOTO $
END
WatchWindow: