MiloPS3 Ti to vysvětlil naprosto správně, ale možná pro začátečníka trošku komplikovaně. Možná bude pro začátek stačit, když si zapamatuješ, že každé instrukci volání podprogramu (CALL) musí (!!!) odpovídat jedna instrukce návratu z podprogramu (RETURN). Toto samozřejmě platí i pro “vnořené” podprogramy, kdy z jednoho vyvolaného podprogramu voláš další. Potom se nejprve provede návrat z toho “vnořeného” podprogramu a posléze z toho, který jsi volal před ním jako první.
Instrukce RETURN nedělá nic jiného, než že do čítače programu (PC) vloží tzv. návratovou adresu (= adresa o 1 větší, než je ta, odkud jsi podprogram volal) a řízení programu se tedy přenese do toho místa, odkud byl podprogram volán (přesněji o 1 adresu dále,. samozřejmě).
A teď to trošku zesložitím :
Takto vnořených podprogramů můžeš mít pouze tolik, kolik se vejde do tzv. zásobníku návratovýdh adres (STACK) - ten je u různých řad uC různě velký, např. u řady PIC16Fxx má velikost 8 bytů (= 8 úložišť pro návratové adresy = max. 8 vnořených podprogramů), u řady PIC10Fxx už ale jen 2 byty (!!), tam může už snadno dojít k tzv. přetečení zásobníku návratových adres, což má zpravidla za následek zhroucení programu (a někdy i programátora . Vyšší řady PIC mají kapacitu zásobníkové paměti vyšší.
Vyšší řady PIC (tuším, že od řady PIC18Fxx) mají jeden stavový bit, který hlídá přetečení tohoto zásobníku a je takto možno těmto nepříjemným situacím předejít. U nižších řad PIC není přetečení zásobníku nijak indikováno a je tedy nutno na to myslet. Chyby, způsobené přetečením tohoto zásobníku jsou někdy dost těžko odhalitelné.
To co tu napsal Vlasta ve 3 odstavcich je presne napsano v MUP 2 i s prikladama,a strucne sem to vzal proto ze neni problem MUP 1,2 sehnat, a napsat 4 odstavce plne vystihujici tema aby to nekdo pochopil krome me je pro me docela problem (nic ve zlim Vlasto)
ohlerne zapisu do EE , zaloz nove vlakno at to tu neplacame pres sebe
Bude lepší, pokud založíš nové téma, které se bude jmenovat přesně tak, jak tento tvůj dotaz. Ještě jednodušší ale bude použít Google. Jedná se o začátečnickou otázku, která je probraná snad v každé výuce programování mikrokontrolérů.