Programmierübungen in Assembler

Ähnliche Dokumente
Parallel-IO. Ports am ATmega128

DST EINFÜHRUNG IN MRT (V2)


UART-Kommunikation mit dem Atmel AVR

Echtzeitbetriebssysteme/ Prozessdatenverarbeitung II

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: Beginn: 10.

Hard- und Software-Engineering SS 2006 Praktikumsaufgaben

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung

8.1 Grundsätzlicher Aufbau der Beispiele

Tag 2 Eingabe und Interrupts

Handbuch AMB8460 und AMB2560

Zähler- und Zeitgeber-Baugruppen

Der Übungsrechner

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

B1 Stapelspeicher (stack)

Steuern des GSR-Interface mit QBasic

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Einführung in AVR-Assembler

Laborprotokoll Informationstechnologien

8.0 Erweiterung mit dem 8 Bit D/A Maxim MAX5382

COMET - Speed Seite 1

Elektronikpraktikum - SS 2014 H. Merkel, D. Becker, S. Bleser, M. Steinen Gebäude (Anfängerpraktikum) 1. Stock, Raum 430

Serie 8: Microcontroller 17./

DSW-II-80-Pro HB9GAA. Bedienungsanleitung. Software Version 1.2b. Roland Elmiger. Brunnhaldenstrasse Konolfingen Schweiz

Wie in der Skizze zu sehen ist, bleibt die Periodendauer / Frequenz konstant und nur die Pulsweite ändert sich.

Verbindung zwischen PC und Mikrokontroler Blue-Tooth-Modul Schaltung Parametrierung kein zusätzliches LF

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch für Direkt-Digital-Vario. Firmware ab Hardware 01 Seriennummer ab 0003

Konfiguratorsoftware. für. M-Bus Impulssammler

Virtuelle COM-Schnittstelle umbenennen

Datenlogger mit ATmega8 oder ATmega32 Mikrocontroller. Inhaltsverzeichnis

AMB8460 und AMB2560 Schnell Start

Anwenderdokumentation

Das große All-in-All CPLD/FPGA Tutorial

3 Der Debugger. 3.1 Überblick. 3.2 Einschränkungen

Assembler/C Programmierung eines Mikrocontrollers

Schrittmotorsteuerung

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

Übungscomputer mit Prozessor Bedienungsanleitung

Der MS-DOS Standardmonitor und Debugger DEBUG

MODUL 6 TIMER UND COUNTER

PCLoad32.exe funktioniert nicht, Daten werden nicht übertragen. AT+CSQ:Signal Qualität reicht nicht für Rufaufbau: +csq kleiner 7

Wir übertragen Daten mit Licht

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Einführung in Automation Studio

SSA P_51_002_NEU. doc

USB-I 2 C Stick. USB-I2C Stick.doc Seite 1 von 7

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

Audio Analyzer UPL. File Transfer vom Audio Analyzer UPL zu einem externen PC über die RS-232-C-Schnittstelle

CCS Compiler Tutorial mit Beispielen

Ein erstes Assembler-Projekt

Programmierung über den ARCNET-Bus. Programmiersystem. 907 PC 331 Programmier- und Testsoftware. ABB Schaltund Steuerungstechnik

Für den Zugriff vom PC aus die TCP/IP Netzwerkeinstellung des PC auf DHCP bzw. automatisch stellen,

Anleitung Version 1.1 Deutsch

BEDIENUNGSANLEITUNG SKX OPEN. SKX Open ZN1RX SKXOPEN. Edition 1,1

INFOBLATT 433MHz-FM-Mehrkanal-Transceiver RT433F4

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

einfache PIC-Übungsprogramme

7.0 PWM - Pulsbreitenmodulation

Aufgabe I: Im einzelnen soll das Hauptprogramm:

SP-1101W/SP-2101W Quick Installation Guide

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

Einführung in die Informationstechnik. Eingabe - Verarbeitung - Ausgabe CIUS - KREISLICHT. Realschule Tamm Technik Axel Steinbach

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

SP-2101W Quick Installation Guide

Dokumentation SPS-CLOCK. Atomzeit an digitale E/A der SPS. SPS-CLOCK 1996 by PI & TBO

Fernseh-Simulator Microcontroller ATMEL 89C Bit Betriebsspannungsbereich von 9-35 Volt 8 leistungsfähigen Ausgänge 16 Programmspeicherplätze

Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers

