Выпускной работы

Вид материалаРеферат

Содержание


Приложение Ж, Фрагмент основного модуля программы пульта управления
Приложение З, Фрагмент основного модуля программы приемно-исполнительного устройства
Подобный материал:
1   2   3   4   5   6   7   8   9

Приложение Ж, Фрагмент основного модуля программы пульта управления


BUTTON_CHECK nop ; Задача опроса и фиксации номера нажатой кнопки *******

SEND2LR .0,BUT_STATE,.0,BUT_STATE_M ; Инициализация байтов описания состояния ;кнопок

bcf PORTB,RED_LED,A ; Светодиоды погашены

bcf PORTB,GREEN_LED,A ; Светодиоды погашены

bcf DISPLAY,LED_ON_FLAG,A ; Запрещение световиброиндикации

bcf DISPLAY,SOUND_FLAG

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний

SENDLR .4, ERROR_CODE ; Фиксация стадии КОД = 4

SEND2LR .10, DEL1,.10,DEL2 ; Временные параметры драйвера кнопок

BUTT_ON PORTA,.0,BUT_STATE_M,.2,DEL1,DEL2,TEMP1,TEMP2

BUTT_ON PORTA,.1,BUT_STATE_M,.3,DEL1,DEL2,TEMP1,TEMP2

IF_R_EQ_L BUT_STATE_M,b'00000100',SEND_BUT

IF_R_EQ_L BUT_STATE_M,b'00001000',SEND_BUT

IF_R_EQ_L BUT_STATE_M,b'00001100',D_INIT

goto BUTTON_CHECK

D_INIT bsf PORTB,RED_LED,A ; Дистантная инициализация

bsf PORTB,GREEN_LED,A ; желтый цвет

goto SEND_BUT

;***************** Передача ********************************************************

SEND_BUT nop

; ******************** Задание параметров транспортного уровня протокола ***************

SENDLR b'00000000',SEND_NUMBER

SENDLR b'00000000',PACET_NUMBER

;******************** TX -ФАЗА **********************************************

SEND1 nop

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от зависаний

TX_IDLE СС1100_IDLE_STATE SEND2,.4,DEL_SPI,TEMP1,TEMP2,TEMP3 ; Перевод СС1100 ;в IDLE КОД=4

goto TX_IDLE


STROBE_COM SFRX,SNOP ; Очистка буфера FIFO RX

STROBE_COM SFTX,SNOP ; Очистка буфера FIFO RX


SEND2 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SEND3 СС1100_TX_STATE SEND4,DEL_SPI,.5,TEMP1,TEMP2,TEMP3 ; *********** Перевод ;CC1100 в TX КОД=5

goto SEND3

SEND4 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

bsf PORTB,RED_LED,A ; Передача отображается красным ;светодиодом

bcf PORTB,GREEN_LED,A

SEND3LR .5,TEMP5,.6,TEMP6,.7,TEMP7

;************************************************************************************

; **** Засылка информации в TX FIFO. Количество байт лимитируется макросом TXR.********

; *** Посылка на слэйв-устройство байта состояния кнопок, 2-байтного номера сессии и номера ;посылки

WRITE_TXR .11,.9,SLAVE_ADRESS,BUT_STATE_M,DEVICE_STATE,SESN_H,SESN_L,SEND_NUMBER,TEMP5,TEMP6,TEMP7

incf PACET_NUMBER,1,A ; Инкрементирование счетчика посылок в пакете

incf SEND_NUMBER,1,A ; Инкрементирование счетчика посылок

nop

;********************** Ожидание завершения пересылки данных **********************

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний

SENDLR .6,ERROR_CODE ; Заполнен мастер ТX_FIFO КОД = 6

bcf PORTB,RED_LED,A

nop

;CHECK_EMPTY READ_CONFIG TXBYTES,TEMP7 ; Чтение количества данных в ;TX_FIFO

DELAY_PL .200,.200,TEMP1,TEMP2 ; Задержка между посылками

; IF_R.EQ.L TEMP7,.0,SENDED, CHECK_EMPTY ; Проверка, что пересылка данных ;завершена

nop

nop

SENDED SENDLR .7,ERROR_CODE ; Текущая посылка выполнена КОД = 7

IF_R.GT.L PACET_NUMBER,PACET_LENGTH,RECEIV0,SEND4

;********************* ФАЗА - RX *****************************************

