Programmentwurf Prof. Metzler

Ähnliche Dokumente
Programmentwurf Prof. Metzler

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

BKTM - Programmieren leicht gemacht.

2. Einführung/Assembler Programmierung. 2.1 Einführung Übersicht

Assemblerprogrammieren PIC

99 - Struktogramme - 2. Sequenz I

BKTM - Programmieren leicht gemacht.

Konzepte der Informatik

PIC16 Programmierung in HITECH-C

Zusammenfassung der Assemblerbefehle des 8051

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

1. Die alte Schaltung mit C- Mos

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

Ankerkettenzählwerk - PIC

2 Teil 2: Nassi-Schneiderman

C++ - Einführung in die Programmiersprache Schleifen

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

; an, die in B eingelesen werden muss. C = (B + year + year / 4) MOD 7 ; Wochentag des Ostervollmonds

Mikrocontroller für Einsteiger

Labor Software-Entwicklung 1

Skript zur Vorlesung. Informatik 1. Studienjahr Halbjahr

Nassi-Shneiderman-Diagramm - Wikipedia

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Kontrollstrukturen -- Schleifen und Wiederholungen

Praktikumsprotokoll Mikrorechentechnik II Echtzeitsteuerung eines Wechselstromstellers mit einem Mikrocontroller

Einführung in die Programmierung Wintersemester 2011/12

Einführung in die Programmierung

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Arbeitsblätter für Algorithmierung und Strukturierung

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

WS2018/ Oktober 2018

10 Wiederholungsanweisungen

... Adressierung und Befehlsfolgen (1) Speicherbelegung. Hauptspeicheradressen. Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle

Programmablaufpläne. Vorgehen zur Erstellung eines lauffähigen C-Programms

Programmentwurf mittels strukturierter Programmierung. Programmentwurf. Nassi-Shneiderman-Diagramm [DIN ]

Labor Industrielle Netzwerke. Versuch 2: Tastaturentprellung

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

In Abhängigkeit von der Erfüllung einer Bedingung (1 = wahr, 0 = falsch) wird eine (Verbund-)Anweisung ausgeführt.

Übersicht. Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

4 Formelsammlung C/C++

PIC-Microcontroller. Oldenbourg Verlag München

Flussdiagramm / Programmablaufplan (PAP)

Mikrocomputertechnik mit Controllern der AtmelAVR-RISC-Familie

SuperPIK08 - ein elementarer Mikrocontroller. Vorläufige Kurzübersicht. Stand: 0.31 vom

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

einseitige Selektion zweiseitige Selektion

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Drehimpulsgeber (Dekodierung mit PIC-Mikrocontroller)

Arbeitsblätter für Algorithmierung und Strukturierung C #

Java Anweisungen und Ablaufsteuerung

I²C-Routinen (für PIC-Mikrocontroller)

Objektorientierte Programmierung

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

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Schleifenanweisungen

Herzlich willkommen!

Betriebssysteme Teil 4: Übersetzung von C-Programmen

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Arbeitsblätter für Algorithmierung und Strukturierung

WS2017/ Oktober 2017

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Labor Industrielle Netzwerke. Versuch 1: Einarbeitung in die Entwicklungsoberfläche, LED und Taster

2. Programmierung in C

Einführung in AVR Assembler

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

1. Inhaltsverzeichnis

5. Strukturierte Programmierung

Kleine Anekdote. Schleifen in C

Entscheidungen. INE1, Montag M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Übung Praktische Informatik II

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Übung 1 - Betriebssysteme I

Arithmetik in der tcsh

Daniel Betz Wintersemester 2011/12

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Schleifen in Javascript

A ProgrAmmer s Guide to KIM Programming

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins

Dr. Monika Meiler. Inhalt

6. Iteration (Schleifenanweisungen)

BKTM - Programmieren leicht gemacht.

Teil 1: Prozessorstrukturen

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Inhalt. Einführung in die Strukturierte Programmierung 15

Der Compiler von MikroForth

Name Klasse Datum. Kontrollstrukturen steuern die Ausführung von Anweisungen

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Transkript:

Programmentwurf 18.11.2014 Prof. Metzler 1

Programmiersprachen Assembler problemorientierte Sprache C anwendungsorientierte Sprache Basic Kommandosprachen 18.11.2014 Prof. Metzler 2

Assemblersprache Die Assemblersprache ist die hardwarenächste Sprache, deren Befehle von einem Übersetzer, auch Assembler genannt, in binären und ladbaren Code übersetzt werden. Dieser erscheint in einer hexadezimalen Darstellung, die vier Bitpositionen zu einer Ziffer von 0 bis 9 und A bis F zusammenfasst. Der Programmierer benötigt Kenntnisse über: Maschinenbefehle Registersatz Speicherstruktur peripheren Schnittstellen Die Assemblerprogramme sind immer auf einen bestimmten Controllertyp zugeschnitten. 18.11.2014 Prof. Metzler 3

problemorientierte Sprache C Die Sprache C benötigt einen Compiler, der direkt oder im Umweg über einen Assembler ausführbaren und ladbaren Maschinencode erzeugt. Eine Portierung des Quellcodes auf andere Controller erfordert nur geringe Anpassungen. Die meisten Änderungen fallen in der Peripherieprogrammierung an. 18.11.2014 Prof. Metzler 4

anwendungsorientierte Sprache BASIC Die Sprache BASIC wird von einem Übersetzer in Codebausteine überführt, die ein Betriebssystem interpretiert und ausführt. Kommandosprachen Kommandosprachen für industrielle Anwendungssysteme setzen durch Ablaufpläne und Struktogramme beschriebene Aufgaben der Mess-, Steuerungs- und Regelungstechnik in Befehle um z.b.. 18.11.2014 Prof. Metzler 5

Die Entwicklungsumgebung Entwicklungssoftware Projekt- und Dateiverwaltung Editor Assembler oder Compiler Linker (Binder) Simulator Lader Dateien Quelltext.asm oder.c Übersetzungsliste.lst Objektcode.obj Ladedatei.hex Entwicklungssystem S c h n i t t s t e ll e USB o. Seriell Anwendung oder Testschaltung Controller Entwicklungshardware Zielsystem 18.11.2014 Prof. Metzler 6

Die Entwicklungsumgebung Bei der ICSP-Programmierung (In Circuit Serial Programming) verbleibt der Controller in der Anwendungs- oder Testschaltung. Das Programm wird in den zur Verfügung stehenden EEPROM Bereich geladen sowie die Konfigurationswörter. Während der Ausführung des Programms sind keine Eingriffe durch Haltepunkte und Einzelschrittsteuerung wie beim Simulator möglich. Ein In Circuit Debugger greift während des Programmablaufs in das Steuerwerk des Controllers ein und ermöglicht dabei wie bei der Simulation Haltepunkte, Einzelschrittsteuerung und die Ausgabe von Registerinhalten. 18.11.2014 Prof. Metzler 7

Programmablaufplan Oval: Start, Stopp, weitere Grenzpunkte Pfeil, Linie: Verbindung zum nächstfolgenden Element Rechteck: Operation Rechteck mit doppelten, vertikalen Linien: Unterprogramm aufrufen Raute: Verzweigung Parallelogramm: Ein- und Ausgabe 18.11.2014 Prof. Metzler 8

Nassi-Shneiderman-Diagramme Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben. Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen. Leere Strukturblöcke sind nur in Verzweigungen zulässig. Linearer Ablauf (Sequenz) Zweifache Auswahl (alternative Verarbeitung) Zählergesteuerte Schleife Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Trifft die Bedingung nicht zu (falsch), wird der Anweisungsblock 2 durchlaufen. Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt unten nach Abarbeitung des jeweiligen Anweisungsblocks. Wiederholungsstruktur, bei der die Anzahl der Durchläufe festgelegt ist. Als Bedingung muss eine Zählvariable angegeben und mit einem Startwert initialisiert werden. Ebenso muss ein Endwert und die (Zähl-)Schrittweite angegeben werden. Nach jedem Durchlauf des Schleifenkörpers (Anweisungsblock 1) wird die Zählvariable um die Schrittweite inkrementiert (bzw. bei negativer Schrittweite dekrementiert) und mit dem Endwert verglichen. Ist der Endwert überschritten, wird die Schleife verlassen 18.11.2014 Prof. Metzler 9

