Projekt: Mikroprozessortechnik

Größe: px
Ab Seite anzeigen:

Download "Projekt: Mikroprozessortechnik"

Transkript

1 Berufsakademie Stuttgart - Außenstelle Horb Staatliche Studienakademie University of Cooperative Education Projekt: Mikroprozessortechnik Messung von Blutdruck und Herzfrequenz P r o t o k o l l z u m P r o g r a m m e n t w u r f Autor Dozent Alexander Carls Prof. H. Trück Version Datum Ersteller / Bearbeiter Alexander Carls

2 2 Inhalt 2. Allgemeiner Programmablaufplan Programmspeicherplan Interner Speicherplan Externer Speicherplan Grundlegende Überlegungen zur Ermittlung und Berechnung der geforderten Werte Herzfrequenz Systole / Diastole Division Bit / 16 Bit Divison durch Subtraktion Bit / 8 Bit Division Erkennung von Systole und Diastole Mittelwertberechnung Initialisierungen ASCII Ausgabe: Ausgabe der Herzfrequenz Ausgabe des Blutdrucks Timer2 Interrupt Externe Interrupts Externer Interrupt 3 Herzschlagflankenerkennung Externer Interrupt 6 Taster für Mittelwertausgabe A/D Messung mit 10 Bit Auflösung Tests C-Code für Logic Analyzer Teststrategie Bedienungsanleitung Abschluss Warum kein Unterprogramm für 16 Bit Division und ASCII Ausgabe? Fazit Quellenangabe...40

3 3 2. Allgemeiner Programmablaufplan Grafik 1.0: Allgemeiner PAP

4 4 3. Programmspeicherplan Adresse Kommentar 0000H 0001H Überspringe die Interruptadressbereiche 0002H - 002AH frei 002BH 0043H Timer2 Interruptroutine 0044H 0052H frei 0053H 0059H Externer Interrupt 3 Routine (Teil 1) 0060H 006AH frei 006BH 00CEH Externer Interrupt 6 Routine 00CFH 03FFH frei 0400H 0414H Fortführung der Interrupt 3 Routine, da erster Teil sonst in anderen Interrupt überläuft (Teil 2) 0415H 05FFH frei 0600H 063BH Initialisierung und Warten auf A/D Wandlungsergebnis (Hauptprogramm) 063CH 06FF frei 0700H 072BH Unterprogramm zur Berechnung der Herzfrequenz 072CH 08FFH frei 0900H 0905H Unterprogramm zur Initialisierung des A/D Wandlers 0906H 0FFFH frei 1000H 1048H Unterprogramm zur Durchführung der 10 Bit Analogmessung 1049H 11FFH frei 1200H 1259H Unterprogramm zur Erkennung von Systole bzw. Diastole 125AH 12FFH frei 1300H 1318H Unterprogramm zur Ausgabe der Herzfrequenz als ASCII-Symbole 1319H 13FFH frei 1400H 143DH Unterprogramm zur Ausgabe des Blutdrucks bzw. der Systole / Diastole als ASCII- Symbole Rest frei

5 5 4. Interner Speicherplan R1 Low Byte der Timerüberläufe in einem Zyklus R2 Zwischenspeicher für High-Byte von 60 Sek der Herzfrequenzberechnung R3 Speichert das Ergebnis für den hochgerechneten Wert der Herzfrequenz R4 Zwischenspeicher zur Überprüfung ob die Anzahl der mitgeloggten Werte > 250 ist / Zwischenspeicher für Low-Byte von 60 Sek der Herzfrequenzberechnung R5 Zwischenspeicher für Akkuinhalt R6 Beinhaltet Wert der in ASCIIAusgabeBlutdruck beim Aufruf ausgegeben werden soll R7 High Byte der Timerüberläufe in einem Zyklus 20H.1 Flag das anzeigt ob erste A/D Messung bereits durchgeführt wurde 21H Zwischenspeicher für High Byte des Analogwertes 22H Zwischenspeicher für Low Byte des 23H Analogwertes Speicher für High Byte des aktuellen Analogwertes 24H Speicher für Low Byte des aktuellen Analogwertes 27H Speichert die Adresse auf, die die ASCIIBlutdruckAusgabe schreiben soll (Indirekte Adressierung) 28H.0 Toggle Bit das anzeigt, ob Mittelwertausgabe aktiv ist oder nicht 28H.3 Flag das anzeigt, ob Systole bzw. Diastole in diesem Zyklus schon gefunden wurde 28H.4 Zwischenspeicher für Carry in Timer2 Interrupt 28H.5 Zwischenspeicher für Carry in externen Interrupt 6 28H.6 Flag zeigt an, ob bereits mehr als 250 Werte mitgeloggt wurden 28H.7 Flag, dass anzeigt, ob Blutdruck noch von Volt in mm Hg umgerechnet werden muss oder nicht 29H.1 Zwischenspeicher für Carry 2BH Zwischenspeicher für Akku in externer Interrupt 6 30H Speicher für High Byte des letzten gemessenen Analogwertes 31H Speicher für Low Byte des letzten gemessenen Analogwertes 32H Zwischenspeicher für Akku in Timer2 Interrupt

6 6 35H Ausgabe: H 36H Ausgabe: F 37H Ausgabe: : 38H Ausgabe: Höchste Stelle der Herzfrequenz 39H Ausgabe: Mittlere Stelle der Herzfrequenz 3AH Ausgabe: Niederste Stelle der Herzfrequenz 3CH Ausgabe: S 3DH Ausgabe: Y 3EH Ausgabe: : 3FH Ausgabe: Höchste Stelle der Systole 40H Ausgabe: Mittlere Stelle der Systole 41H Ausgabe: Niederste Stelle der Systole 43H Ausgabe: D 44H Ausgabe: I 45H Ausgabe: : 46H Ausgabe: Höchste Stelle der Diastole 47H Ausgabe: Mittlere Stelle der Diastole 48H Ausgabe: Niederste Stelle der Diastole 4AH Ausgabe: B 4BH Ausgabe: D 4CH Ausgabe: : 4DH Ausgabe: Höchste Stelle des Blutdrucks 4EH Ausgabe: Mittlere Stelle des Blutdrucks 4FH Ausgabe: Niederste Stelle des Blutdrucks 50H Pointer (Low Byte) für aktuelle externe Speicheradresse. Wird bei jedem Herzschlag um 1 erhöht und bei 250 zurück gesetzt 51H Pointer (High Byte) für aktuelle externe Speicheradresse. Wird bei jedem Herzschlag um 1 erhöht und bei 250 zurück gesetzt 5CH Zwischenspeicher für Wert in Register R6 6BH Speichert Low-Byte der Addition aller Messergebnisse für Mittelwertberechnung 6CH Speicher High Byte der Addition aller Messergebnisse für Mittelwertberechnung 6EH Speicheradresse von der aus gelesen wird, wenn die ASCIIAusgabeHerzfrequenz aufgerufen wird.

7 7 5. Externer Speicherplan Adresse Kommentar 0000H 00FFH Frei 0100H 01FAH Beinhaltet die letzten 250 gemessenen Herzfrequenzen zur späteren Mittelwertberechnung 01FBH- 01FFH Frei 0200H 02FAH Beinhaltet die letzten 250 ermittelten Systolen zur späteren Mittelwertberechnung 02FBH 02FFH Frei 0300H 03FAH Beinhaltet die letzten 250 ermittelten Diastolen zur späteren Mittelwertberechnung Frei Frei 6. Grundlegende Überlegungen zur Ermittlung und Berechnung der geforderten Werte 6.1 Herzfrequenz Die Messung der Herzfrequenz erfolgt nach folgendem Schema: 1. Warte Positive Flanke der Herzfrequenz ab 2. Messe Zeit zwischen erster erfasster positiver Flanke und zweiter erfasster positiver Flanke 3. Messe die Zeit mit einer Genauigkeit von 1 ms 4. Rechen hoch welcher Anzahl Schläge pro Minute die gemessene Zeit entspricht 5. Beginne von Neuem Bei der Bestimmung der Herzfrequenz gab es zwei grundlegende Ideen. Zum einen die Messung der Herzschläge über einen bestimmten Zeitraum, z.b. 15 Sekunden und dann Multiplikation der gemessenen Anzahl Herzschläge mit vier. Zum anderen Messung der Zeit von einem Herzschlag zum nächsten und dann Hochrechnung der gemessenen Zeit auf eine Minute. Da es bei der ersten Möglichkeit zwar höchstwahrscheinlich zu genaueren Ergebnissen gekommen wäre, man aber verhältnismäßig lang auf das erste Ergebnis hätte warten müssen, wurde die zweite Methode zur Messung gewählt. Dazu wird mit einem Timer die Zeit zwischen zwei Impulsen auf 1 ms genau gemessen. Das Ergebnis hätte noch genauer gemessen werden können, hätte aber einen bedeutend höheren Aufwand nach sich gezogen, da mehr als zwei Register für das Zählen der Überläufe nötig gewesen wären und die anschließenden Rechnungen somit weiter verkompliziert hätte. Der Wahl der Genauigkeit liegt folgende Berechnung zu Grunde: Maximale Anzahl Herzschläge pro Minute: 250 Minimaler Zeitabstand zwischen zwei Herzschlägen: 60 s / 250 = 240 ms Zeitabstand zwischen zwei Herzschlägen bei 249 Hz: 60 s / 249 = 240, 96 ms Maximale Veränderung der Herzfrequenz in 1 ms: 240, = ca. 1 Man erkennt deutlich, dass bei dieser Messgenauigkeit, das Ergebnis wenn überhaupt nur leicht verfälscht wird und diese Verfälschung im Vergleich zum Mehraufwand durch eine höhere Genauigkeit hinnehmbar ist. Mit einer Messgenauigkeit von 1 ms kann das Ergebnis

8 8 nur in sehr seltenen Fällen um maximal einen Schlag pro Minute verfälscht werden. Für die Hochrechnung wird anschließend / die Anzahl der gemessenen Überläufe gerechnet. Dies hat folgenden Grund: 1 Minute = 60 sekunden = ms / Anzahl gemessener Überläufe = Herzfrequenz +/ - 1 Schlag 6.2 Systole / Diastole Bei den Überlegungen zur Erfassung der Systole bzw. der Diastole ging es weniger um Messgenauigkeit, da diese von der 10 Bit Auflösung des A/D Wandlers beschränkt ist, als viel mehr um die Frage, wie der Programmablauf auszusehen hat um mögliche Unregelmäßigkeiten im Blutdrucksignal auszufiltern. Um dies zu gewährleisten gab es zwei mögliche Ansätze: 1. Bei der Kontraktion (erkennbar am Highpegel des Herzfrequenzsignals) werden alle Messwerte des A/D Wandlers mitgeschrieben und anschließend (beim Übergang in den Lowpegel des Herzfrequenzsignals) alle Werte miteinander verglichen. Der höchste gefundene Wert würde so der Systole bzw. der niedrigste Wert der Diastole entsprechen 2. Ab Beginn der Kontraktion wird immer der neuste gemessene A/D Wert mit dem zuletzt gemessenen verglichen. Sollte der neue Wert größer sein als der alte, so befindet sich die Blutdruckkurve noch in der Steigung. Sollte er jedoch kleiner sein, so ist klar, dass der zuletzt gemessene Wert der Systole entspricht und nun bis zum nächsten Highpegel aufgehört werden kann, die A/D Messwerte miteinander zu vergleichen (umgekehrtes gilt für die Diastole). Da der Vergleich aller gemessenen A/D Werte einen enormen Verbrauch zeitlicher Ressourcen des Mikrocontrollers bedeuten würde und man zudem nicht die Wandlungszeit, die nach dem Finden der Diastole bzw. Systole nicht mehr benötigt wird, gespart hätte kam in der Umsetzung des Programms die 2. Möglichkeit zum Einsatz. Diese Möglichkeit hat jedoch einen großen Nachteil: Höcker die vor der eigentlichen Systole / Diastole auftreten werden mit diesem Verfahren als Systole bzw. Diastole erkannt und eine Erkennung des eigentlichen Wertes verhindert. Diese Methode konnte deshalb nur aufgrund der Tatsache, dass laut Aufgabenstellung die Erkennung solcher Höcker vor dem eigentlichen Wert nicht gefordert wird, eingesetzt werden.

