' 31.01.2017
'
' Am Eingang Pin 11(T1) soll eine angelegte Frequenz gemessen werden
' Es wird für diesen Eingang kein PullUp benötigt um die Eingangsempfindlichkeit
' zu erhöhen
' Benutzt wird ein 16 Mhz Quarz um eine möglichst hohe Frequenz messen zu können.

' Timereingang T1 ist der Messeingang, dort wird der Timer hochgezählt, der dann
' bei Überlauf den Zustand der Grünen Led wechselt.

'-------------------------------------------------------------------------------
' An Portd.0= Rote Led
' An Portb.0= grüne Led

'--------------------- Allgemeine Prozessor Konfiguration ----------------------
$regfile "m8def.dat"          'Definiert den Atmega als Atmega8
$crystal = 16000000           'Gibt die Quarzfrequenz an in Herz
$hwstack = 32                 'Default use 32 Hardware reservierte Speicher
$swstack = 10                 'Default Software resvierung Speicher
'--------------------- Konfiguration fürs Display-----------------------------
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portc., Db5 = Portc., Db6 = Portc., Db7 = Portc., Rs = Portc., E = Portc.4
'---------------------------    I/O   -----------------------------------------
Ddrd = &B01000011
Ddrb.= 1
Ddrb.= 1

'--------------------------- Variablen definieren -----------------------------

'--------------------------- Timer 1 Konfigurieren ----------------------------
' Konfiguriert Timer 1 als Zähleingang

On Timer1 Timer_eins          ' Legt fest in welche Unterroutine Timer1 springen soll
                           ' wenn er einen überlauf feststellt

Tccr1a = &B00000000
Tccr1b = &B00000111           ' Externer Takt an T1 wird gezählt bei steigender Flanke
Timsk = &B00000101            ' Interrupt für Timer 0 und 1 einschalten
Sreg = &B10000000             ' Interrupts Global einschalten


'--------------------------- Version anzeigen ---------------------------------
Cls
Locate 1 , 1
Lcd "Timer 1 Counter"
Locate 2 , 1
Lcd "Version 1A"
Locate 3 , 1
Lcd "Jan. - 2017"
Wait 5

'--------------------   H a u p t p r o g  r a m m  ---------------------------
Do
Cls
Lcd "T1= " ; Timer1

If Pind.= 1 Then Portb.= 1 Else Portb.= 0

Waitms 200

Loop
'----------------------- Interrupt Routine für Timer1 -------------------------
Timer_eins:
Toggle Portb.2                'beim Meinen Zähler
Return