Documentos de Académico
Documentos de Profesional
Documentos de Cultura
list p=16f84a
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC movwf PORTB
#include <p16f84a.inc> clrf contador
; testeo del pulsdor
contador equ 0x0c testeo
contador1 equ 0x0d btfss PORTB,pulsador
contador2 equ 0x0e goto testeo
pulsador equ 7 call demora_20ms
btfss PORTB,pulsador
Reset org 0x00 goto testeo
goto inicio incf contador,1
;tabla de conversion BCD a 7 segmentos movfw contador
org 0x05 call BCD7SEG
BCD7SEG: movwf PORTB
addwf PCL,1 btfsc PORTB,pulsador
retlw b'1101111'; 9 goto $-1
retlw b'1111111'; 8 call demora_20ms
retlw b'0000111'; 7 btfsc PORTB,pulsador
retlw b'1111101'; 6 goto $-4
retlw b'1101101'; 5 goto testeo
retlw b'1100110'; 4 ;demora
retlw b'1001111'; 3 demora_20ms
retlw b'1011011'; 2 movlw 0xff
retlw b'0000110'; 1 movwf contador1
retlw b'0111111'; 0 repeticion1
clrf contador ;si llega a 0 se resetea el contador movlw 0x19
retlw b'1101111'; 9 movwf contador2
repeticion2
inicio decfsz contador2,1
bsf STATUS,RP0 goto repeticion2
movlw b'10000000' decfsz contador1,1
movwf TRISB goto repeticion1
bcf STATUS,RP0 return
movlw b'1101111'; comienza en 9 end
2.- Sistema control de agua en pic basic
cmcon = 7
INA VAR portb.2
INB VAR portb.3
estado var byte
estadob var byte
OUT var portb.4
pro:
estado = INA + INB
if INA = 0 and INB = 0 then encender; ambos en nivel bajo ENCIENDE
if INA = 1 and INB = 0 then tema; ACA ESTA EL TEMA, condicionales para saber por donde viene
if INA = 1 and INB = 1 then apagar; ambos niveles altos SE APAGA
goto pro
encender:
estadob = 00; si ambos sensores estan en 0 quiere decir que no hay agua
high OUT; por lo tanto se enciende la salida
pause 500
goto pro
tema:
if estadob = 11 then
low out; si los sensores estaban en 1 y el de arriba pasa a 0 la salida
; sigue en nivel bajo (el tanque continua en descarga)
elseif estadob = 00 then
high out; si los sensores estaban en 0 y el de abajo pasa a 1 la salida
; sigue en nivel alto (el tanque se sigue cargando)
else
high out; en caso de que un sensor este en 1 y el otro en 0 por defecto
; la salida pasa a 1 (se carga el tanque hasta el 11)
endif
pause 500
goto pro
apagar:
estadob = 11; si ambos sensores estan en 1 quiere decir que el tanque esta lleno
low out; por lo tanto se apaga la salida
inicio: