En assembler:
INICIO
MOVF PORTA,W ; CARGA DATOS DEL PORTA EN W
ANDLW B'00000111' ; SE QUEDA CON LOS 3 BITS DE ENTRADA
ADDWF PCL,F ; SALTA A LA CONFIGURACION ADECUADA
TABLA
GOTO VACIO
GOTO LLENANDOSE
GOTO ALARMA
GOTO LLENO
GOTO ALARMA
GOTO ALARMA
GOTO ALARMA
GOTO REBOSA
ADDWF PCL,F ; SALTA A LA CONFIGURACION ADECUADA
TABLA
GOTO VACIO
GOTO LLENANDOSE
GOTO ALARMA
GOTO LLENO
GOTO ALARMA
GOTO ALARMA
GOTO ALARMA
GOTO REBOSA
VACIO
MOVLW B'01100001' ;VACIO
MOVWF PORTB ;PUERTO SALIDA
GOTO INICIO
LLENANDOSE
MOVLW B'01100010' ;LLENANDOSE
GOTO SALIDA
ALARMA
MOVLW B'00010000' ;ALARMA
GOTO SALIDA
LLENO
MOVLW B'00100100' ;LLENO
GOTO SALIDA
ALARMA
MOVLW B'00010000' ;ALARMA
GOTO SALIDA
ALARMA
ALARMA
MOVLW B'00010000' ;ALARMA
GOTO SALIDA
ALARMA
MOVLW B'00010000' ;ALARMA
GOTO SALIDA
REBOSA
MOVLW B'00001000' ;REBOSA
GOTO SALIDA
SALIDA
MOVWF PORTB
GOTO INICIO
EN C:
#DEFINE SV PORT_A0
#DEFINE SLL PORT_A1
#DEFINE SR PORT_A2
#DEFINE VACIO PORT_B0
#DEFINE LLENANDOSE PORT_B1
#DEFINE LLENO PORT_B2
#DEFINE REBOSE PORT_B3
#DEFINE ALARMA PORT_B4
#DEFINE BOMBA1 PORT_B5
#DEFINE BOMBA2 PORT_B6
WHILE(1){
IF(SR=0){
IF(SLL=0){
IF(SV=0)(GOTO_ADDRESS(VACIO)}}}
ELSE(GOTO_ADDRESS(ALARMA)
ELSE(GOTO_ADDRESS(LLENANDOSE)
ELSE(GOTO_ADDRESS(LLENO)
WHILE(1){
IF(SR=1){
IF(SLL=1){
IF (SV=1) GOTO_ADDRESS(REBOSE)}}}
ELSE(GOTO_ADDRESS(ALARMA)
ELSE(GOTO_ADDRESS(ALARMA)
ELSE(GOTO_ADDRESS(ALARMA)
ALARMA
BIT_CLEAR(BOMBA1);
BIT_CLEAR(BOMBA2);
BIT_SET(ALARMA) ;}
REBOSE
BIT_CLEAR(BOMBA1);
BIT_CLEAR(BOMBA2);
BIT_SET(REBOSE) ;
VACIO
BIT_SET(BOMBA1);
BIT_SET(BOMBA2);
BIT_SET(VACIO) ;
LLENO
BIT_CLEAR(BOMBA2);
BIT_SET(BOMBA1) ;
BIT_SET(LLENO) ;
LLENANDOSE
BIT_SET(BOMBA1) ;
BIT_SET(BOMBA2) ;
BIT_SET(LLENANDOSE;
It is a very informative and useful post thanks it is good material to read this post increases my knowledge. Stencil Mexico
ResponderEliminar