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
#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<
}
}
}
}
Sekian dan terimakasih, mohon koreksinya jika ada yang salah..
No comments:
Post a Comment