buenas aqui tengo un problema con la programacion del pic
a partir de la entrada 5 comienza el problema ya que deberia de mandar un retardo de 10seg para que desacative la salida 3 y active la salida 4 y luego lo mismo con la salida 4 y la salida 5.
lo que pasa es que me desactiva todas las salidas aqui les mando el programita para ver si alguien me puede ayudar
la idea del programa es que se enciendan motores secuencialmente
el primero S1
luego cuando S1 esta activo puedo prender S2
luego S1 y S2 prendidos puedo prender S3
luego que S3 esta prendido pasan 10 seg y se apaga S3 y prende S4
luego que S4 esta prendido pasan 10 seg y se apaga S4 y prende S5
cada uno de los 3 motores tiene paradas
la parada de S3 solo desactiva S3 o S4 o S5
la parada de S2 desactiva lo desde S5 hasta S2
la parada de S1 desactiva todas las salidas
tambien tiene una entrada que te desactiva todo el proceso y te indica falla
para S3,S4 y S5 hay fallas por atascamiento
cuyas entradas desactivan dichos motores independientemente
bueno eso es todo si alguien puede me gustaria que revisase mi codigo para que me diga maso en que es mi error
y RETMS.INC esta aqui
a partir de la entrada 5 comienza el problema ya que deberia de mandar un retardo de 10seg para que desacative la salida 3 y active la salida 4 y luego lo mismo con la salida 4 y la salida 5.
lo que pasa es que me desactiva todas las salidas aqui les mando el programita para ver si alguien me puede ayudar
la idea del programa es que se enciendan motores secuencialmente
el primero S1
luego cuando S1 esta activo puedo prender S2
luego S1 y S2 prendidos puedo prender S3
luego que S3 esta prendido pasan 10 seg y se apaga S3 y prende S4
luego que S4 esta prendido pasan 10 seg y se apaga S4 y prende S5
cada uno de los 3 motores tiene paradas
la parada de S3 solo desactiva S3 o S4 o S5
la parada de S2 desactiva lo desde S5 hasta S2
la parada de S1 desactiva todas las salidas
tambien tiene una entrada que te desactiva todo el proceso y te indica falla
para S3,S4 y S5 hay fallas por atascamiento
cuyas entradas desactivan dichos motores independientemente
bueno eso es todo si alguien puede me gustaria que revisase mi codigo para que me diga maso en que es mi error
Código:
list p=16f877
INCLUDE <P16F877.INC>
INICIO EQU 0x20
org 0
BSF STATUS,RP0 ; CAMBIA DE BANCO A BANCO 1
MOVLW b'00000110'
MOVWF ADCON1
MOVLW B'11111111' ;CONFIGURA COMO ENTRADAS 1-8 PORTB
MOVWF TRISB
MOVLW B'00000011' ;CONFIGURA COMO ENTRADAS 9-10 PIN 0 Y 1
MOVWF TRISC
CLRF TRISD ;CONFIGURA COMO SALIDAS 1-8 PORTD
MOVLW B'11111110' ;CONFIGURA RA0 COMO SALIDA 9
MOVWF TRISA
BCF STATUS,RP0 ;CAMBIAS DE BANCO AL BANCO 0
CLRF PORTD ;PONE SALIDAS A 0
CLRF PORTA
MOVLW B'00110000' ;CONFIGURAS EL TMR1 Y SU
; PREDIVISOR SETEADO ENE EL MAXIMO PREDIVISOR
MOVWF T1CON
LAZO
BTFSS PORTB,0 ;PREGUNTO SI RB0=1
GOTO LAZO
BSF PORTD,0
NEXT1
BTFSS PORTB,1 ;PREGUNTO SI RB1 = 1
GOTO NEXT2
MOVLW B'00000000' ;APAGO MOTOR 1
MOVWF PORTD
BCF PORTD,0
GOTO LAZO
NEXT2
BTFSS PORTB,2 ;SI ESTA RB2 = 1
GOTO NEXT1 ;
BSF PORTD,1
NEXT3
BTFSS PORTB,3 ;SI RB3 =1
GOTO NEXT4
BCF PORTD,1 ;APAGO MOTOR 2
BCF PORTD,2
GOTO NEXT1
NEXT4
BTFSS PORTB,4 ;SI ESTA RB4=1
GOTO NEXT3
BSF PORTD,2 ;PRENDO RD2 MOTOR 3
NEXT5 ;RUTINAS DE RETARDOS
BTFSS PORTB,5 ;SI ESTA RB5=1
CALL RETARDOS1 ;SINO VOY A RETARDO1
BCF PORTD,2 ;SI ESTA APAGO MOTOR 3
GOTO NEXT3 ;REGRESO A NEXT3
NEXT6
BTFSS PORTB,5 ;SI ESTA RB5=1
CALL RETARDOS2 ;SINO VOY A RETARDO1
BCF PORTD,3 ;SI ESTA APAGO MOTOR 4
GOTO NEXT3 ;REGRESO A NEXT3
NEXT7
BTFSS PORTB,5 ;SI ESTA RB5=1
GOTO NEXT8 ;SINO PASO A NEXT8
BCF PORTD,4 ;SI ES 1 APAGO MOTOR5
GOTO NEXT3
NEXT8
BTFSS PORTB,6 ;PREGUNTO SI RB6 = 1 X FALLA APAGO TODO Y DEJO INDICADOR DE FALLA EN RA0
GOTO FALLA1 ;VOY A FALLA1
CLRF PORTD
BSF PORTA,0
GOTO NEXT1
FALLA1 ;RUTINAS DE FALLAS
BTFSS PORTB,7
GOTO FALLA2
CLRF PORTD
BSF PORTD,5
GOTO NEXT8
FALLA2
BTFSS PORTC,0
GOTO FALLA3
CLRF PORTD
BSF PORTD,6
GOTO NEXT8
FALLA3
BTFSS PORTC,1
GOTO NEXT7
CLRF PORTD
BSF PORTD,7
GOTO NEXT8
RETARDOS1
movlw .10
movwf R_VAR4
LAZO_RE4
movlw .4
movwf R_VAR5
LAZO_RE5
movlw .250
call RETms
decfsz R_VAR5
goto LAZO_RE5
decfsz R_VAR4
goto LAZO_RE4
BSF PORTD,3
BCF PORTD,2
return
RETARDOS2
movlw .10
movwf R_VAR6
LAZO_RE6
movlw .4
movwf R_VAR7
LAZO_RE7
movlw .250
call RETms
decfsz R_VAR7
goto LAZO_RE7
decfsz R_VAR6
goto LAZO_RE6
BSF PORTD,4
BCF PORTD,3
return
INCLUDE<RETMS.INC>
END
y RETMS.INC esta aqui
Código:
cblock
contador1 ;registro usado por retardo
contador2 ;registro usado por retardo
R_VAR1
R_VAR2
R_VAR3
R_VAR4
R_VAR5
R_VAR6
R_VAR7
endc
;
t0 equ 0x82 ;constante para generar aprox. 25ms
t4.6ms equ 0x064 ;constante para generar 4,6ms
t15.4ms equ 0x144 ;constante para generar 15,4ms
t200us equ 0x01 ;constante para generar aprox. 200us
;
retardo
clrf contador1 ;aclara contador1
ret decfsz contador1,F ;
goto ret
decfsz contador2,F
goto ret
return
ret50ms ;RETARDO 50 ms
movlw t0
movwf contador2
call retardo
call retardo
return
ret100ms ;RETARDO 100 ms
call ret50ms
call ret50ms
return
ret300ms ;RETARDO 300 ms
call ret100ms
call ret100ms
call ret100ms
return
ret600ms ;RETARDO 600 ms
call ret300ms
call ret300ms
return
;=================================
RETms
movwf R_VAR1
LAZO_RE1
movlw .250
movwf R_VAR2
LAZO_RE2
movlw .4
movwf R_VAR3
LAZO_RE3
nop
decfsz R_VAR3
goto LAZO_RE3
decfsz R_VAR2
goto LAZO_RE2
decfsz R_VAR1
goto LAZO_RE1
return