Die Software zum Unser kleiner Computer

Ähnliche Dokumente
'

Für schnelle und bequeme Entwicklungen wird gern Basic eingesetzt.

Stefan Hoffmann. Leichter Start mit BASCOM und myavr

Geschrieben von: Malte Freitag, den 16. Juli 2010 um 21:28 Uhr - Aktualisiert Montag, den 05. Dezember 2011 um 18:09 Uhr

Aufbau eines Assembler-Programms

Puls Weiten Modulation (PWM)

Der Magnetfeldsensor HMC5883L

Arduino für FunkAmateure

Ruecklicht-V1 von Peter Krueger /

Nachtaktiver Blinker. Ralf Pongratz. 11. November 2012

Vielleicht weil das Beschleunigungssensor- Modul von ELV so ein Verkaufsschlager war, hat

Miniatur Motortreiber TB6612FNG

8.3 Taster am µcontroller

3 Achsen Accelerometer

PROFE 2. Lycée Technique des Arts et Métiers Projet de fin d' études 2014/2015. FELTES Jean Claude Messstation im Musée Nationale des Mines

Rauschgenerator mit AVR

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

AVR-Mikrocontroller in BASCOM programmieren

Arduinio Projekt. Inhaltsverzeichnis

Mikrocontroller Einstieg ATmega 8

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Übungen zu Systemnahe Programmierung in C (SPiC)

Mikrocontroller - Schnelleinstieg

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB

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

Daten loggen mit der STI100-Platine

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

Erste Gehversuche mit ARDUINO (Teil 3) (DL6OAA) Die 7-Segmentanzeige (1-stellig)

AVR-Mikrocontroller in BASCOM programmieren, Teil 1

T3 EC / EE ATTPRO. 6 Mess/SlaveStation. 6.1 Schaltung. Abb. 29. Schaltplan (Slavestation). Man Chun Ling -37-

Praktische Einführung in die AVR-NET-IO. Programmierung

#include "C:\Users\media\Desktop\Harri\Technik\Elektronik\Projekte\Stiftuhr\Servotest\servotest\servotest.h"

RalfPongratz. Grundversion. Reaktivlichtmit7SegmentAnzeige

Projektarbeit aus der Datenverarbeitung. Lotto. von: Hubert Schlenk Olimex AVR USB 162 Entwicklerboard Hubert Schlenk

CalcVectorPC v Veröffentlicht 2016 Copyright S-cubic GmbH. Krebsbachstr. 12 D Bergisch Gladbach

Laborübung 3. Latches, Flipflops, Counter

myavr Programmierung in C

IR NEC Empfänger mit 4x7 LED Anzeige (ATtiny2313)

Lösungen der Aufgaben

AVR Ein/Ausgabe. Inhaltsverzeichnis

Übungen zu Systemnahe Programmierung in C (SPiC)

Funktionsbeschreibung UFO-UNIT-Kameras

Lotto. eine Projektarbeit in DVT. von Sven Schwab

Config Lcdpin = Pin, Db4 = Portc.0, Db5 = Portc.1, Db6 = Portc.2, Db7 = Portc.3, E = Portc.5, Rs = Portc.4 Config Lcd = 20 * 4

C++ mit dem Arduino (Uno und Mega2560)

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Schnittstellenbeschreibung. Inhalt

TTL-GPS-Modul an Attiny2313-Platine

Betreuer : ULRICH PÖTTER. Seite 1

SIOSLAB. Technische Daten:

C++ mit dem Arduino (Uno und Mega2560)

RN-LCD-Adapter - STD. Doku vom (stets aktuelle Dokumentation verwenden)

Mikrocontroller-Einstieg

Tutorial Vivado/Verilog Teil 3 7-Segment-Anzeige

Einführung Microcontroller

Parallel-IO. Ports am ATmega128

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

Übungsaufgaben. Stand

' 'PD5 = PIN11 (T1) mit Uhrentakt (10) versorgt

Aufgaben zur Attiny-Platine

4-Kanal-Analoglogger für die Regelungstechnik

einfache PIC-Übungsprogramme

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Sound-, Musik- oder Sprache per Controllerboard ausgeben

Das kleine Einmaleins

Eingaben. Themen heute. Taster. Eingaben Zuweisungen Zeitmessung. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Projektarbeit: Roulette Spiel