9 9 7. Division Bit / 16 Bit Divison durch Subtraktion Der folgende Abschnitt erläutert die Vorgehensweise zur Durchführung einer 16 Bit Division auf einem 8 Bit Mikroprozessor. Hierzu wurde nicht das durch den Dozenten zur Verfügung gestellte Unterprogramm von Thomas Umbeer verwendet, sondern eine eigene Routine entworfen. Programmcode: ErneuteDivision: CLR C MOV A, R2 SUBB A, R7 MOV R2, A JC EndeDivison MOV A, R4 SUBB A, R1 MOV R4, A INC R3 JNC ErneuteDivision CLR C DJNZ R2, ErneuteDivision EndeDivison:

10 10 Grafik 1.1: PAP zur 16 Bit / 16 Bit Divison

11 11 Da es das Ziel dieser 16 Bit Division ist, hochzurechnen wie viele Schläge bei gleichbleibender Herzschlagdauer pro Minute erfasst würden, muss zu Beginn des Programmteils der Wert in das Register R2 sowie R4 geschrieben werden. Wie bereits in Kapitel 6 hergeleitet, wird der Wert geladen, da dieser die Zeit von 60 Sekunden bei einer Messgenauigkeit von 1 ms repräsentiert. Im ersten Schritt wird nun das High Byte des gemessenen Zeitwerts, das sich im Register R7 befindet, vom High-Byte der ms abgezogen und anschließend überprüft, ob das Carry gesetzt ist. Sollte dies der Fall sein so ist klar, dass die gemessene Zeit größer ist als 60 Sekunden (bzw. dem davon noch verbleibenden Wert bei erneuter Subtraktion). Das Register R3 ist dafür zuständig die Anzahl der Subtraktionen mitzuzählen und repräsentiert gleichzeitig nach Beendigung der Subtraktion das Ergebnis der Division. Sollte nun die High-Byte Subtraktion ergeben haben, dass die Hochzählung noch nicht bei 60 Sekunden angekommen ist, so wird noch das Low-Byte der gemessenen Zeit vom Low-Byte von 60 Sekunden bzw. dessen Rest abgezogen. Anschließend wird über JNC abgefragt, ob es durch die Subtraktion zu einem Unterlauf des Akkus kam. Sollte dies der Fall sein, so dient das Carry als Indikator hierfür. Sollte es zu einem Unterlauf gekommen sein, so wird zuerst das Carry für die nächste Subtraktion zurück gesetzt und anschließend der durch den Unterlauf entstandene Übertrag in der Subtraktion durch das dekrementieren des High-Bytes von durchgeführt. Durch den Befehl DJNZ wird gleichzeitig zum Dekrementieren abgeprüft, ob das High Byte bereits null ist, sollte dies der Fall sein so ist die Division beendet, andernfalls beginnt die Subtraktion durch einen Sprung zum Label ErneuteDivision von vorne. Sollte es nicht zu einem Unterlauf gekommen sein, so wird sofort zum Label ErneuteDivision gesprungen. Berechnung der Worst-Case Laufzeit der Division: Minimale Herzschlagdauer: 60 s / 250 = 240 ms Maximale Anzahl Subtraktionsschritte: / 240 = 250 Worst-Case Laufzeit einer einzigen Division = 14 µs Worst-Case Gesamtlaufzeit: 14 µs * 250 = 3,5 ms Bit / 8 Bit Division Dieser Abschnitt ist als kurze Erläuterung der 16 / 8 Bit Division gedacht und zeigt kurz die Unterschiede zur 16 / 16 Bit Division. Programmcode: ErneuteDivision2: SUBB A, 50H INC R7 JNC ErneuteDivision2 CLR C DJNZ 6CH, ErneuteDivision2 DEC R7

12 12 Dieser Programmcode kommt bei der Berechnung des Mittelwertes zum Einsatz. Hier wird aufgrund der kürzeren Laufzeit (siehe Laufzeitberechnung) auf die 16 / 8 Bit Division zurückgegriffen. Dies wird dadurch möglich, dass bekannt ist, dass der Divisor dieser Division nicht größer als 250 sein kann, und diese Zahl in einem Byte abspeicherbar ist. Bei dieser Division wird folgendermaßen vorgegangen: - Subtrahiere Anzahl der Messwerte vom Low-Byte der addierten Messwerte - Inkrementiere das Divisionsergebnis - Prüfe ob es zu einem Unterlauf bei der Subtraktion kam - Wenn ja, dekrementiere das High-Byte der addierten Messwerte, wenn nein beginne von vorne - Prüfe ob High-Byte der addierte Messwerte = 0, wenn ja ist Division beendet, wenn nein beginne von vorne. Laufzeitberechnung: Worst-Case Laufzeit einer einzigen Division = 7 µs Worst-Case Gesamtlaufzeit: 7 µs * 250 = 1,75 ms 8. Erkennung von Systole und Diastole Dieser Abschnitt beschäftigt sich mit der Umsetzung der im Abschnitt 7 vorgestellten Überlegung zur Erkennung der Systole bzw. Diastole. Programmcode: ORG 1200H GrosserKleinerVergleich: JNB 28H.3, SystoleNichtGefunden CLR C JB I3FR, Diastole MOV A, 21H CJNE A, 23H, HighByteUngleich JMP HighByteGleich HighByteUngleich: JNC SystoleNichtGefunden JMP Gefunden HighByteGleich: MOV A, 22H CJNE A, 24H, LowByteUngleich JMP SystoleNichtGefunden LowByteUngleich: JNC SystoleNichtGefunden JMP Gefunden Diastole: MOV A, 21H CJNE A, 23H, HighByteUngleich2 JMP HighByteGleich2 ; HighByteUngleich2: JNC DiastoleGefunden JMP SystoleNichtGefunden

13 13 HighByteGleich2: MOV A, 22H CJNE A, 24H, LowByteUngleich2 JMP SystoleNichtGefunden LowByteUngleich2: JNC DiastoleGefunden JMP SystoleNichtGefunden DiastoleGefunden: MOV 30H, 23H MOV 31H, 24H MOV 27H, #046H MOV 51H, #03H JB 28H.0, MittelwertAktiv2 CALL ASCIIAusgabeBlutdruck MittelwertAktiv2: CLR 28H.3 JMP SystoleNichtGefunden Gefunden: MOV 30H, 23H MOV 31H, 24H MOV 27H, #03FH MOV 51H, #02H JB 28H.0, MittelwertAktiv3 CALL ASCIIAusgabeBlutdruck MittelwertAktiv3: CLR 28H.3 SystoleNichtGefunden: RET

14 14 Grafik 1.2: PAP zum Unterprogramm zur Erkennung der Systole / Diastole

15 15 Vor dem Beginn der eigentlichen Erkennung des Extremwertes wird das Flag 28H.3 abgefragt. Dieses Flag zeigt an, ob in diesem Zyklus bereits die Systole bzw. Diastole gefunden wurde oder nicht. Dazu wird dieses Flag vom Interrupt 3 bei jeder steigenden oder fallenden Flanke des Herzsignals gesetzt und später im obigen Programmteil zurück gesetzt, falls eine Diastole / Systole gefunden wurde. Anschließend wird mit JB das Bit I3FR abgefragt. Dieses Bit ist dafür zuständig dem Interrupt 3 mittzuteilen, ob er bei einer positiven oder negativen Flanke ausgelöst werden soll. Gleichzeitig dient es hier als Indikator dafür, ob nach einer Systole oder nach einer Diastole gesucht werden soll. Die nun folgenden Sprungpunkte verlaufen für Systole und Diastole nahezu gleich, nur eben mit dem Unterschied, dass die abgefragte Richtung der Steigung invertiert ist. Darum soll im folgenden nur der Abschnitt zur Erkennung der Systole erläutert werden: Dazu wird zuerst das High Byte des aktuellen A/D Wandler Ergebnisses aus dem internen Speicher (siehe Speicherplan) geladen und anschließend mit dem über CJNE des zuletzt gemessenen A/D Wandler Ergebnisses verglichen. Um den nun folgenden Teil zu verstehen sind Kenntnisse über die Auswirkungen des CJNE Befehls nötig. Dazu folgende Erläuterung: Ist der Wert der im Akku steht größer als der Vergleichswert der mit CJNE überprüft wird so wird bei der Überprüfung das Carry gesetzt. Ist der Wert kleiner so wird das Carry gelöscht. Dieses Besonderheit macht sich der Programmteil zu nutze. Er vergleicht über CJNE, ob die beiden High Bytes gleich sind, sollte dies der Fall sein so werden anschließend die beiden Low-Bytes miteinander verglichen. Sollte der neue Wert jedoch größer sein, so ist das Carry ein Indikator hierfür und wird darum anschließend mit JNC abgeprüft. Sollte das Carry nicht gesetzt sein so wird der zuvor gemessene Wert als Systole eingetragen, sollte das Carry jedoch gesetzt sein so bedeutet dies, dass der neue gemessene Wert größer ist als der zuvor gemessene Wert und somit, dass in diesem Zyklus keine Systole gefunden wurde. Diese Vorgehensweise gilt Analog für die Überprüfung der Low-Bytes, falls die High-Bytes gleich gewesen sein sollten. Sollte eine Systole gefunden worden sein so wird zum Label Gefunden gesprungen, welches die Ergebnis wegspeichert (siehe Speicherplan) und anschließend das Unterprogramm zur Ausgabe der Werte auf dem Display (bzw. internen Speicher) aufruft.

16 16 9. Mittelwertberechnung Dieser Abschnitt beschäftigt sich mit der Speicherung der für den Mittelwert benötigten Werte, sowie mit der allgemeinen Idee hinter der Mittelwertberechnung. Programmcode: Herzfrequenzberechnung:. MOV DPH, #01H MOV DPL, 50H MOV A, R3 A ASCIIAusgabeBlutdruck: MOV DPH, 51H MOV DPL, 50H MOV A, R6 A Die Abspeicherung der Herzfrequenz erfolgt sofort nach der Berechnung der selbigen (siehe Abschnitt 7). Dazu wird das High Byte des DPTR (DPH) mit dem Wert 1 besetzt. Dies hat den Grund, dass im externen RAM von der Speicheradresse 100H bis 1FAH die Messwerte für die Herzfrequenz abgelegt werden sollen. Zudem ist es durch die Aufteilung des High Bytes in 1,2 und 3 einfacher eine Schleife für die Auswertung der drei Mittelwerte zu schreiben (siehe Interrupt 6 Routine). Das Low Byte des DPTR wird mit der aktuellen Herzschlagzahl, bzw. dem Pointer für den externen RAM geladen. Dieser Pointer wird nach jedem Herzschlag um eins erhöht (siehe Interrupt 3). Nun wird der zu speichernde Messwert der in Register R3 steht in den Akku geschrieben und selbiger dann über MOVX in den externen Speicher geschrieben. Das Prinzip beim Speichern der Systole und Diastole ist gleich, mit dem Unterschied dass hier nicht sofort nach der Erfassung des Analogwertes in den externen Speicher geschrieben wird, sondern erst nachdem erkannt wurde, dass es sich um einen Extremwert handelt und was ganz wichtig ist: Erst nachdem dieser in die Einheit mm Hg umgerechnet wurde. Das heißt das Speichern der Systole und Diastole erfolgt mit den DPH Werten 2 und 3 erst nachdem im Unterprogramm ASCIIAusgabeBlutdruck die Voltzahl in einen Blutdruck gewandelt wurde. Grund hierfür ist der zusätzliche Speicher, der benötigt würde um den 10 Bit breiten Analogwert zu speichern. Die gemessenen Werte werden nun auf die soeben dargestellte Weise einmal pro Herzschlag abgespeichert und alle 250 Herzschläge wird von neuem begonnen. Das heißt, dass im schlimmsten Falle mindestens die Messwerte der letzten Minute verfügbar sind. Der Mittelwert wird nun wie das arithmetische Mittel in der Mathematik berechnen: (Messwerte) / Anzahl Messwerte Das heißt es werden alle Messwerte einer Messreihe (also z.b. Herzfrequenz) aus dem externen RAM geholt und addiert und anschließend durch die Anzahl der geholten Messwerte geteilt.

