Einführung in AVR Assembler

Größe: px
Ab Seite anzeigen:

Download "Einführung in AVR Assembler"

Transkript

1 Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München

2 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten Zugriff auf Ressourcen wie Register, Speicher und Ports Instruktionen lassen sich direkt in (bei AVR 16 Bit breite) Machinenbefehle übersetzen, die vom Prozessor aus dem Speicher gelesen und ausgeführt werden Bsp: add r0, r

3 Register: Eigenschaften Allgemein spezielle, idr 8 Bit breite Speicher sehr schneller Zugriff durch CPU möglich können zb im Gegensatz zu Speicherzellen im Hauptspeicher direkt in Assembler-Instruktionen verwendet werden insgesamt 32 Register (r0 bis r31) verfügbar r0 bis r15 jedoch nur eingeschränkt nutzbar

4 Register: Verwendung ldi r16, 0 (Konstante 0 in r16 laden) ldi r16, 30 (Konstante 0 in r16 laden) ldi r16, 0xff (Hexadezimale Konstante 0xff, also 255, in r16 laden) mov r17, r16 (Wert in r16 nach r17 kopieren) add r16, r17 (Wert in r17 zu Wert in r16 addieren) addi r16, 10 (Konstante 10 zu Wert in r16 addieren) andi r16, 0b (UND-Verknüpfung von Wert in r16 mit Binärwert , also 15) lsl r16 (Bits in r16 um eine Position nach links schieben) cpi r16, 37 (Wert in r16 mit Konstante 37 vergleichen)

5 Register: Eigenschaften Lange Register Registerpaare r25:24, r27:r26, r29:r28 und r31:30 bilden 16-Bit-Register ( lange Register ) r27:r26, r29:r28 und r31:30 auch als X, Y und Z adressierbar bestehen aus high byte und low byte XL (r26) steht bspw für niederes Byte in X, XH (r27) für höheres Um bspw konstanten Wert in 16-Bit-Register zu laden, sind zwei ldi-instruktionen nötig (zb ldi r25, 1 und ldi r24, 255 r25:r24 enthält Wert 511) X, Y und Z können als Zeiger in Speicher verwendet werden

6 Lange Register: Verwendung adiw ZH:ZL, 1 (Konstante 1 zu 16-Bit-Wert in langem Register Z addieren) adiw r25:r24, 90 (Konstante 90 zu 16-Bit-Wert in langem Register r25:r24 addieren) sbiw ZH:ZL, 1 (Konstante 1 von 16-Bit-Wert in langem Register Z subtrahieren) sbiw r25:r24, 90 (Konstante 90 von 16-Bit-Wert in langem Register r25:r24 subtrahieren) ld r16, Z (lade Wert, der an Speicherstelle Z steht, in r16) st Z, r16 (schreibe Wert in r16 in Speicherstelle Z)

7 Ports: Eigenschaften Allgemein dienen meist der Kommunikation mit internen oder externen Geräten AVRs haben bis zu 64 direkt addressierbare Ports Addressierung über vordefinierte Konstanten, zb PORTB Statusregister bestimmte Operationen manipulieren Bits im Statusregister Bsp: dec r16 setzt Zero-Flag, falls Ergebnis 0 ist Bsp: cpi r16, 10 setzt Zero-Flag, falls r16 Wert 10 enthält nützlich für Steuerung des Programmablaufs (mehr dazu später)

8 Ports: Verwendung I/O-Ports müssen vor Verwendung explizit als Ein-/Ausgabe-Port konfiguriert werden PORTx bzw PINx wird mittels DDRx (data direction register) konfiguriert (x ist Platzhalter): ldi r16, 0xff out DDRA, r16 ldi r16, 0 out DDRB, r16 ; alle Bits in r16 auf 1 setzen ; Wert in DDRA schreiben ; PORTA ist nun Ausgabe-Port, ; zb fuer LEDs ; alle Bits in r16 auf 0 setzen ; Wert in DDRB schreiben ; PINB ist nun Eingabe-Port, ; zb fuer Schalter

9 Ports: Verwendung out PORTB, r16 (Wert in r16 auf Port B ausgeben) in r17, PIND (Wert an Port D in Register r17 einlesen) sbi PORTB, 0 (Bit 0 von Port B setzen) cbi PORTB, 0 (Bit 0 von Port B löschen)

