das einfachste wäre wohl einen der int. Timer zu verwenden...

20 MHz --> 20.000.000 Hz --> bis 20.000 zählen für 1 ms
also den 16 Bit-Zähler bis 20k (- 1) - Abweichung durch Arbeit zählen lassen

ist nicht so genau, wenn der Quarz nicht so genau ist...

oder du nimmst nen Uhrenquarz, der ist genauer, aber dafür dann das Problem, dass du nie auf glatte ms kommst...
müsste man dann einen Korrekturcode einbauen, damit das ganze dann besser hinkommt... gerade zu faul da die Abweichungen auszurechnen, aber die wird größer sein als oben - auch wenn die Korrektur perfekt läuft...

glaube nicht, dass der Oszi wesentlich besser ist als der Crystal... außerdem wird das ganze gleich ein bisschen mehr Strom fressen...?!?