Wie macht man alle sec einen Interupt?
-
Hi,
ich habe an die serielle Schnittstelle ein Thermostat angeschlossen. Nun will ich ungefähr jede Sekunde die aktuelle Themperatur auslesen und sie auf dem Bildschirm ausgeben.
Gibt es irgendeinen Interrupt, der jede Sekunde eine Interuptserviceroutine auslöst?
Das Program soll unter DOS laufen.MfG
Cybergiovanni
-
soviel ich weiß, sind diese set vector sachen compilerabhängig.
vielleicht kann eher jemand helfen, wenn er weiß, welchen compiler du fährst.. ich glaube der borland oder watcom bieten sich an.. nach kurzer recherche im netz
-
Ich verwende den antiquen Borland C++ 3.1 Compiler. Vielleicht kennt den ja noch einer, von den eingefleischten Programmierer.
ciao
-
Es gibt mehrere Möglichkeiten, das zu tun:
1. Du verbiegst den Timer-Interrupt 8h auf Deine eigene Routine. Dieser Interrupt wird 18,2 mal pro Sekunde aufgerufen. Du musst aber dafür sorgen, dass der originale Interrupt weiterhin aufgerufen wird.
2. Du kannst auch den Interrupt 1Ch verbiegen. Dieser ist speziell für solche Sachen vorgesehen. Weiterleitung des Aufrufes ist auch hier notwendig.
3. Mit einer Routine im Interrupt 1Ah kann man eine Alarm-Zeit einstellen. Nach Ablauf dieser Zeit wird ein Byte im Hauptspeicher verändert. Details kann ich Dir darüber im Moment nicht geben, weil ich erst zu Hause in meinem 'PC Intern' nachschlagen muss.Für die Methoden 1 & 2 kann man auch noch den Timer-Chip umprogrammieren, so dass eine Frequenz von - meinetwegen - 1000 Ticks pro Sekunde anliegt. Das hat man benutzt, um MOD-Player u.ä. zu programmieren.
-
Und warum muss man das weiterleiten bei 1 & 2?
-
@WhoIam: Vielleicht sind noch andere Programme im Speicher geladen, die diesen Timer-Interrupt auf ihre eigenen Routinen verbogen haben, installiert. Stichwort: TSR-Programme wie print, usw.
-
habe davon zwar wenig ahnung, aber vielleicht hilft die seite
http://www.embeddedx86.com/support/downloads_code.phpund dann vor allem das timer 1 and IRQ10 zip
-
Vielleicht hilft dir das mit der Zeitgebung:
http://www.datasource.de/programmierung/tab15_biosint1Au1Bu1Ch.htm
MfG SideWinder
-
Oh je,
Dankeschön für die zahlreichen Beiträge. Am Montag werde ich es mal mit dem Interrupt 1Ah ausprobieren. Allen ein schönes Wochenende und nicht zu viel saufen, damit ihr am Montag wieder fit seids.
adios