\documentclass[10pt, a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{datetime}
\usepackage[]{amsmath} 
\usepackage[]{amsthm} 
\usepackage[]{amssymb}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}
\lhead{Rechnerarchitekturen 1 - Praktikum A2 - WS20/21}
\rfoot{Page \thepage}

\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

%Code listing style named "mystyle"
\lstdefinestyle{mystyle}{
  backgroundcolor=\color{backcolour},   
  commentstyle=\color{codegreen},
  keywordstyle=\color{magenta},
  numberstyle=\tiny\color{codegray},
  stringstyle=\color{codepurple},
  basicstyle=\ttfamily\footnotesize,
  breakatwhitespace=false,         
  breaklines=true,                 
  captionpos=b,                    
  keepspaces=true,                 
  numbers=left,                    
  numbersep=5pt,                  
  showspaces=false,                
  showstringspaces=false,
  showtabs=false,                  
  tabsize=2
}

%"mystyle" code listing set
\lstset{style=mystyle}

\newdateformat{myformat}{\THEDAY{ten }\monthname[\THEMONTH], \THEYEAR}

\title{Rechnerarchitekturen 1 - Praktikum A2}
\author{}
\date\today
\begin{document}


\begin{center}
        \begin{tabular}{| l | c | c | c | c | c | c | c | c | }
                \hline
                \multicolumn{9}{|c|}{Frequenzen der C-Dur Tonleiter}\\
                \hline
                \hline
                Ton   & c'    & d'    & e'    & f'    & g'    & a'    & h'    & c''   \\\hline
                f(Hz) & 261,6 & 293,7 & 329,6 & 349,2 & 392,0 & 440,0 & 493,9 & 523,2 \\\hline
                Zählkonstante & 7662 & 6825 & 6079 & 5730 & 5102 & 4545 & 4056 & 3824 \\\hline
                Freq(Hex) & 1DEEH & 1AA9H & 17BFH & 1662H & 13EEH & 11C1 & FD8H & EF0H\\\hline
        \end{tabular}
\end{center}

\section*{ Grundaufgabe a)}
\scriptsize{Der  Kanal  0  des  Timerbausteins  soll  als  programmierbarer  Frequenzgenerator  benutzt  werden.  Dazu  wird  die  Betriebsart  „Mode  3“  verwendet  (Frequenzteiler  mit  symmetrischer  Rechteckschwingung  am  Output).  Die  Output-Frequenz  soll  440  Hz  betragen. Als Input benutzen Sie den eingebauten 2-MHz-Generator.}
$$\text{Zählkonstante: } \frac{2 MHz}{440 Hz} = 4545,4545 = (11C1)_{16}$$
\begin{lstlisting}
        MOV AL, 36H; Steuerbyte 00110110
        OUT 57H, AL
        MOV AL, 0C1H; LSB
        OUT 54H, Al
        MOV AL, 011H; MSB
        OUT 54H, AL
\end{lstlisting}


\section*{ Grundaufgabe b)}
\scriptsize{Schalten  Sie  die  Tonausgabe  zunächst  wieder  ab  und  erweitern  Sie  das  Programm  um  die  Initialisierung der PIT-Kanäle 1 und 2. Die am Output des Kanals 2 angeschlossene LED soll mit  einer  Periodendauer  von  0,5s  blinken.  Es  ist  wiederum  Mode  3  zu  benutzen.  Da  beide  Kanäle hintereinander geschaltet (kaskadiert) sind, müssen Sie die benötigte Frequenzteilung auf beide Kanäle aufteilen. Außer der LED haben Sie diesmal keine weitere Kontrollmöglichkeit. }
$$\text{Zählkonstante: } \frac{2 MHz}{2 Hz} /2 = 1000000 / 2 = 500000$$
\begin{lstlisting}
        MOV AL, 0B6H; Kanal 2
        OUT 57H, AL
        MOV AL, 0FFH
        OUT 56H, AL
        MOV AL, 0FFH
        OUT 56H, AL

        MOV AL, 076H ;Kanal 1
        OUT 57H, AL
        MOV AL, 0FFH
        OUT 55H, AL
        MOV AL, 0FFH
        OUT 56H, AL

\end{lstlisting}
\clearpage

\section*{ Grundaufgabe c)}
\scriptsize{Die Tonausgabe von Kanal 0 wird wieder eingeschaltet. Sie soll jetzt aber nur noch dann aktiv sein, wenn gerade eine beliebige Taste in der blauen Tastenreihe gedrückt ist. Dazu müssen Sie in der Endlosschleife des Programms eine entsprechende Abfrage einbauen.}

\begin{lstlisting}
noton:  MOV AL, 59H
        OUT 57H, AL
taste:  IN AL, 59H
        AND AL, 0FFH
        JZ noton        ;keine taste gedrueckt
        JMP ton
ton:    MOV AL, 0C1H
        OUT 54H, AL
        MOV AL, 011H
        OUT 54H, AL
        JMP taste
\end{lstlisting}

\section*{ Fortgeschrittene Aufgabe d)}
\scriptsize{Erweitern Sie das Programm dann so, dass den einzelnen Tasten unterschiedliche Frequenzen zugeordnet sind. Es wird angenommen, dass nicht mehrere Tasten gleichzeitig gedrückt werden. Das  Blinken  der  LED  von  Aufgabe  b)  soll  weiterhin  funktionieren. }

\begin{lstlisting}
noton:  MOV AL, 59H
        OUT 57H, AL
taste:  IN AL, 59H
        MOV BL, AL
        AND AL, 0FFH
        JZ noton        ;keine taste gedrueckt
        MOV AL, BL
        AND AL, 001H    ; Taste A
        JNZ tonA
        MOV AL, BL
        AND AL, 003H    ; Taste B
        JNZ tonB
        MOV AL, BL
        AND AL, 004H    ;Taste C
        JNZ tonC
        JMP taste
tonA:   MOV AL, 0C1H
        OUT 54H, AL
        MOV AL, 011H
        OUT 54H, AL
        JMP taste
tonB:   MOV AL, 008H
        OUT 54H, AL
        MOV AL, 0FDH
        OUT 54H, AL
        JMP taste
tonC:   MOV AL, 000H
        OUT 54H, AL
        MOV AL, 0EFH
        OUT 54H, AL
        JMP taste

\end{lstlisting}

\end{document}