RECEIV0 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SENDLR .8,ERROR_CODE ; Фиксация стадии Серия посылок выполнена КОД = 8

bcf PORTC,2,A ; CSn=0 Выход из SLEEP (Перевод в IDLE ? )

RECEIV1 СС1100_IDLE_STATE RECEIV2,DEL_SPI,DEL_SPI,TEMP1,TEMP2,TEMP3 ; ******* ;Перевод CC1100 в IDLE КОД = 10

goto RECEIV1

RECEIV2 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

RECEIV3 СС1100_RX_STATE TAKE,DEL_SPI,.11,TEMP1,TEMP2,TEMP3 ; Перевод в ;режим RX КОД = 11

goto RECEIV3

;************************************************************************************

TAKE nop

bsf PORTB,GREEN_LED,A ; Индикация приема

bcf PORTB,RED_LED,A


SENDLR b'00000000',TASK1_COUNT ; Организация интервала ожидания ответа

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от зависаний


TAKE1 nop

nop

READ_CONFIG RXBYTES,TEMP7

SENDLR .13,ERROR_CODE ; Фиксация стадии Проверка заполнения RX FIFO КОД = 13

DELAY_PL DEL_SPI,DEL_SPI,TEMP1,TEMP2 ; Задержка для опроса СС1100

IF_R.GT.L TEMP7,.11,IDLE_RX0,TAKE2 ; Если в FIFO есть посылка, то следует ;ее забрать,но сначала перевести в IDLE

TAKE2 IF_R.GT.L TASK1_COUNT,MASTER_RX,CHECK_ATTEMPT,TAKE1 ; Если ;посылкм нет, то проверка не истек ли RX-интервал. Если интервал не истек, то продолжить ;проверку на наличие посылки

;***************** Перевод СС1100 в IDLE ********************************************

IDLE_RX0 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

IDLE_RX1 СС1100_IDLE_STATE READING,.131,DEL_SPI,TEMP1,TEMP2,TEMP3 ; Перевод в ;IDLE КОД=131

goto IDLE_RX1 ; и уход на чтение и разбор посылки

; ******************** В случае зависания выход по софтовому сторожевому таймеру **

CHECK_ATTEMPT IF_R.GT.L SEND_NUMBER,SEND_ATTEMP_M,NO_ANSWER,NEW_PACET ; Проверка на завершение передачи суммарного количества посылок

NEW_PACET SENDLR .0,PACET_NUMBER ; Если все передано то ;виброиндикация об отсутствии подтверждения

goto SEND1 ; Если не все передано передать очередной пакет

; ***************** ЧТЕНИЕ FIFO ***************************************************

READING IF_R.GT.L TEMP7,.12,LIM_SIZE,READ_1

LIM_SIZE SENDLR .12,TEMP7

READ_1 nop

SENDLR .20,ERROR_CODE ; Фиксация стадии Серия посылок выполнена КОД = 20

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

READ_RX TEMP7

STROBE_COM SFRX,SNOP

; DELAY_PL DEL_SPI,DEL_SPI,TEMP1,TEMP2 ; Задержка для опроса СС1100

SES_LAYER nop

; bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

; bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства


SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

; ******* Обработка подтверждения от слэйв-устройства **********************

movff BUFFER_R+3,TEMP3

movff BUFFER_R+4,TEMP4

movff BUFFER_R+5,BUT_STATE

movff BUFFER_R+6,DEVICE_STATE

movff BUFFER_R+9,SEND_NUMBER

clrf BIT_INDEX

IF_R.EQ.R BUT_STATE,BUT_STATE_M,NEW_TAB,NO_ANSWER

NEW_TAB SENDLR .21,ERROR_CODE ; Фиксация стадии КОД = 21

call _DISPLAY_TAB ; Обновление описания для светотоиндикации

clrf TASK3_COUNT

clrf TASK6_COUNT

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства

goto SOUND

; ********** Звуковая индикация *******************************************************

NO_ANSWER nop

SENDLR .22,ERROR_CODE ; Фиксация стадии КОД = 22

SENDLR 0x16,DEVICE_STATE

call _DISPLAY_TAB

clrf TASK3_COUNT

clrf TASK6_COUNT

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

btfss DISPLAY,SOUND_FLAG

goto DISP_CHECK

SENDLR .24,ERROR_CODE ; Фиксация стадии КОД = 24

IF_R.GT.L DUR_VIBRO,.3,REPAIR1,NO_SOUND

REPAIR1 SENDLR .3,DUR_VIBRO

NO_SOUND MOTOR_DRIVER PORTC,.1,SOUND_INTERVAL,.0,DUR_VIBRO,TEMP1,TEMP2,TEMP3,TASK2_COUNT

goto DISP_CHECK

SOUND SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

SENDLR .25,ERROR_CODE ; Фиксация стадии КОД = 25

IF_R.GT.L DUR_VIBRO,.3,REPAIR2,MOTOR_START

REPAIR2 SENDLR .3,DUR_VIBRO

MOTOR_START MOTOR_DRIVER PORTC,.1,SOUND_INTERVAL,SILENCE_INTERVAL,DUR_VIBRO,TEMP1,TEMP2,TEMP3,TASK2_COUNT ; Запуск драйвера вибромотора

nop

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний


DISP_CHECK IF_R.GT.L TASK6_COUNT,DISP_PERIOD,OFF,DISP_CHECK

;************* Выключение устройства ****************************************

OFF nop; goto START_TEST

bcf PORTC,0,A ; Формирование сигнал OFF на LDO для выключения

btfsc PORTC,0,A

goto OFF

goto OFF

Приложение З, Фрагмент основного модуля программы приемно-исполнительного устройства


BUTTON_CHECK nop ; Задача опроса и фиксации номера нажатой кнопки **************

SEND2LR .0,BUT_STATE,.0,BUT_STATE_M ; Инициализация байтов описания состояния ;кнопок

bcf PORTB,RED_LED,A ; Светодиоды погашены

bcf PORTB,GREEN_LED,A ; Светодиоды погашены

bcf DISPLAY,LED_ON_FLAG,A ; Запрещение световиброиндикации

bcf DISPLAY,SOUND_FLAG

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

clrf TASK6_COUNT ; очистка таймера отображения

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SENDLR .3, ERROR_CODE ; Фиксация стадии КОД = 3

SEND2LR .10, DEL1,.10,DEL2 ; Временные параметры драйвера кнопок

BUTT_ON PORTA,.1,BUT_STATE_M,.2,DEL1,DEL2,TEMP1,TEMP2

BUTT_ON PORTA,.0,BUT_STATE_M,.3,DEL1,DEL2,TEMP1,TEMP2

IF_R_EQ_L BUT_STATE_M,b'00000100',BUTON_CIR

IF_R_EQ_L BUT_STATE_M,b'00001000',BUTON_TRI

IF_R_EQ_L BUT_STATE_M,b'00001100',BUTON_CIR

goto TASKS


BUTON_CIR bsf BUTTON_CIR_FLAG,.0,A


TASKS btfsc BUTTON_CIR_FLAG,.0

goto OFF1

goto RX_TASK

BUTON_TRI nop

CHECK_IM1 IF_R.EQ.L ROBOT_STATE,.0,ROBOT_STOP,CHECK_IM2 ; Тестовая ;иммобилизация

CHECK_IM2 IF_R.EQ.L ROBOT_STATE,.1,ROBOT_GO,CHECK_IM3

CHECK_IM3 nop

goto BUTTON_CHECK

RX_TASK nop

;********************* ФАЗА - RX ********************************

RECEIV0 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SENDLR .8,ERROR_CODE ; Фиксация стадии Серия посылок выполнена КОД = 8

bcf PORTC,2,A ; CSn=0 Выход из SLEEP (Перевод в IDLE ?)

RECEIV1 СС1100_IDLE_STATE RECEIV2,DEL_SPI,DEL_SPI,TEMP1,TEMP2,TEMP3 ; ******* ;Перевод CC1100 в IDLE КОД = 10

goto RECEIV1

RECEIV2 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от зависаний

RECEIV3 СС1100_RX_STATE TAKE,DEL_SPI,.11,TEMP1,TEMP2,TEMP3 ; Перевод в ;режим RX КОД = 11

goto RECEIV3

;************************************************************************************

TAKE bsf PORTB,GREEN_LED,A ; Индикация приема

bcf PORTB,RED_LED,A

SENDLR b'00000000',TASK1_COUNT ; Организация интервала ожидания ответа

bcf BUTTON_CIR_FLAG,.0

bsf TAKE1_FLAG,.0

IF_R_EQ_L RX_FLAG,.1,TAKE1

SENDLR .0,TASK7_COUNT

SENDLR .0,ROBOT_DELAY

SENDLR .1,ROBOT_DELAY_FLAG

ROBOT_LOOP3 bsf PORTB,RED_LED,A

bsf PORTB,GREEN_LED,A

btfsc ROBOT_DELAY_FLAG,.0

goto ROBOT_LOOP3

SENDLR .1,RX_FLAG

;***************** Передача *******************************************************

TAKE1 nop

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика ;защиты от зависаний

READ_CONFIG RXBYTES,TEMP7 ; Чтение количества пакетов из cc1100

SENDLR .13,ERROR_CODE ; Фиксация стадии Проверка заполнения ;RX FIFO КОД = 13

DELAY_PL DEL_SPI,DEL_SPI,TEMP1,TEMP2 ; Задержка для опроса СС1100

IF_R.GT.L TEMP7,.11,READING,BUTTON_CHECK ; Если в FIFO есть ;посылка, то следует ее забрать,но сначала перевести в IDLE

; ***************** ЧТЕНИЕ FIFO *************************************************

READING nop

IF_R.GT.L TEMP7,.12,LIM_SIZE,READ_1

LIM_SIZE SENDLR .12,TEMP7

READ_1 nop

SENDLR .20,ERROR_CODE ; Фиксация стадии Серия посылок выполнена КОД = 20

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

READ_RX TEMP7 ; Чтение из FIFO буфера

STROBE_COM SFRX,SNOP

; DELAY_PL DEL_SPI,DEL_SPI,TEMP1,TEMP2 ; Задержка для опроса СС1100

SES_LAYER nop

; bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

; bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства


SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

; ******* Обработка подтверждения от слэйв-устройства *********************

movff BUFFER_R+3,TEMP3

movff BUFFER_R+4,TEMP4

movff BUFFER_R+5,BUT_STATE

movff BUFFER_R+6,DEVICE_STATE

movff BUFFER_R+9,SEND_NUMBER


NEW_TAB SENDLR .21,ERROR_CODE ; Фиксация стадии КОД = 21

nop

clrf TASK3_COUNT ; очистка таймера длительности индикации для ;режимов с ограничением длительности

clrf TASK6_COUNT ; очистка таймера отображения

call _DISPLAY_TAB ; Обновление описания для светотоиндикации

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства

IF_R_EQ_L BUT_STATE,.4,ROBOT_STOP ; проверка кода ;клавиши на остановку

IF_R_EQ_L BUT_STATE,.8,ROBOT_GO ; проверка кода клавиши на запуск

goto NO_ANSWER ; если ни один из кодов клавиш не подошел ;переход по данной метке

ROBOT_STOP nop

bsf PORTC,6 ; инверсия состояния УСО

call SEND_BUT ; отправление подтверждения

SENDLR .1,ROBOT_STATE ; Выставление флага ;остановки робота

SENDLR .1,TAB_INDEX ; задание режима светоиндикации при ;остановке робота

SENDLR .0,TASK7_COUNT

SENDLR .0,ROBOT_DELAY

SENDLR .1,ROBOT_DELAY_FLAG

ROBOT_LOOP1 bsf PORTB,RED_LED,A

bsf PORTB,GREEN_LED,A

btfsc ROBOT_DELAY_FLAG,.0

goto ROBOT_LOOP1

goto RX_TASK

;goto BUTTON_CHECK


ROBOT_GO nop

bcf PORTC,6 ; инверсия состояния УСО

call SEND_BUT ; отправление подтверждения

SENDLR .0,ROBOT_STATE ; Выставление флага ;остановки робота

SENDLR .0,TAB_INDEX ; задание режима светоиндикации ;при запуске робота

SENDLR .0,TASK7_COUNT

SENDLR .0,ROBOT_DELAY

SENDLR .1,ROBOT_DELAY_FLAG

ROBOT_LOOP2 bsf PORTB,RED_LED,A

bsf PORTB,GREEN_LED,A

btfsc ROBOT_DELAY_FLAG,.0

goto ROBOT_LOOP2

goto RX_TASK

;goto BUTTON_CHECK

LIGHT nop ;goto LIGHT

clrf TASK3_COUNT

clrf TASK6_COUNT

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства

goto SOUND

_SEND_BUT nop

; ******************** Задание параметров транспортного уровня протокола ********

SENDLR b'00000000',SEND_NUMBER

SENDLR b'00000000',PACET_NUMBER

;******************** TX -ФАЗА *******************************

SEND1 nop

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от зависаний

