Forum: Mikrocontroller und Digitale Elektronik LPC2368: Einstieg in C - erstes Program


von Norman S. (lpc2368-user)


Lesenswert?

Guten Morgen,

ich bin seit kurzer Zeit stolzer Besitzer eines CP-JR ARM7 LPC2368.
Mitgeliefert wurde Keil mikroVision.
Jetzt habe ich meine ersten Versuche gestartet, und habe erfolgreich 
mein erstes Programm geschrieben.
Leider komme ich momentan mit lesen alleine nicht weiter.
Ich bin dabei 8 LEDs anzusteuern. Das funktioniert auch ganz gut.
Nur weiß ich nicht, wie ich das ganze umschreiben kann, das ich nur noch 
einen Wert angeben kann, um die LEDs zu steuern.

Beispiel aus Qbasic:

Out F3C, 127
Out steht für Ausgabe, F3C für den Druckerport, und 127 ist der Wert.
(danach würden 7 von 8 LEDs leuchten)

Hier könnte ich einen hilfreichen Tipp gebrauchen.

Anbei der Code:
1
#include "LPC23xx.H"                                     // LPC2368 MPU Register
2
3
// Pin I/O LED Control Maskbit
4
#define  LED1       0x00000001                 // P2.0(0000 0000 0000 0000 0000 0000 0000 000x)
5
#define  LED2       0x00000002                  // P2.1(0000 0000 0000 0000 0000 0000 0000 00x0)
6
#define  LED3       0x00000004                 // P2.2(0000 0000 0000 0000 0000 0000 0000 0x00)
7
#define  LED4    0x00000008                // P2.3(0000 0000 0000 0000 0000 0000 0000 x000)
8
#define  LED5       0x00000010                 // P2.4(0000 0000 0000 0000 0000 0000 000x 0000)
9
#define  LED6       0x00000020                 // P2.5(0000 0000 0000 0000 0000 0000 00x0 0000)
10
#define  LED7       0x00000040                 // P2.6(0000 0000 0000 0000 0000 0000 0x00 0000)
11
#define  LED8       0x00000080                 // P2.7(0000 0000 0000 0000 0000 0000 x000 0000)
12
13
#define  LED1_ON()  FIO2CLR = LED1                // LED1 Pin = 0 (ON LED)
14
#define  LED1_OFF() FIO2SET = LED1              // LED1 Pin = 1 (OFF LED)
15
#define  LED2_ON()  FIO2CLR = LED2              // LED2 Pin = 0 (ON LED)
16
#define  LED2_OFF() FIO2SET = LED2              // LED2 Pin = 1 (OFF LED)
17
#define  LED3_ON()  FIO2CLR = LED3              // LED3 Pin = 0 (ON LED)
18
#define  LED3_OFF() FIO2SET = LED3              // LED3 Pin = 1 (OFF LED)
19
#define  LED4_ON()  FIO2CLR = LED4              // LED4 Pin = 0 (ON LED)
20
#define  LED4_OFF() FIO2SET = LED4              // LED4 Pin = 1 (OFF LED)
21
#define  LED5_ON()  FIO2CLR = LED5              // LED5 Pin = 0 (ON LED)
22
#define  LED5_OFF() FIO2SET = LED5              // LED5 Pin = 1 (OFF LED)
23
#define  LED6_ON()  FIO2CLR = LED6              // LED6 Pin = 0 (ON LED)
24
#define  LED6_OFF() FIO2SET = LED6              // LED6 Pin = 1 (OFF LED)
25
#define  LED7_ON()  FIO2CLR = LED7              // LED7 Pin = 0 (ON LED)
26
#define  LED7_OFF() FIO2SET = LED7              // LED7 Pin = 1 (OFF LED)
27
#define  LED8_ON()  FIO2CLR = LED8              // LED8 Pin = 0 (ON LED)
28
#define  LED8_OFF() FIO2SET = LED8              // LED8 Pin = 1 (OFF LED)
29
30
31
32
/* pototype  section */
33
void delay(unsigned long int);                // Delay Time Function
34
35
int main(void)
36
{ 
37
  // Config Pin GPIO4[0:7]   
38
  PINSEL4  &= 0xFF4BFFFF;                    // P2[0:7] = GPIO Function(xxxx xxxx xx00 00xx xxxx xxxx xxxx xxxx)
39
  PINMODE4 &= 0xFF4BFFFF;                  // Enable Puul-Up on P2[0:7]
40
   
41
  FIO2DIR  |= LED1;                           // Set GPIO-4[7:0] = Output(xxxx x11x xxxx xxxx xxxx xxxx xxxx xxxx)
42
  FIO2DIR  |= LED2;
43
  FIO2DIR  |= LED3;
44
  FIO2DIR  |= LED4;
45
  FIO2DIR  |= LED5;
46
  FIO2DIR  |= LED6;
47
  FIO2DIR  |= LED7;
48
  FIO2DIR  |= LED8;
49
  LED1_OFF();                        // Default LED Status
50
  LED2_OFF();
51
  LED3_OFF();
52
  LED4_OFF();
53
  LED5_OFF();
54
  LED6_OFF();
55
  LED7_OFF();
56
  LED8_OFF();
57
58
  // Loop Test LED Output on GPIO3[26],GPIO3[25] 
59
  while(1)                          // Loop Continue
60
  {        
61
  LED1_ON();                        // ON  LED1
62
  LED2_OFF();                        // OFF LED2
63
  LED3_OFF();                                      // OFF LED3
64
  LED4_OFF();                        // OFF LED4
65
  LED5_OFF();                        // OFF LED5
66
  LED6_OFF();                        // OFF LED6
67
  LED7_OFF();                        // OFF LED7
68
  LED8_OFF();                        // OFF LED8
69
    delay(5000000);                      // Display Delay
70
  
71
  LED1_OFF();                                         // OFF LED1
72
  LED2_ON();                        // ON LED2
73
  LED3_OFF();                        // OFF LED3
74
  LED4_OFF();                        // OFF LED4  
75
  LED5_OFF();                        // OFF LED5
76
  LED6_OFF();                        // OFF LED6
77
  LED7_OFF();                        // OFF LED7
78
  LED8_OFF();                        // OFF LED8
79
  delay(5000000);                      // Display Delay
80
  
81
  LED1_OFF();                                         // OFF LED1
82
  LED2_OFF();                        // OFF LED2
83
  LED3_ON();                        // ON LED3
84
  LED4_OFF();                        // OFF LED4
85
  LED5_OFF();                        // OFF LED5
86
  LED6_OFF();                        // OFF LED6
87
  LED7_OFF();                        // OFF LED7
88
  LED8_OFF();                        // OFF LED8
89
  delay(5000000);                      // Display Delay
90
91
  LED1_OFF();                                         // OFF LED1
92
  LED2_OFF();                        // OFF LED2
93
  LED3_OFF();                        // OFF LED3
94
  LED4_ON();                        // ON LED4
95
  LED5_OFF();                        // OFF LED5
96
  LED6_OFF();                        // OFF LED6
97
  LED7_OFF();                        // OFF LED7
98
  LED8_OFF();                        // OFF LED8
99
  delay(5000000);                      // Display Delay
100
101
  LED1_OFF();                                         // OFF LED1
102
  LED2_OFF();                        // OFF LED2
103
  LED3_OFF();                        // OFF LED3
104
  LED4_OFF();                        // OFF LED4
105
  LED5_ON();                        // ON LED5
106
  LED6_OFF();                        // OFF LED6
107
  LED7_OFF();                        // OFF LED7
108
  LED8_OFF();                        // OFF LED8
109
  delay(5000000);                      // Display Delay
110
  
111
  LED1_OFF();                                         // OFF LED1
112
  LED2_OFF();                        // OFF LED2
113
  LED3_OFF();                        // OFF LED3
114
  LED4_OFF();                        // OFF LED4
115
  LED5_OFF();                        // OFF LED5
116
  LED6_ON();                        // ON LED6
117
  LED7_OFF();                        // OFF LED7
118
  LED8_OFF();                        // OFF LED8
119
  delay(5000000);                      // Display Delay
120
  
121
  LED1_OFF();                                         // OFF LED1
122
  LED2_OFF();                        // OFF LED2
123
  LED3_OFF();                        // OFF LED3
124
  LED4_OFF();                        // OFF LED4
125
  LED5_OFF();                        // OFF LED5
126
  LED6_OFF();                        // OFF LED6
127
  LED7_ON();                        // ON LED7
128
  LED8_OFF();                        // OFF LED8
129
  delay(5000000);                      // Display Delay
130
  
131
  LED1_OFF();                                         // OFF LED1
132
  LED2_OFF();                        // OFF LED2
133
  LED3_OFF();                        // OFF LED3
134
  LED4_OFF();                        // OFF LED4
135
  LED5_OFF();                        // OFF LED5
136
  LED6_OFF();                        // OFF LED6
137
  LED7_OFF();                        // OFF LED7
138
  LED8_ON();                        // ON LED8
139
  delay(5000000);                      // Display Delay                      
140
  }  
141
}    
142
143
/***********************/
144
/* Delay Time Function */
145
/*    1-4294967296     */
146
/***********************/
147
void delay(unsigned long int count1)
148
{
149
  while(count1 > 0) {count1--;}                // Loop Decrease Counter  
150
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.