Académique Documents
Professionnel Documents
Culture Documents
9 CONEXIN DE PULSADORES
Todos los ejercicios realizados, hasta aqu, los puertos del PIC se han utilizado
como salidas. A continuacin se utilizaran como entradas. Se conectan pulsadores para
cambiar los niveles de tensin en los pines del puerto.
La figura 2.35, muestra las conexiones para manejar pulsadores. Con esta
conexin los pines del puerto (RD0 y RD1), estn directamente en estado lgico de 1.
Por consiguiente, el accionamiento del pulsador determina que pasen los puertos
indicados a bajo.
if (apagar==0)
bit_clear(port_b,0);
}
}
void antirebote(void)
{
while(prender == 0) { }
while(apagar == 0) { }
delay_ms(30);
return;
}
}
Cada vez que se accione un pulsador se averigua si el estado del puerto sigue
siendo 0, de ser afirmativo se llama a una funcin antirebote, para que de mantenerse
en este estado no realice ninguna accin hasta que el pulsador este inactivo. La
instruccin usada para el efecto es while(pulsador == 0) { }. Una vez que el pulsador
este inactivo, de la funcin retornar (por return) al programa a siguiente instruccin
desde donde fue llamado a seguir ejecutando el programa.
Al simular o implementar el circuito se observa que el LED inmediatamente se
prende o se apaga, segn el caso, eliminando el efecto del rebote del pulsador mecnico.
EJERCICIOS
2.1 Encender y apagar un LED con un interruptor.
En este ejercicio, cuando el interruptor est abierto el LED se apaga y cuando el
interruptor est cerrado el LED se prende. Adems se activan las resistencias
PULL_UP para conectar internamente al puerto B a 5V.
PROGRAMA:
#include <18f4550.h>
//Librera para usar el PIC18F4550.
#fuses HS,WDT,NOPROTECT,PUT, NOPBADEN
//Configuracin de fusibles.
#use delay (clock=12000000) //FOSC =12MHz
#byte tris_b = 0xF93 //Identificador para el registro TRIS B en la localidad 0xF93.
void main() {
//Funcin principal main.
set_tris_b(0xFF);
//Fija el Puerto B como salida.
port_b_pullups(TRUE);
//Habilitacin del Pull-up.
while(TRUE){
//Bucle Infinito.
if (input(PIN_B3) == 0)
//Detecta si se accionado el pulsador P1.
output_high(PIN_D0); //.y activa al LED.
else
//caso contrario..
output_low(PIN_D0);
//.el LED permanece apagado.
}
//Fin del bucle infinito.
}
//Fin del main.
2.3
2.4