desktop

Encendido de un led mediante pulsador pic basic pro

Si es posible, ya tienes la base de cómo se puede hacer.
Nada más elige bien tus comparaciones y haz que reaccione ante lo que procede.
 
Gracias. Si, ya me dí cuenta de la falla, muchas gracias.



Disculpen otra vez mi molestia. Estoy haciendo un cronometro, ya lo tengo casi listo pero necesito poner pausa con un pulsador y al volver a pulsarlo que empiece a contar otra vez y la verdad que no sé cómo.

Disculpen mi curiosidad, pero esto de los pic se pone más interesante cada vez.

Aquí está mi programa:
PHP:
unid VAR BYTE ;variable unidades
dece VAR BYTE ;variable decenas
cent VAR BYTE ;variable centenas
mile VAR BYTE ;variable miles
actual var byte
cuenta var byte
chicha VAR porta.0 ;pin de la chicharra
pulsoreloj VAR porta.2 ;pulso segundos
resetear VAR porta.1 ;regresa a cero
activar VAR BIT ;bandera para la tecla contar
trisb=0 ;todo el puerto b es de salida
cmcon=7 ;Todo el puerto A en modo digital
pito:
high chicha
pause 200
low chicha

encerar:
 


unid=0 ;carga la variable unid con cero
dece=0 ;carga la variable dece con cero
cent=0 ;carga la variable cent con cero
mile=0 ;carga la variable mile con cero
actual=1
cuenta=0







;setea TMR0 de interrupción cada 32768 microsegundos
OPTION_REG = %1010110 ;setea TMR0 configurando y habilita PORTB pullups
INTCON = %10100000 ;hablilita TMR0 interrupción interna
ON INTERRUPT GOTO interrup
     
     
     

display:

portb= 224+unid ;224 %11100000, activa las unidades
PAUSE 3
portb= 208+dece ;208 %11010000, activa las decenas
PAUSE 3
portb= 176+cent ;176 %10110000, activa las centenas
PAUSE 3
portb= 112+mile ;112 %01110000, activa los miles
PAUSE 3
gosub interrup

GOTO display





;************** Handler de interrupciones para incrementar contador ***************
DISABLE ;deshabilita interrupciones durante el proceso
interrup:
if resetear=0 then pito 
high pulsoreloj
cuenta = cuenta + 1 ;cuenta las interrupciones del TMR0

TMR0=4 ;resta 4 al contador de 256 del TMR0
IF cuenta < 31 THEN reset ;31 cuentas (32256ms = 999936uS)
cuenta = 0
low pulsoreloj




unid = unid + 1
IF unid >= 10 THEN
unid = 0

dece = dece + 1
IF dece >= 6 THEN
dece = 0
cent = cent + 1
IF cent>= 10 THEN
cent = 0
mile = mile + 1
IF mile>= 6 THEN
cent = 0
ENDIF
ENDIF
ENDIF
endif
reset:


INTCON.2 = 0 ;resetea la bandera de interrupción del TMR0

RESUME
 
Última edición por un moderador:
Atrás
Arriba