10 Sprungbefehle und Labels Kontrollstrukturen in Hochsprachen Verzweigungen: if ( ) { } Schleifen: while ( ) { }, for ( ) { } Wie in Assembler realisiert? Labels Markieren Speicherstellen, an denen Daten oder Programmcode stehen können Sprungbefehle Springen zu Labels, dh die Programmausführung wird an der durch das Label markierten Speicherstelle fortgesetzt

11 Sprungbefehle und Labels: Beispiele Endlosschleife durch unbedingten Sprung main: rjmp main for-schleife mit 100 Iterationen ldi r16, 0 ; Zählvariable initialisieren schleife: ; Sprung-Label inc r16 ; Zählvariable um eins erhöhen cpi r16, 100 ; und mit Konstante 100 vergleichen brlo schleife ; brlo = branch if lower ; also Schleife erneut starten, ; solange r16 < 100

12 Sprungbefehle und Labels: Beispiele if-verzweigung cpi r16, 100 ; Vergeich mit Konstante 100 brne ungleich ; brne = branch if not equal ; falls r16 den Wert 100 enthält, ; wird die Ausführung hier ganz ; normal fortgesetzt und der rjmp if_ende ; ungleich -Zweig übersprungen ungleich: ; Ausführung hier fortsetzen, falls ; r16 nicht 100 enthält if_ende:

13 Sprungbefehle und das Statusregister Operationen mit Auswirkung auf Statusregister Mathematische Operationen: add, sub, inc, dec, Bit-Operatoren: and, or, com, lsl, lsr, setzen zb Zero-Flag, wenn Ergebnis 0 ist add speichert Übertrag im Carry-Flag lsl und lsr speichern dort das rausgeschobene Bit Vergleichsoperationen: cp, cpi, setzen ebenfalls Zero-Flag, wenn verglichene Werte identisch sind

14 Sprungbefehle und das Statusregister Von Bits im Statusregister beeinflusste Operationen breq: branch if equal, dh wenn Zero-Flag gesetzt ist brne: branch if not equal brcs: branch if carry set, dh wenn Carry-Flag gesetzt ist brcc: branch if carry cleared brsh: branch if same or higher brlo: branch if lower

15 Stack dt: Stapel dient der Speicherung von Daten im Arbeitsspeicher LIFO-Prinzip: last in, first out zuletzt auf Stack abgelegtes Byte wird als erstes gelesen Operationen: push (legt Byte auf Stack ab) pop (entfernt zuletzt abgelegtes Byte vom Stack)

16 Stack: Beispiel PC: program counter, zeigt auf nächsten Befehl SP: stack pointer, zeigt auf höchste freie SRAM-Adresse Die Hexadezimalzahlen stellen Speicheradressen dar PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r18??? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

17 Stack: Beispiel Konstante 16 wurde in Register r16 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r18 16?? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

18 Stack: Beispiel Konstante 17 wurde in Register r17 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r ? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

19 Stack: Beispiel Konstante 18 wurde in Register r18 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

20 Stack: Beispiel Wert in r16 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF? 0x1FFE? 0x1FFD?

21 Stack: Beispiel Wert in r17 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE? 0x1FFD?

22 Stack: Beispiel Wert in r18 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

23 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r17 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

24 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r18 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

25 Stack: Beispiel Konstante 15 wurde zu Wert in r16 addiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

26 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r16 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

27 Stack: Initialisierung Um den Stack eines AVR-Mikrocontrollers nutzen zu können, muss zunächst der Stack-Pointer über den Port SP initialisiert werden: ldi r16, low(ramend) out SPL, r16 ldi r16, high(ramend) out SPH, r16 Die 16-Bit-Konstante RAMEND enthält die höchste gültige SRAM-Adresse low liefert deren niederes Byte, high das höhere Anschließend können push und pop wie im Beispiel verwendet werden

28 Subroutinen Beispiel in C++ void swap ( int& a, int& b ) { int temp = a; a = b; b = temp; }

29 Subroutinen Äquivalent in Assembler (Werte in r16 und r17 vertauschen) swap: push r18 mov r18, r16 mov r16, r17 mov r17, r18 pop r18 ret rcall swap ; Beginn der Subroutine ; Wert von r18 sichern ; Werte in r16 und r17 mit ; Umweg über r18 vertauschen ; alten Wert von r18 wiederherstellen ; Rücksprungadresse vom Stack holen ; und dorthin springen ; Rücksprungadresse (dh Adresse der ; nachfolgenden Instruktion) auf Stack ; ablegen und zum Label swap springen

