update to local git repo
This commit is contained in:
130
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/serIO.lst
Executable file
130
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/serIO.lst
Executable file
@@ -0,0 +1,130 @@
|
||||
C51 COMPILER V9.60.7.0 SERIO 05/22/2024 11:53:01 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SERIO
|
||||
OBJECT MODULE PLACED IN .\Objects\serIO.obj
|
||||
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE serIO.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\ser
|
||||
-IO.lst) TABS(2) OBJECT(.\Objects\serIO.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 * serIO.c:
|
||||
3 * Eingabe und Ausgabe ueber die serielle Schnittstelle.
|
||||
4 *
|
||||
5 * Jan Bredereke, 2019, 2024
|
||||
6 */
|
||||
7
|
||||
8 /* Die eigene Header-Datei: */
|
||||
9 #include "serIO.h"
|
||||
10
|
||||
11 /* Die Definitionen von Special-Funktion-Registern fuer den
|
||||
12 * Mikrocontroller C515C: */
|
||||
13 #include <REG515C.H>
|
||||
14
|
||||
15
|
||||
16 /* Die oeffentlichen Methoden: */
|
||||
17 /* --------------------------- */
|
||||
18
|
||||
19 /* Holt ein einzelnes Zeichen von der seriellen Schnittstelle, ohne
|
||||
20 * darauf zu warten. */
|
||||
21 /* Falls kein Zeichen da ist, wird Null zurueckgegeben. */
|
||||
22 char serIn(void) {
|
||||
23 1 /* Pruefe, ob ein Zeichen gelesen worden ist.
|
||||
24 1 * (Dann wird das Receiver-Interrupt-Flag gesetzt.) */
|
||||
25 1 if (RI) {
|
||||
26 2 /* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
27 2 RI = 0;
|
||||
28 2 /* Hole das Zeichen und gib es zurueck. */
|
||||
29 2 return SBUF;
|
||||
30 2 } else {
|
||||
31 2 /* Sonst gib Null zurueck. */
|
||||
32 2 return '\0';
|
||||
33 2 }
|
||||
34 1 }
|
||||
35
|
||||
36 /* Holt ein einzelnes Zeichen von der seriellen Schnittstelle und
|
||||
37 * wartet ggf., bis eines da ist. */
|
||||
38 char serWaitIn(void) {
|
||||
39 1 /* Warte, bis ein Zeichen empfangen wurde. (Dann wird das
|
||||
40 1 * Receiver-Interrupt-Flag gesetzt.) */
|
||||
41 1 while (!RI);
|
||||
42 1 /* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
43 1 RI = 0;
|
||||
44 1 /* Hole das empfangene Zeichen und gib es zurueck. */
|
||||
45 1 return SBUF;
|
||||
46 1 }
|
||||
47
|
||||
48 /* Gibt ein Zeichen ueber die serielle Schnittstelle aus. */
|
||||
49 /* Wartet nur, falls zur Zeit eine fruehrere solche Ausgabeoperation
|
||||
50 * noch nicht abgeschlossen ist. */
|
||||
51 void serCharOut(char zeichen) {
|
||||
52 1 /* Warte ggf., bis das vorige Zeichen fertig ausgegeben ist.
|
||||
53 1 * (Dann wird das Transmitter-Interrupt-Flag gesetzt.) */
|
||||
54 1 while (!TI);
|
||||
C51 COMPILER V9.60.7.0 SERIO 05/22/2024 11:53:01 PAGE 2
|
||||
|
||||
55 1 /* Loesche das Transmitter-Interrupt-Flag wieder. */
|
||||
56 1 TI = 0;
|
||||
57 1 /* Lege das Zeichen in Sendepuffer und beginne die Uebertragung, ohne
|
||||
58 1 * auf deren Ende zu Warten. */
|
||||
59 1 SBUF = zeichen;
|
||||
60 1 }
|
||||
61
|
||||
62 /* Gibt einen String ueber die serielle Schnittstelle aus. */
|
||||
63 void serStringOut(char *string) {
|
||||
64 1 char z; /* Das naechste zu druckende Zeichen */
|
||||
65 1
|
||||
66 1 while (z = *string++) {
|
||||
67 2 serCharOut(z);
|
||||
68 2 }
|
||||
69 1 }
|
||||
70
|
||||
71 /* Initialisiert die Eingabe+Ausgabe ueber die serielle Schnittstelle. */
|
||||
72 void serInit(void) {
|
||||
73 1 /* Initialisiert die serielle Schnittstelle des C515C
|
||||
74 1 * auf 9600 Baud, 1 Stoppbit, kein Paritybit.
|
||||
75 1 * Ein Aufruf ist bei der echten Mikrocontrollerkarte im Labor
|
||||
76 1 * nicht noetig (aber auch nicht schaedlich), da fuer das Laden des
|
||||
77 1 * Programms schon eine Initialisierung durch uVision erfolgt.
|
||||
78 1 * Siehe auch das C515C-User-Manual, Seite 6-48ff.
|
||||
79 1 */
|
||||
80 1
|
||||
81 1 /* Laedt Baud-Rate-Zaehler, oberer Teil
|
||||
82 1 * (Formel im User-Manual auf S. 6-54).
|
||||
83 1 */
|
||||
84 1 SRELH = 0x03;
|
||||
85 1 /* Laedt Baud-Rate-Zaehler, unterer Teil, und setze Zaehler zurueck. */
|
||||
86 1 SRELL = 0xbf;
|
||||
87 1 /* Setzt SMOD-Bit im Register PCON (verdoppelt Baud-Rate). */
|
||||
88 1 PCON |= 0x80;
|
||||
89 1 /* Setzt BD-Bit im Register ADCON0 (Baud rate generator enable). */
|
||||
90 1 BD = 1;
|
||||
91 1 /* Setzt Bits im Register SCON (von links nach rechts):
|
||||
92 1 * SM0=0, SM1=1, SM2=0:
|
||||
93 1 * serial mode 1, also 8-Bit-UART
|
||||
94 1 * mit variabler Baud-Rate,
|
||||
95 1 * einem Stoppbit und keinem
|
||||
96 1 * Paritybit.
|
||||
97 1 * REN=1: Receiver enable.
|
||||
98 1 * TB8=0: unbenutzt (9. Sendebit).
|
||||
99 1 * RB8=0: unbenutzt (9. Empfangsbit).
|
||||
100 1 * TI=1: Transmitter-Interrupt-Flag.
|
||||
101 1 * RI=0: Receiver-Interrupt-Flag.
|
||||
102 1 */
|
||||
103 1 SCON = 0x52;
|
||||
104 1 }
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 75 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 3
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
Reference in New Issue
Block a user