Sei sulla pagina 1di 7

/*

* GccApplication1.c

* Created: 26.10.2015 18:28:11

* Author: Admin

*/

#include "Global.h"

#include <avr/io.h>

#include <util/delay.h>

#include <avr/interrupt.h>

enum

init=0,

introducere_parola,

parola_1,

parola_2,

parola_gresita

};

static int aux=0;

#define punct 0x7F

#define nimic 0xFF

#define litP 0x8C

#define linie 0xBF


unsigned char
cifr[14]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,punct,linie,lit
P,nimic};

unsigned char digit[4]={0xFE,0XFD,0XFB,0XF7};

unsigned char val_digit[4]={12,10,13,8};

int mode=init;

int i,j,k;

void afisare(void)

static char con=0;

PORTB=digit[con];

PORTC=cifr[val_digit[con]];

con=(con+1)%4;

void init_Timer0()

TCCR0=0X0B;

TCNT0=0;

OCR0=250;

TIMSK=0X02;

TIFR=0X02;

void init_Timer1()

ICR1=800;

TCCR1A=0XA2;
TCCR1B=0X19;

TCNT1=0X0000;

OCR1A=239;

OCR1B=706;

void init_Timer2()

TCCR2=0X69;

OCR2=125;

ISR(TIMER0_COMP_vect)

static int contor=0;

static int stare_introducere=1;

static int stare_but=0,stare_but1=0;

int temp=0;

temp=PINA;

contor=(contor+1)%1000;

switch(mode)

case init:

if(contor<500)

val_digit[0]=11;
val_digit[1]=11;

val_digit[2]=11;

val_digit[3]=11;

else

val_digit[0]=13;

val_digit[1]=13;

val_digit[2]=13;

val_digit[3]=13;

if((temp&0x01)==0)

mode=introducere_parola;

val_digit[0]=12;

val_digit[1]=10;

val_digit[2]=13;

val_digit[3]=13;

break;

case introducere_parola:

if(stare_introducere<4)

{
if(contor<500)

val_digit[stare_introducere]=10;

else

val_digit[stare_introducere]=13;

if((temp&0x02)==0)

if(stare_introducere<4)

stare_introducere+=4;

if(stare_but==0)

stare_but=1;

val_digit[stare_introducere%4]=
(val_digit[stare_introducere%4]+1)%10;

else

stare_but=0;

if((temp&0x01)==0)
{

if(stare_but1==0)

stare_but1=1;

stare_introducere=(stare_introducere+1)%4;

else

stare_but1=0;

break;

afisare();

}
int main(void)

PORTC=0XFF;

DDRC=0XFF;

PORTB=0X00;

DDRB=0XFF;

DDRA=0;

PORTA=0xFF;

init_Timer0();

sei();

while(1)

Potrebbero piacerti anche