A. Tujuan Praktikum
1. Mahasiswa memahami rangkaian mikrokontroller untuk
menghidupkan dan mematikan LED.2. Mahasiswa dapat memahami program
assembly untuk menghidupkan dan mematikan LED3. Mahasiswa memahami
beberapa intruksi assembly dasar.4. Mahasiswa memahami pembuatan
intruksi waktu tunda.
B. Teori DasarMikrokontroler, sebagai suatu terobosan teknologi
mikroprosesor dan mikrokomputer, hadir memenuhi kebutuhan pasar
(market need) dan teknologi baru. Sebagai teknologi baru, yaitu
teknologi semikonduktor dengan kandungan transistor yang lebih
banyak namun hanya membutuhkan ruang yang kecil serta dapat
diproduksi secara masal (dalam jumlah banyak) membuat harganya
menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebutuhan
pasar, mikrokontroler hadir untuk memenuhi selera industri dan para
konsumen akan kebutuhan dan keinginan alat-alat bantu bahkan mainan
yang lebih baik dan canggih. Tidak seperti sistem komputer, yang
mampu menanganiberbagai macam program aplikasi (misalnya pengolah
kata, pengolah angkadan lain sebagainya), mikrokontroler hanya bisa
digunakan untuk suatu aplikasi tertentu saja (hanya satu program
saja yang bisa disimpan). Perbedaan lainnya terletak pada
perbandingan RAM dan ROM. Pada sistem komputer perbandingan RAM dan
ROM-nya besar, artinya program-program pengguna disimpan dalam
ruang RAM yang relatif besar, sedangkan rutin-rutin antarmuka
perangkat keras disimpan dalam ruang ROM yang kecil. Sedangkan pada
Mikrokontroler, perbandingan ROM dan RAM-nya yang besar, artinya
program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash
PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan
sebagai tempat penyimpan sementara, termasuk register-register yang
digunakan pada mikrokontroler yang bersangkutan. Adapun kelebihan
dari mikrokontroller adalah sebagai berikut : 1. Penggerak pada
mikrokontoler menggunakan bahasa pemograman assembly dengan
berpatokan pada kaidah digital dasar sehingga pengoperasian sistem
menjadi sangat mudah dikerjakan sesuai dengan logika sistem (bahasa
assembly ini mudah dimengerti karena menggunakan bahasa assembly
aplikasi dimana parameter input dan output langsung bisa diakses
tanpa menggunakan banyak perintah). Desain bahasa assembly ini
tidak menggunakan begitu banyak syarat penulisan bahasa pemrograman
seperti huruf besar dan huruf kecil untuk bahasa assembly tetap
diwajarkan. 2. Mikrokontroler tersusun dalam satu chip dimana
prosesor, memori, dan I/O terintegrasi menjadi satu kesatuan
kontrol sistem sehingga mikrokontroler dapat dikatakan sebagai
komputer mini yang dapat bekerja secara inovatif sesuai dengan
kebutuhan sistem. 3. Sistem running bersifat berdiri sendiri tanpa
tergantung dengan komputer sedangkan parameter komputer hanya
digunakan untuk download perintah instruksi atau program.
Langkah-langkah untuk download komputer dengan mikrokontroler
sangat mudah digunakan karena tidak menggunakan banyak perintah. 4.
Pada mikrokontroler tersedia fasilitas tambahan untuk pengembangan
memori dan I/O yang disesuaikan dengan kebutuhan sistem. 5. Harga
untuk memperoleh alat ini lebih murah dan mudah didapat.
Arsitektur Mikrokontroler AVRMikrokontroler ini menggunakan
arsitektur Harvard yang memisahkan memori rogram dan memori data,
baik bus alamat maupun bus data sehingga pengaksesan data dan
program dapat dilakukan secara bersamaan (concurrent). Adapun blog
diagram arsitektur ATMega16 terdiri dari :
1. Arsitektur RISC dengan Troughput mencapai 16 MIPS pada
frekuensi 16 MHz2. Memiliki kapasitas flash memori 16 Kbyte, EEPROM
512 Byte, dan SRAM 1 Kbyte3. Saluran I/O 32 buah , yaitu Port A,
Port B, Port C, dan Port D.4. CPU terdiri dari 32 buah register5.
User interupsi internal dan eksternal6. Port antarmuka SPI dan port
USART sebagai komunikasi serial.7. Fitur Peripheral Dua buah 8-bit
timer/counter dengan prescaler terpisah dan mode compare Satu buah
16-bit timer/counter dengan prescaler terpisah dan mode compare,
dan mode capture Real time counter dengan osilator tersendiri Empat
kanal PWM dan antarmuka komparator analog 8 kanal, 10 bit ADC
Byte-oriented Two-wire Serial interface Watchdog timer dengan
osilator internal
Deskripsi Mikrokontroler ATMega16 VCC (Power Supply) dan GND
(Ground) Port A(PA7..PA0)Porti A berfungsisebagai input analog pada
contverter A/D. Port A juga sebagai suatu port I/O 8-bit dua arah,
jika A/D konverter tidak digunakan. Pin-pin port dapat menyediakan
resistor internal pullup (yang di pilih untuk masing-masing bit).
Port A output buffer mempunyai karakteristik gerakan simetris
dengan keduanya sink tinggi dan kemampuan sumber. Ketika Pin PA0 ke
PA7 digunakan sebagai input dan secara eksternal ditarik rendah,
pin-pin akan memungkinkan arus sumber jika resistor internal
pull-up diaaktifkan.Prt A adalah tri-stated manakala suatu kondisi
reset menjadi aktif, sekalipun waktu habis Port B (PB7..PB0)Pin B
adalah suatu pin I/O 8-bit dua arah dengan resistor internal
pull-up (yang di pilih untuk beberapa bit ). Pin B output buffer
mempunyai karakteristik gerakan simetris dengan keduanya sink
tinggi dan kemampuan sumber jika resistor pull-up diaktifkan. Pin B
adalah tri-stated manakala suatu kondisi reset menjadi aktif ,
sekalipun waktu habis Port C (PC7..PC0)Pin C adalah suatu pin I/O
8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk
beberapa bit). Pin C output buffer mempunyai karakteristik gerakan
simetris dengan keduanya sink tinggi dan kemapuan sumber. Sebagai
input pin C yang secara eksternal ditarik rendah akan arus sumber
jika resistor pull-up diaktifkan. Pin C adalah tri-stated manakala
suatu kondisi reset menjadi aktif , sekalipun waktu habis. Port
D(PD7..PD0)Pin D adalah suatu pin I/O 8-bit dua arah dengan
resistor internal pull-up (yang dipilih untuk beberapa bit). Pin D
output buffer mempunyai karakteristik gerakan simetris dengan
keduanya sink tinggi dan kemapuan sumber. Sebagai input pin D yang
secara eksternal ditarik rendah akan arus sumber jika resistor
pull-up diaktifkan. Pin D adalah tri-stated manakala suatu kondisi
reset menjadi aktif , sekalipun waktu habis. RESET (Reset Input)
XTAL1(Input Oscillator) XTAL2(Output Oscillator) AVCC adalah pin
penyedia tegangan utuk port A dan Konverter A/D AREF adalah
reverensi analog untuk Konverter A/D
LED adalah singkatan dari Light Emiting Dioda, merupakan kompnen
yang dapat mengeluarkan emisi cahaya. LED merupakan produk temuan
lain setelah dioda. Strukturnya juga sama dengan diode, tetapi
belakangan ini di temukan bahwa electron yang menerjang sambungan
P-N juga melepaskan energy panas dan energy cahaya. LED di buat
agar lebih efesien jika mengeluarkan cahaya. Untuk mendapatkan
emisi cahaya pada semi konduktor, doping yang di pakai adalah
gallium, arsenic dan phosphorus. Jenis doping yang berbeda
menghasilkan warna cahaya yang berbeda pula.
AVR mempunyai bahasa assembly tersendiri dan lain dengan MCS51.
Hal ini terjadi karena arsitektur dari keduanya berbeda. Pada
bahasa assembly AVR untuk menghidupkan LED pada port, port harus
dikirim atau diberi logika 1. Dan untuk mematikan LED pada port,
port harus di beri logika 0. Pada mikrokontroler AVR bekerja dengan
aktif hight, sedangkan MCS51 bekerja dengan aktif Low.1. Intruksi
SET digunakan untuk memberikan logika 1 pada bit operand2. Pada
Intruksi RESET digunakan untuk memberikan logika 0 pada bit
operand3. Intruksi WAITMS di gunakan untuk memberikan waktu
tunda/delay dengan satuan mili second
C. Alat & Bahan1. PC2. Software Basic Compiler (BASCOM)3.
Microsoft word
D. Langkah Kerjaa. Tugas Modul :1. Menyalakan LED2. Menyalakan
LED berkedip3. Menyalakan LED berjalan
Pertama, buka aplikasi basic compiler, lalu akan muncul tampilan
lembar kerja dari basic compiler Kemudian masukkan program untuk
menyalakan LED sepeti gambar di bawah
Lalu pilih compile / assemble Kemudian akan terlihat bahwa
program untuk menyalakan LED yang kita masukkan itu benar, yang di
tandai dengan angka 0 pada gambar seperi di bawah
Lalu hapus program yang pertama tadi, kemudian masukkan sintax
untuk menyalakan LED berkedip seperti gambar di bawah Lalu pilih
compile / assemble Kemudian akan terlihat bahwa program untuk
menyalakan LED secara berkedip yang kita masukkan itu benar, yang
di tandai dengan angka 0 pada gambar seperi di bawah Lalu hapus
program, kemudian masukkan sintax untuk menyalakan LED berjalan
seperti gambar di bawah Lalu pilih compile / assemble Kemudian akan
terlihat bahwa program untuk menyalakan LED secara berjalan yang
kita masukkan itu benar, yang di tandai dengan angka 0 pada gambar
seperi di bawah
b. Tugas 8 nomor1. Menyalakan 8 lampu led 2. Menyalakan 4 lampu
led3. Menyalakan 4 lampu led secara bergantian4. Menyalakan 8 led
secara bergantian5. Menyalakan 8 lampu led secara berurutan 6.
Menyalakan lampu led secara bergantian7. Led bar8. WiperMasukkan
program untuk menyalakan 8 LED pada lembar kerja basic compiler
Lalu pilih compile / assemble Kemudian akan terlihat bahwa
program untuk menyalakan 8 LED yang kita masukkan itu benar, yang
di tandai dengan angka 0 pada gambar seperi di bawah
Lalu hapus program sebelumnya tadi, kemudian masukkan program
untuk menyalakan 4 LED
Lalu pilih compile / assemble Kemudian akan terlihat bahwa
program untuk menyalakan 4 LED yang kita masukkan itu benar, yang
di tandai dengan angka 0 pada gambar seperi di bawah
Lalu masukkan program untuk menyalakan 4 LED secara
bergantian
Lalu pilih compile / assemble Kemudian akan terlihat bahwa
program untuk menyalakan 4 LED secara bergantian yang kita masukkan
itu benar, yang di tandai dengan angka 0 pada gambar seperi di
bawah
Lalu masukkan program untuk menyalakan 8 LED secara bergantian
Lalu pilih compile / assemble Kemudian akan terlihat bahwa program
untuk menyalakan 8 LED secara bergantian yang kita masukkan itu
benar, yang di tandai dengan angka 0 pada gambar seperti di
bawah
Kemudian masukkan program untuk menyalakan 8 LED secara
berurutan Lalu pilih compile / assemble
Kemudian akan terlihat bahwa program untuk menyalakan 8 LED
secara berurutan yang kita masukkan itu benar, yang di tandai
dengan angka 0 pada gambar seperi di bawah Kemudian masukkan
program untuk menyalakan lampu LED secara bergantian
Lalu pilih compile / assemble Kemudian akan terlihat bahwa
program untuk menyalakan lampu LED secara bergantian yang kita
masukkan itu benar, yang di tandai dengan angka 0 pada gambar
seperi di bawah
Selanjutnya masukkan program untuk menyalakan lampu LED bar Lalu
pilih compile / assemble
Kemudian akan terlihat bahwa program untuk menyalakan lampu LED
bar yang kita masukkan itu benar, yang di tandai dengan angka 0
pada gambar seperi di bawah Lalu masukkan program untuk menyalakan
lampu wiper Lalu pilih compile / assemble
Kemudian akan terlihat bahwa program untuk menyalakan lampu
wiper yang kita masukkan itu benar, yang di tandai dengan angka 0
pada gambar seperi di bawah
c. Tantangan1. Menyalakan 4 lampu LED2. Menyalakan 8 lampu LED
dengan intruksi 8 bit3. Menyalakan 8 lampu LED dengan instruksi set
dan resetMasukkan program untuk menyalakan 4 lampu LED
Lalu pilih compile / assemble
Kemudian akan terlihat bahwa program untuk menyalakan 4 lampu
LED yang kita masukkan itu benar, yang di tandai dengan angka 0
pada gambar seperi di bawah
Selanjutnya masukkan program untuk Menyalakan 8 lampu LED dengan
intruksi 8 bit Lalu pilih compile / assemble
Kemudian akan terlihat bahwa program untuk Menyalakan 8 lampu
LED dengan intruksi 8 bit yang kita masukkan itu benar, yang di
tandai dengan angka 0 pada gambar seperi di bawah Selanjutnya
masukkan program untuk menyalakan 8 lampu LED dengan instruksi set
dan reset Lalu pilih compile / assemble
Kemudian akan terlihat bahwa program untuk menyalakan 8 lampu
LED dengan instruksi set dan reset yang kita masukkan itu benar,
yang di tandai dengan angka 0 pada gambar seperi di bawah
E. Hasil Praktikum
1. Menyala lampu LED
2. Menyala Led berkedip
3. Menyala LED berjalan
4. Menyala lampu 8 buah
5. Menyala 4 buah lampu
6. Menyala 4 lampu bergantian
7. Menyala 8 Lampu Blink
8. Menyala lampu secara berurutan
9. Menyala lampu secara bergantian
10. Menyala lampu Bar
11. Menyala lampu Wifer
12. Menyala 4 buah lampu Led
13. Menyala 8 lampu LED dengan instruksi 8 bit
14. Menyala 8 lampu LED dengan instruksi set dan reset
F. AnalisisPercobaan 1: Pada percobaan ini, kita akan mencoba
menyalakan LED dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
program di akhiri dengan instruksi End
Percobaan 2 : pada percobaan ini, kita akan menyalakan lampu LED
berkedip dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
Instruksi DO dan LOOP digunakan untuk perulangan dan program di
akhiri dengan instruksi End.Percobaan 3 : pada percobaan ini, kita
akan menyalakan lampu LED berjalan dengan hal ini telah di
demonstrasikan pada program $regfile "m16def.dat" . Adapun LED yang
menunjukkan Output pada program ini berada pada PortB, yang pada
program ditulis Config PORTB. Sebagai penghitung waktu /
sinkronisasi waktu digunakan instruksi crystal 1000000, karena hal
ini di anggap lebih stabil untuk semua program dibandingkan dengan
instruksi waitms 100. Instruksi DO dan LOOP digunakan untuk
perulangan dan program di akhiri dengan instruksi End.
Percobaan 4 : Pada percobaan ini, kita akan mencoba menyalakan 8
buah LED dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
program di akhiri dengan instruksi End.
Percobaan 5 : Pada percobaan ini, kita akan mencoba menyalakan 4
buah LED dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
program di akhiri dengan instruksi End
Percobaan 6 : pada percobaan ini, kita akan menyalakan lampu 4
LED bergantian dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
Instruksi DO dan LOOP digunakan untuk perulangan dan program di
akhiri dengan instruksi End.
Percobaan 7 : pada percobaan ini, kita akan menyalakan 8 LED
blink dengan hal ini telah di demonstrasikan pada program $regfile
"m16def.dat" . Adapun LED yang menunjukkan Output pada program ini
berada pada PortB, yang pada program ditulis Config PORTB. Sebagai
penghitung waktu / sinkronisasi waktu digunakan instruksi crystal
1000000, karena hal ini di anggap lebih stabil untuk semua program
dibandingkan dengan instruksi waitms 100. Instruksi DO dan LOOP
digunakan untuk perulangan dan program di akhiri dengan instruksi
End.
Percobaan 8 : pada percobaan ini, kita akan menyalakan LED
secara berurutan dengan hal ini telah di demonstrasikan pada
program $regfile "m16def.dat" . Adapun LED yang menunjukkan Output
pada program ini berada pada PortB, yang pada program ditulis
Config PORTB. Sebagai penghitung waktu / sinkronisasi waktu
digunakan instruksi crystal 1000000, karena hal ini di anggap lebih
stabil untuk semua program dibandingkan dengan instruksi waitms
100. Instruksi DO dan LOOP digunakan untuk perulangan dan program
di akhiri dengan instruksi End.
Percobaan 9 : pada percobaan ini, kita akan menyalakan LED
secara bergantian dengan hal ini telah di demonstrasikan pada
program $regfile "m16def.dat" . Adapun LED yang menunjukkan Output
pada program ini berada pada PortB, yang pada program ditulis
Config PORTB. Sebagai penghitung waktu / sinkronisasi waktu
digunakan instruksi crystal 1000000, karena hal ini di anggap lebih
stabil untuk semua program dibandingkan dengan instruksi waitms
100. Instruksi DO dan LOOP digunakan untuk perulangan dan program
di akhiri dengan instruksi End.
Percobaan 10 : pada percobaan ini, kita akan menyalakan LED bar
dengan hal ini telah di demonstrasikan pada program $regfile
"m16def.dat" . Adapun LED yang menunjukkan Output pada program ini
berada pada PortB, yang pada program ditulis Config PORTB. Sebagai
penghitung waktu / sinkronisasi waktu digunakan instruksi crystal
1000000, karena hal ini di anggap lebih stabil untuk semua program
dibandingkan dengan instruksi waitms 100. Instruksi DO dan LOOP
digunakan untuk perulangan dan program di akhiri dengan instruksi
End.
Percobaan 11 : pada percobaan ini, kita akan menyalakan LED
wifer dengan hal ini telah di demonstrasikan pada program $regfile
"m16def.dat" . Adapun LED yang menunjukkan Output pada program ini
berada pada PortB, yang pada program ditulis Config PORTB. Sebagai
penghitung waktu / sinkronisasi waktu digunakan instruksi crystal
1000000, karena hal ini di anggap lebih stabil untuk semua program
dibandingkan dengan instruksi waitms 100. Instruksi DO dan LOOP
digunakan untuk perulangan dan program di akhiri dengan instruksi
End.
Percobaan 12 : Pada percobaan ini, kita akan mencoba menyalakan
4 buah LED dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
program di akhiri dengan instruksi End
Percobaan 13 : Pada percobaan ini, kita akan mencoba menyalakan
8 buah LED dengan hal ini telah di demonstrasikan pada program
$regfile "m16def.dat" . Adapun LED yang menunjukkan Output pada
program ini berada pada PortB, yang pada program ditulis Config
PORTB. Sebagai penghitung waktu / sinkronisasi waktu digunakan
instruksi crystal 1000000, karena hal ini di anggap lebih stabil
untuk semua program dibandingkan dengan instruksi waitms 100.
program di akhiri dengan instruksi End.
Percobaan 14 : pada percobaan ini, kita akan mencoba Menyala 8
LED dengan instruksi set dan reset dengan hal ini telah di
demonstrasikan pada program $regfile "m16def.dat" . Adapun LED yang
menunjukkan Output pada program ini berada pada PortB, yang pada
program ditulis Config PORTB. Sebagai penghitung waktu /
sinkronisasi waktu digunakan instruksi crystal 1000000, karena hal
ini di anggap lebih stabil untuk semua program dibandingkan dengan
instruksi waitms 100. Instruksi DO dan LOOP digunakan untuk
perulangan Intruksi SET digunakan untuk memberikan logika 1 pada
bit operand Intruksi RESET digunakan untuk memberikan logika 0 pada
bit operand. Program di akhiri dengan intruksi End.
G. Kesimpulan
LED adalah singkatan dari Light Emiting Dioda, merupakan kompnen
yang dapat mengeluarkan emisi cahaya. LED merupakan produk temuan
lain setelah dioda. Strukturnya juga sama dengan diode, tetapi
belakangan ini di temukan bahwa electron yang menerjang sambungan
P-N juga melepaskan energy panas dan energy cahaya. LED di buat
agar lebih efesien jika mengeluarkan cahaya. Untuk mendapatkan
emisi cahaya pada semi konduktor, doping yang di pakai adalah
gallium, arsenic dan phosphorus. Jenis doping yang berbeda
menghasilkan warna cahaya yang berbeda pula.AVR mempunyai bahasa
assembly tersendiri dan lain dengan MCS51. Hal ini terjadi karena
arsitektur dari keduanya berbeda. Pada bahasa assembly AVR untuk
menghidupkan LED pada port, port harus dikirim atau diberi logika
1. Dan untuk mematikan LED pada port, port harus di beri logika 0.
Pada mikrokontroler AVR bekerja dengan aktif hight, sedangkan MCS51
bekerja dengan aktif Low.4. Intruksi SET digunakan untuk memberikan
logika 1 pada bit operand5. Pada Intruksi RESET digunakan untuk
memberikan logika 0 pada bit operand6. Intruksi WAITMS di gunakan
untuk memberikan waktu tunda/delay dengan satuan mili second
38