MCU2. Случайное мигание светодиодов под управлением микроконтроллера PIC

Написать программу, в которой реализуется алгоритм случайного мигания светодиодов в слове MIUZ.
В программе используются генератор случайных чисел rand() и операция «остаток от деления на 4». В результате этой операции получаем число m, которое принимает значения 0, 1, 2, 3. Именно такие значения может принимать остаток от деления произвольного числа на 4. Далее в программе используется оператор switch(m). В зависимости от значения m выполняются ветви оператора: case 0, case 1, case 2, case 3. В каждом операторе case используется своя конфигурация значений выводов порта D. В конце каждого оператора case обязательно должен присутствовать оператор break, который прерывает работу оператора switch(m). Задействовать в проекте микроконтроллер PIC16F877A.
Листинг программы (без конфигурационных битов) имеет вид:

#include <xc.h>
#define _XTAL_FREQ 8000000
#include<stdio.h>
#include<stdlib.h>
int rand();
void main(void) {
TRISB=0;
PORTB=0;
TRISC=0;
PORTC=0;
TRISD=0;
PORTD=0;
int i;
int m;
while(1)
{
PORTB=0b11110000;
PORTC=0b11111111;
PORTD=0b11111111;
__delay_ms(3000);
PORTB=0;
PORTC=0;
PORTD=0;
__delay_ms(500);
for (i=1; i<=15; i++)
{
m=rand()%4;
switch (m)
{
case 0:
{
PORTB=0b11110000;
PORTC=0b10101010;

PORTD=0b00001111;
__delay_ms(200);
break;
}
case 1:
{
PORTB=0b10100000;
PORTC=0b01010101;
PORTD=0b11110000;
__delay_ms(200);
break;
}
case 2:
{
PORTB=0b01010000;
PORTC=0b11001100;
PORTD=0b01010101;
__delay_ms(200);
break;
}
case 3:
{
PORTB=0b00110000;
PORTC=0b00110011;
PORTD=0b10101010;
__delay_ms(200);
break;
}
}
}
}
return;
}

Моделирование

Проводим отладку программы и добиваемся правильного функционирования программы. После этого прошиваем микроконтроллер и собираем действующий макет. Последовательность действий при прошивке микроконтроллера изложена в учебном пособии “Программирование микроконтроллеров” на данном сайте.