Kumpulan Program Sederhana dalam Bahasa C untuk ATMega8535 (1) – Jenis-jenis percabangan

Kumpulan Program Sederhana dalam Bahasa C untuk ATMega8535 (1) – Jenis-jenis percabangan

Pada artikel ini akan saya bahas contoh-contoh program sederhana yang akan mendeskripsikan detail pemrograman dalam Bahasa C pada mikrokontroler, mulai dari bentuk percabangan, akses ke fitur-fitur yang dimiliki oleh ATMega8535 hingga akses ke antarmuka-antarmuka yang terhubung pada mikrokontroler tersebut.

Untuk meringkas artikel maka listing program di sini hanya saya tulis bagian main programnya saja, untuk listing lengkap dapat didownload dari file yang ada di link.

1. PROGRAM PERCABANGAN

 

Dalam suatu program kita pasti akan menjumpai percabangan-percabangan yang menjadi alur kemana program itu akan berjalan. Sebelum kita mulai menulis program terlebih dahulu kita harus mengenal jenis-jenis percabangan tersebut. Di sini contoh-contoh percabangan menggunakan data dari serial port sebagai kondisi yang akan dideteksi untuk menentukan alur jalannya percabangan.
a. Percabangan If
Percabangan ini akan berjalan sesuai pada flowchart di bawah ini, yaitu apabila kondisinya “True” maka data serial “OFF” akan dikirimkan dan apabila kondisinya “False” maka data serial “ON” akan dikirimkan. Kondisi “True” hanya terjadi apabila data serial yang diterima adalah “O” dan selain itu adalah “False”
int main (void){
unsigned char data_serial;
USART_INIT(MYUBRR);
data_serial=USART_Receive();
if (data_serial==’0′){
USART_Transmit(‘O’);
USART_Transmit(‘F’);
USART_Transmit(‘F’);
while(1);
}
USART_Transmit(‘O’);
USART_Transmit(‘N’);
while(1);
}
Listing program ini dapat didownload di sini
b. Percabangan If else
Percabangan ini seperti yang ada pada flowchart di bawah adalah sebuah percabangan yang memiliki jalur titik temu apapun kondisi yang terjadi baik “True” ataupun “False”. Jadi proses pengiriman data serial “Tombol Selesai” akan tetap dilakukan baik setelah kondisi “True” maupun kondisi “False” diproses

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘N’);

}

unsigned char tabel_data [16]={0x0D,0x0A,’t’,’o’,’m’,’b’,’o’,’l’,’ ‘,’s’,’e’,’l’,’e’,’s’,’a’,’i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Listing program ini dapat didownload di sini

  1. Percabangan if else if

Percabangan ini seperti yang ada pada flowchart di bawah adalah percabangan yang memiliki lebih dari 2 cabang dan akhirnya memiliki titik temu yaitu di bagian yang mengirim data “Tombol Selesai”

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

}

else if (data_serial==’1′){

USART_Transmit(‘O’);

USART_Transmit(‘N’);

}

else if (data_serial==’2′)

USART_Transmit(‘?’);

else

USART_Transmit(‘*’);

unsigned char tabel_data [16]={0x0D,0x0A,’t’,’o’,’m’,’b’,’o’,’l’,’ ‘,’s’,’e’,’l’,’e’,’s’,’a’,’i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Listing program dapat didownload di sini

  1. Percabangan Switch Case

Bentuk percabangan sama dengan if else if sehingga flowchartnya juga sama, hanya perbedaannya adalah harus diakhiri dengan “break” di tiap cabangnya kecuali  bagian akhir yang merupakan default cabang.

Listing Program

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

switch (data_serial){

case ‘0’:{

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

break;

}

case ‘1’:{

USART_Transmit(‘O’);

USART_Transmit(‘N’);

break;

}

case ‘2’:

USART_Transmit(‘?’);

break;

default:

USART_Transmit(‘*’);

}

unsigned char tabel_data [16]={0x0D,0x0A,’t’,’o’,’m’,’b’,’o’,’l’,’ ‘,’s’,’e’,’l’,’e’,’s’,’a’,’i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Listing program dapat didownload di sini

  1. Percabangan Nested

Percabangan ini adalah merupakan percabangan dalam cabang seperti pada flowchart di bawah ini

Listing Program

int main (void){

unsigned char data_serial;

USART_INIT(MYUBRR);

data_serial=USART_Receive();

if (data_serial==’0′){

data_serial=USART_Receive();

if (data_serial==’A’){

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

USART_Transmit(‘ ‘);

USART_Transmit(‘A’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘F’);

USART_Transmit(‘F’);

USART_Transmit(‘ ‘);

USART_Transmit(‘B’);

}

}

else{

data_serial=USART_Receive();

if (data_serial==’A’){

USART_Transmit(‘O’);

USART_Transmit(‘N’);

USART_Transmit(‘ ‘);

USART_Transmit(‘A’);

}

else{

USART_Transmit(‘O’);

USART_Transmit(‘N’);

USART_Transmit(‘ ‘);

USART_Transmit(‘B’);

}

}

unsigned char tabel_data [16]={0x0D,0x0A,’t’,’o’,’m’,’b’,’o’,’l’,’ ‘,’s’,’e’,’l’,’e’,’s’,’a’,’i’};

for (int i=0;i<16;i++)

USART_Transmit(tabel_data[i]);

while(1);

}

Listing Program dapat didownload di sini

DELTA ELECTRONIC

Paulus Andi Nalwan, ST

Translate »