30 Subroutinen & Stack: Beispiel Informationen zum folgenden Beispiel Subroutine (mit Label swap) beginnt an Adresse 0x80 im Flash-Speicher Warum ausgerechnet bei 0x80? Dazu später mehr Dahinter folgt ab Adresse 0x92 das Hauptprogramm (Label main) Programmausführung beginnt bei AVR-Mikrocontrollern immer an Adresse 0x00 Dort steht Sprungbefehl zum Label main, dh Subroutine wird zunächst übersprungen und Hauptprogramm wird ausgeführt

31 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18?? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

32 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18?? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

33 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18 5? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

34 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

35 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF? 0x1FFE? 0x1FFD?

36 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

37 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

38 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

39 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

40 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

41 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

42 Subroutinen Zu beachtende Regeln vor Aufruf von Subroutinen Stack-Pointer initialisieren, da rcall dort die Rücksprungadresse ablegt benutzte Register zu Beginn der Subroutine ggf auf Stack sichern und am Ende wiederherstellen, damit Werte nicht verloren gehen sicherstellen, dass Stackpointer vor ret wirklich dieselbe Adresse enthält wie zu Beginn der Subroutine; sonst erfolgt Sprung an falsche Adresse!

43 Interrupts Unterbrechungen des Programmablaufs ausgelöst zb durch Timer-Überlauf oder wechselnden Pegel an Port ATmega-Datenblätter enthalten Liste der auf jeweiligen MCUs verfügbaren Interrupts Vorteil: Man muss nicht ständig selber prüfen, ob das auslösende Ereignis eingetreten ist Interruts aktivieren: sei Interruts deaktivieren: cli Interrupt-Service-Routine (ISR), die durch Interrupt ausgelöst wird, wird über Interrupt-Vektor festgelegt

44 Interrupts Interrupt-Vektor beginnt an Adresse 0x00 im Flash-Speicher Adressen enthalten rjmp-befehle, die Sprung an Startadresse der entsprechenden ISR veranlassen bei Eintreten eines Interrupts: Interrupts werden deaktiviert aktueller Befehl wird abgearbeitet, Programmzähler erhöht Wert des Programmzählers wird auf Stack gesichert Sprung an fest definierte Adresse im Interrupt-Vektor Ausführung des dortigen Sprungbefehls ISR muss idr mit Befehl reti enden reti lädt Rücksprungadresse von Stack in Programmzähler und aktiviert anschließend Interrupts (dh Stackpointer muss vor Ausführung von reti denselben Wert enthalten wie zu Beginn der ISR!)

45 Interrupts Interrupt-Vektor: Beispiel org 0x00 rjmp MAIN_LOOP ; wird bei Programmstart ausgeführt org OVF0addr rjmp TIMER0_OVERFLOW ; Timer-0-Überlauf TIMER0_OVERFLOW: [Interrupt-Behandlung] reti MAIN_LOOP: [Hauptprogramm, hier muss zb sei ausgeführt werden]

46 Interrupts Interrupt-Vektor: Anmerkungen Im Beispiel wird davon ausgegangen, dass nur der Timer-0-Interrupt aktiviert wurde Wurden andere Interrupts aktiviert, ohne entsprechende rjmp-befehle im Interrupt-Vektor einzutragen, treten Fehler auf Zur Sicherheit kann man an jeder Adresse im Interrupt-Vektor, die noch keinen rjmp-befehl enthält, den Befehl reti eintragen Wenn dann der zugehörige Interrupt ausgelöst wird, hat er keine Auswirkung

Sprungbefehle und Kontroll-Strukturen

Sprungbefehle und Kontroll-Strukturen Sprungbefehle und Kontroll-Strukturen Statusregister und Flags Sprungbefehle Kontrollstrukturen Das Status-Register 1 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Assembler-Unterprogramme

Assembler-Unterprogramme Assembler-Unterprogramme Rolle des Stack Prinzipieller Ablauf Prinzipieller Aufbau Unterprogramme void main(void) int sub(int i) { { int i,k; return i*2; i = sub(13); } k = sub(14); } Wie macht man das

Mehr

Einführung in AVR-Assembler

Einführung in AVR-Assembler Einführung in AVR-Assembler Easterhack 2008 Chaos Computer Club Cologne Stefan Schürmans, BlinkenArea stefan@blinkenarea.org Version 1.0.4 Easterhack 2008 Einführung in AVR-Assembler 1 Inhalt Vorstellung

Mehr

Atmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös

Atmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös Atmega Interrupts Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös Inhaltsverzeichnis Vorbereitung Was Sind Interrupts Interruptvektoren Software Interrupts Hardware Interrupts Quellen 2 Vorbereitung Rechner

Mehr

Core und Speicher des ATmega16

Core und Speicher des ATmega16 Ausarbeitung Core und Speicher des ATmega16 Verfasst von: Daniel Dünker Quellen: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf Inhaltsverzeichnis 1.Allgemeines (S. 3) 2.Die Alu (S. 4) 3.Das

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

Teil III: Wat macht ene Mikrokontroller?

Teil III: Wat macht ene Mikrokontroller? Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil III: Wat macht ene Mikrokontroller?

Mehr

Schritt Aktion Erläuterung 1 UBRR auf 25 setzen Baudrate auf 9600 TXEN-Bit von UCSRB auf 1 setzen

Schritt Aktion Erläuterung 1 UBRR auf 25 setzen Baudrate auf 9600 TXEN-Bit von UCSRB auf 1 setzen Das Attiny-Projekt Unterprogramme in Assembler 1 Unterprogramme Unterprogramme haben wir schon im Zusammenhang mit BASCOM kennen gelernt. Auch Assemblerprogramme können durch Unterprogramme strukturiert

Mehr

Atmel AVR für Dummies

Atmel AVR für Dummies Atmel AVR für Dummies fd0@koeln.ccc.de 29.12.2005 Übersicht 1 Hardware Kurzvorstellung Atmega8 Programmierkabel (Eigenbau vs. Kommerzlösung) Alternative: Bootloader (Programmieren via rs232) Software Speicher

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Grundlegende Programmiertechniken

Grundlegende Programmiertechniken Das Attiny-Projekt Grundlegende Programmiertechniken 1 Grundlegende Programmiertechniken Es gibt zwei Aspekte der Assemblerprogrammiertechnik, die als grundlegend angesehen werden können: Zum Einem der

Mehr

Aufbau eines Assembler-Programms

Aufbau eines Assembler-Programms Aufbau eines Assembler-Programms. Assembler-Anweisungen (Direktiven) Einbindung von include-files Definition von Konstanten, Reservierung von Speicherplatz im RAM, 2. Was tun, wenn C Reset-Signal erhält

Mehr

Name : Klasse : Punkte : Note :

Name : Klasse : Punkte : Note : ESI Semesterendprüfung 15.6.2009 Name : Klasse : Punkte : Note : Zeit: 12.50 bis 13.35 Die Aufgaben sind möglichst direkt auf den Blättern zu lösen (Antworten bitte in ganzen Sätzen!), bei Bedarf die Rückseite

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler

Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler 1. Oktober 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung / Diskussion 1.

Mehr

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige 1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige 1.9.1 Idee Bei der Programmentwicklung braucht man es ab und zu, dass man sich an bestimmten Stellen des Programms Variablenwerte anzeigen lässt. Bei

Mehr

1.7 Atmega-Programmierung in ASM/Verschachtelte Schleifen

1.7 Atmega-Programmierung in ASM/Verschachtelte Schleifen .7 Atmega-Programmierung in ASM/Verschachtelte Schleifen.7. Aufgabe Die beiden LEDs sollen abwechselnd blinken. Mit der bisherigen Lösung flackern sie nur (Beispiel: blink0.asm):. include /usr/share/avra/m8def.

Mehr

ProcessorsTechnik Labor LCD-Uhr

ProcessorsTechnik Labor LCD-Uhr ProcessorsTechnik Labor LCD-Uhr Xu,Zhen 20465719 Aufgabe Beschreibung:LCD-Uhr HardWare :LCD161A. (4B.8B Dataverarbeiten ). Clock Chip:KS0066U Programmieren Sprache :Assemble LCD1602 PIN definieren : Pin

Mehr

Das Attiny-Projekt Der Bootloader 1

Das Attiny-Projekt Der Bootloader 1 Das Attiny-Projekt Der Bootloader 1 Der Bootloader Bei unserer Attiny-Platine werden die Programme über die serielle Schnittstelle übertragen. Grundsätzlich wäre es möglich, hierzu auf die im Attiny-Mikrocontroller

Mehr

Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET

Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, UP Stack (Stapel, FIFO) wird benötigt UP-Ruf:

Mehr

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

U5-2 Register beim AVR-µC

U5-2 Register beim AVR-µC U5 4. Übungsaufgabe U5 4. Übungsaufgabe U5-2 Register beim AVR-µC U5-2 Register beim AVR-mC Grundlegendes zur Übung mit dem AVR-µC 1 Überblick Register Beim AVR µc sind die Register: I/O Ports Interrupts

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das

Mehr

Technische Informatik 2: Addressierung und Befehle

Technische Informatik 2: Addressierung und Befehle Technische Informatik 2: Addressierung und Befehle Memory Map Programm Speicher: Adresse $000-$FFF max. 4096 Byte für kompiliertes Programm Data Memory: Adresse $0000-$FFFF 32 8Bit Register 64 I/O Register

Mehr

Use of the LPM (Load Program Memory)

Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Instruction with the AVR Assembler Load Constants from Program Memory Use of Lookup Tables The LPM instruction is included in the

Mehr

Praktikum Automatisierungstechnik AP1

Praktikum Automatisierungstechnik AP1 Praktikum Automatisierungstechnik AP 1 1 Versuch 1 Praktikum Automatisierungstechnik AP1 Einführung in die Prozessorarchitektur und Maschinenprogrammierung Einführung. Bekanntmachen mit einem neuen Mikrocontroller.

Mehr

2.1 Atmega-Peripherie/Interrupts

2.1 Atmega-Peripherie/Interrupts 2.1 Atmega-Peripherie/Interrupts 2.1.1 Situation Während LED2 fortlaufend blinkt, soll LED2 jederzeit sofort durch Tastendruck von T1 eingeschaltet werden können. Dazu muss man im Programm regelmäÿig nachsehen,

Mehr

Übung Praktische Informatik II

Übung Praktische Informatik II Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Computersysteme. Stacks Anwendung in der Assembler-Programmierung

Computersysteme. Stacks Anwendung in der Assembler-Programmierung Computersysteme Stacks Anwendung in der Assembler-Programmierung 1 Unterprogramme Betrachten wir zunächst folgendes Programm m_mod_n : /Berechne m modulo n für positive Integerwerte m und n. /Beim Programmstart

Mehr

Mikrocomputertechnik. Unterprogramm

Mikrocomputertechnik. Unterprogramm Unterprogramm Ein Teilproblem wird entweder zur mehrmaligen Verwendung oder zur Programmstrukturierung als Unterprogramm codiert. Ein Unterprogramm wird von einem übergeordneten Programm (Hauptprogramm)

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen. Teilen binär Teil 1 - Vorzeichenlose Ganzzahlen ============ Irgendwann steht jeder Programmieren vor diesem Problem. Wie teile ich eine Binärzahl durch eine zweite? Wer in der Grundschule ein wenig aufgepasst

Mehr

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm U4 4. Übungsaufgabe U4 4. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-µC Register I/O Ports Interrupts AVR-Umgebung U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit

Mehr

SMP Übung 8 - Lösungsvorschlag

SMP Übung 8 - Lösungsvorschlag 1. Aufgabe: A/D-Wandlermethode auswählen Eine analoge Eingangsgröße, die Temperatur, soll in dieser Aufgabe in ein digitales Ausgangssignal umgewandelt werden. Aus Rechnertechnologie 2 sind folgende Methoden

Mehr

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid)

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid) VM/AVR SIMPLE & STUPID 1 Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid) Stand: 26. 1. 2010 Zweck: Elementare Demonstration der Mehrprogrammausführung auf Grundlage

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

Befehlssatz AVR RISC Controller

Befehlssatz AVR RISC Controller Befehlssatz AVR RISC Controller Design-Philosophie des AVR Befehlssatzes Assembler-Sprache AVR-Befehlssatz Philosophie RISC = Reduced Instruction Set Computing keine komplexen Befehle möglichst symmetrischer

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler

Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler 11. November 2005 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Wiederholung / Diskussion 1.

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

