Вы находитесь на странице: 1из 2

;******************************************************************

;* Nombre :
ON_OFF_LED_Pulsador.ASM
*
;* Autor
:
JeysonMG
*
;* Notas
: - Se enciende y apaga un led (RA0) con el mismo
*
;*
pulsador(RA4) en un pic 16f84a
*
;*
- Oscilador tipo XT (4MHZ)
*
;*
*
;*
- Configuracion Pull-Up
*
;*
*
;*
O +5v
*
;*
|
*
;*
<
*
;*
R = 1Kohm >
*
;*
<
*
;*
|
*
;*
|----------------o RA4
*
;*
|
*
;*
| o
*
;*
Pulsador |-|
*
;*
| o
*
;*
|
*
;*
OBS:
*
;*
Bajo esta configuracin, cuando es
*
;*
_
pulsado, envia un 0 lgico al PIC
*
;*
*
;******************************************************************
config
_CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
list
p=16f84a
#include <p16f84a.inc>
cblock
0x0C
; A partir de esta direccion es la memoria RAM del
usuario
Variable_usada_para_retardo0
Variable_usada_para_retardo1
endc
#define
Pulsador
PORTA,4
; Pulsador en RA4
#define
LED
PORTA,0
; Led conectado en RA0
ORG
Inicio

0x00
bsf
bcf

STATUS,RP0
TRISA,.0

; Se accede a banco de memoria 1


; Configuramos RA0 como salida (OBS:

bsf

TRISA,.4

; Configuramos RA4 como entrada (

0=salida )
1=entrada)
Principal

bcf
STATUS,RP0 ; Se accede a banco de memoria 0
bcf
LED
; LED empieza apagado (RA0 en 0 lgico)
btfsc
Pulsador
; Pulsador=0?
goto
Principal
; Falso. Entonces, vuelvo a preguntar
; Si pulsador=0, hago un retardo de 100ms y vuelvo a

preguntar
; con el fin de eliminar los "rebotes"
call
Retardo_100ms
btfsc
Pulsador
; Pulsador=0?
goto
Principal

; Ahora bien, eliminado el rebote, debemos asegurarnos que ha soltado


el pulsador
Preguntar
btfss
Pulsador
; Pulsador=1?
goto
Preguntar
; Falso. Significa que no he soltado el
pulsador
; entonces vuelvo a preguntar.
; Si pulsador=1 significa que ya solte el pulsador, y
procedo a encender
; o apagar el led, segun su estado actual.
btfss
goto

LED
Encender

; LED = 1 ? (1=encendido)
; Falso, entonces vamos a etiqueta

bcf
goto
bsf
goto

LED
Principal
LED
Principal

;
;
;
;

"Encender"

Encender

Era verdad?, entonces apago led,


y luego regreso a Principal
Si era falso, encendemos led y
regresamos a Principal

; Subrutina de Retardo_100ms:
Retardo_100ms:
movlw
movwf
movlw
movwf
goto
decfsz
goto
decfsz
goto
goto
goto
goto
return
END

.110
Variable_usada_para_retardo0
.181
Variable_usada_para_retardo1
$+1
Variable_usada_para_retardo1, 1
$-2
Variable_usada_para_retardo0,
1
$-6
$+1
$+1
$+1

; Directiva para indicar que termina el

programa
; Lo que est despues no forma parte
del programa

Вам также может понравиться