Está en la página 1de 2

TAREA N 3

1-programa descendente en mplab

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

3.- Parpadeo de un led en picbasic

@ device xt_osc ; oscilador externo XT


define osc 4 ; especifica que se va a utilizar uno de 4 Mhz

led var portb.0 ; asignamos led a puerto RB0

inicio:

HIGH led ;asigna un 1 logico


PAUSE 6400 ; tiempo de espera de 1 min
LOW led ; apaga led
PAUSE 64000
GOTO inicio: ;repite el ciclo

También podría gustarte