17 Initialisierungen Dieser Abschnitt beschäftigt sich kurz mit den Initialisierungen die zu Beginn des Programmes einmal durchgeführt werden um die einzelnen Mikrocontrollerteile auf ihre Funktion vorzubereiten. Programmcode: SETB IEN1.2 SETB IEN0.5 SETB IEN1.5 SETB EAL SETB T2I0 SETB T2R1 MOV TH2, #00FCH MOV TL2, #0017H MOV 35H, #048H MOV 36H, #046H MOV 37H, #03AH MOV 3CH, #053H MOV 3DH, #059H MOV 3EH, #03AH MOV 43H, #044H MOV 44H, #049H MOV 45H, #03AH MOV 4AH, #042H MOV 4BH, #044H MOV 4CH, #03AH Zu Beginn erfolgt die Freigabe des externen Interrupt 3. Dieser wird durch eine positive oder negative Flanke am Pin 1.0 ausgelöst und dient als Eingang für das Herzfrequenzsignal. Darauf gefolgt wird der Timer2 Interrupt freigegeben, der durch einen Überlauf des Timers ausgelöst wird und innerhalb der Interruptroutine von Hand zurückgesetzt werden muss. Als letzter Interrupt wird der Interrupt 6 freigegeben, der als Eingang für einen Taster dient, der die Aufgabe hat dafür zu sorgen, dass sobald die Taste gedrückt wird, ein Mittelwert der Systole, Diastole sowie der Herzfrequenz ausgegeben wird. Nun wird der Startwert für den Timer2 gesetzt. Dieser wird auf gesetzt, was einer Überlaufzeit von 1 ms entspricht. Darauf gefolgt wird die Ausgabe der einzelnen Zeichen auf dem Display gestartet. Dazu wird an die entsprechende Stelle im internen Speicher (siehe Speicherplan) der Wert für das auszugebende Zeichen nach ASCII-Codierung (siehe ASCII- Tabelle weiter unten) geschrieben. Nach der kompletten Initialisierung des Displays befindet sich also folgende Zeichenfolge im internen Speicher: HF: SY: DI: BD: Diese Zeichen stehen für die Abkürzungen von Herzfrequenz, Systole, Diastole und Blutdruck.

18 18 Die Initialisierung wird daraufhin von einem Unterprogrammaufruf der für die Initialisierung des A/D Wandlers zuständig ist, gefolgt. Programmcode: AnalogmessungInitialisieren: ANL ADCON, # b SETB ADCON.0 MOV DAPR, #0 RET Innerhalb der A/D Wandler Initialisierung wird zuerst das untere Nibble des ADDCON Registers auf null gesetzt um anschließend das Bit 0 des selben Registers zu setzen. Dies bewirkt, dass die Analogmessung auf dem Pin AIN1 durchgeführt wird. Anschließend wird durch das Rücksetzen des DAPR Registers die Analogmessung gestartet. 11. ASCII Ausgabe: Die Ausgabe der ermittelten Messwerte erfolgt in zwei Unterprogrammen (siehe Programmspeicherplan). Zwei deshalb, weil bei der Ausgabe der A/D Werte zuvor im selben Unterprogramm noch eine Umrechnung von Volt in mm Hg stattfindet um so dem Blutdruckmessenden eine Ausgabe zu ermöglichen mit der er etwas anfangen kann Ausgabe der Herzfrequenz Programmcode: ORG 1300H ASCIIAusgabeHerzfrequenz: MOV B, #100D MOV A, 6EH DIV AB ADD A,#30H MOV 38H, A MOV A, B MOV B,#10D DIV AB ADD A, #30H MOV 39H, A MOV A, B ADD A, #30H MOV 3AH, A RET

19 19 Grafik 1.3: Ausgaberoutine Zu Beginn des Unterprogramms wird eine Division vorbereitet in dem das Register B mit dem Wert 100 geladen wird. Dies hat folgenden Grund: Die anzuzeigenden Zahl hat maximal 3 Stellen (max. = 250). Am einfachsten lassen sich die drei Stellen mit Hilfe von Modulo herausfiltern. Um die höchstwertige Stelle zu bekommen, muss dazu lediglich die zu splittende Zahl durch 100 geteilt werden und der Rest wiederrum durch 10 geteilt werden um im dadurch erhaltenen Ergebnis die 2. Höchstwertige Stelle und im Rest des Ergebnisses die niederwertigste Stelle zu erhalten. Zur weiteren Vorbereitung der Division wird nun der Wert der aktuellen Herzfrequenz in den Akku gelegt und wie oben bereits beschrieben mit DIV AB eine Division durch 100 durchgeführt. Zu dem dadurch erhaltenen Ergebnis muss im nächsten Schritt der Wert 30H zuaddiert werden. Dies wird aufgrund der Tatsache durchgeführt, dass laut ASCII-Tabelle (siehe Bild) die alphanumerischen Zeichen erst ab dem Wert 30H beginnen und es so ohne diese Addition zur Ausgabe von wirren Zeichen kommen würde. Nachdem dieser Schritt durchgeführt wurde, wird das Ergebnis der höchstwertigen Stelle auf dem Display oder in meinem Falle im internen Speicher (siehe Programmspeicherplan) ausgegeben. Anschließend wird der Rest der Divison, der im Register B liegt, in den Akku geschrieben und nun eine Divison durch zehn durchgeführt. Die beiden so erhaltenen noch verbleibenden Stellen, werden abermals zu 30 H dazuaddiert und im internen Speicher ausgegeben.

20 20 Beispielrechnung: Blutdruck = / 100 = 2 Rest / 10 = 5 Rest 0 Farbig markiert die einzelnen Stellen Grafik 1.4: ASCII-Tabelle

21 Ausgabe des Blutdrucks Da die Ermittlung der einzelnen, auszugebenden Stellen des Blutdrucks gleich abläuft, wie die Ausgabe der Herzfrequenz (siehe 12.1), beschränkt sich dieser Abschnitt auf die Umrechnung von Volt in mm Hg. Einzige Ausnahme bei der Umrechnung ist die, dass die auszugebenden Werte indirekt über das Register R0 ausgegeben werden, da eine Unterscheidung der Ausgabeposition von Systole und Diastole vor dem Unterprogrammaufruf erfolgt. Programmcode: JB 28H.7, Herzfrequenz Neustart: INC R6 CLR C SUBB A,#04D JNC Neustart CLR C MOV B, A MOV A, 30H SUBB A, #1 MOV 30H, A MOV A, B JNC Neustart DEC R6 Herzfrequenz: Dieser Programmteil führt nach einer Überprüfung, ob es sich bei dieser Ausgabeanfrage um eine Herzfrequenzausgabe handeltm (wenn ja wird der folgende Teil übersprungen) eine Division einer 10 Bit Zahl durch 4 durch. Dies hat folgenden Hintergrund: Bei einer maximalen Amplitude von 5 Volt entsprechen ca. 0,02 einem mm Hg. (5.0 V / 250). Ebenso entspricht ein Schritt des A/D Wandler einer Voltzahl von 0,0048. Teilt man nun die die 0,02 mm Hg durch die Voltzahl pro Schritt erhält man 4,1667. Das bedeute, dass ca. alle 4,1667 Schritte des A/D Wandler der Blutdruck um 1 mm Hg fallen bzw. steigen muss. Da sich mit dieser Kommazahl in dem von uns verwendeten Prozessor nur sehr schwer rechnen lässt ist es einfacher folgende Annahme zu treffen: 4,88 V = 250 mm Hg und 0,00 V = 0 mm Hg. Dadurch wird gewährleistet, dass genau alle 4 A/D Wandler Schritte 1 mm Hg bedeutet und somit die Umrechnung von Volt in mm Hg deutlich erleichtert. Der oben gezeigte Programmteil übernimmt genau diese Aufgabe. Dazu wird vom Low-Byte des 10 Bit Wandlerergebnisses vier subtrahiert und gleichzeitig das Register R6 um eins erhöht. Nun wird geprüft ob es bei dieser Division einen Über- bzw. Unterlauf gab. Ist dies der Fall (wird durch JNC erkannt) so wird das High Byte um eins dekrementiert. Ist dies nicht der Fall so wird der gesamte Programmteilablauf erneut gestartet. Dieser Vorgang wird solange wiederholt bis High Byte und Low Byte null sind. Anschließend steht im Register R6 das Ergebnis der Subtraktion

22 22 Beispiel: Eingangsvoltzahl = 0,01952 V = als A/D Wandlerergebnis 4 4 = 0. Es wurde einmal subtrahiert, das Ergebnis entspricht also einem Blutdruck von 1 mm Hg 12. Timer2 Interrupt Dieser Abschnitt beschäftigt sich mit der Messung der Herzschlagzeit. Programmcode: ORG 002BH CLR 28H.4 MOV 32H, A MOV 28H.4, C MOV TH2, #00FCH MOV TL2, #0017H CLR C INC R1 CJNE R1, #0, KeinUbert INC R7 KeinUbert: CLR TF2 MOV C, 28H.4 MOV A, 32H RETI

23 23 Grafik 1.5: PAP zur Ermittlung der Herzschlagzeit Diese Interruptroutine wird bei einem Überlauf des Timer2 aufgerufen. Darin wird der Startwert für den nächsten Timer2-Zyklus erneut gesetzt und das Überlaufzählregister R1 inkrementiert. Sollte dieses seinerseits übergelaufen sein, so wird dies über die CJNE Abfrage erkannt und in diesem Falle das Register R7 inkrementiert. Die Register R1 und R7 speichern das High- bzw. Low- Byte der Timerüberläufe ab. Da der Timer2-Interrupt softwaremäßig zurückgesetzt werden muss, wird am Ende der Interruptroutine das TF2 Flag gelöscht, welches für den Prozessor als Indikator für einen Interrupt dient. Wie bei allen Interruptroutine wird auch bei dieser Routine der derzeit im Akku, sowie im Carry befindliche Wert zwischengespeichert und am Ende des Interrupts wieder zurückgeschrieben, um dafür zu sorgen, dass keine Rechnungen im restlichen Programm beeinflusst werden.

24 Externe Interrupts Dieser Abschnitt beschäftigt sich mit den beiden externen Interrupts an Pin 1.0 und Pin 1.3, die für den Start der Ausgabe des Mittelwertes, sowie für die Erkennung der Herzschlagflanken zuständig sind Externer Interrupt 3 Herzschlagflankenerkennung Programmcode: ORG 0053H SETB 28H.3 MOV 5CH, R6 JMP Interrupt3Fortsetzung ORG 400H Interrupt3Fortsetzung: JNB P1.0, NegativeFlanke JB 28H.0, MittelwertAktiv5 INC 50H MittelwertAktiv5: CALL Frequenzberechnung MOV R1,#0H MOV R7,#0H MOV R4, 50H CJNE R4, #250, NegativeFlanke MOV 50H, #0 SETB 28H.6 NegativeFlanke: CPL I3FR MOV R6, 5CH ; RETI

