Автор: Пользователь скрыл имя, 14 Декабря 2014 в 19:54, дипломная работа
Цель моей выпускной квалификационной работы заключатся в исследовании методов поиска дефектов кабельных линий и разработке схемы электрической принципиальной прибора для определения расстояния до обрыва кабельной линии.
Объектом исследования выпускной квалификационной работы является аппаратура и методы поиска дефектов кабельных сетей.
Предметом исследования данной работы – нахождение повреждений в кабельных сетях используя различные методы и аппаратуру для этого.
SETB IE ; Разрешить все прерывания
ST1:
;-----------------------------
; Основное тело программы
;-----------------------------
LCALL COUNTER
LCALL CONVERT
LCALL IND
LJMP ST1
;-----------------------------
; Блок подпрограмм
;-----------------------------
;
;-----------------------------
; Подпрограмма
опроса регистра таймера-
;-----------------------------
COUNTER:
; mov R2, #00h ; обнуление регистра R0
; mov R3, #00h ; обнуление регистра R1
M1: MOV P3.5, #1 ; Записываем 1 в порт p3.5
MOV C, P3.5 ; Читаем состояние кнопки RESET
JC M2 ; Если контакты разомкнуты, перейти к M2
LCALL RESET
RET
RESET: ; передача по последовательному каналу
MOV A, TL0 ; данных и сброс
MOV SBUF, A ; по последовательному порту
RET
;SEND:
; JNB TI, SEND
; CLR TI
; NOP
; NOP
; MOV A, TL1
; MOV SBUF, A ; по последовательному порту
;SEN1:
; JNB TI, SEN1
; CLR TI
; MOV TL0, #00h
; MOV TH0, #00h
M2:
mov R2, TL0 ; запись значения TL0 в R2
mov R3, TH0 ; запись значения TH0 в R3
RET
;
;-----------------------------
; Подпрограмма
преобразования двухбайтовых
; из шестнадцатиричного в двоично-десятичный формат
; числа берутся из R2 и R3
;
CONVERT:
; MOV DPTR, #0FFFFh ; число в R3 и R2 и вызывающая
; MOV R2, DPL ; алгоритм преобразования этого
; MOV R3, DPH ; числа в двоично-десятичный
MOV R4, #00h ; начальная установка
MOV R5, #00h ; обнуление регистров
MOV R6, #00h
MOV R7, #00h
;
LCALL BN2BCD ; формат
RET
;
BN2BCD:
;
MOV DPTR, #10000
BN2_1:
LCALL R32MNDPT ; R3 R2 - 10000
JC BN2_2 ; переход на BN2_2, если CY=1
INC R6 ; R6=R6 + 1 - инкремент R6, если CY=0
SJMP BN2_1 ; переход на BN2_1
BN2_2:
LCALL R32PLDPT ; R3R2 + 10000
;
MOV DPTR, #1000
BN2_3:
LCALL R32MNDPT ; R3R2 - 1000
JC BN2_4 ; переход на BN2_4, если CY=1
INC R7 ; R7=R7 + 1 - инкремент R7, если CY=0
SJMP BN2_3 ; переход на BN2_3
BN2_4:
LCALL R32PLDPT ; R3R2 + 1000
;
MOV DPTR, #100
BN2_5:
LCALL R32MNDPT ; R3R2 - 100
JC BN2_6 ; ПЕР. НА BN2_6, ЕСЛИ CY=1
INC R5 ; R5=R5 + 1 - ЭТО ДЕЛАЕМ, ЕСЛИ CY=0
SJMP BN2_5 ; ПЕРЕХОД НА BN2_5
BN2_6:
LCALL R32PLDPT
;
MOV A, R7 ; ПЕРЕСЛАЛИ ИЗ R7 В A
SWAP A ; ОБМЕНЯЛИ МЕСТАМИ СТАРШИЙ И МЛАДШИЙ
;
ADD A, R5 ; ПРИБАВИЛИ К A R5
MOV R5, A ; ПЕРЕСЛАЛИ СУММУ В R5
MOV R7, #0 ; R7 = 0
;
MOV DPTR, #10
BN2_7:
LCALL R32MNDPT ; R3R2 - 10
JC BN2_8 ; ПЕР. НА BN2_8, ЕСЛИ CY=1
INC R7 ; R7=R7 + 1 - ЭТО ДЕЛАЕМ, ЕСЛИ CY=0
SJMP BN2_7 ; ПЕРЕХОД НА BN2_7
BN2_8:
LCALL R32PLDPT ; R3R2 + 10
;
MOV A, R2
MOV R4, A ; R2 ПЕРЕСЛАЛИ ЧЕРЕЗ АККУМУЛЯТОР В R4
;
MOV A, R7 ; ПЕРЕСЛАЛИ ИЗ R7 В A
SWAP A ; ОБМЕНЯЛИ МЕСТАМИ СТАРШИЙ И МЛАДШИЙ
;
ADD A, R4 ; ПРИБАВИЛИ К A R4
MOV R4, A ; ПЕРЕСЛАЛИ СУММУ В R4
RET ; ВОЗВРАТ ИЗ ПОДПРОГРАММЫ
;
; ПОДПРОГРАММЫ ДЛЯ BN2BCD
;
R32PLDPT:
MOV A, R2 ; R2 В АККУМУЛЯТОР
ADD A, DPL ; СКЛАДЫВАЕМ ЕГО С МЛ.БАЙТОМ DPTR
MOV R2, A ; ВОЗВРАЩАЕМ СУММУ В R2
MOV A, R3 ; R3 В АККУМУЛЯТОР
ADDC
A, DPH ;
СКЛАДЫВАЕМ ЕГО С БИТОМ
;
MOV R3, A ; ВОЗВРАЩАЕМ СУММУ В R3
RET
;
R32MNDPT:
CLR C ; ОЧИЩАЕМ CY
MOV A, R2 ; R2 В АККУМУЛЯТОР
SUBB A, DPL ; ВЫЧИТАЕМ ИЗ НЕГО МЛ.БАЙТ DPTR И СY
MOV R2, A ; ВОЗВРАЩАЕМ РАЗНОСТЬ В R2
MOV A, R3 ; R3 В АККУМУЛЯТОР
SUBB A, DPH ; ВЫЧМТАЕМ ИЗ НЕГО БИТ ПЕРЕНОСА
;
MOV R3, A ; ВОЗВРАЩАЕМ РАЗНОСТЬ В R3
RET
;-----------------------------
; Подпрограмма вывода
; ------------------------------
; Выводимая информация в BCD формате последовательно помещается
; в аккумулятор
;-----------------------------
IND:
LCALL eclr
in1: mov A, #1 ; Установка курсора в позицию 1
LCALL ecur ; Вызов подпрограммы установки курсора
; Первое знакоместо
MOV
A, R6 ;
Помещаем в аккумулятор
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr ; Вызов процедуры вывода на экран
; Второе знакоместо
MOV
A, R6 ;
Помещаем в аккумулятор
SWAP
A
; Обмениваем полубайты в
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr
; Третье знакоместо
MOV
A, R5 ;
Помещаем в аккумулятор
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr
; Четвертое знакоместо
MOV
A, R5 ;
Помещаем в аккумулятор
SWAP
A
; Обмениваем полубайты в
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr
; Пятое знакоместо
MOV
A, R4 ;
Помещаем в аккумулятор
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr
; Шестое знакоместо
MOV
A, R4 ;
Помещаем в аккумулятор
SWAP
A
; Обмениваем полубайты в
ANL A, #11110000b ; Обнуляем младший полубайт
LCALL prchr
RET
;-----------------------------
; Подпрограмма вывода символа на экран
;-----------------------------
prchr: push DPL
push DPH
push B
mov DPTR, #ts ; Начало таблицы символов
mov C, ACC.7 ; Сохраняем значение точки
clr ACC.7 ; Сбрасываем значение бита
movc a, @a+DPTR ; Получаем выводимый код
mov ACC.4, C ; Восстанавливаем значение точки
mov B, A ; Сохраняем его в регистре B
anl A, #0Fh ; Отделяем младший полубайт
mov P1, A ; Выводим его на индикатор
setb A0 ; Вкл. режима вывода даных
setb WR1 ; Импульс записи
clr WR1
mov A, B ; Восстанавливаем выводимый код
swap A ; Обмен тетрадами аккумулятора
anl A, #0Fh ; Отделяем старший полубайт
mov P1, A ; Выводим его на индикатор
setb A0 ; Включаем режим вывода данных
setb WR1 ; Импульс записи
clr WR1
pop B ; Восстановление регистров
pop DPH
pop DPL
RET
;-----------------------------
; Подпрограмма сброса LCD индикатора МТ-10Т7-7
;-----------------------------
;
eres: mov P1, #0Fh
; Засылаем адрес регистра
setb WR1
clr WR1
mov P1, #00100001b ; Заносим код снятия блокировки
setb WR1
clr WR1
mov P1, #0 ; Устанавливаем адрес на первый разряд
setb WR1
clr WR1
RET
;-----------------------------
; Подпрограмма очистки экрана
;-----------------------------
eclr: LCALL eres ; Сброс экрана
mov P1, #00100000b ; Установка управляющего кода
mov R0, #14h ; Инициализация счетчика разрядов
cl1: setb WR1
clr WR1
djnz R0, cl1 ; Оператор цикла
RET
;-----------------------------
; Подпрограмма установки курсора
;-----------------------------
;
ecur: anl A, #0Fh ; Отделяем биты адреса
mov P1, A ; Устанавливаем адрес на первый разряд
setb WR1
clr WR1
RET
;-----------------------------
; Подпрограмма вывода сообщения на экран
;-----------------------------
Информация о работе Аппаратура и методы поиска дефектов кабельных сетей