Da kann ich dir leider weniger helfen, programmiere eigentlich nur in Assembler.

Das Hoch- und Runterlaufen kannst du evtl. mit einem Timer machen, wenn du ihn vorlädst! Denk der 16-Bit-Timer 1 vom Mega16 sollte da helfen!
MFG Mixer