Está en la página 1de 4

/*

* intento_1_respaldo_alimentacion_datos.cpp
*
* Created: 07/05/2017 17:04:20
* Author : 7mo
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#include <compat/deprecated.h>
#include <avr/eeprom.h>
//eeprom
//conttotal=numero total de personas
//contveces=numero total de veces que se va la alimentacion primaria
uint8_t EEMEM dato1,dato2,dato3;
double capturo,tiempo;
unsigned int cont,conta,contb,conttotal,contveces,valor,d1,d2,d3,d4,aux,aux1,dat
o; //conta=numero de personas
unsigned int dd1,dd2,dd3,dd4,auxxx;
unsigned int dat,direc=0,msm,auxi;
unsigned int barrido;
unsigned int opcion;
//auxxx=0;
char tabla[]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,
0b01111101,0b00000111,0b01111111,0b01101111};
char tabla1[]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101
,0b01111101,0b00000111,0b01111111,0b01101111};
//SUbrutinas
void config(void);
void programa(void);
int main(void)
{
config();
while(1)
{
programa();
//TODO:: Please write your application code
}
}
void config(void)
{
//configuro puertos
DDRA=255; PORTA=0;
DDRB=0b11111011; PORTB=0b00000100;
DDRC=0B00000111; PORTC=0;
DDRD=0B00000000; PORTD=255;
//CONF TIMER EVENTOO CAPTURA
TCCR1A=0;
TCCR1B=0B01000101;
TCNT1=0;
TIMSK1=0B00100000;
//Conmutando se prenda un led
//TIMER INTERMITENCIA
TCCR0A=0B00100010;
TCCR0B=0B00000000;
OCR0A=255;
//CONF INTERRUPCIONES
EICRA=0B00100010;
EIMSK=0B00000101;
/*
EICRA=0B00000010;
EIMSK=0B00000001;
*/
EIFR=(7<<0);

sei();
//Reseteo
MCUSR&=~(1<<0); //PONGO UN 0L EN LA POSICION 0 BAJO PORF
if(MCUSR>1)
{
dat=eeprom_read_byte(&dato3)+1;
eeprom_write_byte(&dato3,dat);
MCUSR&=~(1<<1);
}
conttotal=eeprom_read_byte(&dato1); //NUMERO DE PERSONAS TOTAL QUE INGRESO////pr
actica
barrido=dat;//rst manua
contveces=contveces;//conmutacion
opcion=0;///////////////////////////////////////////////////////////////////////
///
}
void programa(void)
{
////////////////////////////////////////////////////////////////////////
////////////////////////////////
_delay_ms(10);
if (auxxx==0)
{
barrido=contveces;
//PORTB=0b00010000;
}
if (auxxx==1)
{
barrido=dat;
//auxxx=0;
//opcion=0;
//PORTB=0b00100000;
}
if (auxxx==2)
{
//PORTB=0b001000000;
auxxx=0;
}

////////////////////////////////////////////////////////////////////////
////////7

dato=barrido;//////////////////////////////////////7contveces
//PORTA=dato;
d1=dato%10;
aux=dato/10;
d2=aux%10;
aux1=aux/10;
d3=aux1%10;
d4=aux1/10;
d1=tabla[d1];
d2=tabla[d2];
d3=tabla[d3];
d4=tabla[d4];
PORTA=d1;
PORTC=0b11111110;
_delay_ms(7);
PORTA=0;
PORTC=255;
PORTA=d2;
PORTC=0b11111101;
_delay_ms(7);
PORTA=0;
PORTC=255;
PORTA=d3;
PORTC=0b11111011;
_delay_ms(7);
PORTA=0;
PORTC=255;
}
ISR(TIMER1_CAPT_vect)
{
TCCR1B=0;
capturo=ICR1;
TCNT1=0;
tiempo=capturo*1024*0.000000125;
if (tiempo>0.0077&&tiempo<0.0097)
{
PORTB=0b00000001;
TCCR0B=0B00000000;
}
else
{
PORTB=0b00000010;
contb++;
contveces=eeprom_read_byte(&dato2)+1;
eeprom_write_byte(&dato2,contveces);
TCCR0B=0B00000101;
}
TCCR1B=0B01000101;
}
ISR(INT0_vect)
{
auxxx=auxxx+1;
_delay_ms(100);
}

ISR(INT2_vect)
{
auxi=0;
contveces=0;
dat=0;
eeprom_write_byte(&dato1,auxi);
eeprom_write_byte(&dato2,auxi);
eeprom_write_byte(&dato3,auxi);
_delay_ms(100);
}

También podría gustarte