Parallel-IO. Ports am ATmega128

Parallel-IO. Ports am ATmega128 Parallel-IO Ansteuerung Miniprojekt Lauflicht Ports am ATmega128 PortE (PE7...PE0) alternativ, z.b. USART0 (RS232) 1 Pin von PortC Port C (PC7...PC0) 1 Parallel-IO-Port "Sammelsurium" verschiedener Speicher

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur MMIX-Crashkurs Matthias Dräger, Markus Rudolph E-Mail: mdraeger@mi.fu-berlin.de rudolph@mi.fu-berlin.de www: tinyurl.com/mmix2010 www.matthias-draeger.info/lehre/sose2010ti2/mmix.php

Mehr

8. Beschreibung des Prozessors MSP 430

8. Beschreibung des Prozessors MSP 430 8. Beschreibung des Prozessors MSP 430 8.1 Die Eigenschaften des MSP 430 8.2 Die Register des MSP 430 8.3 Der Aufbau des Speichers 8.4 Interrupts 8.5 Der Watchdog Programmierkurs II Wolfgang Effelsberg

Mehr

Der Compiler von MikroForth

Der Compiler von MikroForth Das Attiny-Projekt Der Compiler von MikroForth 1 Der Compiler von MikroForth FORTH ist von der Struktur her eine einfache Sprache; deswegen ist es auch nicht schwer, die Funktionsweise unseres Forth-Compilers

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014 Inhalt Aufgabe4 Led Modul Wiederholung Konfiguration der Pins Hinweise zur Aufgabe

Mehr

Automatisierungstechnik AP1. Aufgaben

Automatisierungstechnik AP1. Aufgaben AUTOMATISIERUNGSTECHNIK AP1 KLAUSUR VOM 29. 1. 2007 AUFGABEN SEITE 1 VON 3 Name: FH Dortmund Matr.-Nr.: FB Informations- und Elektrotechnik Automatisierungstechnik AP1 Klausur vom 29. 1. 2007 Aufgaben

Mehr

Gerhard Paulus gp@gnomsoft.de

Gerhard Paulus gp@gnomsoft.de -------------------------------------------------------------- Assembler ab 0 und 1 8.10.2002 -------------------------------------------------------------- Gerhard Paulus gp@gnomsoft.de Copyright (c)

Mehr

Forth-Vokabular. Vokabular für Attiny2313-Forth Stand: A: Assembler-Wort F: Forth-Wort C: Compiler-Wort