25 25 Grafik 1.6: PAP zur Herzschlagflankenerkennung Diese Interruptroutine erkennt sowohl steigende als auch fallende Flanken am Pin 1.0. Dazu wird das Bit I3FR mit jedem Interrupt invertiert. Dieses Bit zeigt an, ob der Interrupt 3 auf eine fallende oder steigende Flanke reagieren soll. Durch die ständige Invertierung des Signals wird gewährleistet, dass beide Flanken erkannt werden. Dies hat zum Zweck, dass das Systolen / Diastolen Erkennungsflag 28H.3 bei jedem Wechsel von Kontraktion in Füllen und umgekehrt wieder gesetzt wird, denn wie im Abschnitt 8 beschrieben wird dieses Bit immer dann zurück gesetzt wenn in einem Kontraktions- bzw. Füllzyklus bereits die Systole oder Diastole erkannt wurde, um so Prozessorleistung zu sparen. Würde dieses Bit nicht bei jeder Flanke gesetzt so würde nur ein einziges Mal eine Diastole bzw. eine Systole erkannt werden. Außerdem wird innerhalb dieser Interruptroutine die Speicheradresse 50H inkrementiert, die anzeigt wie viele Herzschläge bereits gemessen wurden und somit gleichzeitig als Kontrolle dafür dient, an welche Stelle die aktuellen Werte momentan in den externen Speicher geschrieben werden. (siehe hierzu auch Mittelwertberechnung). Anschließend wird das Unterprogramm Frequenzberechnung aufgerufen, dass wie in Abschnitt 7 beschrieben für die Berechnung der Herzfrequenz zuständig ist. Das letztendliche Löschen der Register R1 und R7 bewirkt, dass die gemessen Dauer des letzten Herzschlages zurückgesetzt wird und die Anzahl der Überläufe (siehe Timer2 Interrupt) von

26 26 neuem gemessen wird. Der Sprung innerhalb der Interruptroutine wird benötigt um dafür zu sorgen, dass der bei 53H beginnende Programmcode nicht in die an der Speicherstelle 6BH beginnende Interruptroutine überläuft und somit ein unkontrolliertes Verhalten des Programms bewirkt wird Externer Interrupt 6 Taster für Mittelwertausgabe ORG 006BH CPL 28H.0 CLR 28H.5 MOV 28H.5, C MOV 2BH, A MOV DPH, #03H DEC 50H NaechsterMittelwert: MOV R7, #0 MOV 6BH, #0 MOV 6CH, #0 MOV DPL, #00F9H JB 28H.6, StarteMittelwertBerechnung MOV DPL, 50H MOVX ADD A, 6BH JNC NichtUbergeloffen INC 6CH NichtUbergeloffen: MOV 6BH, A DJNZ DPL, StarteMittelwertBerechnung MOV A, 6BH // 16 Bit Divison // MOV A, DPH CJNE A, #03H, Next MOV 27H, #046H MOV A, R7 MOV R6, A SETB 28H.7 CALL ASCIIAusgabeBlutdruck CLR 28H.7 Next: CJNE A, #02H, Next2 MOV 27H, #03FH MOV A, R7 MOV R6, A SETB 28H.7 CALL ASCIIAusgabeBlutdruck CLR 28H.7

27 27 Next2: Next3: RETI CJNE A, #01H, Next3 MOV 6EH, R7 CALL ASCIIAusgabeHerzfrequenz DJNZ DPH, NaechsterMittelwert MOV C, 28H.5 MOV A, 2BH Grafik 1.7: PAP zur Mittelwertberechnung

28 28 Diese Interruptroutine ist dafür zuständig zu erkennen, wenn ein Benutzer einen Mittelwert angezeigt haben möchte, diesen zu berechnen und anschließend auszugeben. Die Interruptroutine läuft nach folgendem Schema ab: 1. Speichere Akku und Carry zwischen 2. Addiere alle Messwerte der Herzfrequenz die im externen RAM stehen zusammen 3. Teile Ergebnis der Addition durch die Anzahl der Messwerte 4. Erkenne, dass es sich bei den Messwerten um die Herzfrequenzmesswerte gehandelt hat und gebe das Ergebnis der Division auf dem Display aus 5. Wiederhole die Schritte 2-4 für Systole und Diastole 6. Toggle das Flag, dass anzeigt ob Mittelwert ausgegeben wird oder nicht Da es sich bei Schritt drei um eine schon bereits beschriebene 16 / 8 Bit Division handelt soll hierauf in diesem Abschnitt nicht erneut eingegangen werden. Schritt 2 erfolgt in dem zunächst die Register 6BH und 6CH gelöscht werden. Diese enthalten nachher das Highbzw. Lowbyte der Addition der Messergebnisse. Danach wird abgeprüft ob bereits 250 Messwerte im externen Speicher stehen, sollte dies nicht der Fall sein so wird der aktuelle Speicherpointer (Speicherregister 50H) verwendet. Andernfalls wird standardmäßig der Wert 250 genommen. Nun wird damit begonnen das DPH Register mit 1 (Herzfrequenzmesswerte),2 (Systolenmesswerte) oder 3 (Diastolenmesswerte) zu laden. Anschließend wird die ermittelte Pointerstelle in das DPL Register geschrieben. Nun wird der erste Wert mit MOVX aus dem externen RAM zu 6BH addiert. Es wird nun überprüft ob das Carry Flag gesetzt ist, sollte dies der Fall sein so wird 6CH inkrementiert, da das Low-Byte übergeloffen ist. Nun wird das DPL Register dekrementiert und die gesamte Prozedur wiederholt, bis alle Werte aus dem externen RAM abgeholt wurden. Anschließend folgt die bereits beschriebene 16 Bit Division, sodass sich nun im Register R7 der Mittelwert der Herzfrequenz (oder Systole, bzw. Diastole) befindet. Zuletzt wird mit drei CJNE Befehlen das DPH Register abgeprüft, ob es sich bei der Mittelwertberechnung um eine Herzfrequenz, Systole oder Diastole gehandelt hat. Je nachdem um was es sich handelt wird nun die Ausgabe des errechneten Wertes durch einen Unterprogrammaufruf gestartet. Mit dem Toggeln des Flags, dass angibt ob momentan der Mittelwert ausgegeben wird oder nicht, wird zum einen die Ausgabe der aktuellen Werte gestoppt und zum anderen das Inkrementieren, des externen Speicherpointers. Durch dieses Toggeln wird erreicht, dass eine Mittelwertausgabe beim ersten Tastendruck gestartet wird und mit einem erneuten Tastendruck beendet werden kann.

29 A/D Messung mit 10 Bit Auflösung Dieser Abschnitt beschäftigt sich mit dem Programmablauf der nötig ist um aus der Standardmäßigen 8 Bit Analogmessung des eine Analogmessung mit einer Auflösung von 10 Bit zu machen Programmcode: ORG 1000H ADWandlung: JB 20H.1, Messung2 CLR C ANL ADDAT, # b MOV A, ADDAT SWAP A ORL A, ADDAT ADD A,# b JNC NoOverflow MOV A, #00CH NoOverflow: MOV DAPR, A SETB 20H.1 JMP Ende Messung2: CLR C MOV 21H, #0 MOV A, DAPR ANL A, # b SWAP A RLC A MOV 21H.1, C RLC A MOV 21H.0, C CLR C ADD A, ADDAT JNC KeinUbertrag INC 21H KeinUbertrag: MOV 22H, A CLR 20H.1 CALL GrosserKleinerVergleich MOV 23H, 21H MOV 24H, 22H MOV 30H, 23H MOV 31H, 24H MOV 27H, #04DH MOV 51H, #00H JB 28H.0, MittelwertAktiv4 CALL ASCIIAusgabeBlutdruck MOV DAPR, #0H Ende: JMP Warte

30 30 Grafik 1.8: PAP zur 10 Bit Analogmessung

31 31 Die A/D Wandlung mit einer Auflösung von 10 Bit gliedert sich in zwei Messvorgänge; einen groben und einen genauen Messvorgang. Als Indikator um welchen Messvorgang es sich gerade handelt dient das Flag 20H.1. Sollte dieses Bit gesetzt sein so wird mit JB zum Programmteil der für die zweite Messung zuständig ist gesprungen. Das Ergebnis der ersten Messung (die Vorbereitung der selbigen erfolgt wie in der Analogmessungsinitialisierung beschrieben siehe hierzu auch Abschnitt 11) wird folgendermaßen ausgewertet und weiterverwendet: 1. Lösche Low-Nibble der ersten Messung (ANL ) 2. Schreibe Messergebnis in den Akku (MOV ) 3. Vertausche oberes und unteres Nibble der Messung (SWAP ) 4. Verknüpfe oberes Nibble der 1. Messung mit dem Akku Ergebnis ist, dass im unteren Nibble des Akkus nun jeweils das obere Nibble des 1. Messergebnisses steht 5. Addiere 4 zum oberen Nibble des Akkus hinzu und überprüfe das Ergebnis auf Überläufe, wenn es einen Überlauf gab, dann setze das obere Nibble auf Beginne zweite Messung Diese Vorgehensweise hat folgenden Zweck. Während der ersten Messung wurde ein Messbereich von V erfasst und somit eine maximale Genauigkeit von ca. 20 mv ermöglicht. In dem man nun das grobe Ergebnis dieser ersten Messung nimmt (grob daher, weil das untere Nibble gelöscht wird) und dieses Wert als Referenzspannung für die zweite Messung verwendet erhält man eine 4 mal höhere Auflösung. Um dies zu gewährleisten muss zudem noch der obere maximale Messwert angegeben werden, was durch das hinzuzählen von 4 zum oberen Nibble geschieht, was einer um 1,25 V höheren Spannung als der Referenzspannung entspricht. Der Messbereich der zweiten Messung beträgt also nun GND + 1,25 Ist die zweite Messung beendet so beginnt die Auswertung bzw. Umrechnung des gemachten Ergebnisses in einen 10 Bit Wert. Dazu wird folgendermaßen vorgegangen: 1. Erfassen der Referenzspannung der 2. Messung in dem das obere Nibble des DAPR Registers gelöscht wird. 2. Schreibe das Ergebnis in den Akku und tausche die Nibble 3. Schiebe den Akku zweimal durch das Carry in ein zweites Register nach links 4. Addiere das Ergebnis der 2. Messung zum Akku hinzu und überprüfe auf Überläufe. Wenn es einen Überlauf gab, so addiere 1 zum zweiten Register hinzu. 5. Schreibe 10 Bit Ergebnis weg und beginne erneut mit der 1. Messung Diesem Programmablauf liegt folgende Überlegung zu Grunde. Die erste Messung sorgte dafür dass der Messbereich beispielsweise von V auf V eingeschränkt wurde. Die zweite Messung gibt nun die Differenz von der Referenzspannung (3.0 V) zum eigentlichen Ergebnis an. Also muss zur Referenzspannung, das Ergebnis der 2. Messung hinzuaddiert werden um das neue Ergebnis zu erhalten. Hierzu muss jedoch zuerst durch die Programmschritte 1-3 die Referenzspannung in den obersten Teil des 10 Bit Messergebnisses geschoben werden, sodass anschließend die Addition des neuen Ergebnisses folgen kann. Um das so gemachte Ergebnis sofort auszuwerten wird im Anschluss an die zweite Messung das Unterprogramm zur Erkennung der Systole bzw. Diastole sowie das Unterprogramm zur Ausgabe des aktuellen Blutdrucks aufgerufen.

32 Tests 15.1 C-Code für Logic Analyzer Dieser Abschnitt soll die Funktion des C-Programms zur Simulation eines Analogsignals am Pin AIN1 erläutern. Sinn und Zweck dieser Simulation ist die Nachbildung eines Blutdrucksignals wie es an einer echten Hardware eingehen könnte und somit gleichzeitig die Überprüfung der ordnungsgemäßen Funktion des Programms. Der hier vorgestellte C- Code befindet sich in der Datei Analog.ini und muss vor dem Test durch eine Einstellung des Debugmodus eingebunden werden. (siehe Bedienungsanleitung) Programmcode: signal void bob3(float limit) { float volts; // peak-to-peak voltage float frequency; // output frequency in Hz float offset; // voltage offset float YVerschiebung; float duration; // duration in Seconds float val; float val2; long i, end; float Ubersteuerung; volts = 0.9; offset = 1.0; YVerschiebung = 1.0; frequency = 0.5; duration = 1000; Ubersteuerung = YVerschiebung + ((volts + offset) / 2); printf ("Sine Wave Signal on AD Channel 0.\n"); end = (duration * ); for (i = 0 ; i < end; i++) { val = sin (2 * frequency * (((float) STATES) / CLOCK) * 2 * ); val = (val * volts) + offset + YVerschiebung; val2 = sin ((frequency * (((float) STATES) / CLOCK) * 2 * )+1.1); val2 = (val2 * volts) + offset + YVerschiebung; AIN1 = (2*val2) - val + YVerschiebung; AIN2 = val2; if (AIN1 > Ubersteuerung) { P1.0 = 1; } else { P1.0 = 0; } } } swatch ( ); // in 10 usec steps

33 33 Vor Beginn der eigentlichen Routine werden einige Variablen initialisiert. Die Variablen haben folgende Zuständigkeiten: volts = obere Hälfte der Amplitude des Signals, bei einem Sinussignal von V müsste diese Variable auf 1.5 Volt gesetzt werden frequency = Die zu simulierende Herzfrequenz in Herz. Eine eingestellter Wert von 0.5 entspricht demnach einer Herzfrequenz von 30 Schlägen pro Minute offset = Hälfte der unteren Hälfte der Amplitude des Analogsignals, bei einem Sinussignal von V müsste diese Variable auf 0.75 V gesetzt werden YVerschiebung = Zweite Hälfte der unteren Hälfte der Amplitude des Analogsignals, bei einem Sinussigal von V müsste diese Variable auf 0.75 V gesetzt werden duration = Dauer über die das Programm wiederholt werden sollt. Ein Wert von entspricht demnach einer Dauer von 100 Sekunden. Ubersteuerung = Dieser Wert berechnet die Nulllinie des Analogsignals und dient als Indikator dafür wann ein Herzschlagsignal generiert werden soll. Die Berechnung eines Sinussignals für die Variable val richtet sich nach den Vorgaben der Keilhomepage. ( Dabei wird alle 10 µs ein neuer Sinus-Wert berechnet und an AIN1 ausgegeben. Dafür werden die in den oben genannten Variablen gespeicherten Werte für Frequenz und Amplitude verwendet. Anschließend wird ein zweites, leicht verschobenes Sinussignal in der Variable val2 hinzuaddiert und so eine unregelmäßig an der fallenden Seite des Sinussignals generiert. Abhängig davon welcher Wert in der Variable Ubersteuerung gespeichert ist, wird bei Überschreiten dieses Wertes eine 1 an Pin 1.0 generiert, während beim Unterschreiten dieses Wertes eine 0 generiert wird. Das so generierte Rechtecksignal entspricht der zu simulierenden Herzfrequenz.

34 34 Grafik 1.9: Ausschnitt aus Logic Analyzer mit Sinusfunktion 16.2 Teststrategie In diesem Abschnitt sollen kurz die einzelnen Tests die zur Überprüfung der Korrektheit des Programms durchgeführt werden können erläutert werden: Überprüfung der Herzfrequenz: Hierzu wird im C-Code zur Simulation eines Sinussignals die Frequenz verändert. Dabei entspricht eine Frequenz von 0.5 Hz einer Herzfrequenz von 30 Schlägen / Minute und eine Frequenz von 4,1 Hz einer Herzfrequenz von 250 Schlägen / Minute Überprüfung der Systole und Diastole: Hierzu wird im C-Code zur Simulation eines Sinussignals der Offset, sowie die Y- Verschiebung und die Voltzahl verändert. So kann z.b. durch Einstellen der Voltzahl auf 2.44, sowie des Offsets auf 2.44 erreicht werden, dass der Wert der Systole bei 250 und der Wert der Diastole bei 0 liegt. Überprüfung der Mittelwertausgabe: Zur Überprüfung der Mittelwertausgabe wird der Pin 1.3 ein erstes Mal getoggelt. Nun müsste, der Wert für die Systole, sowie die Diastole gleich bleiben, da bei einer Sinuskurve die Messwerte immer gleich sind. Der Wert für die Herzfrequenz muss jedoch variieren, da hier in der Messwertaufzeichnung falsche Ergebnisse, die durch die ersten beiden Messzyklen entstehen mit eingestreut sind.

35 35 Überprüfung ob Höcker ignoriert werden: Dazu muss die zweite Funktion der bereitgestellten C-Codes geladen werden. Wird in dieser zweiten Funktion, der selbe Wert für Frequency, Volts und Offset eingesteltl, so dürfte in der Ausgabe des Programms keine Veränderung zur ersten Funktion ersichtlich sein. 17. Bedienungsanleitung Dieser Abschnitt soll kurz die Einstellung der Simulationsumgebung, sowie das Vorgehen für das Ablesen der Messergebnisse mit Hilfe eines FAQ erläutern. Es sei jedoch explizit erwähnt, dass dieses Beschreibung sich nicht mit dem grundlegenden Umgang mit dem Entwicklungssystem uvision der Firma Keil beschäftigt. Es ist also dringend zu empfehlen mit diesem Programm etwas vertraut zu sein. Wie lade ich das Projekt? Über den Button Project in der Menüleiste von Keil und dann durch Drücken des Buttons Open Project und der anschließenden Auswahl des Projekts von der bereitgestellten CD. Welche Einstellungen muss ich vor der Ausführung des Projektes machen? Über den Button Project in der Menüleiste und anschließend durch Betätigen des Buttons Options for Target gelangen Sie in ein Menü in dem Sie oben auf den Reiter Debug klicken müssen. Hier aktivieren Sie bitte folgende Checkboxen: Use Simulator, Limit Speed to Real Time, Load Application at Startup und Run to main. Zudem wählen Sie bitte über den Button mit den drei Punkten auf der linken Seite das auf der CD bereitgestellte File Analog.ini aus und bestätigen ihre Einstellungen mit Ok

36 36 Wie kann ich die Simulation der Herzfrequenz, sowie der Diastole und Systole beeinflussen? Hierzu müssen Sie den Debug Modus starten. Drücken Sie hierzu bitte auf den Button Debug und anschließend auf den Button Start / Stop Debug Session. Öffnen Sie nun erneut das Menü Debug und wählen nun den letzten Menüeintrag Function Editor. Hier müsste sich nun der Programmcode der Datei analog.ini befinden, sollte dies nicht der Fall sein, so können Sie diesen Programmcode laden indem Sie den Button Open verwenden und dann die Datei auf der zur Verfügung gestellten CD auswählen. Nun sehen Sie den Programmcode der Analogfunktion und können mit den bereits in Kapitel 15 vorgestellten Variablen die Eigenschaften der Funktion verändern. Haben Sie ihre Einstellungen vorgenommen, so müssen Sie diese Einstellungen mit dem Button Compile kompilieren und anschließend mit dem Button Save speichern. Lassen Sie sich nicht von der Fehlermeldung Function is currently in use verunsichern, diese führt auf einen Fehler in der Version 3.23 von uvision zurück und hat keine weiteren Auswirkungen auf die Simulation. Nachdem Sie den Function Editor verlassen haben können Sie nun wie gewohnt über Debug Start das Programm ablaufen lassen

37 37 Wie kann ich die Simulation des Analogsignals anzeigen? Der Verlauf des derzeitigen Analogsignals kann über den Logic Analyzer angezeigt werden. Dieser kann im Menü View über den Button Logic Analyzer gewählt werden. Bevor hier jedoch ein Signal angezeigt werden kann, muss dem Logic Analyzer zuerst mitgeteilt werden, welches Signal angezeigt werden soll. Diese Einstellung kann über einen Klick auf den Button Setup durchgeführt werden. Im nun geöffneten Menü kann über den Button New (Insert in der oberen Rechten Ecke ein neues Signal hinzugefügt werden. Hier kann z.b. P1.0 oder AIN1. eingetippt werden. Nach anschließender Bestätigung mit dem Button Close kann nun das Programm gestartet werden. Daraufhin müsste im Logic Analyzer der aktuelle Signalverlauf der angegebenen Eingänge angezeigt werden.

38 38 Wie kann ich die aktuellen Messergebnisse anschauen? Hierzu muss zuerst das sogenannte Memory Window geöffnet werden. Dies funktioniert über das Menü View und anschließend über den Button Memory Window. Im unteren Teil der Entwicklungsumgebung müsste sich nun ein Fenster mit einem Eingabefeld zur Adresseingabe geöffnet haben. In dieses Feld muss nun folgendes eingetippt werden: I:30H. I steht hierbei für den internen Speicher und 30 H für die Speicherstelle. Klicken Sie nun mit der rechten Maustaste in das Fenster darunter und aktivieren Sie dort den Menüpunkt ASCII. Wenn Sie nun das Programm starten, wird in diesem Fenster der aktuelle Wert in ASCII-Darstellung angezeigt. (siehe hierfür z.b. Kapitel Initialisierungen). Wie kann ich den Taster zur Ausgabe des Mittelwertes bedienen? Hierzu müssen Sie den Pin 1.3 toggeln. Dies können Sie tun in dem Sie im Menü Peripherals und dann über I/O Ports gefolgt von Port 1 das Menü zur Simulierung von Ports öffnen. Nun können Sie während das Programm läuft durch Anklicken der Checkbox für Pin 1.3 selbigen toggeln und somit die Ausgabe des Mittelwertes auslösen.

39 Abschluss 18.1 Warum kein Unterprogramm für 16 Bit Division und ASCII Ausgabe? Die Antwort dieser Frage mag auf den ersten Blick nicht sofort einleuchtend sein, jedoch hat hierbei das Verhältnis von Nutzen zu Aufwand eine sehr große Rolle gespielt. Doch vor der eigentlichen Beantwortung der Frage ein kurzes Fallbeispiel für die ASCII Ausgabe: Annahme: Es existiert ein Unterprogramm für die Ausgabe im ASCII Format beliebiger, dreistelliger Zahlen Dieses Programm müsste um die Allgemeinheit zu garantieren ungefähr so aussehen: - Lade auszugebenden Wert aus Register XY - Schreibe XY in Akku - Teile Akku durch Gebe Ergebnis aus - Teile Ergebnis durch 10 - Gebe Akku aus - Gebe Register B aus Fallbeispiel: Das oben beschriebene Unterprogramm wurde gerade aufgerufen um den so eben ermittelten Wert der Systole auszugeben und befindet sich an der Stelle Gebe Ergebnis aus. Zuvor wurde der auszugebende Wert 1 errechnet. Nun wird der Interrupt 3 ausgelöst und bekanntermaßen dadurch die aktuelle Herzfrequenz ermittelt und ausgegeben. Es wird nun also wieder das oben beschriebene Unterprogramm geladen und durchgeführt. Am Ende dieses Aufrufs befindet sich im Akku die Zahl 2. Nun wird die Interruptroutine beendet und die Ausgabe der Systole wird fortgesetzt. Statt der zuvor errechneten 1 wird aber nun eine 2 ausgegeben, da diese sich derzeit im Akku befindet. Fazit: Das Ergebnis wird verfälscht. Die Logische Konsequenz hieraus wäre die Werte im Akku, sowie im Carry und B Register zwischen zu speichern. Doch man stelle sich nun vor, es würde im Interrupt 3 noch ein weiterer Interrupt aufgerufen. Man stelle sich zum Beispiel den Aufruf der Interrupt 6 Routine vor. Es käme zu nur sehr schwer handhabbaren Verzerrungen der Ergebnisse in den einzelnen Registern, die jedes Mal bei einem Aufruf unter Umständen sogar mehrere Ebenen tief zwischen gespeichert werden müssten. Dies würde einen Mehraufwand und eine höhere Prozessorleistung bedeuten, die kaum in Relation zum Gewinn durch ein so kurzes eigenständiges Unterprogramm stehen würde. Aus diesem Grund wurde für die 16 / 16 Bit Division, sowie für die Ausgabe der ASCII keine strikte Anwendung eines einzelnen Unterprogramms durchgeführt, sondern vielmehr für die 16 Bit Division folgendermaßen vorgegangen: - Behandle 16 / 8 Bit Division als eigenständiges Problem und damit als eigenen Programmteil - Die zum Einsatz kommende 16 / 16 Bit Division kommt in der Herzfrequenzberechnung vor - Die 16 / 8 Bit Division kommt in der Mittelwertberechnung zu Einsatz

40 40 Bei der ASCII Ausgabe wird folgendermaßen vorgegangen: - Unterscheide zwischen Extremwert- und Herzfrequenzausgabe, da die Herzfrequenz durch einen Interrupt zu jedem beliebigen Zeitpunkt ausgelöst werden kann - Rufe die Extremwerteausgabe einzeln als Unterprogramm für die Ausgabe der Systole bzw. Diastole auf 18.2 Fazit Ziel dieser Projektarbeit war der Entwurf und die Implementierung eines Assemblerprogramms zur Messung des Blutdrucks, sowie der Herzfrequenz und die Möglichkeit zur Ausgabe eines Mittelwertes. Diese geforderten Ergebnisse wurden erreicht und in dieser Ausarbeitung, sowie im Code selber dokumentiert. Zusätzlich hierzu wurde noch die Ausgabe des aktuellen Blutdruckwertes mit eingebaut, sowie eine Variable C- Funktion zur Simulation eines Sinussignals und eines modifizierten Sinussignals mit Höcker geschrieben. Das Projekt hätte hinsichtlich der Laufzeit, sowie der Speicherplatzverteilung weiter optimiert werden können. Dies hätte aber wie bereits in der Dokumentation erwähnt eine erhebliche Steigerung des Arbeitsaufwandes für den Programmentwurf bedeutet, der gleichzeitig nicht zur Relation des Nutzens gestanden hätte, da dieses Projekt nicht kommerziell vermarktet werden soll. Abschließend gilt also zu sagen: Das Projekt konnte erfolgreich implementiert werden Quellenangabe - Datenblatt des Mikrocontrollers: - Erklärung der Vorgehensweise zur Durchführung einer A/D Wandlung mit 10 Bit Auflösung: - Skript zur Vorlesung Mikroprozessortechnik bei Herrn Prof. H. Trück

Zusammenfassung der Assemblerbefehle des 8051

Zusammenfassung der Assemblerbefehle des 8051 Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach

Mehr

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach

Mehr

MOP: Befehlsliste für den Mikrocontroller 8051

MOP: Befehlsliste für den Mikrocontroller 8051 Beuth Hochschule Berlin FB VI, Labor für Digitaltechnik MOP: Befehlsliste für den Mikrocontroller 8051 Erläuterung der Operanden Operand A addr11 addr16 bit /bit C #data #data16 direct DPTR PC Ri Rn rel

Mehr

Zähler- und Zeitgeber-Baugruppen

Zähler- und Zeitgeber-Baugruppen Zähler- und Zeitgeber-Baugruppen Sinn: häufig müssen Zeitbedingungen eingehalten werden z.b.: einige ms warten, Häufigkeit von Ereignissen zählen etc... Lösung: 1.) Zeitschleifen = Programm abarbeiten,

Mehr

Befehlssatz der Mikrocontroller der 51er -Familie

Befehlssatz der Mikrocontroller der 51er -Familie Befehlssatz der Mikrocontroller der 51er -Familie Abkürzungen: Mikrocontrollerfamilie 8051 Befehlssatz A : Akkumulator Rn : Register R0..R7 Ri : R0 oder R1 dadr : direkte Byte-Adresse im int. Speicher

Mehr

Befehlssatz der Mikrocontroller der 51er -Familie

Befehlssatz der Mikrocontroller der 51er -Familie Befehlssatz der Mikrocontroller der 51er -Familie Abkürzungen: Mikrocontrollerfamilie 8051 Befehlssatz A : Akkumulator Rn : Register R0..R7 Ri : R0 oder R1 dadr : direkte Byte-Adresse im int. Speicher

Mehr

LCD-Display am MVUS 80535 (nur einfachste Betriebsweise im Text Display Modus - ausführliche Beschreibung )

LCD-Display am MVUS 80535 (nur einfachste Betriebsweise im Text Display Modus - ausführliche Beschreibung ) Prof. Komar - 1 - LCD-Display LCD-Display am MVUS 80535 (nur einfachste Betriebsweise im Text Display Modus - ausführliche Beschreibung ) Das LCD-Modul TLX-1021 besteht aus einem - LCD-Panel mit 120 x

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

Mehr

3 Rechnen und Schaltnetze

3 Rechnen und Schaltnetze 3 Rechnen und Schaltnetze Arithmetik, Logik, Register Taschenrechner rste Prozessoren (z.b. Intel 4004) waren für reine Rechenaufgaben ausgelegt 4 4-Bit Register 4-Bit Datenbus 4 Kbyte Speicher 60000 Befehle/s

Mehr

Praktikum Mikrorechner 8 (Pulsweitenmodulation und Automaten)

Praktikum Mikrorechner 8 (Pulsweitenmodulation und Automaten) G. Kemnitz Institut für Informatik, Technische Universität Clausthal 5. November 24 /6 Praktikum Mikrorechner 8 (Pulsweitenmodulation und Automaten) G. Kemnitz Institut für Informatik, Technische Universität

Mehr

1. Keil starten. Sollten Sie keinen leeren Bildschirm haben, löschen Sie einfach die

1. Keil starten. Sollten Sie keinen leeren Bildschirm haben, löschen Sie einfach die 1 Einführung Keil uvision Bevor Sie Keil uvision starten, erstellen Sie sich einen Ordner im Verzeichnis C:/Keil/ wo Sie Ihre Projekte später ablegen. In diesem Ordner kopieren Sie die Datei 0_template.a51.

Mehr

Speicheraufbau des AT89C5131

Speicheraufbau des AT89C5131 Speicheraufbau des AT89C5131 Prinzip: - getrennter Programmspeicher (ROM) und Datenspeicher (RAM) - interner Speicher (auf dem Chip) und externer Speicher (Zusatzbausteine) Das Experimentalsystem hat keinen

Mehr

D.1 Vorbereitung. Teil D Analog-Digital-Wandler 1

D.1 Vorbereitung. Teil D Analog-Digital-Wandler 1 D.1 Vorbereitung So wird der Analog-Digital-Wandler des Mikrocontrollers ATmega328P initialisiert: ADMUX = _BV(REFS0); ADCSRA = _BV(ADEN) _BV(ADPS2) _BV(ADPS1) _BV(ADPS0); Der Analog-Digital-Wandler ist

Mehr

Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister)

Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister) Prof. Kemnitz Institut für Informatik, Technische Universität Clausthal November 5, 2014 1/18 Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister) Prof. Kemnitz Institut für Informatik, Technische

Mehr

Fingerpulsoximeter. 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-300 zum PC durch und speichere meine Messdaten auf dem PC?

Fingerpulsoximeter. 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-300 zum PC durch und speichere meine Messdaten auf dem PC? Mini-FAQ v1.5 PO-300 Fingerpulsoximeter 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-300 zum PC durch und speichere meine Messdaten auf dem PC? 2. Wie nehme ich mit dem PULOX PO-300 Daten auf

Mehr

16-Bit PCA Timer/Counter

16-Bit PCA Timer/Counter 4.5.1 Programmable Counter Array (PCA) Das Programmable Counter Array besteht aus fünf PCA-Modulen, die einen gemeinsamen 16- Bit Timer/Counter als Zeitbasis verwenden. ECI: Externer Clock-Eingang für

Mehr

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten

Mehr

Rechnergrundlagen SS Vorlesung

Rechnergrundlagen SS Vorlesung Rechnergrundlagen SS 27 4. Vorlesung Inhalt Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag 2er-Komplement BCD Addition und Subtraktion binär dargestellter Zahlen Carry und Overflow Little Endian

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil 8: gavrasmw und weitere Beispiele

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil 8: gavrasmw und weitere Beispiele Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil 8: gavrasmw und weitere Beispiele gavrasmw

Mehr

Aufgabe 2 -Grafische Messwertdarstellung. Labor Mikrocontroller mit NUC130. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) J.Hampel Dipl.-Ing. (FH) A.

Aufgabe 2 -Grafische Messwertdarstellung. Labor Mikrocontroller mit NUC130. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) J.Hampel Dipl.-Ing. (FH) A. Aufgabe 2 -Grafische Messwertdarstellung Labor Mikrocontroller mit NUC130 Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) J.Hampel Dipl.-Ing. (FH) A. Reber 22.10.2014 Inhalt 1 Einführung und Grundlagen... 2 1.1

Mehr

MikroController der 8051-Familie

MikroController der 8051-Familie i Dipl.-Ing. Roland Dilsch MikroController der 8051-Familie Aufbau, Funktion, Einsatz Vogel Buchverlag Inhaltsverzeichnis Vorwort 5 1 Was ist ein MikrocontroUer? 13 1.1 Aufbau eines Computers 13 1.2 Entstehung

Mehr

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3 Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3 Dr. Ekkart Kindler FG Softwaretechnik Institut für Informatik Übungsgruppenleiter: M.-R. Brojerdi H. Selke M. Meyer M.Tichy E. Münch

Mehr

Temperaturmessung mit dem ATmega8

Temperaturmessung mit dem ATmega8 Temperaturmessung mit dem ATmega8 Messaufbau: Der ADC des ATmega8 stellt uns 6 Kanäle zur Analog/Digital Wandlung zur Verfügung und wird mit der internen Spannungsquelle bzw. externen Spannungsquelle betrieben.

Mehr

Abbildung 4-9-1: Die Sound-Machine-Tastatur und der Arduino

Abbildung 4-9-1: Die Sound-Machine-Tastatur und der Arduino Projekt 4-9: Sound-Machine 4 9 Was hältst du davon, wenn wir Scratch in diesem Kapitel dazu bewegen, etwas Musik zu spielen? Natürlich nicht von alleine, sondern über eine kleine selbstgebaute Tastatur.

Mehr

2

2 TINF Interrupts EDT-Referat Jürgen Schwarzbauer 2ANB 1995/96 Inhalt : Was ist ein Interrupt? Zweck von Interrupts Maskierbare und nicht maskierbare Interrupts Aufruf eines Interrupts Anwendung von Interrupts

Mehr

Erste Schritte ACOSAnalyze II

Erste Schritte ACOSAnalyze II AVM Solutions AG Gewerbepark 5 9615 Dietfurt Erste Schritte ACOSAnalyze II Telefon +41 71 544 60 80 Fax +41 71 544 60 01 www.avm-solutions.ch [email protected] Version: 1.0 Datum: 20.05.2014 AVM Solutions

Mehr

Komponenten eines Mikrocontrollers

