ich wollte zuerst sowas hier vorschlagen
Bild hier  
aber da du die taktfrequenz angezeigt haben willst, kannst du den atmega als signalgenerator verwenden. der kennt dann auch die frequenz und kann diese auf einem LCD anzeigen.

hier ein bespiel fürs AVR Studio:
Code:
 .NOLIST                    ; List-Output unterdrücken
 .INCLUDE <m8def.inc>       ; das gibt es für jeden Controllertyp
 .LIST                      ; List-Output wieder aufdrehen
 .CSEG                      ; was nun folgt, gehört in den FLASH-Speicher


 ;------------------------------------------------------
 ;     Start Adresse 0000
 ;------------------------------------------------------
 RESET:
     rjmp INIT           ; springen nach "INIT"

 ;------------------------------------------------------
 ;     ISR VECTORS
 ;------------------------------------------------------
 ;    .....    hier kommen dann die Sprungadressen für die Interrupts rein
 ;             dazu kommen wir noch


 .ORG INT_VECTORS_SIZE    ; dadurch haben wir für die Vektoren Platz gelassen
 INIT:  
 ;------------------------------------------------------
 ;     INITIALIZE
 ;------------------------------------------------------
     ldi r24,high(RAMEND)     ;Stack Pointer setzen 
     out SPH,r24              ; "RAMEND" ist in m8def.inc (s.o.) festgelegt
     ldi r24,low(RAMEND)      ; 
     out SPL,r24              ;

 ;------------------------------------------------------
 ;   eigene Initialisierungen
 ;------------------------------------------------------
  LDI R24, 255          ; der wert "255" = FF ins allgemeine Register R24
  OUT DDRB, R24         ; das kommt ins Controll-register f. PortC
                        ; dadurch ist das Port auf OUTPUT gestellt

 ;------------------------------------------------------
 ;   HAUPTSCHLEIFE
 ;------------------------------------------------------
 Hauptschleife: 
LDI R24, 255
OUT PORTB, R24
; ============================= 
;    delay loop generator 
;     1000000 cycles:
; ----------------------------- 
; delaying 999999 cycles:
          ldi  R17, $09
WGLOOP0:  ldi  R18, $BC
WGLOOP1:  ldi  R19, $C4
WGLOOP2:  dec  R19
          brne WGLOOP2
          dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
; ----------------------------- 
; delaying 1 cycle:
          nop
; ============================= 
LDI R24, 0
OUT PORTB, R24
; ============================= 
;    delay loop generator 
;     1000000 cycles:
; ----------------------------- 
; delaying 999999 cycles:
          ldi  R17, $09
WGLOOP3:  ldi  R18, $BC
WGLOOP4:  ldi  R19, $C4
WGLOOP5:  dec  R19
          brne WGLOOP5
          dec  R18
          brne WGLOOP4
          dec  R17
          brne WGLOOP3
; ----------------------------- 
; delaying 1 cycle:
          nop
; ============================= 
        rjmp Hauptschleife         ; immer wiederholen 

 ;------------------------------------------------------
 ;   ENDE
 ;------------------------------------------------------
 Ende:  
        rjmp Ende
die warteschleifen musst du natürlich anpassen, hier schaltet er für 1 mio. takte (bei 1MHz 1Sekunde) den port auf HIGH, dann 1 mio. takte auf low.

bitte nicht über den code schimpfen, das war mein erstes asm proggie, zusammengestöpselt aus beispiel-code..

gruesse, die katz