
Суть вот в чём, по нажатии на кнопку, строка из 5 светодиодов пробегает слева направо (т.е. сначала загорается один светодиод, гаснет, потом следующий, и так до последнего), после чего последний светодиод остаётся гореть. Потом нажимается кнопка снова, и опять всё повторяется, но кроме уже горящего 5го светодиода загорается ещё и 4й. И так пока не заполнится вся строка. Задача простенькая, но необходимо её сделать на автоматах Мили или Мура, а это нам плоховато объяснили. Я код набросал немного, но не знаю как сделать сумирование переменных, чтобы светодиоды загорались и горели в конце. Помогите пожалуйста. Заранее спасибо.
CODE
#include<LPC213x.h>
int main()
{
int ST=10000, N=2, L=0, i;
IODIR1 =(1<<16)+(1<<17)+(1<<18)+(1<<19)+(1<<20);
IOCLR1 =(1<<16)+(1<<17)+(1<<18)+(1<<19)+(1<<20);
IOSET1 =(1<<16);
while(1)
{
for(i=0; i<20000000; i++)
{
//Таймер(Граф1)
ST--;
if(ST==0)
{if(N==1){L++; ST=10000;} else ST=10000;}
//if(L==6) {L=1;}
//Направление перемещения(Граф2)
if(!(IOPIN0&(1<<10)))
{N=1;}
//Условия перемещения(Граф3)
//Прямой ход
if(N==1) {
if((L==1))
{if((IOPIN1&(1<<16))){IOSET1=(1<<17); IOCLR1=(1<<16); N=2;}}
if((L==2))
{if((IOPIN1&(1<<17))){IOSET1=(1<<18); IOCLR1=(1<<17); N=2;}}
if((L==3))
{if((IOPIN1&(1<<18))){IOSET1=(1<<19); IOCLR1=(1<<18); N=2;}}
if((L==4))
{if((IOPIN1&(1<<19))){IOSET1=(1<<20); IOCLR1=(1<<19); N=2;}}
if((L==5))
{if((IOPIN1&(1<<20))){IOSET1=(1<<16); IOCLR1=(1<<20); N=2;}}
if (L==6) {L=1; N=0;}
}
}
}
}
int main()
{
int ST=10000, N=2, L=0, i;
IODIR1 =(1<<16)+(1<<17)+(1<<18)+(1<<19)+(1<<20);
IOCLR1 =(1<<16)+(1<<17)+(1<<18)+(1<<19)+(1<<20);
IOSET1 =(1<<16);
while(1)
{
for(i=0; i<20000000; i++)
{
//Таймер(Граф1)
ST--;
if(ST==0)
{if(N==1){L++; ST=10000;} else ST=10000;}
//if(L==6) {L=1;}
//Направление перемещения(Граф2)
if(!(IOPIN0&(1<<10)))
{N=1;}
//Условия перемещения(Граф3)
//Прямой ход
if(N==1) {
if((L==1))
{if((IOPIN1&(1<<16))){IOSET1=(1<<17); IOCLR1=(1<<16); N=2;}}
if((L==2))
{if((IOPIN1&(1<<17))){IOSET1=(1<<18); IOCLR1=(1<<17); N=2;}}
if((L==3))
{if((IOPIN1&(1<<18))){IOSET1=(1<<19); IOCLR1=(1<<18); N=2;}}
if((L==4))
{if((IOPIN1&(1<<19))){IOSET1=(1<<20); IOCLR1=(1<<19); N=2;}}
if((L==5))
{if((IOPIN1&(1<<20))){IOSET1=(1<<16); IOCLR1=(1<<20); N=2;}}
if (L==6) {L=1; N=0;}
}
}
}
}