Komponenten eines Mikrocontrollers MC 27.04.2017 Komponenten eines Mikrocontrollers - Zentraleinheit: CPU (Central Processing Unit): 4, 8, 16 oder 32 Bit Datenwortbreite - Arbeitsspeicher: RAM (Random Access Memory = Speicher mit wahlfreiem

Mehr

4 Assembler für die 8051-Controller-Familie

4 Assembler für die 8051-Controller-Familie 4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert

Mehr

Anleitung zum Ausführen der vier Grundrechenarten mit dem russischen Abakus ( Stschoty )

Anleitung zum Ausführen der vier Grundrechenarten mit dem russischen Abakus ( Stschoty ) Zahlen darstellen 1 Anleitung zum Ausführen der vier Grundrechenarten mit dem russischen Abakus ( Stschoty ) 1 Zahlen darstellen 1.1 Stschoty in Grundstellung bringen Der Stschoty wird hochkant gehalten

Mehr

Hans-Böckler-Stiftung Ein schneller Einstieg in Bilanzanalyse für Windows

Hans-Böckler-Stiftung Ein schneller Einstieg in Bilanzanalyse für Windows Hans-Böckler-Stiftung Ein schneller Einstieg in Bilanzanalyse für Windows "Bilanzanalyse für Windows" ist ein Excelmakro mit einer eigenständigen Datenbank im Hintergrund. Um mit dem Makro arbeiten zu

Mehr

Analog-Digital-Converter

Analog-Digital-Converter Analog-Digital-Converter Funktionsprinzip ADC bei ATmega128 Beispiel in C Funktionsprinzip 1 Analog-Digital-Wandlung Wandelt analoge Spannung / analogen Strom (Messgröße) in einen binären Wert um, der

Mehr

D i g i t a l l a b o r

D i g i t a l l a b o r Hochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik Prof. Dr. A. Ditzinger / Dipl.-Inform. (FH) O. Gniot Prof. Dr. N. Link / Dipl.-Ing. J. Krastel D i g i t a

Mehr

LCD-Ansteuerung mit MikroForth

LCD-Ansteuerung mit MikroForth Das Attiny-Projekt LCD-Ansteuerung mit MikroForth 1 LCD-Ansteuerung mit MikroForth Zu unserer Attiny-Platine wird standardmäßig ein kleines LCD von der Firma Pollin beigelegt. Dieses ist auf eine kleine

Mehr

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf) Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele

Mehr

Digital-Wandlung. Transferierung von Daten aus der realen (analogen) Welt in die (digitale) Welt des Rechners.

Digital-Wandlung. Transferierung von Daten aus der realen (analogen) Welt in die (digitale) Welt des Rechners. AD-Wandlung: Transferierung von Daten aus der realen (analogen) Welt in die (digitale) Welt des Rechners. DA-Wandlung: Transferierung von Daten aus dem Rechner in die reale Welt 1 Wichtige Begriffe: analog

Mehr

PO-250. Fingerpulsoximeter. 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-250 zum PC durch und speichere meine Messdaten auf dem PC?

PO-250. Fingerpulsoximeter. 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-250 zum PC durch und speichere meine Messdaten auf dem PC? Mini-FAQ v1.5 PO-250 Fingerpulsoximeter 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-250 zum PC durch und speichere meine Messdaten auf dem PC? 2. Wie nehme ich mit dem PULOX PO-250 Daten auf

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

4-Kanal-Analoglogger für die Regelungstechnik

4-Kanal-Analoglogger für die Regelungstechnik LTAM-FELJC [email protected] 1 4-Kanal-Analoglogger für die Regelungstechnik Firmware Kommunikation mit dem PC Seriell mit 38400 Baud Kommandos:? = Liste aller Kommandos t = set time interval

Mehr

Benutzerhandbuch. ce - Inspector

Benutzerhandbuch. ce - Inspector ce - Inspector Stand: ce -Inspector 1.0 rel 21 17.01.2007 Erstellt durch Dipl.-Ing. (FH) Helmut Eß Am Hafen 22.. Telefon (0531)310390. Fax (0531)313074. E-Mail: [email protected]. http://www.was-bs.de Seite:

Mehr

Sportprogramm. Stoppuhr. Benutzerhandbuch

Sportprogramm. Stoppuhr. Benutzerhandbuch Stand 20.Mai 2006 Sportprogramm Stoppuhr Benutzerhandbuch Sportprogramme Lippert Alfred, Plassenberger Str. 14 92723 Gleiritsch, Fon 09655-913381 e-mail [email protected] Inhaltsverzeichnis 1. Systemvoraussetzungen

Mehr

Um Werte und deren Verlauf in einer Grafik darzustellen, benutzen wir eine Tabellenkalkulation wie Excel oder das Tabellendokument von Open Office.

Um Werte und deren Verlauf in einer Grafik darzustellen, benutzen wir eine Tabellenkalkulation wie Excel oder das Tabellendokument von Open Office. Erstellen einer Grafik mit Open Office oder Excel Um Werte und deren Verlauf in einer Grafik darzustellen, benutzen wir eine Tabellenkalkulation wie Excel oder das Tabellendokument von Open Office. Als

Mehr

$NOMOD51 $INCLUDE (reg515.inc) ; Ein Zeichen auf Tastendruck S1 senden...

$NOMOD51 $INCLUDE (reg515.inc) ; Ein Zeichen auf Tastendruck S1 senden... MC SS2016 - Aufgabenblatt 11a - Übung 4 Serielle Schnittstelle - Zeichen sen & empfangen In diesem Versuch lernen Sie die serielle Schnittstelle des AT89C5131 Mikrocontrollers kennen. Im ersten Versuchsteil

Mehr

Rechnergrundlagen SS Vorlesung

Rechnergrundlagen SS Vorlesung Rechnergrundlagen SS 2007 3. Vorlesung Inhalt Zahlensysteme Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag Binary Offset 1er-Komplement 2er-Komplement Addition und Subtraktion binär dargestellter

Mehr

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld C-Programmierung von MiCoWi mit der Keil-Entwicklungsumgebung µvision4 1. Erstellung eines neuen Projektes Menüpunkt: Project New µvision Project Es wird ein komplett neues Projekt in einem beliebigen

Mehr

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2 .9 Subtraktion 55.9 Subtraktion Allgemein Bezeichnungen: Minuend - Subtrahend = Differenz Die Subtraktion zweier Zahlen wird stellenweise ausgeführt. Dabei kann es vorkommen, dass eine größere Zahl von

Mehr

Mini-FAQ v1.3 CMS-50E. Fingerpulsoximeter

Mini-FAQ v1.3 CMS-50E. Fingerpulsoximeter Mini-FAQ v1.3 CMS-50E Fingerpulsoximeter 1.) Wie macht man einen Echtzeitdatentransfer vom PULOX CMS-50E zum Computer und wie speichert man diese Messdaten auf Festplatte? 2.) Wie nimmt man mit dem PULOX

Mehr

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen 3 Zahlendarstellung - Zahlensysteme - b-adische Darstellung natürlicher Zahlen - Komplementbildung - Darstellung ganzer und reeller Zahlen Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen......

Mehr

Projektdokumentation: DCF 77 Funkuhr

Projektdokumentation: DCF 77 Funkuhr Projektdokumentation: DCF 77 Funkuhr Seite 1 von 8 DCF-77 Signalanalyse Die DCF-77 Signale werden von einem Sender in Mainflingen (ca. 25 km südöstlich von Frankfurt am Main) von der Physikalisch-Technischen

Mehr

Kurzanleitung für den MyDrive Client

Kurzanleitung für den MyDrive Client Kurzanleitung für den MyDrive Client Hinweis: Prüfen Sie bei Problemen zuerst, ob eine neuere Version vorhanden ist und installieren Sie diese. Version 1.3 für MAC und Linux (29.06.2017) - Hochladen mit

Mehr

Mikrocontrollertechnik

Mikrocontrollertechnik Aufgaben: Impulse zählen (Zählerfunktion) Zeitintervalle erzeugen (Zeitgeberfunktion) Prinzipschaltbild: Die Programmierung erfolgt mit den Registern TMOD und TCON: timer.doc TSC Seite 1/8 timer.doc TSC

Mehr

Eigenschafte: Konfiguration: Baudrate:

Eigenschafte: Konfiguration: Baudrate: CAN1 Interface Lenkdatenmodul Eigenschafte: CAN Format : 2.0b Peripherie: CAN1 des STM32F407VGT6 des Discovery Boards Baudrate: Im Code Einstellbar von 125 kbit/s bis 1Mbit/s Akzeptanzefilter: nicht gesetzt

Mehr

SVG Maut Exact. SVG Wir bewegen Logistik

SVG Maut Exact. SVG Wir bewegen Logistik SVG Wir bewegen Logistik Inhaltsverzeichnis Registrierung und Login... 2 Meldung über Programänderungen und administrative Mitteilungen... 4 Menüleiste und Aufteilung des Programms... 4 1. Imports... 4

Mehr

Reziprok Zähler mit 9-stelliger Anzeigegenauigkeit 10 Hz 1300 MHz

Reziprok Zähler mit 9-stelliger Anzeigegenauigkeit 10 Hz 1300 MHz Reziprok Zähler mit 9-stelliger Anzeigegenauigkeit 10 Hz 1300 MHz Dieser Reziprok Zähler kann bei allen Frequenzen eine Anzeigegenauigkeit von 9 Stellen erreichen. Der Frequenzbereich geht von 10 Hz bis

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

11. Die PC-Schnittstelle

11. Die PC-Schnittstelle PC-Schnittstelle Funktion -1. Die PC-Schnittstelle.1. Funktion Die folgenden Angaben gelten ohne Einschränkung für den PC, PC-XT, PC-AT, AT-386, AT-486 und kompatible Rechner. Sie sind nur für jene interessant,

Mehr

PIC16 Programmierung in HITECH-C

PIC16 Programmierung in HITECH-C PIC16 Programmierung in HITECH-C Operatoren: Arithmetische Operatoren - binäre Operatoren + Addition - Subtraktion * Multiplikation / Division % Modulo + - * / sind auf ganzzahlige und reelle Operanden

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

EDT-REFERAT Adressierungsarten

EDT-REFERAT Adressierungsarten EDT-Referat BÜLBÜL Erkan 2ANB 95 /96 Seite 1 EDT-REFERAT Adressierungsarten INHALTSVERZEICHNIS 1.Theoretische Grundlagen 1.0 Einführung 1.1 Programm- & Datenspeicheradressierbereiche 2.Adressierungsarten

Mehr

Eclipse Tutorial.doc

Eclipse Tutorial.doc Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik Eclipse Tutorial 2005, HTI Burgdorf R. Weber Dateiname: Eclipse

Mehr

V cc. 1 k. 7 mal 150 Ohm

V cc. 1 k. 7 mal 150 Ohm Ein Digitalvoltmeter Seite 1 von 6 Eine Multiplex-Anzeige Mit diesem Projekt wird das Ziel verfolgt, eine mehrstellige numerische Anzeige für Mikrocontroller-Systeme zu realisieren. Die Multiplex-Anzeige

Mehr

Er ermöglicht die Suche nach allen verfügbaren Informationen, die in diesem Feld eingetragen werden können (z. B. Kontonummer, Artikelname usw.).

Er ermöglicht die Suche nach allen verfügbaren Informationen, die in diesem Feld eingetragen werden können (z. B. Kontonummer, Artikelname usw.). Matchcode Der Matchcode, der über die Lupe aufgerufen werden kann, steht für Personenkonten, für Artikel, für Arbeitnehmer, für Projekte usw. (je nach Lizenz bzw. Status des angemeldeten Benutzers) zur

Mehr

Gegenüberstellung von Assembler- und C-Programmierung

Gegenüberstellung von Assembler- und C-Programmierung Gegenüberstellung von Assembler- und C-Programmierung Assembler-Version C-Version org 8000h #pragma code=0x8000 #pragma xdata=0x2000 INPUT equ 0e081h OUTPUT equ 0e082h neu: mov dptr,#input movx a,@dptr

Mehr

Installationshandbuch für das Word Plugin

Installationshandbuch für das Word Plugin Installationshandbuch für das Word Plugin Stand: ab Version 3.1.2, 2014 1. VORAUSSETZUNGEN MS WORD... 3 2. ENTFERNEN DES AKTUELLEN PLUGINS... 4 3. HERUNTERLADEN DES NEUEN PLUGINS... 5 4. INSTALLIEREN DES

Mehr

2017/01/23 15:50 1/5 Bedienung

