Академический Документы
Профессиональный Документы
Культура Документы
;* 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
bsf
TRISA,.4
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
LED
Encender
; LED = 1 ? (1=encendido)
; Falso, entonces vamos a etiqueta
bcf
goto
bsf
goto
LED
Principal
LED
Principal
;
;
;
;
"Encender"
Encender
; 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
programa
; Lo que est despues no forma parte
del programa