Nassi-Shneiderman-Diagramme Abweisende (vorprüfende - kopfgesteuerte) Schleife Wiederholungsstruktur mit vorausgehender Bedingungsprüfung. Der Schleifenkörper (Anweisungsblock 1) wird nur durchlaufen, wenn (und solange) die Bedingung zutreffend (wahr) ist. Diese Symbolik wird auch für die Zählschleife (Anzahl der Durchläufe bekannt) benutzt. Wiederholungsstruktur mit nachfolgender Bedingungsprüfung für den Abbruch. Der Schleifenkörper (Anweisungsblock 1) wird mindestens einmal durchlaufen, auch wenn die Bedingung von Anfang an nicht zutreffend (falsch) war. Nicht abweisende (nachprüfende - fußgesteuerte) Schleife Kann allenfalls durch einen Aussprung (break) verlassen werden. Endlosschleife 18.11.2014 Prof. Metzler 10

Nassi-Shneiderman-Diagramme Symbolik zum Aufruf eines Unterprogramms bzw. einer Prozedur oder Funktion. Nach Durchlauf dieser wird genau zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock durchlaufen. Aufruf Aussprung Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden werden, was Nassi und Shneiderman mit den Struktogrammen eigentlich vermeiden wollten: Die Sprunganweisung Goto. 18.11.2014 Prof. Metzler 11

Assembleranweisungen [LABEL] DIREKTIVE oder MAKRO oder BEFEHL [OPERANDEN] [;KOMMENTAR] LABEL sind Bezeichner für benutzerdefinierte Sprungziele, Konstanten und Variablen. DIREKTIVEN sind Assembleranweisungen, die den Übersetzungsvorgang steuern und die nicht in Code übersetzt werden. MAKROS sind benutzerdefinierte Gruppen von Direktiven und Befehlen, die der Assembler an der Stelle des Aufrufs einsetzt. BEFEHLE sind herstellerdefinierte symbolische Bezeichner von Maschinenbefehlen. OPERANDEN bezeichnen die von Befehlen zu verwendenden Register oder Bitpositionen, Sprungziele oder die von Speicheranweisungen abzulegenden Daten. Mehrere Operanden werden durch Komma getrennt. Kommentare stehen hinter dem Semikolon bis zum Ende der Zeile und werden bei der Übersetzung nicht ausgewertet. 18.11.2014 Prof. Metzler 12

wichtige Direktiven Direktive Operand Anwendung Beispiel #INCLUDE datei im Arbeitsverzeichnis datei mit Pfadangabe <datei> im Standardverzeichnis fügt Textdatei ein #INCLUDE P16F84A.inc #DEFINE Name Text Text einfügen #DEFINE cbit STATUS,C LIST p=prozessortyp Prozessortyp festlegen List p=16f84a CONFIG Ausdruck Konfigurationswort CONFIG 0x3FF9 EQU Ausdruck Assemblerkonstante wurf EQU 0x0C ORG Ausdruck legt Adresszähler für Programm-Flash fest END Ende des Quelltextes END ORG 0x05 18.11.2014 Prof. Metzler 13

Schreibweise der verschiedenen Zahlensysteme beim Assembler Zahlensystem Schreibweise hexadezimal 0x20 oder 20 dezimal D'128' oder.128 binär B'10101010' Schreibregeln beim PIC f d W eine Speicherzelle Ergebnis wird gespeichert in: d=0: Arbeitsregister W d=1: Speicherzelle das Arbeitsregister k ein Zahlenwert von 0... 255 (bei CALL und GOTO: 0..2047) b ein Zahlenwert von 0 bis 7 18.11.2014 Prof. Metzler 14