2017/01/23 15:50 1/5 Bedienung 2017/01/23 15:50 1/5 Bedienung Bedienung (J.Müller, Hilfe zu JTCEMU) Das originale 2K-System Das 2 KByte große Betriebssystem bietet die wichtigsten Funktionen zur Eingabe und Verwaltung von BASIC-Programmen.

Mehr

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

AVR-Mikrocontroller in BASCOM programmieren, Teil 2 [email protected] 1 AVR-Mikrocontroller in BASCOM programmieren, Teil 2 13. Interrupts 13.1 Externe Interrupts durch Taster Wenn Taster mittels Polling abgefragt werden, wie in Teil 1 beschrieben,

Mehr

Visual Basic Editor CATIA V5

Visual Basic Editor CATIA V5 Visual Basic Editor CATIA V5 Daniel Frauenrath Allgemein Der Visual Basic Editor ist fester Bestandteil von CATIA V5. Im Gegensatz zum internen Editor für CATScript und CATVbs hat der Visual Basic Editor

Mehr

ELBA-business Anzeige von Belegen/Images in ELBA 5.6.0

ELBA-business Anzeige von Belegen/Images in ELBA 5.6.0 Anzeige von Belegen/Images in ELBA 5.6.0 Anzeige von Belegen und Images in ELBA-business Seite 1 Beleg-/Imageanzeige 1.1 Allgemeines Bei Zusatzinformationen als Beilage zu Ihrem Kontoauszug spricht man

Mehr

Die Benutzung von Stata

Die Benutzung von Stata Anhang A Die Benutzung von Stata Stata ist ein kommerzielles Statistikprogramm, das mit umfangreicher Dokumentation geliefert wird. Da wir davon ausgehen, dass Sie über eine legale Version von Stata und

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

C/C++ Debugging mit CDT unter Eclipse

C/C++ Debugging mit CDT unter Eclipse C/C++ Debugging mit CDT unter Eclipse Bevor Sie mit dem Debuggen beginnen können, müssen Sie eine compilierbare Applikation erstellen, also eine Applikation, die keine Syntaxfehler mehr enthält. Sie können

Mehr

eoslogistics Anleitung / Systemvoraussetzungen innight.web processing solutions eoscop gmbh Im Kugelfang 38 CH-4102 Binningen

eoslogistics Anleitung / Systemvoraussetzungen innight.web processing solutions eoscop gmbh Im Kugelfang 38 CH-4102 Binningen eoscop gmbh Im Kugelfang 38 CH-4102 Binningen eoscop gmbh Roggenstrasse 5 CH-4665 Oftringen Tel. +41 (0)62 788 44 44 [email protected] Anleitung / Systemvoraussetzungen innight.web Datum 31. November 2006

Mehr

Anleitung um Lieder in 432Hz Kammerton umzuwandeln

Anleitung um Lieder in 432Hz Kammerton umzuwandeln Anleitung um Lieder in 432Hz Kammerton umzuwandeln Laden Sie folgende Programme von den Links der Webseiten herunter. Alle Programme sind gratis und frei nutzbar. Programm cdex (CD auf Festplatte speichern,

Mehr

Observer. Handbuch. Handbuch Observer. Abbildung: Beispiel Observer. Abbildung: Beispiel Touchinterface

Observer. Handbuch. Handbuch Observer. Abbildung: Beispiel Observer. Abbildung: Beispiel Touchinterface Handbuch Abbildung: Beispiel Abbildung: Beispiel Touchinterface LNT Automation GmbH LNT 09_06_2015_V01_0.docx 2015-06-09 1 Inhalt 1 Allgemeines... 3 1.1 Überblick... 3 1.2 Software Konfiguration... 3 2

Mehr

1 Excel Schulung Andreas Todt

1 Excel Schulung Andreas Todt 1 Excel Schulung Andreas Todt Inhalt 1 Darum geht es hier... 1 2 So wird es gemacht... 1 2.1 Zellen und Blatt schützen... 1 2.2 Arbeitsmappe schützen... 5 2.3 Schritt für Schritt... 6 1 Darum geht es hier

Mehr

Anwendungen der Mikrocontrollertechnik

Anwendungen der Mikrocontrollertechnik Anwendungen der Mikrocontrollertechnik Projektarbeit WS15/16 Prof. Dr.-Ing. Dietmar A. Brück Jannik Haupenthal 3601110 Stichpunkte: Entwicklung der Aufgabenstellung zu der Erweiterungsplatine 7 Segment

Mehr

Anpassen BS-Explorer

Anpassen BS-Explorer Anpassen BS-Explorer Die Ansicht des BS-Explorers kann auf Ihre Bedürfnisse individuell angepasst werden. Nicht nur die Symbolleiste sondern auch die Mandatsansicht kann Ihren Wünschen entsprechend verändert

Mehr

Da der Mikrocontroller mit den internen Timern sehr genau Zeiten messen kann, entschieden wir uns für die Zeitmessung.

Da der Mikrocontroller mit den internen Timern sehr genau Zeiten messen kann, entschieden wir uns für die Zeitmessung. Stufe 1: Das Projekt Fahrradcomputer wurde in der Stufe 1 zunächst auf die Messung der Geschwindigkeit gerichtet. Dabei soll der Mikrocontroller die Impulse auswerten, die von einem Sensor an der Fahrradgabel

Mehr

Teledyne LeCroy - WaveSurfer Arbiträr-Generator

Teledyne LeCroy - WaveSurfer Arbiträr-Generator Teledyne LeCroy - WaveSurfer 3000 - Arbiträr-Generator Wie wird mit dem integrierten Arbiträr-Generator eine Kurve generiert, die mit dem Oszilloskop erfasst wurde? Das Oszilloskop WaveSurfer 3000 von

Mehr

E Mikrocontroller-Programmierung

E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E.1 Überblick Mikrocontroller-Umgebung Prozessor am Beispiel AVR-Mikrocontroller Speicher Peripherie Programmausführung Programm laden

Mehr

Der CodeBug. A) Erste Schritte. 1) Einleitung

Der CodeBug. A) Erste Schritte. 1) Einleitung Der CodeBug A) Erste Schritte 1) Einleitung.) Wenn wir den CodeBug mittels USB-Kabel bei gedrückter Taste A an den Computer anschließen, blinkt die erste LED rot. Der Computer selbst erkennt ihn als einfachen

Mehr

Leitfaden für Online-Datenrecherche (STAT-TAB)

Leitfaden für Online-Datenrecherche (STAT-TAB) Eidgenössisches Departement des Innern EDI Bundesamt für Statistik BFS Ressourcen und Internationales Leitfaden für Online-Datenrecherche (STAT-TAB) Inhalt 1 Einleitung 2 2 Suchen von Cubes via Facettensuche

Mehr

Operationsmodi des Timers Modus 0 : Ausschalten des Zählers

Operationsmodi des Timers Modus 0 : Ausschalten des Zählers Ergänzung PIAT Operationsmodi des Timers Modus 0 : Ausschalten des Zählers LC und UC wird angehalten. IRQT wird gesperrt (Bit 7 im CMCR wird 0) UF Bit wird gelöscht (Bit 7 im SR) Die Daten in UC, LC, UL,

Mehr

Easy-One. Controller. Bedienungsanleitung. Ab Version Internet:

Easy-One. Controller. Bedienungsanleitung. Ab Version Internet: Controller Bedienungsanleitung Ab Version 1.3 email: [email protected] Internet: http://www.glp.de Inhaltsverzeichnis 1 Gerätebeschreibung und Funktionen... 2 2 Anschluß und DMX Einstellungen... 3 3 Bedienung

Mehr

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten. Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten [email protected] 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken

Mehr

Verarbeiten von Analogwerten

Verarbeiten von Analogwerten Verarbeiten von Analogwerten Allgemein Bisher haben wir nur Signale verarbeitet, die digitaler (binärer) Art waren. Sie können nur zwei verschiedene Zustände annehmen. Die Außenwelt einer SPS ist aber

Mehr

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2 3.9 Subtraktion 155 3.9 Subtraktion Allgemein Bezeichnungen: Minuend - Subtrahend = Differenz Die Subtraktion zweier Zahlen wird stellenweise ausgeführt. Dabei kann es vorkommen, dass eine größere Zahl

Mehr

Rechnergrundlagen SS Vorlesung

Rechnergrundlagen SS Vorlesung Rechnergrundlagen SS 27 5. Vorlesung Inhalt Interpretation hexadezimal dargestellter Integer-Zahlen Little Endian / Big Endian Umrechnung in eine binäre Darstellung Ausführung von Additionen Optimierte

Mehr

Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 :

Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 : Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 : Lieferumfang : USB-Netzwerkkabel Treiber-Diskette Deutsche Installationsanleitung Produktbeschreibung : Das USB-Netzwerkkabel ermöglicht

Mehr

(BG Rechte Kremszeile, Version 1.0, Schuljahr 2007/08, remastered von Mag. Dr. Klaus Misof)

(BG Rechte Kremszeile, Version 1.0, Schuljahr 2007/08, remastered von Mag. Dr. Klaus Misof) Inhaltsverzeichnis Starten des Programms:... 2 Einstellen der Sprache:......2 Oberfläche von KTouch:... 3 Einstellen eines deutschen Kurses:....4 Es kann los gehen:......4 Vergrößern der Ansicht:......6

Mehr

LED Skalenbeleuchtung mit einem Arduino

LED Skalenbeleuchtung mit einem Arduino Projektteil: LED Skalenbeleuchtung mit einem Arduino Aufgaben: - Ein Taster schaltet die LED-Beleuchtung ein - Nach Ablauf einer im Programm hinterlegten Zeit schaltet sich die Beleuchtung von selbst wieder

Mehr

Innovator 11 excellence. Anbindung an Visual Studio. Einführung, Installation und Konfiguration. Connect. Roland Patka.

Innovator 11 excellence. Anbindung an Visual Studio. Einführung, Installation und Konfiguration. Connect. Roland Patka. Innovator 11 excellence Anbindung an Visual Studio Einführung, Installation und Konfiguration Roland Patka Connect www.mid.de Inhaltsverzeichnis Einführung... 1 Innovator Add-in im Visual Studio registrieren...

Mehr

Kurzanleitung Hama Photokalender v

Kurzanleitung Hama Photokalender v Inhalt 1. Vorwort / Installation 2. Software- / Druckereinstellungen 3. Symbole und Objekte 1. Vorwort / Installation Hama Photokalender ist ein einfaches, leicht anzuwendendes Programm zum erstellen individueller

Mehr

Steffen Weißer Juni 2003 TG 12/3

Steffen Weißer Juni 2003 TG 12/3 Steffen Weißer Juni 2003 TG 12/3 I Inhaltsverzeichnis I Inhaltsverzeichnis...1 II Aufgabenbeschreibung...3 III Inbetriebnahme...3 IV Technologieschema...4 V Schaltplan...5 VI Funktionsbeschreibungen...6

Mehr

Vorbemerkungen. Die Programmieroberfläche des ClassPad

Vorbemerkungen. Die Programmieroberfläche des ClassPad Vorbemerkungen Erfahrungen zeigen, dass die Programmiermöglichkeiten des ClassPad im Unterricht kaum genutzt werden. Dabei bieten aus unserer Sicht viele Situationen die Gelegenheit, die Programmieroberfläche

Mehr

Das Bundesland wechseln: (in der Demoversion nicht möglich) Klicken Sie auf Extras / Optionen Anschließend auf den Reiter Ferienordnung

Das Bundesland wechseln: (in der Demoversion nicht möglich) Klicken Sie auf Extras / Optionen Anschließend auf den Reiter Ferienordnung Wie kann ich: Das Bundesland wechseln Den Stundenplan nutzen Den Unterrichtsplaner nutzen Unterrichtplaner Einträge bearbeiten Ein RTF-Dokument importieren Schüler- und Notenliste bearbeiten Noten eintragen

Mehr