84 lines
1.5 KiB
C
84 lines
1.5 KiB
C
#include <stdint.h>
|
|
#include <avr/io.h>
|
|
#include <util/delay.h>
|
|
#include <avr/interrupt.h>
|
|
|
|
volatile uint8_t led[3] = {(1<<PB3)|(1<<PB0),(1<<PB4)|(1<<PB0),(1<<PB5)|(1<<PB0)};
|
|
volatile uint8_t motor[6] = {
|
|
(1<<PD4)|(1<<PD1),(1<<PD2)|(1<<PD1),
|
|
(1<<PD2)|(1<<PD5),(1<<PD0)|(1<<PD5),
|
|
(1<<PD0)|(1<<PD3),(1<<PD4)|(1<<PD3)
|
|
|
|
};
|
|
|
|
void runon() {
|
|
for(uint8_t j=0;j<2;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(100);
|
|
}
|
|
}
|
|
for(uint8_t j=0;j<4;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(50);
|
|
}
|
|
}
|
|
for(uint8_t j=0;j<8;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(20);
|
|
}
|
|
}
|
|
for(uint8_t j=0;j<16;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(10);
|
|
}
|
|
}
|
|
for(uint8_t j=0;j<32;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(5);
|
|
}
|
|
}
|
|
for(uint8_t j=0;j<64;j++) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(3);
|
|
}
|
|
}
|
|
}
|
|
|
|
ISR(PCINT1_vect) {
|
|
PORTD = 0;
|
|
while(1) {
|
|
_delay_ms(1);
|
|
|
|
}
|
|
}
|
|
|
|
int main(void) {
|
|
cli();
|
|
DDRB |= (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB0);
|
|
DDRD |= 0b11111111;
|
|
PORTB |= (1<<PB0);
|
|
|
|
sei();
|
|
runon();
|
|
|
|
while(1) {
|
|
for(uint8_t i=0;i<6;i++) {
|
|
PORTB = led[i%3];
|
|
PORTD = motor[i];
|
|
_delay_ms(2);
|
|
}
|
|
}
|
|
}
|