Алгоритмы работы и тексты программ. Блок-схема процедуры опроса датчиков, страница 2

MOV A,#FFH                 ;

SUBB A,COUNT            ;

JZ M                                 ;переход,если ноль

CJNE PROM,#01H,EX   ;проверка истекания

CJNE COUNT,#91H,EX ;20 секунд

CALL OPROS                 ;п/п опроса датчиков

CALL INTERF                ;п/п пересылки данных во ВУ

MOV COUNT,#00H       ;обнуление счетчика времени

MOV R2,#01H                ;разрешение индикации

EX: RETI                                ;

M: INC PROM                      ;

JMP EX                           ;

;п/п задержки на 3 сек

ORG 01A0H

                    DEL3: MOV R6,#03H         ;

MOV R5,#50H         ;

M1: CALL DEL20           ;

DJNZ R5,M1            ;

DJNZ R6,DEL3        ;

RET                           ;

;п/п инициализация PKDC

ORG 01B0H

                     INIT: CLR A                        ;код УС0

CLR P2.1                    ;выбор PKDC 

SETB P2.2                  ;активизация  РУС PKDC

MOV Р0,A                 ;вывод УС0 в РУС

MOV A,#34H            ;код УС1

MOV Р0,A                 ;вывод УС1 в РУС

SETB P2.1                 ;отключение РУС

RET                            ;

;п/п индикации

;входные параметры:IND1¸IND7 сс-код символов,

;выводимых надисплей

ORG 01C0H

                   DISPL: CLR P2.1                    ;выбор PKDC

SETB P2.2                   ;активизация РУС

MOV A,#1001 0000 B;код УС4

MOV P0,A                   ;

;запись данных в память дисплея

CLR P1.2                     ;

MET: MOV A,IND1            ;Aß IND1

MOV P0,A                   ;

INC A                           ;

CJNE A,#57H              ;переход если индикатор не последний

RET                              ;

;п/п заполнения ячеек IND4,IND5,IND6 информацией, выводимой

;на дисплей

;входные параметры:R6,R7,B-сотни, десятки, единицы, т.е.

;температура, выводимая на дисплей в двоично-десятичном коде

;выходные параметры: IND4,IND5,IND6- сотни, десятки, единицы

ORG 01D0H

               OBMEN: MOV A,R6                    ;(A)ßсотни

MOVC A,@A+DPTR   ;

MOV IND5,A                ;IND5ßсс-код числа сотен

MOV A,R7                    ;(R7)ßдесятки

MOVC A,@A+DPTR   ;

MOV IND6,A                 ;IND6ßсс-код числа десятков

MOV A,B                      ;(А)ßединицы

MOVC A,@A+DPTR   ;

MOV IND7,A                ;IND7ßсс-код числа единиц

RET                               ;

;п/п перекодировки двоичного числа в двоично-десятичный

;входные параметры: (А)-двоичный код

;выходные параметры: (R6),(R7),(B)- сотни, десятки, единицы

ORG 01E0H

             BIN_BCD:MOV B,#64H             ;

DIV AB                      ;делим на 100

MOV R6,A                 ;(R6)ßсотни

MOV A,#0AH            ;

XCH A,B                    ;

DIV AB                      ;делим на 10

RET                            ;

;п/п передачи пакета данных внешней ЭВМ

;входные параметры:R1-начальный адрес записи

;последнего пакета данных

ORG 01F0H

             INTERF:   MOV R6,#11H                 ;счетчик переданных байтов

CLR ET1                          ;запрет прерываний от т/с1

SETB SMOD                   ;удвоенная скорость передачи

MOV SCON,#42H           ;установка режима УАПП

MOV TMOD,#20H          ;т/с1 в режиме2

MOV TH0,#250               ;

SETB TR1                        ;запуск т/с1

CLR P1.2                          ;DTR=0,мы готовы к передаче

JNB P1.3,MET1                ;переход на MET1 если DSR=0

SETB P1.2                         ;данные не приняли

EXIT:  CLR TR1                           ;останов т/с1

EXIT:  RET                                    ;возврат из п/п

MET1:  MOV A,R1                        ;

SUBB A,#11H                   ;

MOV A,@R1                    ;(А)ßпересылаемый байт

MET2:  MOV SBUF,A                   ;

SPOUT:  JNB TI,SPOUT                 ;ожидание передачи байта

CLR TI                               ;гашение флага пре-ния передатчика         

JNB P1.3,MET2                ;если DSR=0,то повтор передачи

SETB P1.2                         ;иначе данные передали

INC R1                               ;адрес следующего байта

DJNZ R2,MET1                ;если байт не последний, то МЕТ1

JMP EXIT                          ;передача завершена, выход

;таблица перекодировки в семисегментный код

ORG 0050H

                TAB_C: DB  3FH---------0

DB  06H---------1

DB  5BH--------2

DB  4FH---------3

DB  66H---------4

DB  6DH--------5

DB  7DH--------6

DB  07H---------7

DB  7FH---------8

DB  6FH---------9

DB  39H---------C

DB  73H---------P

DB  79H---------E

DB  60H---------знак минус

;п/п опросадатчиков расхода электроэнергии

ORG 0230H

                 OPROS: CJNE R1,3FH,M2        ;если не все ячейки, отведенные для

; хранения заполнены, то переход

MOV R1,#00H              ;обнуление счетчика ячеек хранения                       

;данных

M2: MOV R3,#0000 1101 B;код подключения первого датчика

M1: MOV A,R3                    ;

ANL P1,A                      ;подключения i-го датчика

MOV A,P0                     ;сбор информации с i-го датчика

SETB P1.2                     ;отключение i-го датчика

MOV @R1,A                 ;запоминание информации в ячейке ПД

INC R1                           ;адрес след. ячейки для запоминания

SWAP A                         ;код

INCA                              ;подключения

SWAP A                          ;следующего

CLR A.2                          ;датчика

MOV R3,A                      ;

CJNE R3,00H,M1           ;если датчик не последний, то M1

RET                                 ;