Está en la página 1de 2

/*

Este programa da un pulso de tension a dos pines en accionar


el pulsador.
Una vez activados, son apagados: el primero 2mS después.
el segu
ndo 2,1mS después.
El bucle se repite a cada pulso.
CONNEXIONES:
PULSADOR = PORTD (Activado = FE)
LED ROJO = PORTB 1
LED VERDE = PORTB 3
*/

#include <AVR/io.h>
#include <util/delay.h>
int main(void)
{
int sig = 0;
//Decicimos que puertos seran de salida y cuales de entrada
DDRB = 0xFF;
DDRD = 0x00;
//DDRC = 0xFF;
//Configuración del timer
TCCR1B |= (1 << CS10);
//PORTC = 0x00;
while(1)
{
//Si presionamos el pulsador...
if ((PIND == 0xFE) & (sig == 0))
{
//encendemos los leds i los apagamos en su momento indic
ado
PORTB = 0x0A;
// TIEMPO DE ESPERA 2mS
while (TCNT1 < 2000)
{
}
//Reiniciamos el temporizador
TCNT1 = 0;
//Apagamos el led verde
PORTB = 0x02;
//
// TIEMPO DE ESPERA 2100uS
while (TCNT1 < 100)
{
}
//Apagamos el led rojo (todos)
PORTB = 0x00;
//Con esta variable 'alta', evitaremos entrar de nuevo e
n el bucle si no hemos soltado antes el pulsador
sig = 1;
}
//En soltar el pulsador damos acceso de nuevo a la sentencia ant
erior
if (PIND == 0xFF)
{
sig = 0;
TCNT1 = 0;
}
}
}