;====================================================================
; Programa principal
;====================================================================
ABC movf PORTA,W
andlw b'00000111'
addwf PCL,F
goto VACIO
goto LLENANDOSE
goto ALARMA_A
goto LLENO
goto ALARMA_B
goto ALARMA_C
goto ALARMA_D
goto REBOSE
VACIO
movlw b'1100001'
goto XYZ
LLENANDOSE
movlw b'1100010'
goto XYZ
ALARMA_A
movlw b'10000'
goto XYZ
LLENO
movlw b'100100'
goto XYZ
ALARMA_B
movlw b'10000'
goto XYZ
ALARMA_C
movlw b'10000'
goto XYZ
ALARMA_D
movlw b'10000'
goto XYZ
REBOSE
movlw b'1000'
XYZ
movwf PORTB
goto ABC
DE OTRA MANERA:
; Definiciones y Equivalencias
;====================================================================
#DEFINE SV PORTA,0 ;SV es RA0
#DEFINE SLL PORTA,1 ;SLL es RA1
#DEFINE SR PORTA,2 ;SR es RA2
#DEFINE VACIO PORTB,0 ;VACIO es la pata RB0
#DEFINE LLENANDOSE PORTB,1 ;LLENANDOSE es RB1
#DEFINE REBOSE PORTB,2 ;REBOSE es RB2
#DEFINE LLENO PORTB,3 ;LLENO es RB3
#DEFINE ALARMA PORTB,4 ;ALARMA es RB4
#DEFINE BOMBA1 PORTB,5 ;BOMBA1 es RB5
#DEFINE BOMBA2 PORTB,6 ;BOMBA2 es RB6
;====================================================================
; Programa principal
;====================================================================
ABC
VACIADO
btfsc SR ;Verifica el estado de SR para ver si esta en 0
goto REBOSE1
btfsc SLL ;Verifica si SLL esta en 0
goto LLENO1
btfsc SV ;Verifica el estado de SV para ver si esta en 0
goto LLENADO
bsf VACIO ;deja en 1 a VACIO
bsf BOMBA1 ;activa la bomba 1
bsf BOMBA2 ;activa la bomba 2
LLENADO
clrf PORTB ;Deja todo el PUERTOB en 0
btfsc SV ;Verifica si SV esta en 0
goto LLENO1
bcf VACIO ;Deja a VACIO en 0
bsf BOMBA1 ;Activa la bomba 1
bsf BOMBA2 ;Activa la bomba 2
bsf LLENANDOSE ;Activa LLENANDOSE
LLENO1
btfsc SLL ;Verifica si SLL esta en 0
goto REBOSE1
bcf LLENANDOSE ;Apaga LLENANDOSE
bsf BOMBA1 ;Prende bomba 1
bcf BOMBA2 ;Apaga bomba 2
bsf LLENO
REBOSE1
btfsc SR ;Verifica si ST esta en 0
goto ALARMA1
bcf BOMBA1 ;Apaga bomba 1
bcf LLENO ;apaga LLENO
bsf REBOSE ;Prende REBOSE
goto ABC
ALARMA1
bsf ALARMA ;Enciende ALARMA
bcf BOMBA1 ;Apaga bomba 1
bcf BOMBA2 ;Apaga bomba 2
;====================================================================
END ;Directiva que indica la finalización del pgm
En lenguaje C
#include "C:\Problema\problema.h"
void main()
{
while(1){
switch (input_a()){
case 0:
output_b(0b01100001);
break
case 1:
output_b(0b01100010);
break
case 2:
output_b(0b00010000);
break
case 3:
output_b(0b00100100);
break
case 4:
output_b(0b00010000);
case 5:
output_b(0b00010000);
break
case 6:
output_b(0b00010000);
break
case 7:
output_b(0b00001000);
break
}
No hay comentarios:
Publicar un comentario