Está en la página 1de 4

;***************************PROGRAMA:BANDA TRASPORTADORA SELECTORA DE

TAMA�OS***********************************************
;POR PUROELECTRONICA
list p=16f628a
include <p16f628a.inc>
__CONFIG _CP_OFF& _CPD_OFF& _LVP_OFF& _BOREN_OFF& _MCLRE_ON& _WDT_OFF& _PWRTE_ON&
_XT_OSC
CBLOCK 0X20
CONTADOR
CUENTA
ENDC
ORG 0x00
CONFIGURACION;CONFIGURACION DE PUERTOS
MOVLW 0x07;cargo con 0x07 el acumulador w para
MOVWF CMCON;apagar el comparador analogico,para permitir pines como E/S de
funciones
BSF STATUS,5;el banco de memoria 1 para configurar E/S
MOVLW B'11111';PUERTO A(RA3-RA0) COMO ENTRADA
MOVWF TRISA
MOVLW B'11100000';PUERTO A(RB4-RB0) COMO SALIDA
MOVWF TRISB
MOVLW b'00000111'
MOVWF OPTION_REG
BCF STATUS,5;selecciono el banco 0
CLRF PORTA
CLRF PORTB
CLRF CUENTA
INICIO_DE_PROGRAMA
BTFSC PORTA,0;SALTA SI EL RA=0----------BOTON DE MARCHA
GOTO $-1;RA=1
CALL timer0_20ms
BTFSC PORTA,0
GOTO INICIO_DE_PROGRAMA
TESTEO
BTFSC PORTA,1;--------------------------BOTON DE PARO
GOTO MUEVE_FAJA
CALL timer0_22ms
BTFSC PORTA,1
GOTO $-3
STOP
MOVLW B'00000000'
MOVWF PORTB
BSF PORTB,1;-----------------------------LED DE PARO
GOTO INICIO_DE_PROGRAMA
MUEVE_FAJA
BCF PORTB,1
BSF PORTB,2;-----------------------------LED DE MARCHA
BSF PORTB,0;-----------------------------ENCIENDO LA FAJA
SENSOR_1
BTFSS PORTA,2;---------------------------SENSOR 1 PARA CAJAS GRANDES
GOTO SENSOR_2;SINO DETECTA CAJAS GRANDES REVISA EL SENSOR_2 PARA LAS CAJAS
PEQUE�AS
CALL PAUSE_3
BTFSS PORTA,3;REVISA SI A AL VEZ TAMBIEN DETECTO EL SENSOR 2
GOTO $+2;SINO A DETECTADO TAMBIEN EL SENSOR 2 CONTINUA
GOTO AMBOS_SENSORES;SI DETECTAN LOS 2 SENSORES
CALL PAUSE_1;TIEMPO DE RETARDO PARA ACTIVAR EL PISTON 1
BCF PORTB,0;-----------------DETIENE LA FAJA
GOTO PWM_1;------------------------------SERVOMOTOR_1
GOTO TESTEO
SENSOR_2
BTFSS PORTA,3;---------------------------SENSOR 2 PARA CAJAS PEQUE�AS
GOTO TESTEO;SINO DETECTA NADA VUELVE A TESTEAR
CALL PAUSE_3
BTFSS PORTA,2;REVISA SI A AL VEZ TAMBIEN DETECTO EL SENSOR 1
GOTO $+2;SINO A DETECTADO TAMBIEN EL SENSOR 1 CONTINUA
GOTO AMBOS_SENSORES;SI DETECTAN LOS 2 SENSORES
CALL PAUSE_2;TIEMPO PARA ACTIVAR EL PISTON 2
BCF PORTB,0;-----------------DETIENE LA FAJA
GOTO PWM_2;------------------------------SERVOMOTOR_2
GOTO TESTEO
PWM_1;--------------SERMOTOR_1
MOVLW .15
MOVWF CUENTA
PWM_H_1
BSF PORTB,3
CALL timer0_2.5ms
BCF PORTB,3
CALL timer0_17.5ms
DECFSZ CUENTA,F
GOTO PWM_H_1
MOVLW .20
MOVWF CUENTA
PWM_AH_1
BSF PORTB,3
CALL timer0_1ms
BCF PORTB,3
CALL timer0_19ms
DECFSZ CUENTA,F
GOTO PWM_AH_1
GOTO TESTEO
PWM_2;--------------SERVOMOTOR_2
MOVLW .15
MOVWF CUENTA
PWM_H_2
BSF PORTB,4
CALL timer0_2.5ms
BCF PORTB,4
CALL timer0_17.5ms
DECFSZ CUENTA,F
GOTO PWM_H_2
MOVLW .20
MOVWF CUENTA
PWM_AH_2
BSF PORTB,4
CALL timer0_1ms
BCF PORTB,4
CALL timer0_19ms
DECFSZ CUENTA,F
GOTO PWM_AH_2
GOTO TESTEO
AMBOS_SENSORES
CALL PAUSE_2
MOVLW .15
MOVWF CUENTA
PWM_H_3
BSF PORTB,3
BSF PORTB,4
CALL timer0_2.5ms
BCF PORTB,3
BCF PORTB,4
CALL timer0_17.5ms
DECFSZ CUENTA,F
GOTO PWM_H_3
MOVLW .20
MOVWF CUENTA
PWM_AH_3
BSF PORTB,3
BSF PORTB,4
CALL timer0_1ms
BCF PORTB,3
BCF PORTB,4
CALL timer0_19ms
DECFSZ CUENTA,F
GOTO PWM_AH_3
GOTO TESTEO
;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
timer0_1ms
NOP
MOVLW .254
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
timer0_19ms
NOP
MOVLW .180
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
;,,,,,,,,,,,,,,,,,,,,,,,
timer0_2.5ms
NOP
MOVLW .245
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
timer0_17.5ms
NOP
MOVLW .100
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
;,,,,,,,,,,,,,,,,,,,,,,,,,,,
PAUSE_1 ;RETARDO DE 1.2 SEG
MOVLW .120
MOVWF CONTADOR
DELAY_1
BCF INTCON,T0IF ;LE LIMPIA EL BIT, DE DESBORDAMIENTO DE TMRO
MOVLW .217 ;SE CARGA 217
MOVWF TMR0 ;A TMRO
BUCLE_1
BTFSS INTCON,T0IF ;ESPERA EL DESBORAMIENTO DE TMRO
GOTO BUCLE_1
DECFSZ CONTADOR,F ;DECREMENTE A 1 EL CONTADOR
GOTO DELAY_1
RETURN
;,,,,,,,,,,,,,,,,,,,,
PAUSE_2 ;RETARDO DE 1.7 SEG
MOVLW .166
MOVWF CONTADOR
DELAY_2
BCF INTCON,T0IF ;LE LIMPIA EL BIT, DE DESBORDAMIENTO DE TMRO
MOVLW .217 ;SE CARGA 217
MOVWF TMR0 ;A TMRO
BUCLE_2
BTFSS INTCON,T0IF ;ESPERA EL DESBORAMIENTO DE TMRO
GOTO BUCLE_2
DECFSZ CONTADOR,F ;DECREMENTE A 1 EL CONTADOR
GOTO DELAY_2
RETURN
;,,,,,,,,,,,,,,,,,,,,,,,
PAUSE_3 ;RETARDO DE 1 SEG
MOVLW .80
MOVWF CONTADOR
DELAY_3
BCF INTCON,T0IF ;LE LIMPIA EL BIT, DE DESBORDAMIENTO DE TMRO
MOVLW .217 ;SE CARGA 217
MOVWF TMR0 ;A TMRO
BUCLE_3
BTFSS INTCON,T0IF ;ESPERA EL DESBORAMIENTO DE TMRO
GOTO BUCLE_3
DECFSZ CONTADOR,F ;DECREMENTE A 1 EL CONTADOR
GOTO DELAY_3
RETURN
timer0_20ms;,,,,,,,,,MARCHA
NOP
MOVLW .176
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
timer0_22ms;,,,,,,,,,,,,PARO
NOP
MOVLW .172
MOVWF TMR0
BCF INTCON,T0IF
BTFSS INTCON,T0IF
GOTO $-1
RETURN
END

También podría gustarte