|
Действительно лабуда какая-то. Нет иницилизации портов А и В. У меня новый компьютер с Вин_7. Купил недавно и еще не писал на нем. Как не пытался не смог запустить в MPLABе симулятор. Короче взял свой старый файл и переписал все туда. Теперь поехало. Пробуйте. list p=16f877a #include <p16f877a.inc> ERRORLEVEL -302, -305 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ;======================================================================================== ; Определение положения регистров специального назначения. ;======================================================================================== Status equ 03h ; Регистр выбора банка. TrisA equ 05h TrisB equ 06h TrisC equ 07h TrisD equ 08h TrisE equ 09h PortA equ 05h PortB equ 06h PortC equ 07h PortD equ 08h PortE equ 09h OptionR equ 01h ;======================================================================================== ; Определение названия и положения регистров общего назначения. ;======================================================================================== Reg_1 equ 20h Reg_2 equ 21h Reg_3 equ 22h Reg_4 equ 23h Reg_5 equ 24h Reg_6 equ 25h Reg_7 equ 26h ;**************************************************************************************** ; Текст рабочей части программы. ;**************************************************************************************** org 0x000 goto Start Start bsf STATUS,RP0 movlw 0x06 movwf ADCON1 clrf PCLATH ;Перестраховываемся, выбираем Bank 0 Памяти Программ CLRF STATUS ; Bank 0 CLRF INTCON ; все прерывания запрещены bsf STATUS,RP0 ; BANK1 CLRF PIE1 ; запретить прерывания bcf STATUS,RP0 ; Bank 0 CLRF PORTA ; очистить все порты. CLRF PORTB ; CLRF PORTC ; CLRF PORTD CLRF PORTE clrf T1CON ; Таймер 1 не изменять bsf STATUS,RP0 ; Bank 1 MOVLW b'00000000' ; MOVWF TRISA ; MOVLW b'00000000' ; MOVWF TRISB ; RB0-RB7 - выходы MOVLW b'00000000' ; MOVWF TRISC ; все - выход, MOVLW b'00000000' ; MOVWF TRISD ; все - выход MOVLW b'00000000' ; MOVWF TRISE ; все - выход bcf STATUS,RP0 ; Bank 0 ;Проверим инициализацию портов ;Потом закомментировать MOVLW b'11111111' ; MOVWF PORTA MOVLW b'11111111' ; MOVWF PORTB MOVLW b'11111111' ; MOVWF PORTC MOVLW b'11111111' ; MOVWF PORTD MOVLW b'11111111' ; MOVWF PORTE ;Очистим порты MOVLW b'00000000' ; MOVWF PORTA MOVLW b'00000000' ; MOVWF PORTB MOVLW b'00000000' ; MOVWF PORTC MOVLW b'00000000' ; MOVWF PORTD MOVLW b'00000000' ; MOVWF PORTE ;---------------------------------------------------------------------------------------- ; Рабочая часть программы завершина. ;---------------------------------------------------------------------------------------- ; Програма опрос кнопок ;---------------------------------------------------------------------------------------- ; прижим вперёд ( 1 столб линия А) ;---------------------------------------------------------------------------------------- knopka1A Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,5 ; выключить 2 столб в 1. Bcf PortB,4 ; включить 1 столб в 0. Btfsc PortB,0 ; Опрос кнопки прижим вперёд Goto knopka1B Call Adreb ; антидребизг Btfsc PortB,0 ; Опрос кнопки прижим вперёд Goto knopka1B Call prigim1 ; ;---------------------------------------------------------------------------------------- ; прижим назад ( 1 столб линия B) ;---------------------------------------------------------------------------------------- knopka1B Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,5 ; выключить 2 столб в 1. Bcf PortB,4 ; включить 1 столб в 0. Btfsc PortB,1 ; Опрос кнопки прижим назад Goto knopka1C Call Adreb ; антидребизг Btfsc PortB,1 ; Опрос кнопки прижим назад Goto knopka1C Call prigim2 ;---------------------------------------------------------------------------------------- ; конвеер включить ( 1 столб линия C) ;---------------------------------------------------------------------------------------- knopka1C Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,5 ; выключить 2 столб в 1. Bcf PortB,4 ; включить 1 столб в 0. Btfsc PortB,2 ; Опрос кнопки конвеер включить Goto knopka1D Call Adreb ; антидребизг Btfsc PortB,4 ; Опрос кнопки конвеер включить Goto knopka1D Bsf PortA,5 ; включить конвеер ;---------------------------------------------------------------------------------------- ; конвеер выключить ( 1 столб линия D) ;---------------------------------------------------------------------------------------- knopka1D Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,5 ; выключить 2 столб в 1. Bcf PortB,4 ; включить 1 столб в 0. Btfsc PortB,3 ; Опрос кнопки конвеер выключить . Goto knopka2A Call Adreb ; антидребизг Btfsc PortB,3 ; Опрос кнопки конвеер выключить . Goto knopka2A Bcf PortA,5 ; выключить конвеер ;---------------------------------------------------------------------------------------- ; пресс вперёд ( 2 столб линия А) ;---------------------------------------------------------------------------------------- knopka2A Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bcf PortB,5 ; включить 2 столб в 0 Btfsc PortB,0 ; Опрос кнопки -пресс вперёд-. Goto knopka2B Call Adreb ; антидребизг Btfsc PortB,0 ; Опрос кнопки -пресс вперёд-. Goto knopka2B Call press1 ; Пресс в перёд. ;---------------------------------------------------------------------------------------- ; пресс назад ( 2 столб линия B) ;---------------------------------------------------------------------------------------- knopka2B Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bcf PortB,5 ; включить 2 столб в 0 Btfsc PortB,1 ; Опрос кнопки -пресс назад-. Goto knopka2C Call Adreb ; антидребизг Btfsc PortB,1 ; Опрос кнопки -пресс назад-. Goto knopka2C Call igla2 ; Иглы в исходное. Call press2 ; Пресс назад. ;---------------------------------------------------------------------------------------- ; разравниватель вкл ( 2 столб линия C) ;---------------------------------------------------------------------------------------- knopka2C Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bcf PortB,5 ; включить 2 столб в 0 Btfsc PortB,2 ; Опрос кнопки разравниватель вкл. Goto knopka2D Call Adreb ; антидребизг Btfsc PortB,2 ; Опрос кнопки разравниватель вкл. Goto knopka2D ;Bsf PortE,0 ; Разравниватель вкл. ;----------------------------------------------------------------------------------------- ; разравниватель выкл ( 2 столб линия D) ;----------------------------------------------------------------------------------------- knopka2D Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,6 ; выключить 3 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bcf PortB,5 ; включить 2 столб в 0 Btfsc PortB,3 ; Опрос кнопки разравниватель выкл. Goto knopka3A Call Adreb ; антидребизг Btfsc PortB,3 ; Опрос кнопки разравниватель выкл. Goto knopka3A ; Bcf PortE,0 ; Разравниватель выкл. ;---------------------------------------------------------------------------------------- ; иглы вперёд ( 3 столб линия А) ;---------------------------------------------------------------------------------------- knopka3A Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bcf PortB,6 ; включить 3 столб в 0 Btfsc PortB,0 ; Опрос кнопки -иглы вперёд-. Goto knopka3B Call Adreb ; антидребизг Btfsc PortB,0 ; Опрос кнопки -иглы вперёд-. Goto knopka3B Call igla1 ;---------------------------------------------------------------------------------------- ; иглы в исходное ( 3 столб линия B) ;---------------------------------------------------------------------------------------- knopka3B Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bcf PortB,6 ; включить 3 столб в 0 Btfsc PortB,1 ; Опрос кнопки -иглы в исходное-. Goto knopka3C Call Adreb ; антидребизг Btfsc PortB,1 ; Опрос кнопки -иглы в исходное-. Goto knopka3C Call igla2 ;--------------------------------------------------------------------------------------- ; ( 3 столб линия C) ;--------------------------------------------------------------------------------------- knopka3C Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bcf PortB,6 ; включить 3 столб в 0 Btfsc PortB,2 ; Опрос кнопки-A- . Goto knopka3D Call Adreb ; антидребизг Btfsc PortB,2 ; Опрос кнопки-A- . Goto knopka3D ;--------------------------------------------------------------------------------------- ; ( 3 столб линия D) ;--------------------------------------------------------------------------------------- knopka3D Bsf PortB,7 ; выключить 4 столб в 1. Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bcf PortB,6 ; включить 3 столб в 0 Btfsc PortB,3 ; Опрос кнопки . Goto knopka4A Call Adreb ; антидребизг Btfsc PortB,3 ; Опрос кнопки . Goto knopka4A ;--------------------------------------------------------------------------------------- ; закрутка вперёд ( 4 столб линия А) ;--------------------------------------------------------------------------------------- knopka4A Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bsf PortB,6 ; выключить 3 столб в 1 Bcf PortB,7 ; включить 4 столб в 0 Btfsc PortB,0 ; Опрос кнопки Обвязкака вперёд- . Goto knopka4B Call Adreb ; антидребизг Btfsc PortB,0 ; Опрос кнопки Обвязкака вперёд- . Goto knopka4B Call zakr1 ;-------------------------------------------------------------------------------------- ; закрутка в исходное ( 4 столб линия B) ;-------------------------------------------------------------------------------------- knopka4B Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bsf PortB,6 ; выключить 3 столб в 1 Bcf PortB,7 ; включить 4 столб в 0 Btfsc PortB,1 ; Опрос кнопки Обвязкака в исходное-. Goto knopka4C Call Adreb ; антидребизг Btfsc PortB,1 ; Опрос кнопки Обвязкака в исходное-. Goto knopka4C Call zakr2 ;-------------------------------------------------------------------------------------- ; Завязка тюка ( 4 столб линия C) ;-------------------------------------------------------------------------------------- knopka4C Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bsf PortB,6 ; выключить 3 столб в 1 Bcf PortB,7 ; включить 4 столб в 0 Btfsc PortB,2 ; Опрос Goto knopka4D Call Adreb ; антидребизг Btfsc PortB,2 ; Опрос Goto knopka4D Call obvjzkaR ;--------------------------------------------------------------------------------------- ; Включения автоматического режима. ( 4 столб линия D) ;--------------------------------------------------------------------------------------- knopka4D Bsf PortB,4 ; выключить 1 столб в 1 Bsf PortB,5 ; выключить 2 столб в 1 Bsf PortB,6 ; выключить 3 столб в 1 Bcf PortB,7 ; включить 4 столб в 0 Btfsc PortB,3 ; Опрос кнопки автоматический режим. Goto knopka1A Call Adreb ; антидребизг Btfsc PortB,3 ; Опрос кнопки автоматический режим. Goto knopka1A Goto avto ;--------------------------------------------------------------------------------------- ; прижим вперёд ;--------------------------------------------------------------------------------------- prigim1 Movlw .3 ; Сколько раз повторять процесс работы прижима Movwf Reg_4 ; если не дойдёт за 10 сек до концевика. prigim0 Btfss PortD,4 ; Опрос концевика прижим впереди Goto b0 ; если впереди идём дальше. Call Adreb ; антидребизг Btfss PortD,4 ; Опрос концевика прижим впереди Goto b0 ; если впереди идём дальше. Bsf PortD,0 ; включить селеноид прижим вперёд Bsf PortA,3 ; включить селеноид 80 бар(медленно) Bsf PortA,2 ; включить селеноид 200 бар ;Goto Pause2 ; Идем на измерения времени хода прижима. Ostop1 Btfsc PortD,4 ; Опрос концевика прижим впереди Goto Ostop1 Call Adreb ; антидребизг pst Btfsc PortD,4 ; Опрос концевика прижим впереди Goto Ostop1 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortA,2 ; выключить селеноид 80 бар. Bcf PortD,0 ; выключить селеноид прижим вперёд b0 Return ;--------------------------------------------------------------------------------------- ; прижим назад. ;--------------------------------------------------------------------------------------- prigim2 Btfss PortD,5 ; Опрос концевика прижим исходное. Goto b1 ; если 1 идём на b1 . Call Adreb ; антидребизг Btfss PortD,5 ; Опрос концевика прижим исходное. Goto b1 ; если если 1 идём на b1 . Bsf PortD,1 ; включить селеноид прижим назад. Bsf PortA,2 ; включить селеноид 200 бар (медленно) ;Bsf PortA,3 ; включить селеноид 80 бар (быстро) Ostop2 Btfsc PortD,5 ; Опрос концевика прижим исходное. Goto Ostop2 Btfsc PortD,5 ; Опрос концевика прижим исходное. Goto Ostop2 Bcf PortA,2 ; выключить селеноид 80 бар. Bcf PortA,3 ; выключить селеноид 200 бар Bcf PortD,1 ; выключить селеноид прижим назад b1 Return ;--------------------------------------------------------------------------------------- ; пресс вперёд !!!! Когда пресс впереди конечник выдаёт -0- ;--------------------------------------------------------------------------------------- press1 Btfsc PortC,7 ; Опрос концевика пресс впереди. Goto p0 ; если впереди идём дальше. Call Adreb ; антидребизг Btfsc PortC,7 ; Опрос концевика пресс впереди. Goto p0 ; если впереди идём дальше. p00 Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto p00 Call Adreb ; антидребизг Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto p00 Call igla2 ; Иглы в исходное Bsf PortC,2 ; включить селеноид пресс вперёд. Bsf PortA,2 ; включить селеноид 200 бар Bsf PortA,3 ; включить селеноид 80 бар ; Goto Pause ; Если пресс за 40 сек не дошёл до концевика ; то всё отключаем. Ostop3 Btfss PortC,7 ; Опрос концевика пресс впереди. Goto Ostop3 Call Adreb ; антидребизг Btfss PortC,7 ; Опрос концевика пресс впереди ещё раз. Goto Ostop3 Bcf PortA,2 ; выключить селеноид 200 бар. Bcf PortA,3 ; выключить селеноид 80 бар. Bcf PortC,2 ; выключить селеноид пресс вперёд. p0 Return ;--------------------------------------------------------------------------------------- ; пресс в исходное ;--------------------------------------------------------------------------------------- press2 Btfss PortC,6 ; Опрос концевика -пресс исходное-. Goto p1 ; если в исходном идём дальше. Call Adreb ; антидребизг Btfss PortC,6 ; Опрос концевика -пресс исходное-. Goto p1 ; если в исходном идём дальше. p11 Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto p11 Call Adreb ; антидребизг Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto p11 Call igla2 ; Иглы в исходное Bsf PortC,3 ; включить селеноид -пресс назад-. Bsf PortA,2 ; включить селеноид 200 бар(медленно) Bsf PortA,3 ; включить селеноид 80 бар ; Goto Pause1 ; Если пресс за 40 сек не дошёл до концевика ; то всё отключаем. Ostop4 Btfsc PortC,6 ; Опрос концевика -пресс исходное-. Goto Ostop4 Call Adreb ; антидребизг Btfsc PortC,6 ; Опрос концевика -пресс исходное-. Goto Ostop4 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortA,3 ; выключить селеноид 80 бар. Bcf PortC,3 ; выключить селеноид пресс назад p1 Return ;---------------------------------------------------------------------------------------- ; иглы вперёд ;---------------------------------------------------------------------------------------- igla1 Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto a0 ; если иглы впереди то идём дальше. Call Adreb ; антидребизг Btfss PortC,5 ; Опрос концевика -иглы впереди-. Goto a0 ; если иглы впереди то идём дальше. Call press1 ; Пресс вперёд. Call zakr2 ; завязка в исходное. Bsf PortC,0 ; включить селеноид -иглы вперёд-. Bsf PortA,2 ; включить селеноид 200 бар(медленно) Ostop5 Btfsc PortC,5 ; Опрос концевика -иглы впереди-. Goto Ostop5 Call Adreb ; антидребизг Btfsc PortC,5 ; Опрос концевика -иглы впереди-. Goto Ostop5 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortC,0 ; выключить селеноид-иглы вперёд-. a0 Return ;--------------------------------------------------------------------------------------- ; иглы в исходное ;--------------------------------------------------------------------------------------- igla2 Btfss PortC,4 ; Опрос концевика -иглы исходное-. Goto a1 ; если иглы в иходном то идём дальше. Call Adreb ; антидребизг Btfss PortC,4 ; Опрос концевика -иглы исходное-. Goto a1 ; если иглы в иходном то идём дальше. Call press1 ; Пресс вперёд. Call zakr2 ; завязка в исходное. Bsf PortC,1 ; включить селеноид -иглы в исходное- Bsf PortA,2 ; включить селеноид 200 бар(медленно) Ostop6 Btfsc PortC,4 ; Опрос концевика -иглы исходное-. Goto Ostop6 Call Adreb ; антидребизг Btfsc PortC,4 ; Опрос концевика -иглы исходное-. Goto Ostop6 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortC,1 ; выключить селеноид -иглы в исходное- a1 Return ;-------------------------------------------------------------------------------------- ; Обвязкака вперёд ;-------------------------------------------------------------------------------------- zakr1 zakrpc Btfss PortD,3 ; Опрос концевика Обвязкака в переди-. Goto c1 ; если впереди идём дальше. Call Adreb ; антидребизг Btfss PortD,3 ; Опрос концевика Обвязкака в переди-. Goto c1 ; если впереди идём дальше. Bsf PortE,2 ; включить селеноид Обвязкака вперёд- Bsf PortA,2 ; включить селеноид 200 бар(медленно) Ostop7 Btfsc PortD,3 ; Опрос концевика Обвязкака в переди-. Goto Ostop7 Call Adreb ; антидребизг Btfsc PortD,3 ; Опрос концевика Обвязкака в переди-. Goto Ostop7 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortE,2 ; выключить селеноид Обвязкака вперёд- c1 Return ;------------------------------------------------------------------------------------- ; Обвязкака в исходное ;------------------------------------------------------------------------------------- zakr2 Btfss PortD,2 ; Опрос концевика - Обвязкака исходное- . Goto c2 ; если в исходном идём дальше. Call Adreb ; антидребизг Btfss PortD,2 ; Опрос концевика - Обвязкака исходное- . Goto c2 ; если в исходном идём дальше. zakrpc1 Bsf PortE,1 ; включить селеноид Обвязкака исходное- Bsf PortA,2 ; включить селеноид 200 бар(медленно) Ostop8 Btfsc PortD,2 ; Опрос концевика - Обвязкака исходное- . Goto Ostop8 Call Adreb ; антидребизг Btfsc PortD,2 ; Опрос концевика - Обвязкака исходное- . Goto Ostop8 Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortE,1 ; выключить селеноид Обвязкака в исходное-. c2 Return ;WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW ;======================================================================================= ; Автоматический режим. ;======================================================================================= avto Call press2 ; пресс в исходное Call prigim2 ; прижим в исходное Call zasipka ; Опросить фотосенсор и засыпать бункер. Call prigim1 ; прижим вперёд Call press1 ; пресс вперёд Call obvjzkaA ; опросить счётчик и завязать кипу. Goto avto ; повторить процес ;--------------------------------------------------------------------------------------- ; Опрос счётчика - Обвязкака . ;--------------------------------------------------------------------------------------- obvjzkaA Btfsc PortD,7 ; опрос счётчика Goto on Call Adreb ; антидребизг Btfsc PortD,7 ; опрос счётчика Goto on obvjzkaR Call prigim1 ; прижим впрёд Call press1 ; пресс впрёд Call igla1 ; иглы впрёд Call zakr1 ; закрутка впрёд Call zakr2 ; закрутка назад Call igla2 ; иглы назад on Return ;---------------------------------------------------------------------------------------- ; Опрос фотодатчика - засыпка. ;---------------------------------------------------------------------------------------- zasipka Bsf PortA,5 ; включить конвеер F1 Btfsc PortD,6 ; Опрос фотосенсора если 1 то на F2 ; Goto F2 Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек Btfsc PortD,6 ; Опрос фотосенсора. Goto F1 ; если 0 то вернутся на F1 Call foto1 ; опросить ещё раз через0.1 сек F2 Bcf PortA,5 ; выключить конвеер Return ;WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW ;======================================================================================== ; Подпрограммы задержек. ;======================================================================================== ;---------------------------------------------------------------------------------------- ; Время задержки(антидребизг).0.05 сек ;---------------------------------------------------------------------------------------- ;delay = 30'000 machine cycles Adreb movlw .245 movwf Reg_1 movlw .39 movwf Reg_2 wr decfsz Reg_1, F goto wr decfsz Reg_2, F goto wr Return ;---------------------------------------------------------------------------------------- ; Время задержки для фотодатчика 0.1 сек ;---------------------------------------------------------------------------------------- ;delay = 100'000 machine cycles foto1 movlw .221 movwf Reg_1 movlw .130 movwf Reg_2 wr000 decfsz Reg_1, F goto wr000 decfsz Reg_2, F goto wr000 nop nop Return ; ;-------------------------------------------------------------------------------------- ;end ; Вот и всё ;---------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------- ; Время работы пресс вперёд примерно 40 сек ;---------------------------------------------------------------------------------------- Pause movlw .162 movwf Reg_1 movlw .39 movwf Reg_2 movlw .125 ; movwf Reg_3 wr1 Btfsc PortC,7 ; Опрос концевика пресс впереди. ; Если пресс впереди конечник разомкнут. Goto Ostop3 ; если пресс впереди то выключаем селеноиды и . ; если пресс не в переди то выключаем селеноиды ; через 4о сек. decfsz Reg_1, F goto wr1 decfsz Reg_2, F goto wr1 decfsz Reg_3, F goto wr1 Bcf PortA,2 ; выключить селеноид 200 бар. Bcf PortC,2 ; выключить селеноид пресс вперёд. Goto knopka1A ;---------------------------------------------------------------------------------------- ; Время работы пресс в исходное примерно 40 сек ;---------------------------------------------------------------------------------------- Pause1 movlw .162 movwf Reg_1 movlw .39 movwf Reg_2 movlw .125 ; movwf Reg_3 wr2 Btfss PortC,6 ; Опрос концевика пресс в исходном Goto Ostop4 ; если пресс в исходном то выключаем селеноиды и . ; если пресс не в исходном то выключаем селеноиды ; через 4о сек. decfsz Reg_1, F goto wr2 decfsz Reg_2, F goto wr2 decfsz Reg_3, F goto wr2 Bcf PortA,2 ; выключить селеноид 200 бар. Bcf PortA,3 ; выключить селеноид 80 бар. Bcf PortC,3 ; выключить селеноид пресс в исходное. Goto knopka1A ROS Bsf PortE,0 ; Реле общий стоп вкл. Ostop Clrf PortA Clrf PortB Clrf PortC Clrf PortD Clrf PortE ;======================================================================================== ; . ;======================================================================================== cikl call prigim2 ; прижим в исходное Decfsz Reg_4, F ; Считаем уменьшаем циклы. Tstf Reg_4 ; Проверяем регистр на 0 если0 то ROS Call prigim0 ; прижим вперёд call prigim2 ; прижим в исходное ;======================================================================================== ; Подпрограмма задержики время на ход прижима. ;======================================================================================== ;delay = 10'000'000 machine cycles =10 сек Pause2 movlw .223 movwf Reg_1 movlw .187 movwf Reg_2 movlw .51 movwf Reg_3 wr00 decfsz Reg_1, F ;Btfsc PortD,4 ; Опрос концевика прижим впереди ;Goto pst ; Если прижим уже впереди. goto wr00 decfsz Reg_2, F goto wr00 decfsz Reg_3, F goto wr00 nop nop Bcf PortA,2 ; выключить селеноид 200 бар Bcf PortA,2 ; выключить селеноид 80 бар. Bcf PortD,0 ; выключить селеноид прижим вперёд Bsf PortE,0 ; Реле общий стоп вкл. ;Goto cikl ; Делаем прижимы. ;Return END |
|