Einführung Arduino - Aufbau

Beschaltung eines Mikrocontrollers. Jordi Blanch Sierra Steuerungsgruppe

: Fachpraxisübung µc im Kfz I

Attenuator.mpas :09:01

Projektarbeit in DVT auf dem Entwicklerboard

Projektarbeit Reaktionsspiel

Tutorial Vivado/VHDL Teil 3 7-Segment-Anzeige

LED-UHR. Bedienungsanleitung

'

Mathematik: Mag. Schmid Wolfgang & Lehrer/innenTeam ARBEITSBLATT 2-7 WIEDERHOLUNG VON GLEICHUNGEN

Arduino µcontroller. Virtuelle COMSchnittstelle

Laborübung 4. Zustandsautomaten (Finite State Machines)

Service-Handbuch SH_Checkup_IP_Universal.doc. Version:1.00 Aktualisiert: durch: RLo Seite 1

150 ma (bei eingeschalteter Hintergrundbeleuchtung)

Ampelsteuerung Merkblatt 2 Wie wird der Arduino programmiert?

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 6 2. Semester ARBEITSBLATT 6 WIEDERHOLUNG VON GLEICHUNGEN

Universität Duisburg - Essen

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Globale Variablen

Girls Day. Einführung Mikrocontroller,

Arduino Kurs Timer und Interrupts. Stephan Laage-Witt FES Lörrach

Es gibt eine neuere Version des Kochbuchs. Ihr findet sie unter

Einführung in die Welt der Microcontroller

Laborübung 2. Teil 1: Latches, Flipflops, Counter. Abbildung 1: Schaltkreis eines Gated D-Latch

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

U5-2 Register beim AVR-µC

Deutsche Dokumentation von ihrem Elektronik-Lieferanten: Inteligentes Motorboard (12V/6A) mit I2C-Bus

DST EINFÜHRUNG IN MRT

Lösung Übungszettel 4

Mikrocontroller: Einführung

Einführung in AVR-Assembler

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

Transkript:

Die Software zum Unser kleiner Computer '-------------------------------------------------------------------------------- 'name : computer.bas 'copyright : (c)bernd Grupe, DF8ZR 'micro : Mega8 ' Das Programm darf nur für den privaten Gebrauch(Schulen) kopiert werden 'ACHTUNG: Der Chip hat die Ports B,C und D! '-------------------------------------------------------------------------------- $regfile = "m8adef.dat" $crystal = 1000000 'ohne Quarz ist die interne Osz.-Frequenz = 1 MHz $hwstack = 40 $swstack = 16 $framesize = 32 '--------------------------------------------------------------------------- Defint W 'Berechnungswert = Ergebnis W = 0 Defint E E = 0 'Einerstelle = Wert Defint Z Z = 0 'Zehnerstelle = Wert Config Portb = Input Config Portc = Input Config Portd = Output 'Die Ports B und C sind als Eingänge gesetzt 'Für die BCD-Ausgabe diese Pins setzen: Config Portb.4 = Output Config Portb.5 = Output Config Portb.6 = Output

Config Portb.7 = Output 'Pins von C und D werden auch als Abfrage für Anweisungen genutzt 'erst nach dem Einlesen einer Anweisung erfolgt die Umschaltung auf 'die Ausgabe des Ergebnisses, wobei die 7Segment-Anzeige jeweils mit einem IC 'BCD-nach 7Segmentwandler CD4511 gemacht wird 'TASTER1 = + Zeichen für Addition an PB4 T1 Alias Pinc.4 Config T1 = Input 'TASTER2 = - Zeichen für Subtraktion an PB5 T2 Alias Pinc.5 Config T2 = Input 'TASTER3 = C Zeichen für Clear an PD7 T3 Alias Pind.7 Config T3 = Input 'Definitionen fertig '----------------------------------------------------------------------------- 'hier beginnt die Loop: '-------------------------------------Beginn Do 'Abfrage der Taster in der Schleife If T1 = 0 Then Gosub Berechnen W = Z + E 'Addition Gosub Ausgabe 'Berechnen von E und Z If T2 = 0 Then Gosub Berechnen W = Z - E 'Subtraktion

