Usut punya usut....ternyata proteus saya kurang uptodate... kalau mau simulasi LPC2138 lancar, gunakan proteus versi 7.6
Bisa download di sini
http://www.mediafire.com/?mm4wmwzkdia
Biar belajar makin tambah bingung, jangan lupa baca datasheetnya, download di sini :
http://www.nxp.com/documents/data_sheet/LPC2131_32_34_36_38.pdf
Di lembar kerja yang sudah kita buat di keil uvision 3 (baca :Membuat Project baru dengan Keil uVision)
ketikan program dibawah ini..
===================================================================
#include <LPC213x.H> /* 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 DIR_LED (LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7)
void wait (void) { /* wait function */
int d;
for (d = 0; d < 1000000; d++); /* only to delay for LED flashes */
}
void tunda(int z){
int x;
for(x=0;x<z;x++){wait();};
}
int main(void)
{
IODIR0=DIR_LED;
while(1)
{
IOSET0=DIR_LED;
tunda(1);
IOCLR0=DIR_LED;
tunda(1);
};
}
Lalu buat skema pada proteus seperti ini.
Jangan lupa beri tegangan 3Volt pada Vbatt.
Penjelasan Programnya sebagai berikut :
#include <LPC213x.H> /* LPC21xx definitions */untuk memasukan library lpc2138
#define LED0 (1<<0)Biar enak saja nyebut PORTx.0 dengan sebutan LED0, PORTX.1 dengan sebutan LED1, dst..
#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 DIR_LED (LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7)
Buat menggantikan sebutan LED0, LED1,.... dengan DIR_LED
Semua di atas optional aja, ga musti seperti itu... suka - suka hati yang bikin program...
Buat bikin delay.. nggak tahu delay nya berapa ms, pokoknya delay aja..hehe..
void wait (void) { /* wait function */
int d;
for (d = 0; d < 1000000; d++); /* only to delay for LED flashes */
}
void tunda(int z){
int x;
for(x=0;x<z;x++){wait();};
}
int main(void)nah nie... IODIR digunakan untuk inisialisasi port.. seperti DDR pada AVR..
{
IODIR0=DIR_LED;
while(1)
{
IOSET0=DIR_LED;
tunda(1);
IOCLR0=DIR_LED;
tunda(1);
};
}
bila IODIR bernilai 1, maka PORT digunakan sebagai output, kalau 0 PORT digunakan sebagai input.
IOSET untuk memberi nilai 1 pada keluaran.
IOCLR untuk memberi nilai 0 pada keluaran
Contoh Program lainnya :
======================================================================
#include <lpc213x.h>
#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 LED_DIR (LED0|LED1|LED2|LED3|LED4|LED5|LED6|LED7)
unsigned char a;
void tunda(int z)
{int x;
while (z--)
for (x=0;x<1000000;x++);}
int main(void)=====================================================================
{IODIR0=LED_DIR;
while(1)
{
for (a=0;a<8;a++)
{IOSET0=(1<<a); tunda(1);};
for (a=0;a<8;a++)
{IOCLR0=(1<<a); tunda(1);};
};
}
Kalau bingung dan program nggak jalan.. download aja simulasi dan programnya di sini :
http://www.4shared.com/file/_m3ZHq29/BLINK_LED.html