técnico en electricidad y electronica
Les dejo un código para realizar el encendido de un LED durante 5 segundos al presionar un botón;***********************************************************
;Programa que enciende una luz durante 5 seg por RB1 al
;presionar un botón en RB0.
;Se utiliza el Timer 0 y una ciclo anidado
;
;Autor: Ing. Patricio Cortés Aburto
;Fecha:Octubre 2011
;DuocUC Valpo.
;*************************************************************
list p=16f88
include
__CONFIG _CONFIG1, _LVP_OFF & _WDT_OFF & _XT_OSC
errorlevel -302 ;ignorarerrores al almacenar en banco 1
;*************************************************************
ciclo_1 EQU 0x20 ;definimos la variable ciclo_1 en la posición 20 de la RAM
; ***** Configuración deRegistros *****
org 0x5 ;Salta vector de interrupciones
inicio clrf INTCON ;deshabilita interrupciones
bcf STATUS,RP1 ;banco 1
bsf STATUS,RP0
movlw b'01000111' ;configura el TMR0 con pre-escaler a 256
movwf OPTION_REG ;y habilita resistencias de pull-up en PORTB
movlw b'000000001'movwf TRISB ;RB0 como entrada, los demás bits son salidas
clrf ANSEL ;Configura PORTA como I/O digitales (y deshabilita entradas análogas)
clrf TRISA ;PORTA como salidas digitalesBCF STATUS,RP0 ;Vuelve al banco 0 de datos
; ***** Programa Principal *****
clrf PORTB ;limpia el puertoB al reiniciar el programa
boton btfsc PORTB,0 ;pregunta sise presionó botón en RB0
goto boton ;si no se ha presionado, seguimos preguntando
bsf PORTB,1 ;enciende LED en RB1
movlw d'250' ;carga valor 250
movwf ciclo_1 ;avariable ciclo_1
call temp_20ms ;llamamos a rutina con Timer 0
bcf PORTB,1 ;Pasado los 5 seg (250*20ms) se apaga el LED en RB1
goto boton ;preguntamos de nuevo se se...
Regístrate para leer el documento completo.