Sebentar lagi Uji Kompetensi Keahlian (UKK) 2020 Teknik Elektronika Industri, sebelum membuat program pengendali untuk tugas UKK menggunakan mikrokontroler ada baiknya membuat program aplikasi mikrokontroler yang lebih sederhana terlebih dahulu misalkan pengendali Flip Flop atau dua buah LED menyala bergantian.
Pada jejak kali ini akan mencoba membuat pengendali Flip Flop Berbasis Mikrokontroler Atmega16 dengan harapan menjadi dasar untuk memahami pemograman untuk pengendali berbasis mikrokontroler yang lainnya.
Membuat Flip Flop tanpa Tombol
Flip flop yang dibuat langsung berjalan setelah mikrokontroler diberi supply.

List Program :
#include <mega16.h>
#include <delay.h>
#define LED1 PORTC.0
#define LED2 PORTC.1
void main (void)
{
DDRC =0x81;
PORTC =0x00;
while(1)
{
LED1=1;
LED2=0;
delay_ms(300);
LED1=0;
LED2=1;
delay_ms(500);
}
}
Membuat Flip Flop dengan Tombol
Seperti biasa sebelum membuat program dibuat dulu flowchart atau diagram alir untuk pengendali Flip Flop Berbasis Mikrokontroler Atmega16 yang ditunjukkan gambar di bawah ini.

Rangkaian untuk simulasi pengendali Flip Flop Berbasis Mikrokontroler yang dibuat pada aplikasi Proteus seperti gambar di bawah ini.

Sedangkan rangkaian pengawatan atau rangkaian sebenarnya ditunjukkan seperti pada gambar di bawah ini.

Dari rangkaian di atas dapat terlihat jika tombol Start ditekan maka LED1 dan LED2 akan menyala bergantian terus menerus sampai tombol Stop ditekan. LED1 dan LED2 akan menyala bergantian lagi jika tombol Start ditekan lagi.
Gambar rangkaian pada perangkat lunak Proteus tidak akan berbentuk simulasi tanpa ada program yang dimasukan ke komponen mikrokontroler tersebut. Untuk membuat program sesuai rangkaian yang dibuat bisa menggunakan perangkat lunak CodeVisionAVR, karena dengan CodeVision bisa menyimpan file dengan format HEX dan dapat diintegrasikan ke perangkat lunak Proteus.
Daftar program untuk sistem di atas menggunakan Bahasa C seperti berikut ini.
#include <mega16.h>
#include <delay.h>
int i=0;
#define START PINA.0
#define STOP PINA.1
#define LED1 PORTC.0
#define LED2 PORTC.1
#define ON 1
#define OFF 0
void main(void)
{
DDRA=0x00;
PORTA=0x03;
DDRC=0x03;
PORTC=0x00;
while (1)
{
if (START == 0)
{
while (i<1)
{
LED1 = ON;
LED2 = OFF;
if (STOP == 0){LED1=OFF;LED2=OFF;break;}
delay_ms(1000);
LED1 = OFF;
LED2 = ON;
if (STOP == 0){LED1=OFF;LED2=OFF;break;}
delay_ms(1000);
}
}
}
}
Untuk lebih jelasnya prinsip kerja rangkaian bisa dilihat dalam Video Simulasi berikut.