#include <avr/io.h>
#include <stdlib.h>
#include <string.h>
#include <util/delay.h>
#include <time.h>
#ifndef _BV
#define _BV(bit) (1<<(bit))
#endif
#ifndef sbi
#define sbi(reg,bit) reg |= (_BV(bit))
#endif
#ifndef cbi
#define cbi(reg,bit) reg &= ~(_BV(bit))
#endif
#ifndef tbi
#define tbi(reg,bit) reg ^= (_BV(bit))
#endif
int main() {
unsigned long czas_a = 0;
unsigned long czas_z = 0;
unsigned long czas_r = 0;
Serial.begin(9600);
int arg=0;
cbi(DDRC,PC1);
sbi(PORTC,PC1);
cbi(DDRC,PC2);
sbi(PORTC,PC2);
cbi(DDRC,PC3);
sbi(PORTC,PC3);
cbi(DDRC,PC4);
sbi(PORTC,PC4);
sbi(DDRD,PD5);
sbi(DDRD,PD6);
sbi(DDRD,PD7);
sbi(DDRB,PB0);
sbi(DDRB,PB1);
sbi(DDRB,PB2);
sbi(DDRB,PB3);
sbi(DDRB,PB4);
while(1){
if(bit_is_clear(PINC,PC1)){
sbi(PORTD,PD5);}
else
{
cbi(PORTD,PD5);
}
if(bit_is_clear(PINC, PC2)){
//arg=arg+1;
tbi(PORTD,PD6);
_delay_ms(500);
}
Serial.println(czas_a);
if(bit_is_clear(PINC,PC3))
{
czas_a = millis();
czas_r=czas_a-czas_z;
if(czas_r >= 500UL){
arg++;
czas_z=czas_a;}
switch (arg)
{
case 0:
sbi(PORTD,PD7);
break;
case 1:
cbi(PORTD,PD7);
sbi(PORTB,PB0);
break;
case 2:
cbi(PORTB,PB0);
sbi(PORTB,PB1);
break;
case 3:
cbi(PORTB,PB1);
sbi(PORTB,PB2);
break;
case 4:
cbi(PORTB,PB2);
sbi(PORTB,PB3);
break;
case 5:
cbi(PORTB,PB3);
sbi(PORTB,PB4);
break;
case 6:
cbi(PORTB,PB4);
}
}
if(bit_is_clear(PINC,PC4))
{
cbi(PORTD,PD7);
cbi(PORTB,PB0);
cbi(PORTB,PB1);
cbi(PORTB,PB2);
cbi(PORTB,PB3);
cbi(PORTB,PB4);
}
}
}