Uso de pulsadores en MPLAB

Hola!

Como se programan los pulsadores en MPLAB X IDE?
He hecho un programa en el cual si pulso el pulsador me encienda un led. Mi problema es que me enciende el led aunque no pulse el pulsador.
Lo he programado así.
while(1)
{
if(_RD6==0)
{

PORTA=0x0001;
_T1IE=1;
TMR1=0;
}
}
Alguien me podría decir porque me pasa eso??

Gracias
 
M

Miembro eliminado 356005

En el menú "Windows", opción "Simulator", hay dos paneles que puedes usar. Uno de ellos es "I/O Pins", que muestra en tiempo real el estado de los pines. Aquí puedes cambiar el valor de los pines marcados como de entrada. Y el otro es "Stimulus", donde puedes cambiar valores de los pines de entrada a voluntad ("Asynchronous"), pasado un cierto tiempo o número de ciclos ("Pin/Register Actions"), responder a acciones o eventos ("Advanced Pin/Register"), inyectar una señal de reloj ("Clock Stimulus") o modificar un registro cuando llegue a una etiqueta ("Register Injection").

En tu caso, la lógica de entrada de los pines será según el pin esté en modo pull up o pull down.
 
M

Miembro eliminado 356005

Lo que hace "Stimulus" es lo que ocurre fuera del micro, mientras que tu programa está dentro.

Según el pulsador esté en "pull up" o "pull down", el valor de la pulsación será uno u otro. Si está en "pull up", por ejemplo, el valor del pulsador mientras no se active será 0, y 1 cuando se pulse. Por el código, parece que es justo al revés (enciendes el LED cuando el pulsador vale 0, así que sería en modo pull down).

Modifica el programa para que el LED cambie según el valor del pulsador (modificar PORTA según lo que leas del pulsador), no solo activarlo sino también desactivarlo.
 
el el programa main he puesto
_RD6=1;
He preguntado cómo no donde.
Según si es con resistencia pullup o pulldown será una cosa u otra. He visto pulsadores a 1 con resistencia de pullup lo cual da uno y otro uno como opción. En tu caso como no sé cómo los has conectado...

Cómo te han comentado hay un if si 0 pero no vemos el if si uno
 

Arriba