Paso 9 de 11
PORT: el pulsador controla el LED
Objetivo
Mover la logica al bucle: leer RB1 con PORTB y escribir el LED con LATB.
Quita el BSF LATB,0 fijo de inicio (deja BCF LATB,0 tras init). En bucle, PORT lee el pulsador y LAT actualiza el LED.
Pulsador NA + pull-up: RB1 = 1 suelto, 0 presionado. Presionas → LED enciende.
Sigue estos pasos
- Borra
BSF LATB, 0deinicio(mantenBCF LATB, 0yCALL init_gpio). - Reemplaza el
GOTO buclevacio por las 4 instrucciones del bloque resaltado +GOTO bucle. - Compila, recarga el HEX en Proteus.
- Prueba: presionar pulsador → LED on; soltar → LED off. Repite 3 veces para confirmar.
Tu archivo hasta ahora
LIST P=18F4550
#include <P18F4550.INC>
CONFIG FOSC = HS
CONFIG WDT = OFF
CONFIG LVP = OFF
CONFIG PBADEN = OFF
ORG 0x0000
GOTO inicio
init_gpio:
BCF TRISB, 0
BSF TRISB, 1
RETURN
inicio:
CALL init_gpio
BCF LATB, 0
bucle:
BTFSC PORTB, 1 ; RB1 alto = pulsador suelto
BCF LATB, 0
BTFSS PORTB, 1 ; RB1 bajo = pulsador presionado
BSF LATB, 0
GOTO bucle
END
Lo que agregas en este paso
bucle:
BTFSC PORTB, 1 ; RB1 alto = pulsador suelto
BCF LATB, 0
BTFSS PORTB, 1 ; RB1 bajo = pulsador presionado
BSF LATB, 0
GOTO bucle
Pruebalo
Opcional: invierte la logica (LED on cuando sueltas el pulsador).
Lista antes de continuar
- El bucle usa PORTB para leer y LATB para escribir.
- Probé pulsador y LED al menos 3 veces — funciona.