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

Ähnliche Dokumente
Sprungbefehle und Kontroll-Strukturen

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

Assembler-Unterprogramme

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

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Einführung in AVR Assembler

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

Teil III: Wat macht ene Mikrokontroller?

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

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

Informatik Rechnerinterne Vorgänge: Programmstrukt. (Lsg.) Gierhardt

Zusammenfassung der Assemblerbefehle des 8051

Einführung in AVR-Assembler

Use of the LPM (Load Program Memory)

1 Eigenes zu Interrupts und...

Assembler Kontrollstrukturen

Unterprogramme mittels Stack (Forts.)

Technische Informatik 2: Addressierung und Befehle

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

Technische Informatik II Rechnerarchitektur

Daniel Betz Wintersemester 2011/12

Übungsblatt 7 Implementierung von Programmsteuerbefehlen in einer Befehlspipeline Abgabefrist: Mittwoch , 14:00 Uhr

1 Assembler. 2 LED-Steuerung

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Teil Rechnerarchitekturen M05. AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention

U23 Assembler Workshop

1.7 Atmega-Programmierung in ASM/Verschachtelte Schleifen

Kodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient. Für Menschen hingegen ist Binärformat schwierig

Grundlegende Programmiertechniken

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Eingebettete Systeme

U23 Assembler Workshop

MOP: Befehlsliste für den Mikrocontroller 8051

Kontrollpfad der hypothetischen CPU

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Kontrollpfad der hypothetischen CPU

Vorlesung "Struktur von Mikrorechnern" (SMR)

Angewandte Mathematik und Programmierung

Befehlssatz der Mikrocontroller der 51er -Familie

Core und Speicher des ATmega16

Befehlssatz der Mikrocontroller der 51er -Familie

Übung Praktische Informatik II

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

PC/XT/AT ASSEMBLER-BUCH

Befehle zur Verarbeitung von Daten ( data processing ):

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

Atmel AVR für Dummies

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

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

Heute nur MIPS-Praxis (4 Aufgaben)

4 Assembler für die 8051-Controller-Familie

ProcessorsTechnik Labor LCD-Uhr

PIC16 Programmierung in HITECH-C

Syntax und Kontrollstrukturen

Algorithmen zur Datenanalyse in C++

Assembler. Dr.-Ing. Volkmar Sieh. Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Einführung Programmierpraktikum C Michael Zwick

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

Aufbau eines Assembler-Programms

MIX-Befehle - Aufbau

Herzlich willkommen!

Assembler-Programmierung

Grundlagen der Informatik 2. Typen

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Lösungen zum Kurs "Mikrocontroller Hard- und Software

4 Formelsammlung C/C++

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Einführung in C. EDV1-04C-Einführung 1

8. Beschreibung des Prozessors MSP 430

Übung 3: VHDL Darstellungen (Blockdiagramme)

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Einführung in die Programmierung Wintersemester 2008/09

Einführung Microcontroller

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

4.2 Programmiersprache C

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

Welche Informatik-Kenntnisse bringen Sie mit?

Rechnernetze und Organisation

Java - Programmierung - Prozedurale Programmierung 1

Praktikum Mikrorechner 5 (Bitadressen, Sprünge und Schleifen)

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

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

Technische Informatik I - HS 18

Der Toy Rechner Ein einfacher Mikrorechner

Unterstützung von Jump Tables

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

SMP Übung 8 - Lösungsvorschlag

Repetitorium Programmieren I + II

Vorlesung Rechnerarchitektur

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

Das Attiny-Projekt Assemblieren 1

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Transkript:

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

Kontrollstrukturen goto while if do for switch

Programmspeicher ATMEGA128 0x0000 LPM 0x0004 Reset... Vektoren... Interrupt Vektoren 0x0048 variabel Konstante Programm Rest von 128k Bytes Pgmend=0xffff 2 Byte Worte 2 Byte

Sprungbefehl jmp PC k 0 k < 4M.cseg.org 0 jmp main ;reset vector ;Nach Int. Vektoren.org 0x50 main: ;summe = 1+1 ldi R16,1 ;summand 1 ldi R17,1 ;summand 2 add R16,R17 ;addieren catch: jmp catch ;Endlosschleife...

Sprungbefehl rjmp PC PC + k + 1-2048 k < 2048.org 0 rjmp main ;reset vector.org 0x50 ;Nach Int. Vektoren main: ;summe = 1+1 ldi R16,1 ;summand 1 ldi R17,1 ;summand 2 add R16,R17 ;addieren catch: rjmp catch ;Endlosschleife...

Bedingte Sprünge Relative Sprünge abhängig vom Wert der Flags Sprungweite -64/+63 bezogen auf PC + 1 (Befehl danach) Beispiel BRNE Operation: if (Z-Flag!= 1) {PC PC + 1 + k} else {PC PC + 1} Programmbeispiel: inc r17 brne weiter inc r18 brne weiter inc r19 weiter:

Bedingte Sprünge (mit einem Flag-Bit als Bedingung) Branch if flag set: yes no Carry: brcs brcc Negative: brmi brpl Overflow: brvs brvc Zero: breq brne

Bedingte Sprünge Signed: größer gleich kleiner Unsigned: größer gleich brge brlt brsh brcc Less equal greater Lower same kleiner brlo brcs higher

Bedingte Sprünge

Nachbildung von 'if' If (R0!= 0) { /* TRUE */ } else { /* FALSE */ } if: tst R0 ;Mit Umkehrbedingung breq else ;über Fall 'TRUE' springen then: ;kommt hier an bei R0!= 0... ; case TRUE rjmp endif;über Fall 'FALSE' springen else:... ; case FALSE endif:

if then else tst R0 brne no_null if( R0 == 0) aktion1(); else aktion2(); call aktion1 jmp endif no_null: call aktion2 endif: nop

while while: tst R0 breq endwhile while( R0!= 0) { aktion(); } call aktion jmp while endwhile:...

do while doloop: do { aktion(); } while( R0!= 0) call aktion tst R0 brne doloop

FOR = While? for (short int i=0;i<50;i++) {... } { short int i; While (i<50) {... i++; }

for in Assembler signed char cnt; for( cnt=0; cnt<10; ++cnt ) aktion( cnt); clr r1 loop:cpi r1,10 brge exit call inc jmp aktion r1 loop exit:

IJMP Indirect Jump Sprung = Lade Program Counter mit neuem Wert aus R31:R30 (Z-Register) ziel:nop ldi ldi ijmp nop r31,high (ziel) r30,low (ziel) GNU-Asm: lo8(),hi8()

ICALL Indirect Call icall = call (Z) main: mov R31, high(sub1) mov R30, low (sub1) icall rjmp main sub1: ret

Anwendung: Switch #include <stdio.h> void uart_init(); void sub10() {printf("hello 10\n");} void sub11() {printf("hello 11\n");} void sub12() {printf("hello 12\n");} void toswitch(int index); int main(int arg, char *arv[]) { uart_init(); printf("pgm starts\n"); to_switch(11); }

ICALL Teil 1 #include <avr/io.h>.global to_switch to_switch: ;Parameter is passed in r25:r24 cpi r24,10 ;kleiner als brlo default ;10 ergibt default-fall cpi r24,13 ;grösser gleich brsh default ;13 ergibt default Fall subi r24,10 ;relativiert auf 0 lsl r24 ;*2, da Adressen 16 Bit lang ldi ZL,lo8(Liste) ;low Byte von Listenldi ZH,hi8(Liste) ;adr. und high nach Z

ICALL, Teil 2 clr r16 ;Null für adc add ZL,r24 ;Offset für Liste addieren adc ZH,r16 ;mögliches Carry zu High Byte lpm r0,z+ ;r0 Low Byte der Fct-Adresse lpm r1,z ;r1:r0 -> Fct-Adresse movw r30,r0 :Fct-Adr. Nach Z kopieren default: icall ret ;UP aufrufen (Adr. in Z) ;zum Aufrufer zurück Liste:.word sub10,sub11,sub12 ;Liste der Funktionen-Adressen

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