jueves, 25 de agosto de 2011

indexado_02

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  

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
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;


1 comentario:

  1. It is a very informative and useful post thanks it is good material to read this post increases my knowledge. Stencil Mexico

    ResponderEliminar