;*Este programa Enciende un LED conectado a RA5 cuando se presiona un botón
;*conectado a RA0 y lo apaga cuando se presiona presiona nuevamente el
;*mismo botón y a sí sucesivamente.
;**************************************************************************
include “p16f877.inc”
org 0x0000 ;Inicia en el vector de reset
;Inicialización del puerto A:
CLRF STATUS ;Selecciona Banco 0
CLRF PORTA ;Inicializa latches de datos de PORTA
BSF STATUS,RP0 ;Selecciona Banco 1
MOVLW 0x06 ;Configura todas las patitas de A
MOVWF ADCON1 ;como digitales
MOVLW 0x1F ;configura todas las patitas de A como salidas
MOVWF TRISA ;y RA5 como salida
BCF STATUS,RP0 ;regresa al banco 0
checa BTFSS PORTA,0 ;checa si RA0=1
GOTO checa ;si RA=0 checa de nuevo
CALL d20ms ;si RA0=1 espera 20 miliseg. A que pase el rebote
chec1 BTFSS PORTA,0 ;checa nuevamente si RA0=1
GOTO checa ;si RA1=0 falsa alarma, vuelve a checar
MOVLWF PORTA,0x20 ;si RA1=1 señal válida; carga máscara en W
XORWF PORTA,1 ;conmuta estado del LED
GOTO checa ;repite
end
El código es de un pdf que encontre en internet, lo que no entiendo es como funciona esta parte (¿Esta mal escrito?, por que MOVLWF no es una instrucción):
MOVLWF PORTA,0x20 ;si RA1=1 señal válida; carga máscara en W
XORWF PORTA,1 ;conmuta estado del LED
¿O alguien me puede explicar como se prendería/apagaría un led utilizando un solo botón? Espero que alguien me pueda ayudar, de antemano gracias.