| 
 | 
Действительно лабуда какая-то. Нет иницилизации портов А и В. У меня новый компьютер с Вин_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  | 
  
 |