Forth-Vokabular. Vokabular für Attiny2313-Forth Stand: A: Assembler-Wort F: Forth-Wort C: Compiler-Wort Vokabular für Attiny2313-Forth - 1 - Forth.voc Forth-Vokabular Stand: 01.11.2012 A: Assembler-Wort F: Forth-Wort C: Compiler-Wort. A gibt TOS auf Port B aus; (Datenrichtungsbits von Port B werden alle

Mehr

Das Attiny-Projekt Assemblieren 1

Das Attiny-Projekt Assemblieren 1 Das Attiny-Projekt Assemblieren 1 Assemblieren Um die Funktionsweise eines Assemblers besser verstehen zu können, wollen wir ein kleines Assemblerprogramm einmal von Hand assemblieren. Als Beispiel wählen

Mehr

Betriebssysteme Kap B: Hardwaremechanismen

Betriebssysteme Kap B: Hardwaremechanismen 1 Betriebssysteme Kap B: Hardwaremechanismen 2 Beispielprozessor Ein- / Ausgabe p[ ] ir Leitwerk pc Register a f sp Rechenwerk Speicher m[ ] Spezielle Register Flagregister f f.i: Interrupt-Enable-Flag

Mehr

UKW-Schatzkisterl Schöpfer: Alexander "Electronicfox" Fuchs

UKW-Schatzkisterl Schöpfer: Alexander Electronicfox Fuchs UKW-Schatzkisterl Schöpfer: Alexander "Electronicfox" Fuchs Mein Aufbau besteht aus folgenden Bauteilen: UKW-Radiomodul vom Conrad-Adventskalender 2012 mit TDA7088 Audioendstufe LM386N Mikrocontroller

Mehr

Unterprogramme mittels Stack (Forts.)

Unterprogramme mittels Stack (Forts.) Unterprogramme mittels Stack (Forts.) gleiches Beispiel mit direkter Übergabe aller Parameter (8-Bit Wert a, 16-Bit Wert b, 16-Bit Ergebnis) durch call by value auf Stack: LDB a * Lade 8-Bit Wert a PSHS

Mehr

1 Assembler. 2 LED-Steuerung

1 Assembler. 2 LED-Steuerung Inhaltsverzeichnis Inhaltsverzeichnis... 1 1 Assembler... 2 2 LED-Steuerung... 2 3 Taster Abfrage ( Port I/O)... 3 3.1 Zahlensysteme... 3 3.2 Ausgabe... 4 3.2.1 Assembler-Sourcecode... 4 3.2.2 Assemblieren...

Mehr

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt? 6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert

Mehr

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet. U4 4. Übung U4 4. Übung Besprechung Aufgabe 2 Makros Register I/O-Ports U4.1 U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

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

Adressierungsarten des 6809 (Forts.)

Adressierungsarten des 6809 (Forts.) Adressierungsarten des 6809 (Forts.) Zusammenfassung zur indizierten Adressierung: 19 Beispiel-Programm 1 für 6809 6809-Assemblerprogramm zur Suche nach Leerzeichen (space, tab, return) in einem String:

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Alexander Neumann e.v. http://koeln.ccc.de Köln, 1.9.2008 1 Musterlösungen Aufgabe 1 & 2 2 Taster entprellen

Mehr

NTB Druckdatum: InI II. Ausführung auf kleine Rechenleistung

NTB Druckdatum: InI II. Ausführung auf kleine Rechenleistung MICROCONTROLLER Einführung Eigenschaften Steuer- und Regelungsaufgaben Simulation Emulation Vielfältige Peripheriemodule Ausführung auf Ausführung auf kleine Rechenleistung dem Host dem Zielsystem Kein

Mehr

Technische Informatik I Übung 3: Assembler

Technische Informatik I Übung 3: Assembler Technische Informatik I Übung 3: Assembler Roman Trüb Computer Engineering Group, ETH Zürich 1 Lernziele Übung 3 Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Assembler Codeanalyse Aufgabe 2

Mehr

Heute nur MIPS-Praxis (4 Aufgaben)

Heute nur MIPS-Praxis (4 Aufgaben) Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen

Mehr

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikrocomputertechnik Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikroprozessor-Achritekturen Folie 2 Mikroprozessor-Achritekturen Klassifizierung anhand Wortbreite CPU-Architektur und Busleitungen

Mehr

MICROCONTROLLER - BEISPIELE

MICROCONTROLLER - BEISPIELE MICROCONTROLLER - BEISPIELE Übung 1 - Das erste Assembler Programm Aufgabe 2 - Register setzen und subtrahieren /* * U1A2.asm * * Created: 22.02.2012 17:06:54 * Author: mmeschenmoser, kilkow */.INCLUDE

Mehr

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur 0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf

Mehr

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Lösungen zum Kurs Mikrocontroller Hard- und Software Lösungen zum Kurs "Mikrocontroller Hard- und Software Gerhard Schmidt Kastanienallee 20 64289 Darmstadt http://www.avr-asm-tutorial.net Lösung Aufgabe 2 Aufgabe 2 sbi DDRB,PB0 2 Takte sbi PORTB,PB0 2 Takte

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

Rechnerarchitektur, Einführung in die Laborübungen

Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf) 20. Dezember 2017 1/18 Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf)

Mehr

Rechnerorganisation. Überblick über den Teil 13

Rechnerorganisation. Überblick über den Teil 13 Rechnerorganisation Teil 3 9. Juni 2 KC Posch Überblick über den Teil 3 Arbiter: Wie können sich 2 aktive Partner vertragen? Direkter Speicherzugriff: Ein Ko Prozessor zum Daten Schaufeln Die Verbesserung

Mehr

Vorlesung Rechnerarchitektur

Vorlesung Rechnerarchitektur Vorlesung Rechnerarchitektur Sommersemester 2017 Carsten Hahn 8. Juni 2017 Agenda Grundlagen: Wiederholung Kontroll-Strukturen Stack-Speicher Unterprogramme I Unterprogramme II Call-by-Value (CBV) vs.

Mehr

