Выпускной работы
Вид материала | Реферат |
СодержаниеПриложение Ж, Фрагмент основного модуля программы пульта управления Приложение З, Фрагмент основного модуля программы приемно-исполнительного устройства |
- Положение о сдаче экзамена в форме защиты выпускной учебно-исследовательской экзаменационной, 39.24kb.
- Методические рекомендации по подготовке выпускной квалификационной работы бакалавра, 573.85kb.
- Методические рекомендации по выполнению выпускной квалификационной работы (дипломной, 525.53kb.
- Выпускной квалификационной работы, 5390.24kb.
- Методические рекомендации по выполнению выпускной квалификационной работы для студентов, 604.91kb.
- Методические рекомендации по выполнению выпускной квалификационной работы для студентов, 555.68kb.
- Приказ №, 1441.82kb.
- Методические указания по выполнению выпускной квалификационной работы для студентов, 551.88kb.
- Методические рекомендации по выполнению выпускной квалификационной работы по специальности:, 132.97kb.
- Методические рекомендации по подготовке и защите выпускных квалификационных работ, 320.02kb.
Приложение Ж, Фрагмент основного модуля программы пульта управления
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