Struktur eines Assembler Programms: list p=16f84 include "p16f84.inc ZAHL1 equ 0x0C ;der Prozessortyp wird festgelegt ;die include-datei mit vielen Festlegungen wird geladen ; z.b. sind hier Standardnamen für wichtige Register und ;Bits festgelegt ;evtl. Zuweisung einer Speicherstelle zu einem Label org 0x00 ;die Startadresse nach Reset ist 0, hier startet der PIC goto main ;Sprung zum Hauptprogramm org 0x04 ;Interruptvector ist 0x04, ;bei Interrupt springt der PIC hierher ;hier muss die Interruptbehandlungsroutine stehen, ;falls Interrupts genutzt werden sollen main ;hier steht das eigentliche Hauptprogramm end ;das Ende des Programms 18.11.2014 Prof. Metzler 15

Zählschleifen: Prof. U. Metzler Mikrocomputer

Assemblerbefehle PIC 16 18.11.2014 Prof. Metzler 17

PIC16 Instruction Set Byte Oriented Operations addwf f,d Add W and f andwf f,d AND W with f clrf f Clear f clrw - Clear W comf f,d Complement f decf f,d Decrement f decfsz f,d Decrement f, Skip if 0 incf f,d Increment f incfsz f,d Increment f, Skip if 0 iorwf f,d Inclusive OR W with f movf f,d Move f movwf f Move W to f nop - No Operation rlf f,d Rotate Left f through Carry rrf f,d Rotate Right f through Carry subwf f,d Subtract W from f swapf f,d Swap nibbles in f xorwf f,d Exclusive OR W with f Bit Oriented Operations bcf f,b Bit Clear f bsf f,b Bit Set f btfsc f,b Bit Test f, Skip if Clear btfss f,b Bit Test f, Skip if Set Literal and Control Operations addlw k Add literal and W andlw k AND literal with W call k Call subroutine clrwdt - Clear Watchdog Timer goto k Go to address iorlw k Inclusive OR literal with W movlw k Move literal to W retfie - Return from interrupt retlw k Return with literal in W return - Return from Subroutine sleep - Go into standby mode sublw k Subtract W from literal xorlw k Exclusive OR literal with W 18.11.2014 Prof. Metzler 18

Zählschleifen: Anfangswert Anfangswert decfsz f = f -1 incfsz f = f +1 Null? ja Null? ja nein nein goto goto 18.11.2014 Prof. Metzler 19

Zählschleifen: DECFSZ Verringere den Wert aus der Speicherzelle f um 1. Falls das 0 ergibt, dann ignoriere den nachfolgenden Befehl. Syntax: DECFSZ f,d Bedeutung: wenn d=0: Vom Wert in f wird 1 abgezogen, und das Ergebnis in W gespeichert. wenn d=1: Vom Wert in f wird 1 abgezogen, und das Ergebnis wieder in f gespeichert. Ist das Ergebnis der Subtraktion Null, dann wird der nächste Befehl im Programm übersprungen, und mit dem übernächsten weitergebacht. Beispiel: DECFSZ 0x20,1 ; Der Inhalt der Speicherzelle mit ; der Adresse 20h wird um 1 erniedrigt 18.11.2014 Prof. Metzler 20

Zählschleifen: INCFSZ Erhöhe den Wert aus der Speicherzelle f um 1. Falls das 0 ergibt, dann ignoriere den nachfolgenden Befehl. Syntax: INCFSZ f,d Bedeutung: wenn d=0: Der Wert in f wird mit 1 addiert, und das Ergebnis in W gespeichert. wenn d=1: Der Wert in f wird mit 1 addiert, und das Ergebnis wieder in f gespeichert. Ist das Ergebnis der Addition Null, dann wird der nächste Befehl im Programm übersprungen, und mit dem übernächsten weitergebacht. Beispiel: INCFSZ 0x20,1 ; Der Inhalt der Speicherzelle mit ; der Adresse 20h wird um 1 erhöht 18.11.2014 Prof. Metzler 21

Programmablaufplan 7 Segment Anzeige Initialisierung Ports und Zähler Ausgabe Zähler Zähler=Zähler+1 Zähler =10 nein ja Zähler=0 18.11.2014 Prof. Metzler 22

18.11.2014 Prof. Metzler 23