' 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.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4
'--------------------------- I/O -----------------------------------------
Ddrd = &B01000011
Ddrb.0 = 1
Ddrb.2 = 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.5 = 1 Then Portb.0 = 1 Else Portb.0 = 0
Waitms 200
Loop
'----------------------- Interrupt Routine für Timer1 -------------------------
Timer_eins:
Toggle Portb.2 'beim Meinen Zähler
Return