Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/08/2016 #41


Encendido de un led mediante pulsador pic basic pro
Tengo este programa, pero quiero hacer que cuando pul=0 e int=0, prenda el led, pero sigo presionado y después de unos segundos se apague el led, y si siguen presionados los dos pulsadores que no se vuelva a encender hasta volver a soltar y presionar otra vez los dos pulsadores.
Algo me hace este programa que hice, pero se detiene y no se vuelve activar mas, hay que quitarle el voltaje y conectarlo para que vuelva a funcionar.
Código:
symbol int=portb.0
symbol pul=portb.1
symbol led=portb.2
symbol led1=portb.3
trisb.0=1
trisb.1=1
trisb.2=0
trisb.3=0


 led=0
 led1=0
 
 
inicio:
if int=0 and pul=0 then
toggle led
pause 1000
high led





else
low led
high led1
pause 100
low led1
pause 100
endif

goto inicio
08/08/2016 #42
Moderador

Avatar de D@rkbytes

Si es que entendí el planteamiento, el siguiente programa debe hacer lo que deseas:
Código PHP:
inicio:
    
Symbol  pulsador1   PORTB.0
    Symbol  pulsador2   
PORTB.1
    Symbol  led         
PORTB.2
    
    contador    
Var Word

    OPTION_REG.7 
0
    TRISB 
= %11110011
    PORTB 
0
    
programa
:
    If 
pulsador1 And pulsador2 0 Then
        High led
        
        
While pulsador1 And pulsador2 0
        
            contador 
contador 1
        
            Pause 1
        
            
If contador 2000 Then
                
                Low led
                
                
While pulsador1 And pulsador2 0
                    
NOP
                Wend
            
EndIf
        
Wend

        Low led
        
        contador 
0
        
    
EndIf
    
    GoTo 
programa
    
    End 
Saludos.
09/08/2016 #43


gracias por su repuesta pero lo probe y no funiona.. aver explico mejor...

cuando pulsador1=0 and pulsador2=0 enciende el led por 1 segundo y se apaga pero sin dejar de aplastar los p1 y p2, cuando suelte los pulsadores no haga nada asta volver aplastar y se vuelva a encerder el led por 1 seg

---------- Actualizado después de 3 minutos ----------

perdon si hace lo que quiero muchas gracias de verdad

y a eso hay como adicionar si p1=0 y p1=1 prenda el led por 1 segundo y se apague y vuelva a funcionar con el p1= y p2=0 gracias por tu ayuda de verdad que no sabia como salir de este rollo ...

---------- Actualizado después de 5 minutos ----------

perdon me hice bola
a ver explico mejor

si p1=0 and p2=0 prenda el led por 1 segundo
si p1=1 and p2=1 prenda el leds por 1 segundo
y esto repita siempre ahora si me explique bien gracias por su ayuda

---------- Actualizado después de 24 minutos ----------

si pasa esto p1=0 and p2=1 no enciende nada
si p1=1 and p2=0 no enciende nada


sera posible hacerlo
09/08/2016 #44
Moderador

Avatar de D@rkbytes

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.
09/08/2016 #45


Gracias. Si, ya me dí cuenta de la falla, muchas gracias.

---------- Actualizado después de 4 minutos ----------

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:
Código 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
=;todo el puerto b es de salida
cmcon
=;Todo el puerto A en modo digital
pito
:
high chicha
pause 200
low chicha

encerar
:
 


unid=;carga la variable unid con cero
dece
=;carga la variable dece con cero
cent
=;carga la variable cent con cero
mile
=;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
:

portb224+unid ;224 %11100000activa las unidades
PAUSE 3
portb
208+dece ;208 %11010000activa las decenas
PAUSE 3
portb
176+cent ;176 %10110000activa las centenas
PAUSE 3
portb
112+mile ;112 %01110000activa 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 ;cuenta las interrupciones del TMR0

TMR0
=;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 ;resetea la bandera de interrupción del TMR0

RESUME 
09/08/2016 #46
Moderador

Avatar de D@rkbytes

Mira por aquí: Cronometro dual con pausa
10/08/2016 #47


gracias
voy a echar una chequeada a ver como me va...... gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.