Go Wireless Connect - Kurzbeschreibung

signakom besser sicher

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

Versuch MC01 - Digitale Signale. Abgabedatum: 28. Februar 2008

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Anwendung Rs485-Modbus Master

SMS-Tastatur. SMS - Pad. Ingenieurbüro Dr. Seveke Computer für Behinderte Schnorrstraße Dresden Tel: Fax:

Compuprint SP40plus. Das SP40plus Remote Setup Programm. Restore MFG. Send Setup. Send Setup. Restore MFG

Microcontroller Programmierung. Ein PDV-Vertiefungsprojekt von: Chr. Schulz, P. Simon und D. Stein Sommersemester 2005 Version 1.0

Installations- und Bedienungsanleitung für die iks Datastar Software

Wer möchte, kann sein Programm auch auf echter Hardware testen

Modul 1 C-Programmierung der Familie 8051 Einführung. µc Anwendungsprogrammierung in C Modul 1 / Seite 1. Version 1.0 Dipl. Ing. Dr.

Assembler 8086 Labor für Datentechnik I

Beschreibung für das Solardatenerfassungs- und Überwachungssystem SolarCount Net Lan

Inhaltsverzeichnis

Kapitel 04: Das erste Projekt Abschnitt 04: Überblick über das Programm

Mitarbeiter-Alarm. 1x Taster mit Kabel zum Anschluss an den seriellen Com-Port (optional) 1x Installationsprogramm auf CD 1x Lizenz

Bedienungsanleitung für. Android Box 3.0

SPS (Fragenkatalog - Dipl.-Ing. U. Held. Inhaltsverzeichnis

Mikrocontrollertechnik

Mikrocomputertechnik

ateval-board Aufbauanleitung & Handbuch

Kurzanleitung Akustischer Digitaler Strömungsmesser OTT ADC

Bedienung der Laptops von HP Sportauswertung

Einstellung des Münzzeitzählers Alpha-800N / Alpha-820 ab Version V4.16 (Euro)

Elexis - Afinion AS100 Connector

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

SCAN OPERATOR 12. Bedienungsanleitung. Ab Version Internet:

Schaltbild E Tec Module Schaltbeispiel (Prüfschaltung)

Kapitel 4 Internet-Fax

ZX81 **Basic Version 1.02 Handbuch

Transkript:

Programmierübungen in Assembler 1. LED Ein-/Ausschalten Verwendet: Ports An Portpin P3.0 ist eine LED angeschlossen. An Portpin P1.0 ist ein Taster angeschlossen. a) Schreiben Sie ein Programm, welches zyklisch den Tasterzustand abfragt. Ist der Taster gedrückt, soll die LED leuchten. Ist der Taster nicht gedrückt, soll die LED nicht leuchten. b) An Portpin P1.1 ist ein zweiter Taster angeschlossen. Mit dem Taster an P1.0 soll die LED eingeschaltet werden. Mit dem Taster an P1.1 soll die LED ausgeschaltet werden. c) Die Steuerung der LED soll lediglich über den Taster an P1.0 realisiert werden. Bei einem Druck auf den Taster wird der aktuelle Zustand der LED invertiert. D.h. eine eingeschaltete LED wird ausgeschaltet, eine ausgeschaltete LED wird eingeschaltet. Tipp: Achten Sie darauf, dass der Zustand der LED erst beim Loslassen des Tasters geändert wird. d) Der angeschlossene Taster prellt. Die hierdurch entstehenden ungewollten Signalwechsel stören das Schaltverhalten der LED. Es kann angenommen werden, dass der Taster für ca. 10ms prellt. Die nachfolgende Grafik zeigt das durch das Prellen entstehende Signal am Portpin. Taster wird gedrückt Taster wird gelöst Der Taster soll daher über die Software entprellt werden. Hierfür gibt es unterschiedliche Lösungsmöglichkeiten (Software und Hardware). In dieser Aufgabe soll das Entprellen durch eine Warteschleife realisiert werden. In der Warteschleife soll 20ms gewartet werden (Zur Sicherheit wurde die Wartezeit auf 20ms gesetzt). Ein Programmablauf könnte somit wie folgt aussehen. Wenn Taster gedrückt, dann springe zu entsprechendem Programmabschnitt Aufruf Warteschleife (ca. 20ms warten) Programmabschnitt für Tasterbehandlung kann jetzt ausgeführt werden. In der Warteschleife soll hart an einer Stelle im Code gewartet werden. Am einfachsten kann dies mit einer Schleife realisiert werden. Machen Sie sich klar, wie viel Zeit die Schleife für einen Durchlauf benötigt (Zählen der Maschinenzyklen). Wenn Sie die Zeit kennen, die die Schleife für einen Durchlauf benötigt, können Sie hiermit die Anzahl von Schleifendurchläufen berechnen, die notwenig sind, um eine Wartezeit von 20ms zu realisieren. R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 1/6

