както ви бях обещал, ето и сорс кода за примера с инкреметирането на променлива при натискане на бутон от предния пример. другите файлове във проекта са същите. тук е само main.c файла със кода за подаване на командата от бутона и промяната на стойността на номера на програмата. разгледайте внимателно кода, като отбележите че за да промените ефекта със следващия ще трябва да задържите бутона докато свърши текущия ефект. това е така защото по време на изпълнение на текущия ефект не се прави проверка дали е натиснат бутона.
за това докато не свърши даден ефект във текущата подпрограма IF основната програма MAIN не прави проверка дали е натиснат бутона.
ако във вашите програми се налага да се променят подпрограмите дори и по време на изпълнение на текущата подпрограма, ще се наложи да използвате хардуерно прекъсване на бутона, или така наречените ПРЕКЪСВАНЕ ПРИ ПРОМЯНА НА СЪСТОЯНИЕТО / INTERRUPT OF CHANGE - IOC/. тази хардуерна функция я имат повечето нови процесори на почти всички пинове, като това е важно за приложения при бързи управления на механики, възли и многопоточни линии от машинни възли.
как се работи със хардуерните прекъдвания ще разгледаме във следващите уроци за програмирането на процесорите.
unsigned char program = 1; //number of start efect
void main(void) // start main function
{ init_cpu(); // hardware initialization
// of cpu modules
while(1) // start loop when 1=1 is always true
{ if(button1 == 1) // chek button if is pressed
{ __delay_ms(200); // wait for prove button
program = program + 1;} // increment program value
if(program > 5) // check value for max edge
{program = 1;} // if is max set to start count