1 | // Einbinden der Header-Datei
|
2 | #include "T89C51CC03.H" /* für Atmel AT80C51CC03 */
|
3 |
|
4 |
|
5 | // **** Hauptprogramm ****
|
6 | int main (void)
|
7 | {
|
8 | unsigned char Eingangsbyte; /* Datenbyte zur Eingabe über Port P0 */
|
9 | unsigned char Ausgangsbyte; /* Datenbyte zur Ausgabe auf Port P2 */
|
10 | unsigned char Zahl;
|
11 | unsigned char Maskenbyte = 0x0F; /* Maskenbyte fuer ausgeblendete Portbits */
|
12 | unsigned char Maskenbit = 0x80; /* Maskenbyte fuer das LSB
|
13 | /* look-up-table fuer Codetabelle mit 10 Elementen mit Initialisierung */
|
14 | unsigned char Codetabelle [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
|
15 | unsigned char *Index_Tabelle; /* Deklaration eines Pointers */
|
16 | unsigned char n;
|
17 |
|
18 | P0 = 0xFF;
|
19 | P1 = 0x00;
|
20 | P2 = 0x00;
|
21 |
|
22 | while (1) /* Endlosschleife */
|
23 | {
|
24 | /* Einlesen des Prozessabbildes der Eingaenge von Port P4 */
|
25 | Eingangsbyte = P0;
|
26 | Eingangsbyte = Eingangsbyte & Maskenbyte;
|
27 |
|
28 | /* Beginn des Steuerprogramms */
|
29 |
|
30 | /* Pointer "Index_Tabelle" zeigt auf das erste Element der Codetabelle */
|
31 | Index_Tabelle = &Codetabelle[0];
|
32 | /* Auswaehlen des zugehoerigen Elements der Codetabelle */
|
33 | /* Cast-Operator zur Umwandlung der char-Variable in die int-Variable für Pointer */
|
34 | Zahl = *(Index_Tabelle + Eingangsbyte);
|
35 | Ausgangsbyte = Zahl;
|
36 |
|
37 | for(n=0;n<7;n++)
|
38 | {
|
39 | if (Zahl & Maskenbit)
|
40 | {
|
41 | P1_1 = 1;
|
42 | P1_0 = 1;
|
43 | P1_0 = 0;
|
44 | }
|
45 | else
|
46 | {
|
47 | P1_1 = 0;
|
48 | P1_0 = 1;
|
49 | P1_0 = 0;
|
50 | }
|
51 | Zahl = Zahl << 1;
|
52 | P1_1 = 0;
|
53 | }
|
54 | P1_2 = 1;
|
55 | P1_2 = 0;
|
56 |
|
57 | for(n=0;n<7;n++)
|
58 | {
|
59 | P1_1 = 0;
|
60 | P1_0 = 1;
|
61 | P1_0 = 0;
|
62 | }
|
63 | P1_2 = 1;
|
64 | P1_2 = 0;
|
65 | P2 = Ausgangsbyte;
|
66 | }
|
67 | return 0;
|
68 | }
|