1 | #include <c8051f020.h> // SFR declarations
|
2 | // Global CONSTANTS-------------------------------------------
|
3 | #define SYSCLK 2000000 // approximate SYSCLK frequency in Hz
|
4 |
|
5 | unsigned char n = 0;
|
6 | unsigned char t1 = 0;
|
7 | unsigned char t2 = 1;
|
8 | sbit SW2 = P3^7;
|
9 |
|
10 | //Hex-Werte für jede einzelne LED auf dem Board - 29.04.2013-----
|
11 | //LED Blau-Lauflicht
|
12 | unsigned char code L_LED_Blau2[9] = {0x00,0x01,0x08,0x40,0x00,...,0x00};
|
13 | unsigned char code L_LED_Blau3[9] = {0x00,...,0x04,0x20,0x00,0x00,0x00};
|
14 |
|
15 | // MAIN Routine------------------------------------------------
|
16 | void main (void)
|
17 | {
|
18 | // disable watchdog timer
|
19 | WDTCN = 0xde;
|
20 | WDTCN = 0xad;
|
21 | PORT2_Init ();
|
22 | PORT3_Init ();
|
23 | Timer3_Init (SYSCLK / 12 / 10); // Init Timer3 to generate interrupts
|
24 | // at a 10Hz rate.
|
25 | EA =1;
|
26 | while (1) { // spin forever
|
27 | }
|
28 | }
|
29 | // PORT_Init - ??? bei Port 3 ???--------------
|
30 | void PORT3_Init (void)
|
31 | {
|
32 | XBR2 = 0x40; // Enable crossbar and weak pull-ups
|
33 | P3MDOUT = 0x7f; // enable Port3 Pin1-7 as push-pull output
|
34 | // Pin8 ist der Taster dran SW2 = P3^7 ????
|
35 | // somit eig. Open Drain
|
36 | }
|
37 | // Timer3_ISR-----------------------------------------------
|
38 | void Timer3_ISR (void) interrupt 14
|
39 | {
|
40 | TMR3CN &= ~(0x80); // clear TF3
|
41 |
|
42 | t1 = t1 + 1; //generieren von 1Hz-Taktrate
|
43 | if(t1>10)
|
44 | {
|
45 | n = n + 1; //Zaehlvariablen n für Hex-Array-Stellen
|
46 | if(n>8)
|
47 | {
|
48 | n = 0;
|
49 | if (SW2 == 1)
|
50 | {
|
51 | t2= t2+4;
|
52 | if(t2>=23) t2 = 1;
|
53 | }
|
54 | else
|
55 | {
|
56 | t2= t2+1;
|
57 | if(t2>=23) t2 = 1;
|
58 | }
|
59 |
|
60 | B_LED_P2 = 0; //Variable loeschen
|
61 | B_LED_P3 = 0;
|
62 | }
|
63 |
|
64 | if (t2<23)
|
65 | {
|
66 | switch ( t2 )
|
67 | {
|
68 | case 1 :
|
69 | B_LED_P2 = L_LED_Blau2[0] | L_LED_Rot2[0] | L_LED_Gruen2[0];
|
70 | B_LED_P3 = L_LED_Blau3[0] | L_LED_Rot3[0] | L_LED_Gruen3[0];
|
71 |
|
72 | P2 = B_LED_P2;
|
73 | P3 = B_LED_P3;
|
74 | break;
|
75 |
|
76 | case 2 :
|
77 | B_LED_P2 = L_LED_Blau2[0] | L_LED_Rot2[0] | L_LED_Gruen2[0];
|
78 | B_LED_P3 = L_LED_Blau3[0] | L_LED_Rot3[0] | L_LED_Gruen3[0];
|
79 |
|
80 | //Port's negierte Variable übergeben, AUS wird zu EIN
|
81 | P2 = ~B_LED_P2;
|
82 | P3 = ~B_LED_P3;
|
83 | break;
|
84 |
|
85 | case 3 : //Blau-An - Hex-Wert der Arrays mit ODER verknüpft
|
86 | B_LED_P2 = L_LED_Blau2[6] | L_LED_Blau2[7];
|
87 | B_LED_P3 = L_LED_Blau3[8];
|
88 |
|
89 | P2 = B_LED_P2;
|
90 | P3 = B_LED_P3;
|
91 | break;
|
92 |
|
93 | case 9 : //Blau-Lauflicht - "n" zaehlt von 0-8
|
94 | P2 = L_LED_Blau2[n];
|
95 | P3 = L_LED_Blau3[n];
|
96 | break;
|
97 | }
|
98 | }
|
99 | t1 = 0;
|
100 | }
|
101 | }
|