Для реализации генерации случайного числа мы воспользуемся функцией rand(). Это конечно псевдо случайное число — но все же.
В программе мы будем использовать функцию rand() которая генерирует псевдо случайные числа.
ранд()
имя существительное: рант
#include <avr/io.h>
#include "led.h" // подключаем наш заголовочный файл
#include "stdlib.h" // Функция для генератора случайных чисел
#define F_CPU 1000000UL
unsigned int k;
int main(void){
/* Replace with your application code */
init ();
while (1){
k=1000*(unsigned int)rand();// генерируем задержку случайным образом
miganie(k);
}
}
void init (void){ // инициализация ножек порта D
DDRD =0b0011111; //ножки D0-D4 выход
PORTD =0b1100000;// ножки D0-D4 - настроены на 0
}
void delay (unsigned int y){// задержка
unsigned int i=0;
unsigned int w=0;
for (w=0;w<=4;w++){
for (i=0;i<=y;i++) {;}
}
}
void miganie (unsigned int t){// мигание светодиодами по очереди
HL1_on;HL2_off;HL3_off;HL4_off;HL5_off;
delay(t);
HL1_off;HL2_on;HL3_off;HL4_off;HL5_off;
delay(t);
HL1_off;HL2_off;HL3_on;HL4_off;HL5_off;
delay(t);
HL1_off;HL2_off;HL3_off;HL4_on;HL5_off;
delay(t);
HL1_off;HL2_off;HL3_off;HL4_off;HL5_on;
delay(t);
}
#ifndef LED_H_
#define LED_H_
// макросы
#define HL1_on PORTD|=(1<<PD0)
#define HL1_off PORTD&=~(1<<PD0)
#define HL2_on PORTD|=(1<<PD1)
#define HL2_off PORTD&=~(1<<PD1)
#define HL3_on PORTD|=(1<<PD2)
#define HL3_off PORTD&=~(1<<PD2)
#define HL4_on PORTD|=(1<<PD3)
#define HL4_off PORTD&=~(1<<PD3)
#define HL5_on PORTD|=(1<<PD4)
#define HL5_off PORTD&=~(1<<PD4)
#endif /* LED_H_ */