Gosub Ausgabe If T3 = 0 Then Portd = 0 Portb.4 = 0 Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 W = 0 'Clear If W <= 0 Then Portd = 0 ' bringt auch die BCD-Ziffern auf 0, da Portd.5 und.6 0 sind Portb.4 = 0 Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 'der Anschluss für T3 darf nicht dauerhaft 0 sein! 'denn sonst läuft der Rechner nicht und es wird dauerhaft 0 angezeigt Loop End 'es folgen die Unterprogramme-------------------------------------------------- Berechnen: E = 0 'PortB ist der rechte Wert = Zahl = E; Input an PortB 0...3 'Wandlung der Datentypen: Byte=Port; Nibble nach Integer! 'Bildung des Intergerwertes durch Abfrage der Pins

If Pinb.0 = 0 Then E = 0 If Pinb.0 = 1 Then E = 1 'PortC ist der rechte Wert = Einer If Pinb.1 = 1 Then E = E + 2 If Pinb.2 = 1 Then E = E + 4 If Pinb.3 = 1 Then E = E + 8 'E ist maximal 15 '--------------------------------------------------------------------------- Z = 0 'Zehnerstelle linke Anzeige der 4 LEDs; Input an PortC 0...3 'Z = PortC If Pinc.0 = 0 Then Z = 0 If Pinc.0 = 1 Then Z = 1 'PortC ist der linke Wert = Zehner If Pinc.1 = 1 Then Z = Z + 2 If Pinc.2 = 1 Then Z = Z + 4

If Pinc.3 = 1 Then Z = Z + 8 ' Z ist maximal 15 'Werteeinlesen abgeschlossen; jetzt LEDs und Ziffern ausgeben Return '------------------------------------------------------------------- 'hier erfolgt die Ausgabe 'der Wert der Berechnung wird auch durch die 5 LEDs angezeigt 'zurechtbasteln für die BCD-Ziffern 'die Bits 5 und 6 vom Port D werden für die BCD-Zehneranzeige verwendet, 'die Ausgabe-LEDs sind daran nicht angeschlossen! Ausgabe: 'Die Pins von PortB (oberes Nibble) werden für die BCD-Ausgabe der Einerziffer 'verwendet 'BB4 = A 'PB5 = B 'PB6 = C 'PB7 = D Portd.5 = 0 Portd.6 = 0 'Bit A 'Bit B für die Zehnerziffern 'es folgen die BCD-Codes für die Einerziffer Portb.4 = 0 Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 If W = 0 Then Portb.4 = 0

Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 If W = 1 Then If W = 2 Then If W = 3 Then If W = 4 Then If W = 5 Then If W = 6 Then If W = 7 Then If W = 8 Then Portb.7 = 1 If W = 9 Then

Portb.7 = 1 If W = 10 Then 'die A,B,C und D für die Einerziffer wurden ' ganz oben auf 0 gesetzt! If W = 11 Then If W = 12 Then If W = 13 Then If W = 14 Then If W = 15 Then If W = 16 Then

If W = 17 Then If W = 18 Then Portb.7 = 1 If W = 19 Then Portb.7 = 1 If W = 20 Then 'die 2 an der Zehnerziffer If W = 21 Then If W = 22 Then If W = 23 Then

If W = 24 Then If W = 25 Then If W = 26 Then If W = 27 Then If W = 28 Then Portb.7 = 1 If W = 29 Then

Portb.7 = 1 If W = 30 Then '30wird angezeigt 'die Summe der beiden Zahlen kann nie grösser als 30 werden! 'bei allen anderen Werten bleiben die Ports = 0 '--------------------------------------------------------------------------- 'Binaer-Ausgabe 'zunächst alle LEDs dunkel schalten; PORTD ist auf Output gesetzt Portd.4 = 0 If W = 1 Then If W = 2 Then If W = 3 Then If W = 4 Then

If W = 5 Then If W = 6 Then If W = 7 Then If W = 8 Then If W = 9 Then If W = 10 Then If W = 11 Then If W = 12 Then

If W = 13 Then If W = 14 Then If W = 15 Then If W = 16 Then If W = 17 Then

If W = 18 Then If W = 19 Then If W = 20 Then If W = 21 Then If W = 22 Then

If W = 23 Then If W = 24 Then If W = 25 Then If W = 26 Then If W = 27 Then

If W = 28 Then If W = 29 Then If W = 30 Then If W = 31 Then Return '====================================================================== ======