mikrocontroller.net

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


Autor: Norman S. (lpc2368-user)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include "LPC23xx.H"                                     // LPC2368 MPU Register

// Pin I/O LED Control Maskbit
#define  LED1       0x00000001                 // P2.0(0000 0000 0000 0000 0000 0000 0000 000x)
#define  LED2       0x00000002                  // P2.1(0000 0000 0000 0000 0000 0000 0000 00x0)
#define  LED3       0x00000004                 // P2.2(0000 0000 0000 0000 0000 0000 0000 0x00)
#define  LED4    0x00000008                // P2.3(0000 0000 0000 0000 0000 0000 0000 x000)
#define  LED5       0x00000010                 // P2.4(0000 0000 0000 0000 0000 0000 000x 0000)
#define  LED6       0x00000020                 // P2.5(0000 0000 0000 0000 0000 0000 00x0 0000)
#define  LED7       0x00000040                 // P2.6(0000 0000 0000 0000 0000 0000 0x00 0000)
#define  LED8       0x00000080                 // P2.7(0000 0000 0000 0000 0000 0000 x000 0000)

#define  LED1_ON()  FIO2CLR = LED1                // LED1 Pin = 0 (ON LED)
#define  LED1_OFF() FIO2SET = LED1              // LED1 Pin = 1 (OFF LED)
#define  LED2_ON()  FIO2CLR = LED2              // LED2 Pin = 0 (ON LED)
#define  LED2_OFF() FIO2SET = LED2              // LED2 Pin = 1 (OFF LED)
#define  LED3_ON()  FIO2CLR = LED3              // LED3 Pin = 0 (ON LED)
#define  LED3_OFF() FIO2SET = LED3              // LED3 Pin = 1 (OFF LED)
#define  LED4_ON()  FIO2CLR = LED4              // LED4 Pin = 0 (ON LED)
#define  LED4_OFF() FIO2SET = LED4              // LED4 Pin = 1 (OFF LED)
#define  LED5_ON()  FIO2CLR = LED5              // LED5 Pin = 0 (ON LED)
#define  LED5_OFF() FIO2SET = LED5              // LED5 Pin = 1 (OFF LED)
#define  LED6_ON()  FIO2CLR = LED6              // LED6 Pin = 0 (ON LED)
#define  LED6_OFF() FIO2SET = LED6              // LED6 Pin = 1 (OFF LED)
#define  LED7_ON()  FIO2CLR = LED7              // LED7 Pin = 0 (ON LED)
#define  LED7_OFF() FIO2SET = LED7              // LED7 Pin = 1 (OFF LED)
#define  LED8_ON()  FIO2CLR = LED8              // LED8 Pin = 0 (ON LED)
#define  LED8_OFF() FIO2SET = LED8              // LED8 Pin = 1 (OFF LED)



/* pototype  section */
void delay(unsigned long int);                // Delay Time Function

int main(void)
{ 
  // Config Pin GPIO4[0:7]   
  PINSEL4  &= 0xFF4BFFFF;                    // P2[0:7] = GPIO Function(xxxx xxxx xx00 00xx xxxx xxxx xxxx xxxx)
  PINMODE4 &= 0xFF4BFFFF;                  // Enable Puul-Up on P2[0:7]
   
  FIO2DIR  |= LED1;                           // Set GPIO-4[7:0] = Output(xxxx x11x xxxx xxxx xxxx xxxx xxxx xxxx)
  FIO2DIR  |= LED2;
  FIO2DIR  |= LED3;
  FIO2DIR  |= LED4;
  FIO2DIR  |= LED5;
  FIO2DIR  |= LED6;
  FIO2DIR  |= LED7;
  FIO2DIR  |= LED8;
  LED1_OFF();                        // Default LED Status
  LED2_OFF();
  LED3_OFF();
  LED4_OFF();
  LED5_OFF();
  LED6_OFF();
  LED7_OFF();
  LED8_OFF();

  // Loop Test LED Output on GPIO3[26],GPIO3[25] 
  while(1)                          // Loop Continue
  {        
  LED1_ON();                        // ON  LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                                      // OFF LED3
  LED4_OFF();                        // OFF LED4
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
    delay(5000000);                      // Display Delay
  
  LED1_OFF();                                         // OFF LED1
  LED2_ON();                        // ON LED2
  LED3_OFF();                        // OFF LED3
  LED4_OFF();                        // OFF LED4  
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay
  
  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_ON();                        // ON LED3
  LED4_OFF();                        // OFF LED4
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay

  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                        // OFF LED3
  LED4_ON();                        // ON LED4
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay

  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                        // OFF LED3
  LED4_OFF();                        // OFF LED4
  LED5_ON();                        // ON LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay
  
  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                        // OFF LED3
  LED4_OFF();                        // OFF LED4
  LED5_OFF();                        // OFF LED5
  LED6_ON();                        // ON LED6
  LED7_OFF();                        // OFF LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay
  
  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                        // OFF LED3
  LED4_OFF();                        // OFF LED4
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_ON();                        // ON LED7
  LED8_OFF();                        // OFF LED8
  delay(5000000);                      // Display Delay
  
  LED1_OFF();                                         // OFF LED1
  LED2_OFF();                        // OFF LED2
  LED3_OFF();                        // OFF LED3
  LED4_OFF();                        // OFF LED4
  LED5_OFF();                        // OFF LED5
  LED6_OFF();                        // OFF LED6
  LED7_OFF();                        // OFF LED7
  LED8_ON();                        // ON LED8
  delay(5000000);                      // Display Delay                      
  }  
}    

/***********************/
/* Delay Time Function */
/*    1-4294967296     */
/***********************/
void delay(unsigned long int count1)
{
  while(count1 > 0) {count1--;}                // Loop Decrease Counter  
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.