U2 Fortgeschrittene AVR-Programmierung. U2-1 Externe Interrupts des AVR-μC. 1 Flanken-/Pegel-Steuerung. 1 Flanken-/Pegel-Steuerung (2) 2 Maskieren

U2 Fortgeschrittene AVR-Programmierung. U2-1 Externe Interrupts des AVR-μC. 1 Flanken-/Pegel-Steuerung. 1 Flanken-/Pegel-Steuerung (2) 2 Maskieren U Fortgeschrittene AVR-Programmierung U Fortgeschrittene AVR-Programmierung U-1 Externe Interrupts des AVR-μC Aufgabe Interrupts volatile-variablen Synchronisation mit Unterbrechungsbehandlungen Stromsparmodi

Mehr

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen Aufgabenstellung: - das beigefügte Assembler-Programm schrittweise ausführen - sich mit der Handhabung der Entwicklungswerkzeuge

Mehr

Rechnerarchitektur, Einführung in die Laborübungen

Rechnerarchitektur, Einführung in die Laborübungen Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz 24. November 2016 Inbetriebnahme der Mikrorechnerbaudruppe 1. Anschluss 5V-Netzteil 2. Anschluss Programmer 3. Einschalter 4. Eingabeschalter

Mehr

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung. Synchronisation mit Unterbrechungsbehandlungen

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung. Synchronisation mit Unterbrechungsbehandlungen U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung Interrupts volatile-variablen Synchronisation mit Unterbrechungsbehandlungen Stromsparmodi des AVR U5.1 U5-1 Externe Interrupts

Mehr

U5 Fortgeschrittene AVR-Programmierung

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung Interrupts Synchronisation mit Unterbrechungsbehandlungen Stromsparmodi des AVR U5.1 U5-1 Externe Interrupts des AVR-μC U5-1

Mehr

9. Die Adressierungsarten des MSP 430

9. Die Adressierungsarten des MSP 430 9. Die Adressierungsarten 9.1 Übersicht über die Adressierungsarten 9.2 -Operanden 9.3 Indexregister mit Distanz 9.4 Symbolische (relativ zum ) 9.5 Absolute 9.6 Indirekte 9.7 Indirekte Adressierung mit

Mehr

10. Die Adressierungsarten des MSP 430

10. Die Adressierungsarten des MSP 430 10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung

Mehr

Kontrollpfad der hypothetischen CPU

Kontrollpfad der hypothetischen CPU Kontrollpfad der hypothetischen CPU fast alle Algorithmen benötigen FOR- oder WHILE-Schleifen und IF.. ELSE Verzweigungen Kontrollfluß ist datenabhängig CCR speichert Statussignale N,Z, V,C der letzten

Mehr

Einführung Microcontroller

Einführung Microcontroller 18. Januar 2011 Inhaltsverzeichnis 1 Einleitung 2 3 4 5 Was ist eigentlich ein Microcontroller? Microcontroller - Was ist das? Microcontroller enthalten: integrierte und gleichzeitig programmierbare Schaltungen,

Mehr

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7 1 Vortrag Atmega 32 Von Urs Müller und Marion Knoth Urs Müller Seite 1 von 7 Inhaltsverzeichnis 1 Vortrag Atmega 32 1 1.1 Einleitung 3 1.1.1 Hersteller ATMEL 3 1.1.2 AVR - Mikrocontroller Familie 3 2 Übersicht

Mehr

Kontrollpfad der hypothetischen CPU

Kontrollpfad der hypothetischen CPU Kontrollpfad der hypothetischen CPU fast alle Algorithmen benötigen FOR- oder WHILE-Schleifen und IF.. ELSE Verzweigungen Kontrollfluß ist datenabhängig CCR speichert Statussignale N,Z, V,C der letzten

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

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

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent.

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. 19. Oktober 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Der von Neumann Computer

Der von Neumann Computer Der von Neumann Computer Grundlagen moderner Computer Technologie 1 Der moderne Computer ein weites Spektrum Typ Preis Anwendungsbeispiel embeded Computer 10-20 $ in Autos, Uhren,... Spielcomputer 100-200$

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil II: Wat iss ene Bit, Byte un Word?

Mehr

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

AVR-Mikrocontroller in BASCOM programmieren, Teil 2 jean-claude.feltes@education.lu 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

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Von-Neumann-Architektur

Von-Neumann-Architektur Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..

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

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

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1 U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr