Salah satu syarat yang harus diikuti oleh kelas XII SMK yaitu lulus Uji Kompetensi Keahlian (UKK). Soal UKK diberikan oleh PSMK dengan beberapa paket soal.
Paket soal UKK Teknik Elektronika Industri tahun 2019, yaitu :
- Kontrol elektronik menjalankan motor DC dengan AT89S51
- Kontrol elektronik menghidupkan LED dengan AT89S51
- Pengendali Sortir Barang dengan Peralatan Pneumatik
- Stamping Mesin dengan Peralatan Pneumatik
Untuk paket 2 dimodifikasi sehingga judulnya menjadi Pengendali Lampu Lalulintas Berbasis ATMEGA 16, dengan prinsip kerja yang sama persis dengan paket soal 2.
Kalo kita perhatikan lampu lalulintas menyala bergantian secara berputar seperti yang digambarkan dalam diagram waktu di bawah ini.
Sebelum merakit ke alat sesungguhnya alangkah lebih baik dibuat simulasinya lebih dahulu untuk menghidari kesalahan perakitan dan pemograman alat.
Berikut ini gambar program simulasi menggunakan aplikasi Proteus, sedangkan list programnya CodeVisionAVR.

Bentuk rangkaian pengawatan untuk pengendali lampu lalulintas yang dirancang sebagai berikut.
Diagram Alir program Pengendali Lampu Lalulintas seperti rangkaian di atas seperti gambar di bawah ini.

List Program bahasa C yang digunakan untuk Pengendali Lampu Lalulintas Berbasis Atmega 16 sebagai berikut.
#include <mega16.h>
#include <delay.h>
int i=0;
#define START PINB.0
#define STOP PINB.1
#define LEDJ1R PORTA.0
#define LEDJ1Y PORTA.1
#define LEDJ1G PORTA.2
#define LEDJ2R PORTA.3
#define LEDJ2Y PORTA.4
#define LEDJ2G PORTA.5
#define LEDJ3R PORTC.3
#define LEDJ3Y PORTC.4
#define LEDJ3G PORTC.5
#define LEDJ4R PORTC.0
#define LEDJ4Y PORTC.1
#define LEDJ4G PORTC.2
#define ON 1
#define OFF 0
void main(void)
{
DDRA = 0xff ;
PORTA = 0x00 ;
DDRB = 0x00 ;
PORTB = 0x03 ;
DDRC = 0xff ;
PORTC = 0x00 ;
while (1)
{
if ( START == 0 ) /*Jika saklar Start ditekan mulai Running*/
{
while (i<1)
{
LEDJ1R = OFF ;
LEDJ1Y = OFF ;
LEDJ1G = ON ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = OFF ;
LEDJ1Y = ON ;
LEDJ1G = OFF ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = OFF ;
LEDJ2Y = OFF ;
LEDJ2G = ON ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = OFF ;
LEDJ2Y = ON ;
LEDJ2G = OFF ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = OFF ;
LEDJ3Y = OFF ;
LEDJ3G = ON ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = OFF ;
LEDJ3Y = ON ;
LEDJ3G = OFF ;
LEDJ4R = ON ;
LEDJ4Y = OFF ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = OFF ;
LEDJ4Y = OFF ;
LEDJ4G = ON ;
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;
LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;
LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;
LEDJ4R = OFF ;
LEDJ4Y = ON ;
LEDJ4G = OFF ;
delay_ms ( 1000 ) ; /*LED Kuning Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 4 Nyala*/
if ( STOP == 0 ){break;}
}
}
}
}
Hasil simulasi bisa dilihat dalam video berikut.