Empecemos aportando algo, creo que vine para quedarme

.
Dejo el programa comentado.
STATUS equ 03h ;Definiciones, para no manejar
TRISA equ 85h ;direcciones todo el rato.
TRISB equ 86h
PORTA equ 05h
PORTB equ 06h
CONTADOR equ 08h
org 0x0
bsf STATUS,5 ;Cambiamos al banco 1
movlw 0x0 ;Movemos a W 0
movwf TRISA ;Todos los puertos A son de salida
movlw 0x1 ;Movemos a W 1
movwf TRISB ;Todos los puertos B son de salida, menos RB0
bcf STATUS,5 ;Volvemos al banco 0
Inicio BTFSS PORTB,0 ;Comprueba si RB0 es 1, si lo es SALTA LA SIGUIENTE INSTRUCCION
bcf PORTA,1 ;Envia 0 por la patilla RA1
BTFSC PORTB,0 ;Comprueba si RB0 es 0, si lo es SALTA LA SIGUIENTE INSTRUCCION
call Parpadeo ;Llama a Parpadeo
goto Inicio ;El bucle se repite
Parpadeo call Duerme ;Llama a Duerme para hacer una pausa
bsf PORTA,1 ;Envia 1 por la patilla RA1
call Duerme ;Llama a Duerme para hacer una pausa
bcf PORTA,1 ;Envia 0 por la patilla RA1
call Duerme
return
Duerme movlw 0x90 ;Mueve a W 0x90
movwf CONTADOR ;Mueve W a CONTADOR (CONTADOR(08h)=0x90)
Bucle decfsz CONTADOR,1 ;Decrementa CONTADOR, y si es 0 SALTA LA SIGUIENTE INSTRUCCION
goto Bucle ;Vuelve a empezar el bucle
return ;Return
end ;Fin del programa
Este seria el montaje, dejo la imagen de Proteus, por si a alguien mas le interesa esto

.

Comento un poco el funcionamiento: Si el boton esta cerrado, el LED parpadea. Si el boton esta abierto, el LED se mantiene apagado.
Sa1uDoS