/*************************************************
PROGRAMAS DE EJEMPLO PARA EL ATtiny2313 - 20PU.
EJERCICIO Nº 5: juego de luces 3
PROGRAMADOR: Moyano Jonathan.
Fecha: 2011.
Programa: Juego de luces según sea presionado o no un pulsador
conectado al puerto D del microcontrolador.
Cristal: 12Mhz.
Programador: USBtinyISP.
************************************************/
#include <avr/io.h> // Definiciones de hardware.
#include <util/delay.h> // Librería para generar retardos.
#include <avr/pgmspace.h> // Librería para trabajar con la memoria flash
// del microcontrolador.
// Secuencias programadas en la memoria de programa del microcontrolador.
const int a[5] PROGMEM= {0x01,0x02,0x03,0x04};
const int b[5] PROGMEM= {0x04,0x03,0x02,0x01};
const int c[5] PROGMEM= {0x03,0x06,0x0C,0x18};
// Pulsador conectado al pin PD3 del micro.
#define PULSADOR 3
int main(void) {
DDRD &= ~(_BV(PULSADOR)); // PIND3 como entrada.
DDRB = 0x0F; // PB0-PB3 salidas.
PORTB = 0x00; // Ponemos todas las salidas a 0.
uint8_t i; // Variable auxiliar.
while(1) {
if(bit_is_clear(PIND, PULSADOR)) {
for(i=0;i<=4;i++) {
PORTB = pgm_read_byte(&a[i]);
_delay_ms(50);
}
for(i=0; i<=4; i++) {
PORTB = pgm_read_byte(&c[i]);
_delay_ms(50);
}
}
else
for(i=0; i<=4; i++) {
PORTB = pgm_read_byte(&b[i]);
_delay_ms(50);
}
}
}