TX_IDLE СС1100_IDLE_STATE SEND2,.4,DEL_SPI,TEMP1,TEMP2,TEMP3 ; Перевод СС1100 ;в IDLE КОД=4

goto TX_IDLE

STROBE_COM SFRX,S NOP ; Очистка буфера FIFO RX

STROBE_COM SFTX,SNOP ; Очистка буфера FIFO RX

SEND2 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SEND3 СС1100_TX_STATE SEND4,DEL_SPI,.5,TEMP1,TEMP2,TEMP3 ; *********** Перевод ;CC1100 в TX КОД=5

goto SEND3

SEND4 SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

bsf PORTB,RED_LED,A ; Передача отображается красным ;светодиодом

bcf PORTB,GREEN_LED,A

SEND3LR .5,TEMP5,.6,TEMP6,.7,TEMP7

;************************************************************************************

; ********************* Засылка информации в TX FIFO. Количество байт лимитируется ;макросом TXR.*********************

; *** Посылка на слэйв-устройство байта состояния кнопок 2-ч байтного номера сессии и номера ;посылки

WRITE_TXR .11,.9,SLAVE_ADRESS,BUT_STATE,DEVICE_STATE,SESN_H,SESN_L,SEND_NUMBER,TEMP5,TEMP6,TEMP7

incf PACET_NUMBER,1,A ; Инкрементирование счетчика посылок в пакете

incf SEND_NUMBER,1,A ; Инкрементирование счетчика посылок

nop

;********************** Ожидание завершения пересылки данных ***************

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний

SENDLR .6,ERROR_CODE ; Заполнен мастер ТX_FIFO КОД = 6

bcf PORTB,RED_LED,A

nop

;CHECK_EMPTY READ_CONFIG TXBYTES,TEMP7 ; Чтение количества данных в TX_FIFO

DELAY_PL .200,.200,TEMP1,TEMP2 ; Задержка между посылками

; IF_R.EQ.L TEMP7,.0,SENDED, CHECK_EMPTY ; Проверка, что пересылка данных ;завершена

nop

nop

SENDED SENDLR .7,ERROR_CODE ; Текущая посылка выполнена КОД = 7

IF_R.GT.L PACET_NUMBER,PACET_LENGTH,SEND_BUT_END,SEND4

SEND_BUT_END nop

return

; ********** Звуковая индикация *******************************************************

NO_ANSWER nop

SENDLR .22,ERROR_CODE ; Фиксация стадии КОД = 22

SENDLR 0x16,DEVICE_STATE

call _DISPLAY_TAB

clrf TASK3_COUNT

clrf TASK6_COUNT

bsf DISPLAY,LED_ON_FLAG,A ; Разрешение световиброиндикации

bsf DISPLAY,SOUND_FLAG ; после получения ответа от слэйв-устройства

SENDLR b'00000000',TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

btfss DISPLAY,SOUND_FLAG

goto DISP_CHECK

SENDLR .24,ERROR_CODE ; Фиксация стадии КОД = 24

IF_R.GT.L DUR_VIBRO,.3,REPAIR1,NO_SOUND

REPAIR1 SENDLR .3,DUR_VIBRO

NO_SOUND MOTOR_DRIVER PORTC,.1,SOUND_INTERVAL,.0,DUR_VIBRO,TEMP1,TEMP2,TEMP3,TASK2_COUNT

goto DISP_CHECK

SOUND SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от ;зависаний

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

SENDLR .25,ERROR_CODE ; Фиксация стадии КОД = 25

IF_R.GT.L DUR_VIBRO,.3,REPAIR2,MOTOR_START

REPAIR2 SENDLR .3,DUR_VIBRO

MOTOR_START MOTOR_DRIVER PORTC,.1,SOUND_INTERVAL,SILENCE_INTERVAL,DUR_VIBRO,TEMP1,TEMP2,TEMP3,TASK2_COUNT ; Запуск драйвера вибромотора

nop

SEND2LR .0,BUT_STATE_M,.0,BUT_STATE

SENDLR .0,TASK2_COUNT ; Инициализация счетчика защиты от зависаний

DISP_CHECK ;IF_R.GT.L TASK6_COUNT,DISP_PERIOD,OFF,DISP_CHECK

;************* Выключение устройства ******************************************

OFF goto START_TEST ; перегрузка слэйв-устройства

OFF1 bcf PORTC,0,A ; Формирование сигнал OFF на LDO для ;выключения

btfsc PORTC,0,A

goto OFF1

goto OFF1