Hierzu sollt ihr folgende SQL-Statements erstellen:
Geben Sie alle Leser (Name und Vorname) aus, welche Bücher noch nicht zurückgegeben haben, vermeiden Sie hierbei doppelte Nennungen.
Select distinct Name, Vorname
From Leser L inner join ausleihe A on L.id=a.L_id
where zurueck is null;
Ermitteln Sie alle Buch-IDs (als BuchNr) von überfälligen Büchern.
Select B_ID
from ausleihe inner join Buch B on B_ID=B.ID
where zurueck is null and bis<curDate();
Ermitteln Sie wie viele Tage Bücher im Durchschnitt ausgeliehen sind (als DLeihdauer).
Select avg(datediff('dd',von,bis)) as DLeihdauer from ausleihe;
Geben Sie die Anzahl der Bücher aus, welche an einem Montag (Monday) ausgeliehen wurden.
Select count(*) from ausleihe where dayName(von)='Monday';
Geben Sie für jeden Leser (Vorname, Nachname) die Anzahl der von ihm aktuell geliehenen Bücher aus (als Leihzahl).
Select Name, Vorname, count(*) LeihZahl
from leser L inner join ausleihe A on L.id=A.L_id
where zurueck is null
group by L.id, Name, Vorname;
Ermitteln Sie den Wert aller verliehenen Bücher.
Select sum(kaufpreis)
fromAusleihe A inner join Buch B on B.id=A.B_id
where zurueck is null;
Ermitteln Sie den Wert aller Bücher, welche am 06.03.2008 verliehen wurden.
select sum(Kaufpreis)
from ausleihe inner join buch on B_ID=Buch.id
where von = '2008-03-06';
Ermitteln Sie alle Leser aus, ihre mindestens ein Buch zu spät abgegeben haben.
Ausgegeben werden soll Name, Vorname, Anzahl zu spät abgegebener Bücher.
select L.Name, L.Vorname, count(B_ID) as "Anzahl säumiger Bücher"
from leser L inner join Ausleihe A on L.id=L_ID
where zurueck>bis
group by L.id, L.Name, L.Vorname;
Geben Sie die Anzahl aller Verleihungen im Jahr 2008 aus.
select count(*) "Verleihungen 2008"
from Ausleihe
where year(von)=2008;
Erstellen Sie eine Liste, welche für jeden Monat die Verleihungsanzahl auflistet.
Ausgegeben werden soll der Monatsname und die Anzahl der Verleihungen sortiert nach Monaten. Hinweis: Sie können nach monthName(von) gruppieren und nach month(von) sortieren – das funktioniert.
select MonthName(von), count(*)
from Ausleihe
group by MonthName(von)
order by Month(von);
Geben Sie die durchschnittliche Ausleihdauer je Leser in Tagen aus und sortieren sie diese absteigend nach der durchschnittlichen Ausleihdauer.
select L_ID, avg(datediff('dd',von,zurueck))
from ausleihe a
group by L_ID
order by avg(datediff('dd',von,zurueck)) desc;
Hier findet ihr etwas für euer Heft.
Die Aufgaben findet ihr hier als PDF und die Lösungen gibt es auch als PDF.
Woche 12
In dieser Woche lernen wir, dass man SQL-Abfragen verbinden kann:
Man kann zwei SQL-Abfragen verbinden indem man sie mit UNION vereinigt...
... oder mit MINUS voneinander "abziehen"
... oder mit INTERSECT die Schnittmenge bilden "abziehen"
Woche 11
In dieser Woche lernen wir Gruppierung:
Aufgaben
Gebeben ist folgende Bestell-Datenbank. Im SQL-Tool heißt sie Bestellung groß
Geben Sie die Bestell-Nr. jeder Bestellung aus und die Anzahl der Artikel jeder Bestellung.
SELECT bestellnr, sum(anzahl) AS Artikelanzahl
FROM bestellt
GROUP BY bestellnr;
Geben Sie alle Kunden (id und Name) aus, welche genau 2 Bestellungen aufgegeben haben.
SELECT id, name
FROM kunde
INNER JOIN bestellung ON kunde.id=bestellung.kundenid
GROUP BY id, name
HAVING count(*)=2
Geben Sie alle Orte und die Anzahl Kunden aus diesen Orten aus,
welche mindestens 2 Kunden haben. Nach Kundenanzahl absteigend sortiert.
SELECT ort, count(*) AS Anzahl_Kunde
FROM kunde
GROUP BY ort
HAVING count(*)>1
ORDER BY count(*) DESC
Geben Sie die Anzahl von Bestellungen je Kunden aus. Name und Anzahl soll in der Ausgabe sein.
SELECT Name, count(*) AS Anzahl
FROM Kunde INNER JOIN Bestellung ON id=KundenID
group by name;
Der Fehler in der obigen Lösung ist, dass unterschiedliche Kunden gleich heißen können, daher:
SELECT Name, count(*) AS Anzahl
FROM Kunde INNER JOIN Bestellung ON id=KundenID
group by name, id;
Geben Sie je Kunde (id, name, ort) den Gesammtwert aller Bestellungen aus.
SELECT id, name, ort, sum (preis*anzahl) AS Umsatz
FROM kunde AS k
INNER JOIN Bestellung AS b ON k.id=b.kundenid
INNER JOIN Bestellt AS hat ON b.nr=hat.bestellnr
INNER JOIN Produkt AS p ON p.id=hat.pid
GROUP BY k.id, k.name, k.ort
Geben Sie den minimalen, durchschnittlichen und maximalen Wert der angebotenen Produkte aus.
SELECT min(preis) AS minimal, avg(preis) AS durchschnitt, max(preis) AS maximum
FROM Produkt
Geben Sie die Anzahl der noch nicht ausgelieferten Bestellungen aus (ausgeliefert=NULL).
SELECT count(*) AS "offene Bestellung"
FROM bestellung
WHERE ausgeliefert IS NULL;
Geben Sie die Produkt-ID, den Produkt-Name und die Anzahl an Bestellungen für dieses Produkt aus.
Es sollen aber nur die Premium-Produkte mit einem Preis über 2000Euro betrachtet werden.
SELECT p.id, p.name, count(*)
FROM Bestellung AS b
INNER JOIN Bestellt AS hat ON b.nr=hat.bestellnr
INNER JOIN Produkt AS p ON p.id=hat.pid
WHERE preis>2000
GROUP BY p.id, p.name
Geben Sie alle Orte aus, aus denen mehr als 2 Kunden kommen.
Es soll der Ortsname und die Anzahl der Kunden aus dem Ort
angegeben werden.
SELECT ort, count(*)
FROM Kunde
GROUP BY ort
HAVING count(*) >1;
Woche 10
Aggregatsfunktionen werden hier erklärt:
Aufgabe 1
Geben Sie ein SQL-Statement an, dass die Anzahl der CDs bestimmt.
SELECT count(*) FROM cd;
Bestimmen Sie die Anzahl der Lieder der CD 1.
SELECT count(*)
FROM aufcd
WHERE cdid=1;
Ermitteln Sie die größte ID der Interpreten.
SELECT max(id)
FROM interpret;
Bestimmen Sie die Anazhl der Interpreten, die keinen Rock spielen.
SELECT count(*)
FROM interpret
WHERE stilrichtung <> 'Rock';
Ermitteln Sie die Anzahl der Lieder, die kein Rock sind.
SELECT count(*)
FROM interpret
INNER JOIN von ON von.intid=interpret.id
WHERE stilrichtung <> 'Rock';
Woche 9
In dieser Woche lernen wir wie man in SQL Tabellen verbindet.
Folgendes Video erklärt es:
In dem Übungsblatt könnt ihr das Gelernte unter Beweis stellen.
Überprüft die Lösungen auch mit dem SQL-Tool.
Lösung Aufgabe 1
SELECT name
FROM lied
INNER JOIN aufcd ON lied.id = liedid
WHERE cdid=0;
SELECT name AS Song, titel AS "CD-Titel"
FROM cd
INNER JOIN aufcd ON cd.cdid = aufcd.cdid
INNER JOIN lied ON lied.id = liedid;
SELECT lied.name AS "Lied-Titel",
interpret.name AS Interpret
FROM Lied
INNER JOIN von ON lied.id= von.liedid
INNER JOIN interpret ON interpret.id = von.intid
SELECT lied.name
FROM Lied
INNER JOIN von ON lied.id= von.liedid
INNER JOIN interpret ON interpret.id = von.intid
WHERE interpret.Stilrichtung IS NULL;
SELECT DISTINCT stilrichtung
FROM cd
INNER JOIN aufcd ON cd.cdid = aufcd.cdid
INNER JOIN von ON aufcd.liedid=von.liedid
INNER JOIN interpret AS i ON i.id=von.intid
WHERE cdid=1;
SELECT DISTINCT i.Name
FROM cd
INNER JOIN aufcd ON cd.cdid = aufcd.cdid
INNER JOIN von ON aufcd.liedid=von.liedid
INNER JOIN interpret AS i ON i.id=von.intid
WHERE cdid=1
ORDER BY i.Name;
SELECT i.Name, lied.name
FROM lied
INNER JOIN von ON lied.id=von.liedid
INNER JOIN interpret AS i ON i.id=intid
WHERE lied.name LIKE 'B%' AND i.name LIKE 'B%';
Die Antwort ist "Bob Dylan" mit "Blowin' in the wind"
Lösung Aufgabe 2
SELECT k.name
FROM Kunde AS k
INNER JOIN Bestellung AS b ON k.id=b.kundenid
WHERE ausgeliefert IS NULL;
SELECT Name, Preis, NR
FROM Bestellung AS b
INNER JOIN Bestellt AS be ON b.NR=be.BestellNr
INNER JOIN Produkt AS p ON p.ID = be.PID
WHERE NR=53;
SELECT *
FROM Bestellung
WHERE KundenID=0;
SELECT Produkt.Name, Produkt.Preis
FROM Bestellung
INNER JOIN Bestellt ON Bestellung.NR=Bestellt.BestellNr
INNER JOIN Produkt ON Produkt.ID = Bestellt.Pid
WHERE KundenID=0;
SELECT Nr
FROM Kunde AS k
INNER JOIN Bestellung AS b ON k.id=b.Kundenid
WHERE Ort='Berlin';
SELECT p.id, p.name, p.preis
FROM Kunde AS k
INNER JOIN Bestellung AS b ON k.id=b.Kundenid
INNER JOIN Bestellt ON BestellNR=Nr
INNER JOIN Produkt AS p ON p.id = pid
WHERE Ort='Dresden';
SELECT DISTINCT ort
FROM Kunde
ORDER BY ort desc;
Woche 7 und 8 (4. und 5. Wo nach Ostern)
In dieser Woche steigen wir in die Datenbankabfrage-Sprache SQL ein.
Folgendes Video gibt einen Einstieg dazu.
Wie SQL-Statements für die Spaltenauswahl funktionieren seht ihr hier:
Wie man im Select mit Where die Datensätze auswählt:
... und noch kurz wie man Datensätze sortiert:
Damit ihr das alles auch im Heft habt, ist hier ein Heftaufschrieb.
Auf diesem Übungsblatt könnt ihr euer können unter Beweis stellen.
Das Tool zum Überprüfen der Lösungen könnt ihr herunterladen.
Lösungen zum Übungsblatt
Aufgabe 1
SELECT id, name FROM Lied; oder: SELECT * FROM Lied;
SELECT titel from CD ORDER BY titel ASC; oder: SELECT titel from CD ORDER BY titel;
SELECT liedId FROM AufCd WHERE cdid=2;
SELECT name FROM interpret
WHERE name LIKE 'B%' OR name LIKE 'C%'
ORDER BY name;
SELECT DISTINCT stilrichtung FROM interpret WHERE stilrichtung LIKE '%k' ;
SELECT name FROM interpret WHERE stilrichtung IS NULL;
SELECT name FROM interpret
WHERE stilrichtung IS NOT NULL AND NOT name LIKE 'B%';
SELECT * FROM lied WHERE id=10;
SELECT * FROM lied
WHERE name LIKE 'A%' OR id>40;
SELECT * FROM interpret WHERE name = 'Beatles'; oder: SELECT * FROM interpret WHERE name LIKE 'Beatles';
SELECT * FROM aufcd
WHERE cdid=liedid;
SELECT * FROM lied WHERE name LIKE '%-%';
Aufgabe 2
Da SELECT cdid, titel from CD; alle Spalten der Tabelle CD umfasst
kann man es auf SELECT * from CD;
verkürzen.
SELECT DISTINCT cdid FROM cd WHERE cdid=1 ORDER BY cdid DESC;
selektiert den Primärschlüssel (cdid) der Tabelle, daher ist das DISTINCT
überflüssig.
Da im WHERE auf einen Primärschlüssel (cdid=1) eingeschränkt wird,
hat das Ergebnis nur eine Zeile, damit kann man sich das ORDER BY sparen.
Somit erhält man: SELECT DISTINCT cdid FROM cd WHERE cdid=1 ORDER BY cdid DESC;
also: SELECT cdid FROM cd WHERE cdid=1 ;
In diesem Statement SELECT name FROM interpret WHERE id=0 OR id=1 OR id=2 OR id=3;
kann man den WHERE beschränken: SELECT name FROM interpret WHERE id<=3;
Wer Angst hat, dass die ID negativ werden könnte müsste es mit SELECT name FROM interpret WHERE id>=0 AND id<=3;
machen.
In dem Statement SELECT name FROM interpret
WHERE id<10 AND id>2 AND id!=3 OR id>10 OR id=2 ORDER BY id ASC; kann man zum einen das ASC weglassen, da es der Default-Wert ist.
Im WHERE-Teil kann man mit denken ermitteln, dass nur die Datensätze
mit den IDs
2, 4,5,6,7,8,9 und größer 10 (also 11, 12, 13, ...)
ausgewählt werden. Damit könnte man das machen: SELECT name FROM interpret
WHERE id>=2 AND id!=3 AND id!=10 ORDER BY id;
In
SELECT id, name, stilrichtung FROM interpret WHERE id IS NOT null; werden alle Spalten selektiert. Außerdem darf der Primärschlüssel nie null
sein, somit ist der WHERE-Teil überflüssig. Damit erhält man: SELECT * FROM interpret;
Woche 6 Teil 1 (3. Wo nach Ostern)
Schaut euch folgendes Video an und macht danach die unten stehenden Aufgaben
Das Übungsblatt ist für euer Heft. Die Lösungen sind hinter dem Button.
Nein da Autoren nicht der 1. NF entsprechen (außerdem ist Autor und Titel nur von der ISBN abhängig).
Sie muss in der 1. NF vorliegen (gegen die 2. NF kann sonst nicht mehr verstoßen werden).
Hier noch ein Übungsblatt für euer Heft. Die Lösungen findet ihr im Video und hier:
Aufgabe 1
s. Video
Aufgabe 2
Die Tabelle ist nicht in der 3. NF, da man vom Autor auf den Wohnort schließen kann. Daher muss Autor und Wohnort in eine eigene Tabelle: Autor( id, Name, Wohnort ) Buch( ISBN, Titel, autor
Aufgabe 3
Wenn jeder Bandname eindeutig ist, kann man von der Band auf das Gründungsjahr schließen.
Hier müsste der Bandname dann Primärschlüssel sein und man verzichtet auf die Spalte ID. Im ABI wäre diese Tabelle aber ok, da man es da nicht so kleinlich sieht. Außerdem sind Integer (wie ID) effizietere PS als Strings (wie Band).
Jetzt ist die Tabelle in der 3.NF, da der Rückschluss von Band auf Gründungsjahr nicht mehr geht.
Wenn zwei Bands gleich heißen gibt es ja unterschiedliche Gründungsjahre die möglich wären.
Man darf nicht von PLZ auf den Ort und nicht von dem Ort auf die PLZ schließen dürfen.
Beides ist gegeben, da die PLZ 89198 für Westerstetten und Vorderdenkental steht.
Und andersherum ist 89077 und 89075 beides Ulm.
Woche 5 Teil 1 (2. Wo nach Ostern)
Schaut euch folgendes Video an und macht danach die unten stehenden Aufgaben
Aufgabe 1
Erstellen Sie ein ER-Modell mit Attributen für eine CD-Verwaltung.
Eine CD soll einen Titel und eine eindeutige CD-ID besitzen.
Auf einer CD sind mehrere Lieder. Jedes Lied besitzt einen Interpreten.
Ein Interpret hat mehrere Lieder und ein Lied kann von unterschiedlichen Interpreten gespielt werden.
Ein Lied kann auf mehreren CDs vorkommen.
Zu einem Interpreten werden Name und eine eindeutige ID eingetragen.
Ein Lied besteht aus einer eindeutigen ID, einem Titel und einer Stilrichtung.
Aufgabe 2
Sie sollen für ein Kunsthaus die Ausstellungen organisieren.
Dazu werden die Bilder mit ihrem eindeutigen Titel und der Technik, in der sie gemalt sind, gespeichert.
Ein Bild wird immer von genau einem Künstler gemalt, dessen Name und Land angegeben sind.
Ein Künstler kann beliebig viele Bilder malen.
Außerdem sollen die Besucher über ihre Eintrittskarten-Nummer erfasst werden.
Zu jedem Besucher soll zusätzlich die Information, wie viel Ermäßigung er auf den Eintrittspreis erhalten hat, abrufbar sein.
Der Eintrittspreis beträgt höchstens 3€.
Jeder Besucher kann mehrere Bilder betrachten, ebenso wie ein Bild von beliebig vielen Besuchern Betrachtet werden kann.
Ein Bild soll zusätzlich immer genau einer Epoche zugeordnet werden, welche über den Namen der Epoche und ihren jeweiligen Zeitraum erfasst ist.
Einer Epoche können mehrere Bilder zugeordnet werden.
Entwerfen Sie ein Entity-Relationship-Modell, das den oben beschriebenen Sachverhalt modelliert.
Zeichnen Sie die benötigten Entitäten, ihre Attribute und die zwischen den Entitäten existierenden Beziehungen.
Geben Sie für jede Beziehung die jeweiligen Kardinalitäten an.
Unterstreichen Sie das Attribut jeder Tabelle, welches Primärschlüssel sein könnte.
Woche 5 Teil 2 (2. Wo nach Ostern)
Schaut euch jetzt dieses wunderschöne Video an:
Aufgabe
Setzt die ERMs von Woche 5 Teil 1 in Tabellen um.
Woche 4 (1. nach Osterferien) Informationstechnik
In InfT machen wir mit Datenbanken weiter. Eine wichtige Grundregel beim Erstellen von Datenbanktabellen ist die erste Normalform.
In diesem Video wird sie erklärt:
Aufgaben zur ersten Normalform
Bringe die Tabellen in die 1. Normalform.
Aufgabe 1
ID
Name
0
Hugo Mustermann
1
Bernhardine Musterfrau
ID
Vorname
Nachname
0
Hugo
Mustermann
1
Bernhardine
Musterfrau
Aufgabe 2
ID
Name
Telefonnummer
0
Horst
09001234567
1
Egon
090098, 0800/111 0 111, 0800/111 0 222
Da eine Telefonnummer immer nur einer Person gehört, reichen uns 2 Tabellen:
Wir brauchen eine Tabelle für Klassen, eine für Schüler, eine für Lehrer.
Da ein Schüler nur in einer Klasse ist, reicht beim Schüler ein Fremdschlüssel für die Klasse.
Da ein Lehrer in mehreren Klassen unterrichtet brauchen wir hier eine Zwischentabelle.
Klasse:
ID
Klasse
K0
TGI 12/1
K1
TGI 12/2
Schüler:
ID
Name
Vorname
InKlasse
S0
Schläfer
Horst
K0
S1
Streber
Anton
K0
S2
Abwesend
DerEine
K0
S3
Quotenfrau
WieAuchImmer
K0
S4
Wahnsinns
Type
K1
S5
Geiler
Nerd
K1
S6
Reparier
MeinHandy
K1
Lehrer:
ID
Lehrer
L0
Hr. Unfähig
L1
Fr. Neunmalklug
L2
Hr. Freak
L3
Fr. ImmerZuspät
unterrichtet:
Lehrer
Klasse
L0
K0
L1
K0
L2
K0
L2
K1
L3
K1
Woche 4 Inft-Lü
Schaut euch dieses Video an, am Ende gibt es im Video eine Aufgabenstellung.
Eine minimale Lösung der Aufgabe findet ihr
ABER erst selbst versuchen.
; Minimale Lösung zur Aufgabe aus dem Video
include reg8051.inc
index Data 70h
anzahl Data 71h
sollwert Data 72h
mov anzahl, #4 ; Anzahl der Muster in der Tabelle
mov index, #0 ; der Index des aktuellen Musters
mov DPTR, #tab ; Tabellenanfang in den DataPoinTeR
holeSollPosition:
mov A, index
movc A, @A+DPTR
mov sollwert, A
loop:
mov A, P0
swap A
anl A, #0Fh
cjne A, sollwert, fahren
; => A=0 => stehen bleiben 00
clr P0.0
clr P0.1
inc index ;Nächstes Muster
mov A, index
cjne A, anzahl, holeSollPosition ; Wenn Anzahl noch nicht erreicht,
; weiter mit der nächsten Soll-Position
jmp $ ; alle Soll-Positionen angefahren => Endlosschleife
fahren:
jnc links
rechts: ; => A<0 => rechts 01
setb P0.0
clr P0.1
jmp loop
links: ; => A>0 => links 10
setb P0.1
clr P0.0
jmp loop
tab:
db 3,10, 1, 5,
end
Eine Lösung die an jeder Position eine Sekunde verweilt findet ihr
;Lösung mit 1s Warten an jeder Position
include reg8051.inc
index Data 70h
anzahl Data 71h
sollwert Data 72h
mov anzahl, #4 ; Anzahl der Muster in der Tabelle
mov index, #0 ; der Index des aktuellen Musters
mov DPTR, #tab ; Tabellenanfang in den DataPoinTeR
; Delux Variante mit Timer um an jeder Position eine Sekunde zu warten
; 1MZ hat 10ms
mov TMod, #10b ; 8-Bit-Auto-Reload-Timer-0
mov TH0, #156 ; 256-100 = 156 und 100*10ms=1000ms=1s
mov TL0, #156
; keine Interrupts, sondern wir warten mittels TF0
; dass beim Überlauf gesetzt wird
holeSollPosition:
mov A, index
movc A, @A+DPTR
mov sollwert, A
loop:
mov A, P0
swap A
anl A, #0Fh
cjne A, sollwert, fahren
; => A=0 => stehen bleiben 00
clr P0.0
clr P0.1
;warten:
setb TR0 ; Timer los
jnb TF0, $ ;warten bis Überlauf
clr TR0 ; Timer anhalten
clr TF0 ; Überlauf-Flag löschen
inc index ;Nächstes Muster
mov A, index
cjne A, anzahl, holeSollPosition ; Wenn Anzahl noch nicht erreicht,
; weiter mit der nächsten Soll-Position
jmp $ ; alle Soll-Positionen angefahren => Endlosschleife
fahren:
jnc links
rechts: ; => A<0 => rechts 01
setb P0.0
clr P0.1
jmp loop
links: ; => A>0 => links 10
setb P0.1
clr P0.0
jmp loop
tab:
db 3,10, 1, 5,
end
;Der Code aus dem Video
include reg8051.inc
loop:
mov A, P0
swap A
anl A, #0Fh
cjne A, P1, fahren
; => A=0 => stehen bleiben 00
clr P0.0
clr P0.1
jmp loop
fahren:
jnc links
rechts: ; => A<0 => rechts 01
setb P0.0
clr P0.1
jmp loop
links: ; => A>0 => links 10
setb P0.1
clr P0.0
jmp loop
end
Woche 3 Informationstechnik
Wir starten diese Woche mit Datenbanken. Eine grundlegende Beschreibung von Datenbanken findet ihr im Heftaufschrieb.
Folgende Videos erklären es viel besser, genauer, frustfreier, mitreißender, einfühlsamer, heldenhafter...:
Woche 3 Inft-Lü
Schaut euch bitte folgendes Video an und versucht es im Simulator nachzuvollziehen.
Bearbeitet danach folgendes Übungsblatt mithilfe des Simulators.
;Der Code aus dem Video
include reg8051.inc
jmp main
org 03h
mov P3, 111100b
reti
main: setb IT0
setb EX0
setb EA
mov DPTR, #tabelle
loop: jb P0.0, $
jnb P0.0, $
mov A, P2
anl A, #00000111b
movc A, @A+DPTR
mov P3, A
jmp loop
tabelle:
db 011101b, 101101b, 110101b
db 011110b, 101110b, 110110b
end
Woche 2
Schaut euch bitte folgendes Video an und versucht es im Simulator nachzuvollziehen.
;Der Code aus dem Video
include reg8051.inc
jmp main
org 0Bh
mov A, P0
rl A
mov P0, A
reti
main:
mov P0, #1
setb EA
setb ET0
mov TMod, #0010b
mov TH0, #156
mov TL0, #156
setb TR0
jmp $
end
Da ihr Profis in Assembler seit hier noch ein paar Aufgaben für die zweite Woche.
Löst sie im Simulator, dann seht ihr ob es läuft. Wenn ihr gern ein YouTube-Video zu den Lösungen hättet, dann lasst es mich wissen.
Woche 1
Im Unterricht habt ihr einige Aufgaben in Papierform erhalten.
Ihr sollt nun die Aufgabe 16-17 T1A2 durchrechnen.
Fragen könnt ihr per Mail an mich senden (oder anrufen).
Zur Kontrolle sind hier noch die Lösungen.
Ich hoffe ihr und alle die ihr liebt seit und bleibt gesund.
8051 Unterricht (InfT-Lü)
Schaut euch bitte folgendes Video an und versucht es im Simulator nachzuvollziehen.
; Der Quellcode zum Video
include reg8051.inc
mov DPTR, #60h
main: mov R0, #0
loop: mov A, R0
movc A, @A+DPTR
mov P0, A
inc R0
cjne R0, #10, loop
jmp main
org 60h
db 0111111b, 110b, 1011011b, 1001111b
db 1100110b,1101101b,1111101b
db 111b,1111111b,1101111b
end