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

Страницы работы

Содержание работы

4. АЛГОРИТМЫ РАБОТЫ И ТЕКСТЫ ПРОГРАММ.

                                             Основная программа.

начало

 
                                

 


РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ

 
             

 


Рис.4.1. Блок-схема основной программы.

                                            Подпрограммы.

 


Рис.4.2. Блок-схема процедуры опроса датчиков.

 


Рис.4.3. Блок-схема процедуры обслуживания прерываний от т/с1.

 


Рис.4.4. Блок-схема процедуры перевода из двоичной системы в двоично-десятичную

 


Рис.4.5. Блок-схема п/п организации временных интервалов по 50 mс.

; основная программа

STACTOP :         EQU   60H  ;адрес вершины стека

IND(1¸7) :   EQU   50H¸56H ; ячейки ПД хранящие информацию         

; выводимую на индикаторы HG(1¸7)

TC1:                      EQU 45H  ; ячейка хранения младшего байта

; среднего значения оборотов

; в промежуточных вычислениях

TC2:                      EQU 46H  ; ячейка хранения ст.б. среднего значения         

; оборотов в промежуточных вычислениях

PROM:                   EQU  42H ; ячейка хранения

; промежуточных вычислений                                                      

nTAB_COD:         EQU 50H  ; адрес начала таблицы перекодировки 

; в семисегментный код

COUNT:                EQU 41H  ; счетчик 50 милисекундных циклов

ORG 0100H

MOV SP,#STACKTOP     ;указатель стека

SETB EA                           ;снятие блокировки прерываний

SETB ET0                          ;разрешение прерываний от т/с 0

CALL INIT                        ;п/п инициализация дисплея

MOV R1,#00H                   ;

MOV R2,#00H                   ;

MOV COUNT,#00H          ;счетчик 50 ms циклов

MOV PROM,#00H            ;

CALL TAIM                     ;п/п опроса датчиков каждые 20 сек

WAIT: JNB R2.1,WAIT                ;ожидание цикла опроса датчиков

MOV IND1,#39H              ;код буквы “с”

MOV R4,#01H                   ;номер первого датчика

MOV A,R1                         ;

SUBB A,#11H                    ;(A)ßA-16 , где 16-кол-во датчиков

MOV R0,A                         ;начальный адрес записи последнего

;пакета данных

MOV R5,R0                        ;

MET: MOV DPTR,nTAB_COD  ;адрес начала таблицы перекодировки

;в сс-код

MOV A,R4                         ;(A)ßномер датчика

CALL BIN_BCD                ;

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

MOVC A,@A+DPTR         ;

MOV IND2,A                      ;

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

MOVC A,@A+DPTR         ;

MOV IND3,A                      ;

MOV IND4,#00H                ; сс-код гашения IND4

MOV A,@R0                      ;

CALL BIN_BCD                ;

CALL OBMEN                   ;п/п заполнения ячеек IND5,6,7

CALL DISPL                      ;п/п вывода на дисплей

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

INC R4                                ;номер следующего датчика

INC R0                                ;адрес хранения данных этого датчика

CJNE R4,#11H,ME            ;переход если датчик не последний

MOV R4,#11                      ;R4ß кол-во датчиков

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

MOV TC2,#00H                   ;суммарного расхода

MOV R0,R5                         ;

MOV DPTR,nTAB_COD    ;

MET2: MOV A,@R0                       ;

ADD A,TC1                         ;

MOV TC1,A                        ;

CLR A                                  ;

ADDC A,TC2                      ;

INR R0                                 ;

DJNZ R4,MET2                  ;

MOV R4,#04H                    ;

MOV IND1,#39H                ;код “с”

MOV IND2,#73H                ;код “р”

MOV IND3,#00H                ;код гашения

MOV IND4,#3FH                ;код нуля

MET3: CLR C                                  ;определение

ADD A,TC2                         ;общего

RRC A                                 ;расхода

MOV TC2,A                        ;т.е.

MOV A,TC1                        ;деление

RRC A                                 ;содержимого

MOV TC1,A                        ;ячеек ТС1,ТС2

DJNZ R4,MET3                  ;на 16

MOV A,ТС1                        ;(А)ß результат деления

CALL BIN_BCD                 ;вывод

CALL OBMEN                    ;общего расхода

CALL DISPL                       ;на дисплей

CALL DEL3                         ;

CLR R2.1                              ;запрет индикации до оканчания

;опроса текущего цикла

JMP WAIT                           ;переход для  индикации последних 

;данных от датчиков


;п/п задержки на 20ms

ORG 0180H

          DEL20: MOV R1,#2A             ;

LOOP2: MOV R2,#EC             ;

LOOP1: DJNZ R2,LOOP1       ;

DJNZ R1,LOOP2       ;

NOP                            ;

NOP                            ;

RET                            ;

;п/п отсчета временных промежутков по 50ms

;входные параметры:COUNT -  счетчик 50 милисекундных циклов

                       ORG 0190H

          TAIM : MOV TMOD,#20H    ;выбор т/с 0 на режим 2

MOV TH0,#3CH        ;загрузка

MOV TL0,#AFH        ;таймера

SETB TR0                  ;запуск т/с 0

RET                             ;

;п/п обслуживания прерывания от т/с 1

ORG 001BH

                  T1_PR: INC COUNT                   ;счетчик времени

Похожие материалы

Информация о работе