Код: Выделить всё
#include <mega8515.h>
#include <delay.h>
void Seriya_1(void) //Просто мигают все светодиоды
{
PORTB=0xFF;
PORTD=0xFF;
PORTC=0xFF;
delay_ms(50);
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
delay_ms(50);
}
void Seriya_2(void) //моргают через один
{
PORTB=0b01010101;
PORTD=0b01010101;
PORTC=0b01010101;
delay_ms(40);
PORTB=0b10101010;
PORTD=0b10101010;
PORTC=0b10101010;
delay_ms(40);
}
void Seriya_3(void) //бегущий огонек по кругу
{
unsigned char b;
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
for (b=0; b<=7; b++)
{
PORTB=1<<b;
delay_ms(20);
}
PORTB=0x00;
for (b=0; b<=7; b++)
{
PORTD=1<<b;
delay_ms(20);
}
PORTD=0x00;
for (b=0; b<=7; b++)
{
PORTC=1<<b;
delay_ms(20);
}
PORTC=0x00;
}
void Seriya_4(void) //постепенное заполнение с верху вниз и потом моргание
{
unsigned char a,b2;
b2=7;
PORTB|=1<<0;
for (a=0; a<=b2; a++)
{
PORTB|=1<<(a+1);
PORTC|=1<<(b2-a);
delay_ms(50);
}
for (a=0; a<=4; a++)
{
PORTD|=1<<a;
PORTD|=1<<(b2-a);
delay_ms(50);
}
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
for (a=0; a<3; a++)
{
PORTB=0xFF;
PORTD=0xFF;
PORTC=0xFF;
delay_ms(50);
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
delay_ms(50);
}
// }
}
void Seriya_5(void) // бегущий огонек по 3
{
unsigned char a;
for (a=0; a<=5; a++)
{
if (a<5)
PORTB|=1<<a;
PORTB|=1<<(a+1);
PORTB|=1<<(a+2);
delay_ms(20);
PORTB=0x00;
}
for (a=0; a<5; a++)
{
if (a<5)
PORTD|=1<<a;
PORTD|=1<<(a+1);
PORTD|=1<<(a+2);
delay_ms(20);
PORTD=0x00;
}
for (a=0; a<5; a++)
{
if (a<5)
PORTC|=1<<a;
PORTC|=1<<(a+1);
PORTC|=1<<(a+2);
delay_ms(20);
PORTC=0x00;
}
}
void Seriya_6(void) //бегущий огонек заполняет сердце и на втором круге опустошает его
{
unsigned char b;
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
for (b=0; b<=7; b++)
{
PORTB|=1<<b;
delay_ms(20);
}
for (b=0; b<=7; b++)
{
PORTD|=1<<b;
delay_ms(20);
}
for (b=0; b<=7; b++)
{
PORTC|=1<<b;
delay_ms(20);
}
delay_ms(50);
PORTB=0xff;
PORTD=0xff;
PORTC=0xff;
for (b=0; b<=7; b++)
{
PORTB&=~(1<<b);
delay_ms(20);
}
for (b=0; b<=7; b++)
{
PORTD&=~(1<<b);
delay_ms(20);
}
for (b=0; b<=7; b++)
{
PORTC&=~(1<<b);
delay_ms(20);
}
}
void main(void)
{
unsigned char a;
// Port A initialization
PORTA=0xFF;
DDRA=0x00;
// Port B initialization
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
PORTD=0x00;
DDRD=0xFF;
a=0;
while (1)
{
//Seriya_1();
//Seriya_2();
//Seriya_3();
//Seriya_4();
//Seriya_5();
for (a=0; a<3; a++)
Seriya_1();
for (a=0; a<3; a++)
Seriya_3();
for (a=0; a<3; a++)
Seriya_6();
for (a=0; a<3; a++)
Seriya_4();
for (a=0; a<3; a++)
Seriya_5();
for (a=0; a<3; a++)
Seriya_2();
}
}