2. Lauflicht Verwendet: Ports, Timer An Port P3 des 80c515c sind 8 LEDs angeschlossen. Der Mikrocontroller wird mit einem 10MHz-Quarz betrieben. a) Die LEDs sollen so angesteuert werden, dass ein Lauflicht entsteht. Dabei soll immer nur eine LED leuchten. Das Lauflicht startet bei der LED an Portpin P3.0 und endet bei P3.7. Am Ende angekommen startet das Lauflicht wieder von vorne (also bei P3.0). Jede LED soll für 0,5 Sekunden leuchten, bevor zur nächsten LED gewechselt wird. b) Das Lauflicht soll auf 16 LEDs ausgeweitet werden. Hierzu werden zusätzlich zu den LEDs an Port P3 weitere 8 LEDs an Port P4 angeschlossen. Das Lauflicht startet wieder bei P3.0 endet jetzt jedoch bei P4.7. c) Die Ansteuerung des Lauflichts soll derart umprogrammiert werden, dass die leuchtende LED von P3.0 bis P4.7 und danach von P4.7 zurück zu P3.0 läuft. Auch dieses Lauflicht soll danach wieder von vorne beginnen. 3. Logische-Verknüpfungen Verwendet: Ports An Portpin P3.0 des 80c515c ist eine LED angeschlossen. An den Portpins P1.0 und P1.1 sind Taster angeschlossen. Die Taster dienen als Eingangssignale, die LED als Ausgangssignal der logischen Verknüpfung. Ein gedrückter Taster repräsentiert ein logisches 1-Signal (physikalisch lieg am Portpin jedoch Low Pegel an), ein gelöster Taster ein logisches 0-Signal (physikalisch High Pegel). Die leuchtende LED steht für ein 1-Signal (physikalisch High Pegel), die ausgeschaltete LED für ein 0-Signal (physikalisch Low Pegel). Die Taster sollen in einer Endlosschleife zyklisch abgefragt werden. Programmieren Sie a) eine AND Verknüpfung. b) eine OR Verknüpfung. c) eine XOR Verknüpfung. d) eine NAND Verknüpfung. e) eine NOR Verknüpfung. f) eine XNOR Verknüpfung. Wahrheitstabellen der Verknüpfungen (logische Zustände): AND OR XOR NAND NOR XNOR E1 E2 A E1 E2 A E1 E2 A E1 E2 A E1 E2 A E1 E2 A 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 E1 und E2: Taster A: LED R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 2/6

4. Port Ein-/Ausgabe Verwendet: Ports An Port P1 des 80c515c sind acht Schalter, an Port P3 acht LEDs angeschlossen. a) Das zu erstellende Programm soll zyklisch die Schalter-Eingaben an Port P1 einlesen und das Ergebnis an Port P3 ausgeben. b) Die eingelesene Schalter-Eingabe soll in umgekehrter Reihenfolge auf Port P3 ausgegeben werden. P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 5. Speicherkopie Verwendet: Interner und externer Datenspeicher, Externe Interrupts An den 80c515c ist ein externes RAM mit einer Größe von 64 kbyte angeschlossen. a) Erstellen Sie ein Programm, welches den Speicherinhalt des internen RAM von Adresse 0x10 bis einschließlich Adresse 0x7F in das externe RAM ab Adresse 0x1000 kopiert. b) Erweitern Sie das Programm aus Aufgabenteil a). Hierbei soll nun der Speicherinhalt des internen RAM von Adresse 0x10 bis einschließlich Adresse 0xFF in das externe RAM ab Adresse 0x1000 kopiert werden. Worauf müssen Sie bei diesem Aufgabenteil besonders achten? c) Das Kopieren soll über einen an den 80c515c angeschlossenen Taster angestoßen werden können. Als Startsignal soll der flankengetriggerte externe Interrupt 0 eingesetzt werden. An welchen Portpin muss der Taster angeschlossen werden? 6. PWM mit variablem Tastverhältnis Verwendet: Timer 2 (PWM) und Ports An Portpin P1.1 des 80c515c soll ein PWM-Signal ausgegeben werden. An den Portpins P1.2 und P1.3 sind Taster angeschlossen mit welchen das Tastverhältnis des PWM-Signals eingestellt werden kann. Der 80c515c wird mit einem 10MHz-Quarz betrieben. Die Periodendauer des PWM-Signals soll fest 36ms betragen. Bei Programmstart ist das Tastverhältnis des PWM-Signals auf 50% eingestellt. Die Pulsweite kann mit einer Schrittweite von 3ms variiert werden. Hierbei wird mit dem Taster an P1.2 der Signalpuls (Ein-Signal) verkleinert und mit dem Taster an P1.3 vergrößert. Es sollen hiermit Pulsweiten von 3ms bis maximal 33ms eingestellt werden können. Stellen Sie sicher, dass die vorgegebenen Grenzwerte durch den Benutzer nicht überschritten werden können. R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 3/6

