PRAKTIKUM
ELEKTRONIKA DAYA
JOB 1
BAB I
TUJUAN
BAB II
TEORI DASAR
Pada topic sebelumnya sudah dikenalkan cara meng-akses port sebagai keluaran, sehingga
selanjutnya pada topic ini akan digabung dengan masukan atau input. Masukan untuk
mikrokontroler bisa dari saklar, sinyal logika, atau rangkaian lain yang memiliki keluaran.
Sebagai dasar mempelajari masukan pada mikrokontroler, pada topic ini akan digunakan
saklar/button sebagai masukannya.
Pengaturan inisialisasi port pada mikrokontroler dapat dilakukan dengan dua cara, secara
menggunakan CodeWizardAVR, atau secara penulisan program. Sedangkan sebagai kondisi
port sebagai masukan terdapat dua karakter yaitu ‘P’ dan ‘T’. ‘P’ merupakan kependekan dari
Pull Up, sedangkan ‘T’ merupakan kependekan dari Toggle. Berikut contoh pengaturan port
mikro secara CodeWizardAVR atau tertulis;
Seperti yang telah dijelaskan pada topic sebelumnya dalam pengaturan secara tertulis
inisialisasi port masukan memiliki fungsi sebagai derikut;
PORTA =0x00; Kondisi 8 bit pada PORTA semuanya Toggle (‘T’)
=0xFF; Kondisi 8 bit pada PORTA semuanya Pull up (‘P’)
=0xF0; Kondisi 4 bit LSB PORTA berfungsi sebagai Toggle (‘T’), sedangkan 4 bit
MSB PORTA berfungsi sebagai Pull up (‘P’).
Fungsi pada kondisi Toggle masukan mikrokontroler akan membaca sinyal setiap ada
perubahan logika. Perubahan itu bisa dari logika tinggi (1) menuju rendah (0) dikatakan
sebagai kondisi falling edge, atau sebaliknya dari logika rendah (0) ke tinggi (1) dikatakan
sebagai kondisi rising edge. Prinsip tersebut mengakibatkan dalam pembacaan satu
gelombang sinyal terdapat dua kali sinyal masukan ke mikrokontroler. Berikut secara ilustrasi
pembacaannya;
Seperti yang telah dijelaskan pada topic sebelumnya dalam pengaturan secara tertulis
inisialisasi port masukan memiliki fungsi sebagai derikut;
PORTA =0x00; Kondisi 8 bit pada PORTA semuanya Toggle (‘T’)
=0xFF; Kondisi 8 bit pada PORTA semuanya Pull up (‘P’)
=0xF0; Kondisi 4 bit LSB PORTA berfungsi sebagai Toggle (‘T’), sedangkan 4 bit
MSB PORTA berfungsi sebagai Pull up (‘P’).
Kondisi pengaturan port masukan pada Pull up (‘P’) mendeteksi/membaca masukan hanya
satu kali dalam satu gelombang masukan. Pembacaan tersebut pada saat gelombang pada
kondisi dari logika tinggi (1) ke logika rendah (0) dikatakan sebagai kondidi falling edge.
Selain itu bahwa pada pengaturan kondisi pull up mengeset pin masukan didalam mikro
terhubung dengan VCC (5V) melalui resistor. Resistor yang memiliki prinsip seperti tersebut
dinamakan sebagai resistor pull up. Resistor ini menjaga agar pada pin masukan yang telah
diatur berlogika tinggi, dan menunggu sinyal masukan dengan logika rendah untuk meng-
aktif-kannya. Berikut secara ilustrasi prinsip kerja masukan pada kondisi pull up;
Pengambilan data atau mendeteksi sinyal masukan dari luar dilakukan mikroprosesor dengan
instruksi program yang telah ditentukan. Instruksi pemrograman dalam bahasa C pada Code
Vision AVR yaitu “PINx”. Berikut penjabaran penulisan program untuk membaca sinyal data
dari luar;
PINA==0b11111101; pada PORTA bit 1 berlogika rendah (terdapat sinyal masukan),
bit 0 dan bit 2-7 berlogika 1 (tidak terdapat sinyal masukan)
Atau,
PINA.1==0; Pada PORTA bit 0 berlogika rendah yang menunjukkan terdapat
sinyal masukan ( saklar tertutup)
Instruksi program masukan PIN biasanya digunakan bersamaan dengan dengan intruksi
syarat pada bahasa C. Salah satunya yaitu penggunaanya bersama instruksi “IF”, berikut
contohnya;
if(PINA.1==0)
{
…….. (aksi yang dilakukan)
};
Atau pada perulangan “while”;
while(PINA.1==0)
{
…….. (aksi yang dilakukan berulang-ulang)
};
Penggunaan symbol “==” (sama dengan dua kali), mempunyai fungsi sebagai pertanyaan
kondisi pada PIN yang dituju. Apakah kondisi PIN masukan dalam kondisi rendah atau pada
kondisi tinggi. Sedangkan untuk mengetahui hasil dari pembacaan masukan program
masukan (INPUT) digabung dengan program keluaran (OUTPUT)
BAB III
LANGKAH KERJA
b. C2
2. Latihan Mandiri
a. D1
b. D2
c. D3
b. C2
……. ……
while(1)
{
if(PINA.0==0)
{
PORTD.0=0; //LED bit 0 ON
}
if (PINA.1==0)
{
PORTD.0=1; //LED bit 0 OFF
}; };
2. Latihan Mandiri
a. D1(membuat program yang apabila ditekan Sw1 ditekan nyala LED berjalan
bergantian ke kiri, apabila ditekan Sw2nyala LED berjalan bergantian kekanan)
#include <atmega8535.h>
#include <delay.h>
while (1)
{ PORTD=0XFF;
// Place your code here
if (PINA.1==0)
{
int i;
for (i=0;i<8;i++)
{
if (PINA.0==0)
{
PORTD=0XFF;
break;
}
PORTD=((0xFF)-(a<<i));
delay_ms(500);
}
}
if (PINA.2==0)
{
int i;
for (i=0;i<8;i++)
{
if (PINA.0==0)
{
PORTD=0XFF;
break;
}
PORTD=((0xFF)-(b>>i));
delay_ms(500);
}
}
b. D2(aplikatif)
Buatlahprogramuntukmenjalankanduabuahmotornyalabergantianterusmenerusdengan
jedapindahmendekati2detik.
Sw1 = sebagai START (mulai menjalankan motor bergantian)
Sw2=sebagai STOP(menghentikan bergantinya jalan motor/berhenti pada salah satu
motor)
Sw3=sebagaiRESET(menghentikandanmematikansemuamotor)
#include <atmega8535.h>
#include <delay.h>
while (1)
{
// Place your code here
PORTD=0XFF;
if (PINA.0==0)
{
int i;
for (i=0;i<2;i++)
{
if (PINA.1==0)
{
if (b==0XFE)
{
PORTD.0=0;
delay_ms(100);
}
else
{
PORTD.1=0;
delay_ms(100);
}
break;
}
if (PINA.2==0)
{
PORTD=0XFF;
break;
}
PORTD=((0XFF)-(a<<i));
b=PORTD;
delay_ms(2000);
}
}
c. D3(aplikatif)
Membuat program yang apabila Sw1 ditekan pertama LED menyala dan akan tetap
menyala saat saklar dilepas, pada penekanan Sw1 yang ke dua akan mematikan LED,
dan seterusnya.
#include <atmega8535.h>
#include <delay.h>
while (1)
{
// Place your code here
A =PORTD.0;
if (PINA.0==0)
{
if (A==1)
{
PORTD.0=0;
delay_ms(500);
}
else
{
PORTD.0=1;
delay_ms(500);
}
}
BAB IV
ANALISA DAN PEMBAHASAN
A. Analisa
1. Project 3
a. C1
Jika push button yang terhubung pada PINA.0 ditekan tanpa ditahan maka
LED yang terhubung pada PORTD.0 hanya berkedip
Jika push button yang terhubung pada PINA.0 ditekan dan ditahan pada
posisi 0 maka LED yang terhubung pada PORTD.0 akan terus menyala
sampai push button dilepaskan
b. C2
Awal simulasi semua LED menyala
Jika off ditekan maka LED yang terhubung pada PORTD.0 akan mati, dan
terus mati meskipun off dilepas
Jika on ditekan maka LED yang terhubung dengan PORTD.0 akan
menyala dan terus menyala mesikpun on dilepas
2. Latihan Mandiri
c. Latihan D1
Apabila Sw1 ditekan dan ditahan maka LED hidup bergantian dari LED
yang terhubung dengan PORTD.0 sampai PORTD.7 dan terus berulang
sampai start Sw1
Jika off ditekan dan ditahan selama Sw1 ditahan, maka pergantian LED
akan berhenti dan semua LED mati
Apabila Sw1 ditekan tanpa ditahan, maka LED akan menyala bergantian
satu kali tanpa perulangan
Apabila Sw2 ditekan dan ditahan maka LED hidup bergantian dari LED
yang terhubung dengan PORTD.7 sampai PORTD.0 dan terus berulang
sampai start Sw2
Jika off ditekan dan ditahan selama Sw2 ditahan, maka pergantian LED
akan berhenti dan semua LED mati
ZEN RESTI MAULANA/1901031005
PRAKTIKUM MIKROKONTROLER
POLITEKNIK NEGERI PADANG
DIII TEKNIK LISTRIK
Apabila Sw2 ditekan tanpa ditahan, maka LED akan menyala bergantian
satu kali tanpa perulangan
Apabila Sw1 dan Sw2 ditekan dan tahan bersamaan, maka LED akan
menyala bergantian secara bolak balik secara otomati, dari pergantian bit
kiri ke kanan, dan kanan ke kiri
d. Latihan D2
Apabila Start ditekan, maka motor akan menyala bergantian dengan jeda 2
detik dan terus berulang selama Start ditahan
Dalam keadaan start ditahan, jika Stop ditekan dan ditahan, maka
pergantian akan berhenti namun satu motor yang berjalan terakhir kali
ketika Stop ditekan akan terus berjalan
Setelah Stop dilepaskan, maka pergantian akan dimulai lagi
Dalam keadaan Start masih ditahan, jika reset ditekan dan ditahan, maka
pergantian akan berhenti, dan juga kedua motor akan berhenti berjalan
e. Latihan D3
Kondisi pertama kali ketika running adalah LED menyala
Jika push button ditekan tanpa ditahan, maka LED akan mati
Jika push button ditekan lagi maka LED kembali menyala
Dan seterusnya setiap penekanan push button
B. Pembahasan
1. Project 3
a. C1
Semua LED menyala ketika program di simulasikan karena PORTD yang
mengontrol LED berada pada kondisi LSB, kecuali LED pertama. LED
pertama dalam keadaan awal tidak menyala, hal ini karena PORTD.0 yang
mengontrol LED pertama sudah diprogramkan dalam sebuah fungsi if
yang kondisinya diambil dari PINA.0. Maka, pada PORTD.0 atau LED
aksi yang akan dikerjakan tergantung PINA.0.
Dalam program dapat dibaca bahwa jika PINA bernilai 0 atau terhubung
ke ground, maka LED menyala. Sedangkan pada kondisi awal running
b. Latihan D2
Setelah menyertakan #include <delay.h>, ada dua variabel yang
dideklarasikan yaitu variabel a dengan nilai tetapan 0x01, dan variabel b
dengan nilai tetapan 0.
Ada satu fungsi if utama yang berkondisi pada nilai PINA.0, jika bernilai 0
maka aksi didalamnya dikerjakan yaitu perintah for atau perulangan.
Karena hanya ada dua motor yang dikontrol, maka for cukup ditetapkan
dari i sama dengan 0 sampai kurang dari 2. Dengan perintah :
PORTD=((0XFF)-(a<<i)); dan delay_ms(2000);
11111111 - (00000001 geser kiri 0 bit) = 11111111 - 00000001
=11111110 maka motor yang terhubung pada PORTD.0 berjalan
Kemudian setelah dua detik. :
11111111 - (00000001 geser kiri 1 bit) = 11111111 - 00000010
=11111101 maka motor yang terhubung pada PORTD.1 berjalan
Selama PINA.0 masih dalam kondisi 0 maka instruksi tersebut akan terus
diulang dari awal.
Kemudain untuk memproses tombol Stop, cukup diberikan instruksi break
dalam fo dan dimasukkan pada kondisi yang diinginkan, pada program ini
yaitu if dengan syarat PINA.1 bernilai 0. Namun, agar ketika distop hanya
perulangannya yang berhenti sedangkan motor yang terakhir kali menyala
ketika PINA.1 bernilai 0 harus tetap menyala maka di dalam if ini haru
ditambah if lagi dengan menggunakan variabel b sebagai syarat. Variabel
b sebelumnya sudah ditetapkan bernilai 0, namun didalam for kembali
diprogram agar nilai b berubah sesuai nilai bit pada PORTD selama
perpindahan bit.
Pada if yang berada di dalam for ini, jika nilai b adalah 0xFE(11111110)
maka selama break, motor yang terhubung pada PORTD.0 tetap berjalan
dan motor lainnya berhenti. Namun jika kondisi tidak terpenuhi maka
perintah yang dijalankan adalah agar motor yang tidak terhubung dengan
PORTD.0 tetap berjalan selama break.
Untuk memprogram tombol reset pada push button di PINA.2 cukup
dengan menambahkan fungsi if yang baru di dalam fungsi for, dengan
perintah break sekaligus perintah untuk merubah nilai PORTD menjadi
0xFF;
c. Latihan D3
Setelah menyertakan instruksi #include <delay.h> cukup di deklarasikan
satu variabel yaitu variabel A dengan tetapan nilai 0.
Untuk membangun program sebagaimana telah ditentukan di atas, langkah
pertama yang harus dilakukan adalah dengan memasukkan nilai yang
PORTD.0 ke dalam variabel A.
Kemudian untuk membangun program, dibuat dengan cara nested if.
Artinya ada dua percabangan yang harus dilalui. Yang pertama if
(PINA.0==0) dimana perintah berikutnya bisa dijalankan jika terpenuhi
bahwa PINA bernilai 0 yaitu ketika push button ditekan sehingga PINA.0
terhubung ke ground. Jika terpenuhi maka akan berlanjut pada if
berikutnya yaitu, jika nilai A setelah diambil dari PORTD.0 adalah 0
karena LED menyala, maka nilai dari PORTD berubah jadi 1 dan LED
menjadi mati. Jika LED menjadi mati maka nilai PORTD berubah lagi
menjadi 1, dan ketika dimasukkan kedalam variabel A, maka A juga
bernilai 1 sehingga ketika push button ditekan lagi, maka kondisi pertama
terpenuhi dilanjutkan dengan if kedua bermodal nilai A adalah 1, maka
perintah yang dijalankan adalah mengubah PORTD.0 menjadi 0.
BAB VI
KESIMPULAN