Oleh :
Lukman Mubarak
021700013
Register Port
Setiap port dalam AT Mega8535 memiliki tiga buah register yang berkaitan yaitu :
1. Data Register (PORTx), digunakan untuk menulis data keluaran port.
2. Data Direction Register (DDRx), digunakan untuk menentukan pin port spesifik sebagai
output (bernilai 1) atau sebagai input (bernilai 0).
3. Input Pin Address (PINx) digunakan untuk membaca data input dari port.
Port mikrokontroler AVR dapat dikonfigurasi sebagai input atau output, dengan
cara mengubah isi I/O register DDRx. Bit-bit pada DDRx menentukan arah pin. Setiap pin
pada AVR juga memiliki internal pull-up, untuk mengaktifkannya dilakukan dengan
memberikan nilai 0xFF pada register PORTx. Untuk membaca data pada salah satu port,
dapat digunakan fungsi PINx, sedangkan membaca data per pin pada suatu port maka
ditentukan bit pin-nya yaitu PINx.bit. [1]
Pengenalan CV AVR
Code Vision AVR, selanjutnya disebut CVAVR adalah aplikasi pemrogram
Mikrokontroler AVR dengan bahasa C. Bahasa C merupakan standar bahasa pemrograman
yang cukup akrab di telinga para programmer. Bahasa C adalah bahasa pemrograman
komputer multi-fungsi yang dibuat pada tahun 1972 oleh Dennis Ritchie di Bell Telephone
Laboratories untuk digunakan dengan sistem operasi UNIX. Bahasa C merupakan bahasa
pemrograman yang Sangat populer sehingga sedikit sekali arsitektur komputer
tanpakompiler bahasa C didalamnya. Bahasa C telah mempengaruhi banyak bahasa
pemrogramanyang popular. Salah satunya C++, dimana bahasa tersebut adalah permulaan
dari pengembangan Bahasa C.
Struktur Bahasa C
Instruksi-instruksi bahasa pemrograman yang ada pada bahasa C tidak semuanya
digunakan dalam pemrograman mikrokontroler. Struktur dan urutan penulisan program
hampir sama untuk keduanya. Struktur bahasa C memiliki kepala program, dan tubuh
program, sedangkan tubuh program bisa terdiri dari induk program dan anak program.
Deklarasi sebuah variable dapat digolongkan menjadi dua, yaitu local variable dan
global variable. Local variable dipakai dan hanya dapat diakses pada sub program tempat
mendeklarasikannya, sedangkan global variable dipakai dan dapat diakses seluruh bagian
program. Inisialisasi PORT digunakan untuk memfungsikan PORT yang dituju sebagai
masukan/keluaran serta nilai defaultnya. Sedangkan bagian sub rutin adalah blok program
yang akan selalu dikerjakan terus-menerus oleh mikroprosesor selama mikrokontroler
hidup.
Beberapa Instruksi-instruksi dalam bahasa C yang sering digunakan dapat ditulis sebagai
berikut :
II. PELAKSANAAN
1. Hubungkan port PIO pada AVR ATMega dengan modul penampil led.
2. Hubungkan port PIO yang lain pada AVR ATMega dengan modul switch.
3. Buatlah program-program berikut, kemudian download kedalam chip AVR.
4. Ubahlah beberapa variable pada program dengan nilai yang bervariasi, kemudian amati
hasilnya dan simpulkan dalam pembahasan.
5. Buatlah program sesuai tugas yang diberikan pada saat praktikum.
III. HASIL PRAKTIKUM
3.1. Percobaan I, Variasi Input Dan Pengamatan Output Program.
Program
Kali ini pada percobaan kedua, praktikan mencoba untuk menggunakan 2 port
yaitu PORTA dan PORTD. Dimana PORTA dihubungkan ke switch 8-bit,
sedangkan PORTD tetap sebagai output yang dihubungkan ke LED. Seperti
sebelumnya, pada kepala program tetap diawali dengan inisialisasi dengan program
#include <mega8535.h>.
Pada tubuh program dilakukan inisialisasi PORTA sebagai input dengan
memasukkan data 0X00. Program PORTA=0XFF; digunakan untuk mengambil
nilai dari switch dan disalin sebagai keluaran pada port D (pull up).
Inisialisasi PORTD sebagai output dengan memasukkan data 0xFF. Program
PORTD=0XFF ; memberikan nilai awal high pada PORTD. Ketika switch bernilai
1 (pada kondisi awal) maka LED akan bernilai 0 atau mati. Sebaliknya, jika switch
ditekan (bernilai 0), maka LED akan bernilai 1 atau hidup.
Adapun seperti gambar 3.4. hasil percobaan setelah program dimasukkan ke
Modul AT Mega8535, didapatkan hasil bahwa setiap praktikan menekan switch,
maka LED akan hidup sesuai pada switch bit keberapa yang ditekan.
Gambar 3.5. Hasil program percobaan 2 (hanya LED yang switch-nya ditekan
saja yang menyala).
Gambar 3.7. Hasil program percobaan 3 (LED menyala berurutan dari bit ke-0
menuju bit ke -7 dan kembali mengulang).
3.4. Percobaan IV, Membuat Pergeseran Nyala Lampu LED Dengan Lompatan 2 bit
Program
Gambar 3.8. Program IV, Membuat Pergeseran Nyala Lampu LED dengan
Lompatan 2 bit
Untuk percobaan keempat kali ini praktikan menetapkan PORTD sebagai
output dengan nilai val = 1 dengan program val=1<<7; artinya output akhir (bit ke
7) diisi nilai=1, selain itu 0 pada kondisi awal. Sehingga data pada output dari bit
ke-7 sampai ke-0 ialah : 1000 0000. Selanjutya, data itu diinvers menjadi 0111
1111. LED akan nyala jika masukannya nol (0) karena Common Anoda sehingga
nantinya LED akan menyala dimulai dari bit ke-7 terlebih dahulu. Lalu, praktikan
mengatur arah pergeseran ‘n’ dengan pergeseram 2 bit ke kanan dengan perintah
val>>=n; (nilai bit menurun, 7-6-5,dst sampai bit ke-0). Program tersebut
dijalankan dengan delay waktu selama 200ms. Kemudian, setelah program tiba
pada bit ke-0, makan program otomatis mengeset bit ke-7 bernilai satu lagi.
Sehingga program tersebut berulang dari awal, dengan perintah val=1<<7;.
Didapatkan hasil urutan nyala led sebagai berikut (nyala LED dari bit ke-7
sampai bit ke-0):
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON ON ON
begitu seterusnya, program berulang-ulang dengan LED yang menyala hanya pada
bit ke-7, 5,3,dan 1 serta berurutan dari bit yang tinggi ke rendah.
Gambar 3.9. Hasil program percobaan 4 (LED menyala berurutan dari bit ke-7
menuju bit ke -0 dan kembali mengulang dengan lompatan 2 bit nyalanya).
Kemudian untuk PORTB 1 di sini akan menjalankan flip flop sebanyak 2 kali
pengulangan. Flip flop ini menyala secara serentak dan mati secara serentak juga.
Ketika PORTB 1 ditekan switchnya maka program akan berjalan dan PORTD
bernilai 0000 0000 maka LED akan menyala semua dan didelay selama 500 ms.
Jika mati port D akan bernilai 1111 1111.
No Desimal Biner
1 255 1111 1111
2 0 0000 0000
3 255 1111 1111
4 0 0000 0000
Hasil yang didapatkan ketika menekan switch bit-0 yang terhubung pada
PORTB 0 ialah nyala lampu LED yang berjalan dari kanan dan kiri kemudian
bertemu dititik tengah.
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON
Gambar 3.11. Hasil program percobaan 5 (pada saat PORTB 0 ditekan switch-
nya maka LED akan menyala dari masing-masing LED bit atas dan bit bawah lalu
menuju ke tengah sebelum akhirnya mati).
Sedangkan hasil yang didapat ketika menekan switch bit-2 yang terhubung
dengan PORTB 1 ialah nyala LED di semua bit (dari 0-7) serentak sebanyak 2x
loop.
LED bit 0 LED bit 1 LED bit 2 LED bit 3 LED bit 4 LED bit 5 LED bit 6 LED bit 7
ON ON ON ON ON ON ON ON
Gambar 3.12. Hasil program percobaan 5 (pada saat PORTB 1 ditekan switch-
nya maka LED akan menyala bersamaan dua kali).
IV. KESIMPULAN
Dari hasil beberapa percobaan pada Praktikum Mikrokontroller dan PLC “Paralel Input
Output (PIO)“ yang telah dilaksanakan dapat disimpulkan beberapa hal sebagai berikut :
1. Pada Modul AT Mega8535 memiliki 4 PORT (PORT A, PORT B, PORT C, PORT D)
yang sama sama dapat difungsikan sebagai input / output dengan memberi instruksi
0xFF (sebagai output) atau 0x00 (sebagai input).
2. Program C pada CVAVR minimal terdiri dari kepala program yang berisi inisialisasi
port I/O dan tubuh program yang berupa main program yang akan dieksekusi berurutan.
3. Main program yang dapat dijalankan pada program CVAVR diantaranya adalah :
program counter, program loop, delay time, dengan penggunaan program if, while,dll.
4. Dari penggunaan fungsi Paralel Input Output yang dipercobakan, praktikan telah
mampu membuat dan mensimulasikan program variasi input dan pengamatan output,
program penggunaan Switch pada Modul AT Mega8535, program pergeseran nyala
lampu LED, program pergeseran nyala lampu LED dengan lompatan 2 bit serta
program untuk membuat variasi nyala lampu LED flip-flop.
V. DAFTAR PUSTAKA
[1]Abidin, Zainal.2015. Modul Pengenalan Dasar Cvavr & Isis Proteus. Bangkalan
[2]Muhtadan. 2018. Modul1-PIO AVR cvavr. Yogyakarta :STTN-BATAN
[3]staffnew.uny.ac.id/upload/.../praktik-pemrograman-mikrokontroller-1-3.pdf. Panduan
01 Mikrokontroller : Pengenalan Bahasan C dan Software CVAVR.
Lukman Mubarak