7. Stoppuhr mit Lichtschrankensteuerung Verwendet: Timer, Ports und externe Interrupts An die Portpins P3.2 und P3.3 des 80c515c sind Lichtschranken angeschlossen. Bei nicht ausgelöster Lichtschranke liegt High-Pegel, bei ausgelöster Lichtschranke Low-Pegel an den Portpins an. Der 80c515c wird für diese Aufgabe mit einer Quarzfrequenz von 12MHz betrieben. a) Schreiben Sie ein Programm, welches eine Stoppuhr realisiert. Eine Signalflanke der Lichtschranke an P3.2 startet die Zeitmessung, eine Signalflanke der Lichtschranke an P3.3 hält die laufende Messung wieder an. Verwenden Sie hierzu die zu den Portpins zugehörigen externen Interrupts. Bei der Zeitmessungen werden Zehntelsekunden, Sekunden, Minuten und Stunden gezählt. Die Zählwerte werden in den Registern R0 bis R3 gehalten. Register R0 R1 R2 R3 Zeitwert Zehntelsekunden Sekunden Minuten Stunden b) Nach Beendigung der Zeitmessung (Signalflanke an P3.3) soll das Ergebnis der Zeitmessung (die Registerinhalte von R0 bis R3) im externen RAM ab Adresse 0x1000 abgespeichert werden. Die Messwerte jeder weiteren Zeitmessung werden hinter die bereits gespeicherten Messergebnisse angehängt. Auszug Speicherabbild (beispielhaft): ZS: Zehntelsekunden, S: Sekunden, M: Minuten, H: Stunden Adresse Speicherinhalt ---------- ----------------------------------------------------- ZS S M H ZS S M H ZS S M H R0 R1 R2 R3 R0 R1 R2 R3 R0 R1 R2 R3 0x001000: 09 02 36 01 3B 01 37 01 00 10 0B 02... \ / \ / \ / \/ \/ \/ 01:54:02:09 01:55:01:59 02:11:16:00 Ein Überlauf des externen RAM Speichers muss hierbei nicht abgefangen werden. An Portpin P1.1 ist ein Taster angeschlossen. Mit ihm kann der bereits belegte externe Speicher wieder freigegeben werden. Dies geschieht durch einfaches Rücksetzen des Daten-Pointers auf den Startwert 0x1000. c) Ein mögliches Überlaufen des externen RAM Speichers soll verhindert werden. Hierzu wird der gültige Speicherbereich festgelegt auf den Bereich von 0x1000 bis 0xEFFF. Bei einem Überschreiten des oberen Speichergrenzwerts 0xEFFF soll die Speicherung erneut bei 0x1000 starten. Die bereits gespeicherten Werte werden hierbei überschrieben. R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 4/6

