CALL WWBT ;Ожидание конца передачи
CLR PSW.3 ;Выбор банка регистров 0
RET
Подпрограмма SENDD осуществляет снятие показаний датчиков (АЦП, битовый сигнал – с линий портов, а значение числа импульсов за 0,05 с – из переменной IMPCOUNT, в которой к этому времени уже могут быть обновлённые данные)
SENDD: SETB PSW.3 ;Выбор банка регистров 1
SETB P1.7 ;Настройка порта на ввод
MOV A,P1 ;Ввод показаний битового
;датчика. Для этого вводится байт, выделяется 7-й бит,
;сдвигается до позиции, на которой он будет находиться в байте
;данных при передаче
ANL A,#80h
RR A
MOV R2,A
MOV A,IMPCOUNT ;Ввод числа импульсов
ANL A,#3Fh ;Используются только 6 бит
ORL A,R2 ;Формирование байта данных
MOV R2,A
CLR P1.0 ;Запуск АЦП
WAITADC: JNB P1.1,WAITADC ;Ожидание готовности
;данных на выходе АЦП
MOV P0,#0FFh ;Настройка порта на ввод
MOV A,P0 ;Получение эквивалента
;аналогового сигнала
SETB P1.0 ;Остановка АЦП
ANL A,#0FEh ;Бит 7 должен быть равен нулю -
RR A ;это признак байта данных
MOV R3,A
;Теперь необходимо записать считанные с датчиков значения
;в таблицу данных для дальнейшего анализа и передать в линию
MOV A,NUMBER
RL A ;*2
ADD A,#TABLE ;A=#TABLE+2*NUMBER
MOV R0,A
MOV A,R2 ;A<-Первый байт данных
MOV @R0,A ;(#TABLE+2*NUMBER)<-Первый байт
MOV SCON,#80h ;УАПП – на вывод в режиме 2
JNB PSW.0,B1TRANS
SETB SCON.3 ;Бит паритета
B1TRANS: SETB P1.3 ;Разрешение работы передатчика
MOV SBUF,A ;Начало передачи
CALL WWBT ;Ожидание конца передачи
INC R0 ;Следующий адрес таблицы данных
MOV A,R3 ;A<-Второй байт
MOV @R0,A ;(#TABLE+2*NUMBER+1)<-Второй байт
JNB PSW.0,B2TRANS
SETB SCON.3 ;Бит паритета
B2TRANS: MOV SBUF,A ;Начало передачи
CALL ACTION ;Выдать воздействия
;на объект управления. Эта функция совмещается с ожиданием
;конца передачи байта, т.к. время работы подпрограммы ACTION
;около 80 мкс, а время, в течение которого все контроллеры в
;сети будут ожидать появления маркера составляет 140 мкс. За
;это время данный контроллер успеет выдать управляющие
;воздействия и передать в сеть маркер
CLR PSW.3 ;Выбор регистрового банка 0
RET
Подпрограмма ACTION анализирует таблицу данных и на основе анализа производит управление объектом. В случае, если вызов подпрограммы произошёл во время цикла инициализации, управление объектом не производится и вызывается подпрограмма ожидания окончания передачи байта.
ACTION: JNB INITC,BEGACT
CALL WWBT
RET
BEGACT: SETB PSW.3
MOV R3,QUANT ;Счётчик числа контроллеров
MOV MINBYTE1,#0FFh ;Инициализация переменных
MOV NOFMIN1,#0FFh
MOV MINBYTE2,#0FFh
MOV NOFMIN2,#0FFh
MOV ANDREZ,#40h
;Далее производится анализ таблицы данных и вычисление
;минимального значения частоты и аналогового сигнала, а также
;номера контроллера, которому принадлежат эти данные и при
;необходимости выдача воздействий.
ANALYZE: MOV A,R3 ;Количество контроллеров
DEC A ;Получили номер анализируемого
RL A ;*2
MOV R0,A ;R0<-(Счётчик-1)*2
MOV A,#TABLE
ADD A,R0 ;A<-(#TABLE+(Счётчик-1)*2)
MOV R0,A
MOV A,@R0 ;Первый байт
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.