Tutorial ARM Input Output LED dan Button pada LPC2138

Dan ternyata masih nganggur dan makan Gabuts(gaji buta//kosa kata yang aneh!!) lanjut Belajar Arm.

Ini postingan ke-3 saya tentang Tutorial Arm. Disini saya masih berkecimpung dalam Input Output pada Arm , karena Input Output ini materi sangat penting dalam pembelajaran Mikrokontroler. Postingan ke-3 ini saya menggabungkan LED dan Button, dimana jika kita menekan Butto di Simulasi Proteus maka LED akan menyala (masih sangat sederhana).

Next, udah pada bisa kan ya untuk memulai Keil uVision, kalo belum buka lagi article ini .

Ok lanjut, untuk rangkaian LPC2138 beserta Led dan Button bisa dilihat di pict bawah ini:


Ok, selanjutnya dibawah ini adalah source code tutorial Input Output menggunakan Led dan Button pada LPC2138:

#include                        /* LPC21xx definitions */

#define LED0 (1<<0)
#define LED1 (1<<1)
#define LED2 (1<<2)
#define LED3 (1<<3)
#define LED4 (1<<4)
#define LED5 (1<<5)
#define LED6 (1<<6)
#define LED7 (1<<7)

#define SW1 (1<<16)
#define SW2 (1<<17)
#define SW3 (1<<18)

#define DDR_LED (LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7)
#define DDR_SW (SW1|SW2|SW3)

unsigned char i;

void wait (void)  {                        /* wait function */
  int  d;

  for (d = 0; d < 100000; d++);           /* only to delay for LED flashes */
}

void tunda(int delay)
{
        int i;
   
        for(i=0;i<=delay;i++)
        {
                wait();
        }
}

int main (void) {

  IODIR0&=~(SW1|SW2|SW3);   
    IODIR0=0xff; //semua pin yang ada di PORT.0 di set sebagai output
   
    while (1)  {                             /* Looping forever */
       
        if(!(IOPIN0&(SW1)))
        {
        //blink LED
            for(i=0;i<8;i++)
            {   
                IOSET0=DDR_LED; // semua pin led di set high atau led menyala
                tunda(2);
                IOCLR0=DDR_LED; // semua pin led di set low atau led mati
                tunda(2);
            }
       
        }
       
        else if(!(IOPIN0&(SW2)))
        {
            // LED nyala berurutan
            IOCLR0=DDR_LED;
            tunda(1);
            for (i=0;i<8;i++) { //looping untuk menyalakan led secara berurut
                IOSET0 = (1<                tunda (2);  //waktu delay                                                   
            }
           
        }
       
        else if(!(IOPIN0&(SW3)))
        {
            IOSET0=DDR_LED;
            tunda(1);
            //led mati berurutan
            for (i=8;i>0;i--) {   //looping untuk mematikan led secara berurut                           
                IOCLR0 = (1<                tunda (2); //waktu delay
            }
        }
       
       
  }
}


Sekian dan terimakasih, mohon koreksinya jika ada yang salah..

No comments:

Post a Comment