8. Serielles Echo Verwendet: Serielle Schnittstelle Der 80c515c ist über die serielle Schnittstelle mit einem PC verbunden. Auf dem PC läuft ein Terminalprogramm, mit dem der Benutzer Tastatureingaben über die serielle Schnittstelle an den Mikrocontroller senden kann. Für die Kommunikation mit dem PC ist die serielle Schnittstelle in Mode 1 (1 Startbit, 8 Datenbits, 1 Stoppbit) mit einer Baudrate von 9600 Baud zu betreiben. Der Mikrocontroller wird mit einem 10MHz-Quarz betrieben. Schreiben Sie ein Programm, das die über die serielle Schnittstelle empfangenen Daten umgehend an den Sender (PC) zurücksendet. a) Der serielle Empfang und der serielle Versand sollen über Flag-Polling (RI und TI) realisiert werden. Kein Interrupt! b) Der serielle Empfang soll über Interrupt, der serielle Versand über Flag-Polling realisiert werden. 9. String2Number Verwendet: Serielle Schnittstelle Der 80c515c ist über die serielle Schnittstelle mit einem PC verbunden. Auf dem PC läuft ein Terminalprogramm, mit dem der Benutzer Tastatureingaben über die serielle Schnittstelle an den Mikrocontroller senden kann. Für die Kommunikation mit dem PC ist die serielle Schnittstelle in Mode 1 (1 Startbit, 8 Datenbits, 1 Stoppbit) mit einer Baudrate von 9600 Baud zu betreiben. Der Mikrocontroller wird mit einem 10MHz-Quarz betrieben. Schreiben Sie ein Programm, das über die serielle Schnittstelle Benutzereingaben einliest. Der Benutzer kann über die PC-Tastatur Zahlen von 0 bis 255 eingeben. Seine Eingabe endet mit dem Betätigen der ENTER-Taste (ASCII-Code: 0x0D). Die vom Benutzer eingegebene Zahl (eigentlich handelt es hierbei ja um einen String; Folge von Ziffern; Folge von ASCII-Zeichen) soll vom Mikrocontroller in die entsprechende Zahl konvertiert werden. Nach dem Drücken der ENTER-Taste sendet der Mikrocontroller die Zahl über die serielle Schnittstelle zurück zum PC. Beispiel: Benutzereingabe: 2 1 9 ENTER ASCII-Code: 0x32 0x31 0x39 0x0D Rückgabewert (µc): 219 Beim Rückgabewert handelt es sich um die Zahl 219, nicht den String 219. Zur Vereinfachung kann davon ausgegangen werden, dass der Benutzer nur Ziffern (0-9) eingibt. Außerdem wird er den Wertebereich von 0 bis 255 ebenfalls beachten. R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 5/6

Vorbereitung für Aufgabe 10 Laden Sie die Programme SER_STRING_1.ASM und SER_STRING_2.ASM von www.ralfhanke.de/mct herunter. Führen Sie die Programme auf dem Keil µvision Simulator aus. Analysieren Sie jede einzelne Zeile der Programmquelltexte. Wenn Sie die Programme verstanden haben, gehen Sie weiter zu Aufgabe 10. 10. Eingabeüberprüfung serielle Schnittstelle Verwendet: Serielle Schnittstelle Der 80c515c ist über die serielle Schnittstelle mit einem PC verbunden. Auf dem PC läuft ein Terminalprogramm, mit dem der Benutzer Tastatureingaben über die serielle Schnittstelle an den Mikrocontroller senden kann. Für die Kommunikation mit dem PC ist die serielle Schnittstelle in Mode 1 (1 Startbit, 8 Datenbits, 1 Stoppbit) mit einer Baudrate von 9600 Baud zu betreiben. Der Mikrocontroller wird mit einem 10MHz-Quarz betrieben. a) Schreiben Sie ein Programm, das interruptgesteuert über die serielle Schnittstelle Benutzereingaben einliest. Wurde der ASCII-Code für eine Ziffer (0-9) empfangen, soll der String Das Zeichen ist eine Ziffer über die serielle Schnittstelle zurückgesendet werden. Der String wird im Programmspeicher abgelegt. Hierzu können Sie folgende Zeilen am Ende Ihres Programms einfügen.... END STR_ZIFFER: db Das Zeichen ist eine Ziffer, 0Dh, 0Ah, 0 Das Prinzip zum Senden eines Strings über die serielle Schnittstelle können Sie den Beispielprogrammen SER_STRING_1.ASM und SER_STRING_2.ASM entnehmen. I. Das Senden des Strings soll mittels Flag-Polling (TI Flag) realisiert werden. II. Das Senden des Strings soll mittels seriellem Interrupt realisiert werden. b) Erweitern Sie das Programm aus Aufgabenteil a). Es sollen nun auch entsprechende Antwortstrings für Kleinbuchstaben, Großbuchstaben und Sonderzeichen zurückgesendet werden. Nehmen Sie die ASCII-Tabelle zu Hilfe. R. Hanke, 05.01.2009 MCT_Übungen - Teil 1.doc 6/6