diff --git a/20191212/hp-20191212.tex b/20191212/hp-20191212.tex
index a44fb1c291aa53c0dec848b17f53ee903a2a4b2c..92d6c381cc9629cb6ca5b64a1ae0a1485f032ec9 100644
--- a/20191212/hp-20191212.tex
+++ b/20191212/hp-20191212.tex
@@ -20,7 +20,7 @@
 % Attribution-ShareAlike 3.0 Unported License along with this
 % document.  If not, see <http://creativecommons.org/licenses/>.
 
-% README: make, Byte-Reihenfolge - Endianness, Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment
+% README: make, Byte-Reihenfolge - Endianness
 
 \documentclass[10pt,t]{beamer}
 
diff --git a/20191212/pgscript.sty b/20191212/pgscript.sty
deleted file mode 100644
index 0a36e84e6b3087a3369e74d1a5b33fd58902993d..0000000000000000000000000000000000000000
--- a/20191212/pgscript.sty
+++ /dev/null
@@ -1,137 +0,0 @@
-% pgscript.sty - LaTeX Settings for Lecture Notes
-% Copyright (C) 2012, 2015, 2017, 2018  Peter Gerwinski
-%
-% This document is free software: you can redistribute it and/or
-% modify it either under the terms of the Creative Commons
-% Attribution-ShareAlike 3.0 License, or under the terms of the
-% GNU General Public License as published by the Free Software
-% Foundation, either version 3 of the License, or (at your option)
-% any later version.
-%
-% This document is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this document.  If not, see <http://www.gnu.org/licenses/>.
-%
-% You should have received a copy of the Creative Commons
-% Attribution-ShareAlike 3.0 Unported License along with this
-% document.  If not, see <http://creativecommons.org/licenses/>.
-
-\usepackage{amsfonts}
-\usepackage[colorlinks,allcolors=blue]{hyperref}
-\usepackage[british,german]{babel}  % Yes, really "german" and not "ngerman".
-\usepackage[utf8]{luainputenc}  % Without this, umlauts are broken. Weird.
-\usepackage{microtype}
-\usepackage[T1]{fontenc}
-\usepackage{times}
-\usepackage{helvet}
-\renewcommand*\familydefault{\sfdefault}
-\usepackage{graphicx}
-\usepackage{ifluatex}
-\usepackage{xcolor}
-\usepackage{enumerate}
-\usepackage{ifthen}
-
-%% Repair kerning: Automatically insert "\kern{-0.15em}" between "//" % (in URLs).
-%% PG20151206: This seems unnecessary here. Maybe due to \sf?
-%\ifluatex
-%\directlua{
-%  local glyph = node.id ("glyph")
-%  local function my_kerning (head)
-%    for t in node.traverse (head) do
-%      if t.id == glyph and t.char == 47 then
-%        if t.next
-%           and t.next.next
-%           and t.next.next.id == glyph
-%           and t.next.next.char == 47 then
-%          local k = node.new ("kern")
-%          k.kern = tex.sp ("-0.15em")
-%          k.next = t.next
-%          k.prev = t
-%          t.next.prev = k
-%          t.next = k
-%        end
-%      end
-%    end
-%    node.kerning (head)
-%  end
-%  luatexbase.add_to_callback ("kerning", my_kerning, "URL kerning")
-%}
-%\fi
-
-\definecolor{blendedblue}{rgb}{0.2,0.2,0.7}
-\definecolor{darkgreen}{rgb}{0.0,0.3,0.0}
-\definecolor{darkred}{rgb}{0.7,0.0,0.0}
-\definecolor{darkgrey}{rgb}{0.4,0.4,0.4}
-
-\newcommand{\breath}{\bigskip\goodbreak}
-\newcommand{\subsubsubsection}[1]{\breath\par\textbf{#1}\nopagebreak\par}
-\newenvironment{experts}{\color{darkgrey}}{}
-\newenvironment{whiteout}{\definecolor{darkgreen}{rgb}{1.0,1.0,1.0}%
-                          \definecolor{darkred}{rgb}{1.0,1.0,1.0}%
-                          \color{white}}{}
-\newenvironment{hint}{%
-  \begin{quote}
-    \addtolength{\leftskip}{0.6cm}%
-%    \includegraphics[width=1cm]{Zeichen_101_-_Gefahrstelle,_StVO_1970.pdf}
-    \makebox(0,0)[r]{\includegraphics[width=1cm]{Zeichen_101_-_Gefahrstelle,_StVO_1970.pdf}\hspace*{0.5em}}%
-%    \hangindent 1.2cm
-%    \hangafter 2
-    \bfseries
-%    Foobar Foobar Foobar Foobar Foobar Foobar Foobar Foobar
-%    Foobar Foobar Foobar Foobar Foobar Foobar Foobar Foobar
-%    Foobar Foobar Foobar Foobar Foobar Foobar Foobar Foobar
-%    Foobar Foobar Foobar Foobar Foobar Foobar Foobar Foobar
-    \ignorespaces
-}{%
-  \end{quote}
-}
-\urlstyle{sf}
-\newcommand{\file}[1]{{\color{blendedblue}#1}}
-\newcommand{\textarrow}{{\boldmath $\longrightarrow$}}
-\newcommand{\arrowitem}{\item[\textarrow]}
-\newcommand{\newterm}[1]{\emph{\color{darkgreen}#1}}
-
-\newcounter{exercise}
-\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
-\newcommand{\solution}{\subsubsection*{Lösung}}
-
-\newcounter{points}
-\newcommand{\points}[1]{\ifthenelse{#1=1}{(1 Punkt)}{(#1 Punkte)}\addtocounter{points}{#1}}
-
-\newcommand{\gitfile}[3]{\href{https://gitlab.cvh-server.de/pgerwinski/#1/raw/master/#2/#3}{\file{#3}}}
-
-\usepackage{listings}
-\lstset{basicstyle=\color{blendedblue},
-        language=C,
-        captionpos=b,
-        gobble=4,
-        xleftmargin=1em,
-        columns=fullflexible,
-        moredelim=**[is][\color{red}]{¡}{¿}}
-\lstdefinestyle{numbered}{xleftmargin=2em,
-                          numbers=left,
-                          numberstyle=\footnotesize\color{gray}}
-\lstdefinestyle{terminal}{basicstyle=\ttfamily\color{darkgreen},
-                          language={},
-                          columns=fixed,
-                          moredelim=**[is][\color{darkred}]{¡}{¿},
-                          moredelim=**[is][\color{blendedblue}]{°}{¿},
-                          moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
-\lstdefinestyle{cmd}{basicstyle=\ttfamily\color{darkred},
-                     language={},
-                     columns=fixed,
-                     moredelim=**[is][\color{darkgreen}]{¡}{¿},
-                     moredelim=**[is][\color{blendedblue}]{°}{¿},
-                     moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
-
-\setlength{\textwidth}{16.5cm}
-\setlength{\textheight}{26.0cm}
-\setlength{\hoffset}{-1.5cm}
-\setlength{\voffset}{-3.0cm}
-\setlength{\parindent}{0pt}
-\setlength{\parskip}{\medskipamount}
-\setlength{\unitlength}{1cm}
diff --git a/20191212/pgscript.sty b/20191212/pgscript.sty
new file mode 120000
index 0000000000000000000000000000000000000000..95c888478c99ea7fda0fd11ccf669ae91be7178b
--- /dev/null
+++ b/20191212/pgscript.sty
@@ -0,0 +1 @@
+../common/pgscript.sty
\ No newline at end of file
diff --git a/20191212/pgslides.sty b/20191212/pgslides.sty
deleted file mode 100644
index 9a019ce99f03d27a17942facc56fe2145f46b6a6..0000000000000000000000000000000000000000
--- a/20191212/pgslides.sty
+++ /dev/null
@@ -1,233 +0,0 @@
-% pgslides.sty - LaTeX Settings for Lecture Slides
-% Copyright (C) 2012, 2013  Peter Gerwinski
-%
-% This document is free software: you can redistribute it and/or
-% modify it either under the terms of the Creative Commons
-% Attribution-ShareAlike 3.0 License, or under the terms of the
-% GNU General Public License as published by the Free Software
-% Foundation, either version 3 of the License, or (at your option)
-% any later version.
-%
-% This document is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this document.  If not, see <http://www.gnu.org/licenses/>.
-%
-% You should have received a copy of the Creative Commons
-% Attribution-ShareAlike 3.0 Unported License along with this
-% document.  If not, see <http://creativecommons.org/licenses/>.
-
-\usepackage{amsfonts}
-\usepackage[british,german]{babel}  % Yes, really "german" and not "ngerman".
-\usepackage[utf8]{luainputenc}  % Without this, umlauts are broken. Weird.
-\usepackage{microtype}
-\usepackage[T1]{fontenc}
-\usepackage{times}
-\usepackage{helvet}
-\renewcommand*\familydefault{\sfdefault}
-\usepackage{graphicx}
-\usepackage{pstricks}
-
-\hypersetup{colorlinks,allcolors=blue}
-
-%% @@@ Not necessary for slides. Why???
-%% Repair kerning: Automatically insert "\kern{-0.15em}" between "//" % (in URLs).
-%\directlua{
-%  local glyph = node.id ("glyph")
-%  local function my_kerning (head)
-%    for t in node.traverse (head) do
-%      if t.id == glyph and t.char == 47 then
-%        if t.next
-%           and t.next.next
-%           and t.next.next.id == glyph
-%           and t.next.next.char == 47 then
-%          local k = node.new ("kern")
-%          k.kern = tex.sp ("-0.15em")
-%          k.next = t.next
-%          k.prev = t
-%          t.next.prev = k
-%          t.next = k
-%        end
-%      end
-%    end
-%    node.kerning (head)
-%  end
-%  luatexbase.add_to_callback ("kerning", my_kerning, "URL kerning")
-%}
-
-\usetheme{default}
-\usefonttheme{structurebold}
-\setbeamertemplate{navigation symbols}{}
-\setbeamersize{text margin left = 0.3cm, text margin right = 0.2cm}
-\setbeamertemplate{itemize item}{$\bullet$}
-\setbeamertemplate{itemize subitem}{--}
-\setbeamerfont{itemize/enumerate subbody}{size=\normalsize}
-\setbeamerfont{itemize/enumerate subsubbody}{size=\normalsize}
-\setbeamercolor{footline}{fg=gray}
-
-\newcommand{\sep}{~$\cdot$~}
-
-\newif\ifminimalistic
-\minimalistictrue
-
-\institute[Hochschule Bochum\sep CVH]{%
-  \makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill
-  \makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}}%
-}
-
-\setbeamertemplate{headline}{%
-  \leavevmode
-  \hbox to \textwidth{%
-    \ifminimalistic
-      \strut\hfill
-    \else
-      \rule{0pt}{5.7pt}%
-      \hspace*{8.55pt}\insertinstitute\hspace*{5.7pt}%
-      \raisebox{-30pt}{\rule{0pt}{1pt}}%
-    \fi
-  }%
-  \vskip0pt%
-}
-
-\iffalse
-  \setbeamertemplate{footline}{}
-\else
-  \setbeamertemplate{footline}{%
-    \leavevmode
-    \hbox to \textwidth{%
-      \usebeamercolor{footline}%
-      \usebeamerfont{footline}%
-      \ifminimalistic
-        \strut\hfill
-      \else
-        \,\insertshorttitle\sep
-        \insertshortauthor\sep
-        \insertshortinstitute\sep
-        \insertshortdate\hfill
-      \fi
-      \insertframenumber/\inserttotalframenumber
-      %Folie\,\insertframenumber\sep Seite\,\insertpagenumber\,
-    }%
-    \vskip0pt%
-  }
-\fi
-
-\newcommand{\maketitleframe}{%
-  \ifminimalistic
-    \begin{frame}[t,plain]
-      \insertinstitute
-      \par\vfill
-      \begin{center}
-        {\LARGE\color{structure}\inserttitle\par}\bigskip\bigskip
-        {\large \insertauthor\par}\bigskip\medskip
-        \insertdate
-      \end{center}
-    \end{frame}
-  \else
-    \begin{frame}
-      \vfill
-      \begin{center}
-        {\LARGE\color{structure}\inserttitle\par}\bigskip\bigskip
-        {\large \insertauthor\par}\bigskip\medskip
-        \insertdate
-      \end{center}
-      \vfill
-    \end{frame}
-  \fi
-}
-
-\definecolor{medgreen}{rgb}{0.0,0.5,0.0}
-\definecolor{darkgreen}{rgb}{0.0,0.3,0.0}
-\definecolor{lightred}{rgb}{1.0,0.7,0.7}
-\definecolor{medred}{rgb}{0.5,0.0,0.0}
-\definecolor{bored}{rgb}{0.89,0.0,0.098}
-\definecolor{lightgray}{rgb}{0.85,0.85,0.85}
-\definecolor{orange}{rgb}{1.0,0.5,0.0}
-\definecolor{darkgray}{rgb}{0.4,0.4,0.4}
-
-\newenvironment{experts}{\color{darkgray}}{}
-
-\usepackage{listings}
-\lstset{basicstyle=\color{structure},
-        language=C,
-        captionpos=b,
-        gobble=4,
-        columns=fullflexible,
-        aboveskip=0pt,
-        belowskip=0pt,
-        moredelim=**[is][\color{structure}]{¡}{¿},
-        moredelim=**[is][\only<2->{\color{structure}}]{²}{¿},
-        moredelim=**[is][\only<3->{\color{structure}}]{³}{¿},
-        moredelim=**[is][\only<4->{\color{structure}}]{°}{¿},
-        moredelim=**[is][\only<5->{\color{structure}}]{¤}{¿},
-        moredelim=**[is][\only<6->{\color{structure}}]{¢}{¿},
-        moredelim=**[is][\only<7->{\color{structure}}]{æ}{¿},
-        moredelim=**[is][\only<8->{\color{structure}}]{ø}{¿}}
-\lstdefinestyle{terminal}{basicstyle=\ttfamily\color{darkgreen},
-                          language={},
-                          columns=fixed,
-                          moredelim=**[is][\color{red}]{¡}{¿},
-                          moredelim=**[is][\color{blendedblue}]{°}{¿},
-                          moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
-\lstdefinestyle{cmd}{basicstyle=\ttfamily\color{red},
-                     language={},
-                     gobble=2,
-                     columns=fixed,
-                     moredelim=**[is][\color{darkgreen}]{¡}{¿},
-                     moredelim=**[is][\color{structure}]{°}{¿},
-                     moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
-\lstdefinestyle{shy}{basicstyle=\color{lightgray}}
-
-\setcounter{topnumber}{3}
-\renewcommand\topfraction{0.7}
-\setcounter{bottomnumber}{3}
-\renewcommand\bottomfraction{0.7}
-\setcounter{totalnumber}{5}
-\renewcommand\textfraction{0.1}
-\renewcommand\floatpagefraction{0.9}
-
-\setlength{\unitlength}{1cm}
-
-\newcommand{\protectfile}[1]{#1}
-\urlstyle{sf}
-\newcommand{\file}[1]{{\color{structure}\protectfile{#1}}}
-\newcommand{\textarrow}{{\boldmath $\longrightarrow$}}
-\newcommand{\arrowitem}{\item[\textarrow]}
-\newcommand{\newterm}[1]{\emph{\color{darkgreen}#1}}
-\newcommand{\BIGskip}{\vspace{1cm}}
-\newcommand{\shy}{\color{lightgray}}
-\newcommand{\hot}{\color{red}}
-\newcommand{\shyhot}{\color{lightred}}
-
-\newcommand{\sectionnonumber}[1]{\section{#1}\addtocounter{section}{-1}}
-
-\def\showsectionnonumber{\hbox{\Large\color{structure}\bf
-                               \vtop{\secname}\par}\bigskip}
-
-\newcommand{\nosectionnonumber}[1]{\gdef\nosectionnonumbername{#1}}
-
-\def\shownosectionnonumber{\hbox{\Large\color{structure}\bf
-                                 \vtop{\nosectionnonumbername}\par}\bigskip}
-
-\def\showsection{\hbox{\Large\color{structure}\bf
-                       \vtop{\hbox{\arabic{section}}}\kern1em%
-                       \vtop{\secname}\par}\bigskip}
-
-\newcommand{\subsectionnonumber}[1]{\subsection{#1}\addtocounter{subsection}{-1}}
-
-\def\showsubsectionnonumber{{\large\color{structure}\bf\subsecname\par}\bigskip}
-
-\def\showsubsection{\hbox{\large\color{structure}\bf
-                          \vtop{\hbox{\arabic{section}.\arabic{subsection}}}\kern1em%
-                          \vtop{\subsecname}\par}\bigskip}
-
-\newcommand{\subsubsectionnonumber}[1]{\subsubsection{#1}\addtocounter{subsubsection}{-1}}
-
-\def\showsubsubsectionnonumber{{\normalsize\color{structure}\bf\subsubsecname\par}\bigskip}
-
-\def\showsubsubsection{\hbox{\normalsize\color{structure}\bf
-                             \vtop{\hbox{\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}}\kern1em%
-                             \vtop{\subsubsecname}\par}\bigskip}
diff --git a/20191212/pgslides.sty b/20191212/pgslides.sty
new file mode 120000
index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64
--- /dev/null
+++ b/20191212/pgslides.sty
@@ -0,0 +1 @@
+../common/pgslides.sty
\ No newline at end of file
diff --git a/20191219/aufgabe-1.c b/20191219/aufgabe-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..2afae773ac2d564771ab6dfb473eed664070d3e2
--- /dev/null
+++ b/20191219/aufgabe-1.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <stdint.h>
+
+int main (void)
+{
+  uint64_t x = 4262939000843297096;
+  char *s = &x;
+  printf ("%s\n", s);
+  return 0;
+}
diff --git a/20191219/hp-uebung-20191219.pdf b/20191219/hp-uebung-20191219.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a48fb20d1f7ee23c36cca2df71e4366275067160
Binary files /dev/null and b/20191219/hp-uebung-20191219.pdf differ
diff --git a/20191219/hp-uebung-20191219.tex b/20191219/hp-uebung-20191219.tex
new file mode 100644
index 0000000000000000000000000000000000000000..f05c0fc5bea6dcc390d30db5c13660053e887075
--- /dev/null
+++ b/20191219/hp-uebung-20191219.tex
@@ -0,0 +1,202 @@
+% hp-uebung-20191219.pdf - Exercises on Low-Level Programming
+% Copyright (C) 2013, 2015, 2016, 2017, 2018, 2019  Peter Gerwinski
+%
+% This document is free software: you can redistribute it and/or
+% modify it either under the terms of the Creative Commons
+% Attribution-ShareAlike 3.0 License, or under the terms of the
+% GNU General Public License as published by the Free Software
+% Foundation, either version 3 of the License, or (at your option)
+% any later version.
+%
+% This document is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this document.  If not, see <http://www.gnu.org/licenses/>.
+%
+% You should have received a copy of the Creative Commons
+% Attribution-ShareAlike 3.0 Unported License along with this
+% document.  If not, see <http://creativecommons.org/licenses/>.
+
+% README: Trickprogrammierung, Thermometer-Baustein an I²C-Bus
+
+\documentclass[a4paper]{article}
+
+\usepackage{pgscript}
+\usepackage{gensymb}
+
+\newcommand{\ItwoC}{I\raisebox{0.5ex}{\footnotesize 2}C}
+\newcommand{\ITWOC}{I\raisebox{0.5ex}{\normalsize 2}C}
+
+\begin{document}
+
+  \thispagestyle{empty}
+
+  \section*{Hardwarenahe Programmierung\\
+            Übungsaufgaben -- 19.\ Dezember 2019}
+
+  Diese Übung enthält Punkteangaben wie in einer Klausur.
+  Um zu "`bestehen"', müssen Sie innerhalb von 60 Minuten
+  unter Verwendung ausschließlich zugelassener Hilfsmittel
+  10 Punkte (von insgesamt \totalpoints) erreichen.
+
+  \exercise{Trickprogrammierung}
+
+  Wir betrachten das folgende Programm (Datei: \gitfile{hp}{20181210}{aufgabe-1.c}):
+  \begin{lstlisting}
+    #include <stdio.h>
+    #include <stdint.h>
+
+    int main (void)
+    {
+      uint64_t x = 4262939000843297096;
+      char *s = &x;
+      printf ("%s\n", s);
+      return 0;
+    }
+  \end{lstlisting}
+  Das Programm wird compiliert und auf einem 64-Bit-Little-Endian-Computer ausgeführt:
+  \begin{lstlisting}[style=terminal]
+    $ ¡gcc -Wall -O aufgabe-1.c -o aufgabe-1¿
+    aufgabe-1.c: In function `main':
+    aufgabe-1.c:7:13: warning: initialization from incompatible pointer type [...]
+    $ ¡./aufgabe-1¿
+    Hallo
+  \end{lstlisting}
+
+  \begin{itemize}
+    \item[(a)]
+      Erklären Sie die Warnung beim Compilieren. \points{2}
+    \item[(b)]
+      Erklären Sie die Ausgabe des Programms. \points{5}
+    \item[(c)]
+      Wie würde die Ausgabe des Programms auf einem 64-Bit-Big-Endian-Computer lauten? \points{3}
+  \end{itemize}
+  Hinweis: Modifizieren Sie das Programm
+  und lassen Sie sich Speicherinhalte ausgeben.
+
+  \exercise{Thermometer-Baustein an \ITWOC-Bus}
+
+  Eine Firma stellt einen elektronischen Thermometer-Baustein her,
+  den man über die serielle Schnittstelle (RS-232) an einen PC anschließen kann,
+  um die Temperatur auszulesen.
+  Nun wird eine Variante des Thermo"-meter-Bausteins entwickelt,
+  die die Temperatur zusätzlich über einen \ItwoC-Bus bereitstellt.
+
+  Um das neue Thermometer zu testen, wird es in ein Gefäß mit heißem Wasser gelegt,
+  das langsam auf Zimmertemperatur abkühlt.
+  Alle 10 Minuten liest ein Programm, das auf dem PC läuft,
+  die gemessene Temperatur über beide Schnittstellen aus
+  und erzeugt daraus die folgende Tabelle:
+
+  \begin{center}
+    \renewcommand{\arraystretch}{1.2}
+    \begin{tabular}{|c|c|c|}\hline
+      Zeit /\,min. & Temperatur per RS-232 /\,\degree C & Temperatur per \ItwoC\ /\,\degree C \\\hline\hline
+      \phantom{0}0 & 94 & 122 \\\hline
+      10 & 47 & 244 \\\hline
+      20 & 30 & 120 \\\hline
+      30 & 24 & \phantom{0}24 \\\hline
+      40 & 21 & 168 \\\hline
+    \end{tabular}
+  \end{center}
+
+  \begin{itemize}
+    \item[(a)]
+      Aus dem Vergleich der Meßdaten läßt sich
+      auf einen Fehler bei der \ItwoC-Übertragung schließen.\\
+      Um welchen Fehler handelt es sich,
+      und wie ergibt sich dies aus den Meßdaten?
+      \points{5}
+    \item[(b)]
+      Schreiben Sie eine C-Funktion \lstinline{uint8_t repair (uint8_t data)},
+      die eine über den \ItwoC-Bus empfangene fehlerhafte Temperatur \lstinline{data} korrigiert.
+      \points{5}
+  \end{itemize}
+
+\iffalse
+
+  \exercise{Lauflicht}
+
+  \begin{minipage}[t]{8cm}
+    An die vier Ports eines ATmega16-Mikrocontrollers sind Leuchtdioden angeschlossen:
+    \begin{itemize}
+      \item
+        von links nach rechts\\
+        an die Ports A, B, C und D,
+      \item
+        von oben nach unten\\
+        an die Bits Nr.\ 0 bis 7.
+
+        \bigskip
+
+        \includegraphics[width=3cm]{leds.jpg}
+    \end{itemize}
+  \end{minipage}\hfill
+  \begin{minipage}[t]{7cm}
+    Wir betrachten das folgende C-Programm (Datei: \gitfile{hp}{20181210}{aufgabe-2.c})
+    für diesen Mikrocontroller:
+
+    \begin{lstlisting}[gobble=6]
+      #include <avr/io.h>
+      #include <avr/interrupt.h>
+
+      int counter = 0;
+
+      ISR (TIMER0_COMP_vect)
+      {
+        PORTA = 1 << ((counter++ >> 6) & 7);
+      }
+
+      int main (void)
+      {
+        cli ();
+        TCCR0 = (1 << CS01) | (1 << CS00);
+        TIMSK = 1 << OCIE0;
+        sei ();
+        DDRA = 0xff;
+        while (1);
+        return 0;
+      }
+    \end{lstlisting}
+  \end{minipage}
+
+  \medskip
+
+  Das Programm bewirkt ein periodisches Lauflicht in der linken Spalte von oben nach unten.
+  Eine Animation davon finden Sie in der Datei \gitfile{hp}{20181210}{aufgabe-2.gif}.
+
+  \begin{itemize}
+    \item[(a)]
+      Wieso bewirkt das Programm überhaupt etwas, wenn doch das Hauptprogramm
+      nach dem Initialisieren lediglich eine Endlosschleife ausführt,
+      in der \emph{nichts\/} passiert? \points 3
+    \item[(b)]
+      Erklären Sie, wie die Anweisung
+      \begin{lstlisting}[gobble=8]
+        PORTA = 1 << ((counter++ >> 6) & 7);
+      \end{lstlisting}
+      \vspace{-\medskipamount}
+      das LED-Blinkmuster hervorruft. \points 6
+
+      Hinweis: Zerlegen Sie die eine lange Anweisung in mehrere kürzere.\\
+      Wenn nötig, verwenden Sie zusätzliche Variable für Zwischenergebnisse.
+    \item[(c)]
+      Was bedeutet "`\lstinline{ISR (TIMER0_COMP_vect)}"'? \points 1
+    \item[(d)]
+      Wieso leuchten die Leuchtdioden PB2 und PD1? \points 2
+  \end{itemize}
+
+\fi
+
+  \begin{flushright}
+    \textit{Viel Erfolg!}
+  \end{flushright}
+
+  \makeatletter
+    \immediate\write\@mainaux{\string\gdef\string\totalpoints{\arabic{points}}}
+  \makeatother
+
+\end{document}
diff --git a/20191219/pgslides.sty b/20191219/pgslides.sty
new file mode 120000
index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64
--- /dev/null
+++ b/20191219/pgslides.sty
@@ -0,0 +1 @@
+../common/pgslides.sty
\ No newline at end of file
diff --git a/README.md b/README.md
index deaf53c5bb5d48ce184d60e08a1dd10fb66dde75..10ea859e0293f92c7bb0c52d394eb76da53530af 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,8 @@ Vortragsfolien und Beispiele:
  * [21.11.2019: Interrupts, volatile-Variable, Bibliotheken: Einführung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191121/hp-20191121.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191121/)
  * [28.11.2019: Präprozessor, Bibliotheken](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191128/hp-20191128.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191128/)
  * [05.12.2019: Bibliotheken, Differentialgleichungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191205/hp-20191205.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191205/)
- * [12.12.2019: make, Byte-Reihenfolge - Endianness, Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191212/hp-20191212.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191212/)
+ * [12.12.2019: make, Byte-Reihenfolge - Endianness](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191212/hp-20191212.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191212/)
+ * [19.12.2019: Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191219/hp-20191219.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20191219/)
  * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2019ws.pdf)
 
 Übungsaufgaben:
@@ -41,6 +42,7 @@ Vortragsfolien und Beispiele:
  * [28.11.2019: Datum-Bibliothek, Text-Grafik-Bibliothek, LED-Blinkmuster](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191128/hp-uebung-20191128.pdf)
  * [05.12.2019: Löschen aus Strings, Hexdumps](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191205/hp-uebung-20191205.pdf)
  * [12.12.2019: Kondensator, hüpfender Ball](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191212/hp-uebung-20191212.pdf)
+ * [19.12.2019: Trickprogrammierung, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20191219/hp-uebung-20191219.pdf)
 
 Musterlösungen:
 ---------------