Generátor: Generovaní sinusového a trojúhelníkového průběhu

Martin to už mezitím připsal a vysvětlil, ale nechám to beze změn:

hypnoz: jedna z chyb (jak psal už Martin) - křížové volání funkcí sinu1 a trojl. Při volání funkce se ukládá do zásobníku návratová adresa. Když funkce voláš křížově mezi sebou, ukazatel zásobníku se neustále posouvá. Což po pár vnoření bude mít za následek přetečení zásobníku a zhroucení programu.

Jiná chyba - PIND vrací stav bitů portu D, nelze proto jednoduše testovat stisk tlačítka (PIND==0x04). Je nutné testovat stav jen jednoho bitu.

Dále - tlačítko nastavuje stav bitu po celou dobu držení. Nelze tedy testovat stisk tlačítka jednoduchou podmínkou, mělo by to za následek neustálé překlápění stavu po celou dobu držení (ve Tvém případě vnořování do funkcí s následkem zahlcení zásobníku ihned po stisku). Je nutno testovat změnu stavu bitu a navíc by bylo vhodné ošetřovat ještě zákmity tlačítka.