mikrokontroler io tombol dan led
DESCRIPTION
micro atmega8535 (copyright kardono)TRANSCRIPT
micro club dte
Sistem minimum Mikrokontroler Atmega8535/16/32
Mikrokontroler adalah suatu keping IC dimana terdapat mikroprosesor dan memori program
(ROM) serta memori serbaguna (RAM), bahkan ada beberapa jenis mikrokontroler yang memiliki
fasilitas ADC, PLL, EEPROM dalam satu kemasan. Penggunaan mikrokontroler dalam bidang kontrol
sangat luas dan populer. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk
mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa
disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan
komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya
terpusat serta dikendalikan oleh mikrokontroler ini.
Secara teknis hanya ada 2 jenis mikrokontroler yaitu RISC dan CISC dan masing-masing
mempunyai keturunan/keluarga sendiri-sendiri. RISC kependekan dari Reduced Instruction Set
Computer : instruksi terbatas tapi memiliki fasilitas yang lebih banyak. CISC kependekan dari Complex
Instruction Set Computer : instruksi bisa dikatakan lebih lengkap tapi dengan fasilitas secukupnya.
Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond,
Atmel, Philips, Xemics dan lain - lain. Dari beberapa vendor tersebut, yang paling populer digunakan
adalah mikrokontroler buatan Atmel.
Mikrokontroler AVR (Alf and Vegard’s Risc prosesor) memiliki arsitektur RISC 8 bit, di mana
semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam
1 (satu) siklus clock, berbeda dengan instruksi MCS 51 yang membutuhkan 12 siklus clock. Tentu saja itu
terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda. AVR berteknologi
micro club dte
RISC (Reduced Instruction Set Computing), sedangkan seri MCS 51 berteknologi CISC (Complex
Instruction Set Computing).
Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga
AT90Sxx, keluarga ATMega dan AT86RFxx. Pada dasarnya yang membedakan masing–masing kelas
adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa
dikatakan hampir sama. Oleh karena itu, dipergunakan salah satu AVR produk Atmel, yaitu
ATMega8535/16/32.
Konfigurasi Pin ATMega8535
Gambar: Pin-pin atmega8535
Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai
berikut:
1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.
2. GND merupakan pin ground.
3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC.
4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Timer/Counter,komparator analog,dan SPI.
5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,komparator
analog dan Timer Oscillator.
6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komparator
analog,interupsi eksternal,dan komunikasi serial.
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal.
9. AVCC merupakan pin masukan tegangan untuk ADC.
10. AREF merupakan pin masukan tegangan referensi ADC.
Untuk memprogram mikrokontroler dapat menggunakan bahasa assembler atau bahasa tingkat tinggi
yaitu bahasa C.
micro club dte
Port Sebagai Input / Output Digital
Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bi-directional dengan pilihan internal pull-up.
Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ mewakili
nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx.
Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1, maka
Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn
diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk
mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port
adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 0.
Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high
(DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0,
PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat
diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah
strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register
SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input
dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Maka harus menggunakan
kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.
Tabel Konfigurasi Pin Port
Tabel diatas menunjukkan konfigurasi pin pada port-port mikrokontroler. Bit 2 – PUD = Pull-up Disable,
bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn
dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
micro club dte
Codevision AVR
Pemrograman mikrokontroler AVR lebih mudah dilakukan dengan bahasa pemrograman C, salah
satu software pemrograman AVR mikrokontroler adalah Codevision AVR C Compiler. Dengan C AVR
program yang telah di tulis selanjutnya di-compile agar diperoleh bentuk hexadesimal dengan bentuk file
*.hex. bentuk hexa inilah yang akan dapat di download ke mikrokontroller.
Memulai project dengan C AVR
File > New > Pilih Project > OK
Use codeWizardAVR? >NO<
Kemudian simpan project. Dan muncul jendela berikut
Langkah selanjutnya yaitu, membuat file tempat penulisan source code yang ber ektensi .c. yaitu, pilih
File > New > Pilih Source > OK.
Pada colom C compiler, di bagian chip pilih mikrokontroller yang digunakan (Atmega8535) berikut juga crystal nya(12 Mhz). OK
micro club dte
Kemudian, ketikkan dulu satu atau beberapa baris listing program, kemudian simpan [ File > Save ], dengan ekstensi .c.
Langkah selanjutnya adalah meng-include file source code listing program tadi kedalam project yang kita
buat, caranya adalah.. Pilih Project > Configure
Kemudian pilih > “Add” > masukkkan/ open file ber-ekstensi .c yang tadi di save.
Menggunakan Simulator Proteus
Proteus ISIS, dapat digunakan untuk mensimulasikan program yang telah dibikin.
Tampilan awal proteus 7.6
Rangkai seperti gambar berikut. Ambil komponen, untuk mikro pilih AT90S8535 (sama dengan
atmega8535), led pilih yang aktive (warna terserah), resistor MINRES470R, dan tombol dengan button
(pilih yang aktif).
Memanggil komponen
Start/stop simulation
micro club dte
Menyalakan Lampu di PORT C
Pada gambar Sistem minimum Mikrokontroler Atmega8535/16/32 diatas, PORTC dihubungkan denga
8buah led, dimana 8led tersebut terhubung common anoda (anoda bersama), sehingga saat diberikan logika
0 pada port C maka akan mendapatkan led menyala. Hal ini dikarenakan adanya beda potensial pada kaki anoda
dan katoda. Saat kita memberikan logika 1, maka Led akan padam.
Contoh Programnya:
1. Program Menghidupkan LED di PORTC
//Prog1: Menghidupkan LED di PortC
#include<mega8535.h>
void main(void)
{
DDRC=0xff; // inisialisasi PORTC sebagi keluaran
PORTC=0xF0; // keluarkan data F0 di PORT C (cat:F0=11110000)
}
Untuk sumber tegangan, pilih dc
Untuk mengubah value tengan dc, klik kanan edit properties
Properties AT90S8535
Ubah clock frequency sesuai pada compiler CAVR, dan pada Program file masukkan /cari file .hex hasil compile program yang dibuat
micro club dte
2. Program Menghidupkan LED
//Prog2: Menghidupkan LED1,3,5,7
#include<mega8535.h>
void main(void)
{
DDRC=0xff; // inisialisasi PORTC sebagi keluaran
PORTC=0xAA; // keluarkan data AA(hex) ke PORTC cat: AA=10101010
}
3. Program LED Berkedip (memakai delay)
//Prog3: LED berkedip pada Port C
#include<mega8535.h>
#include<delay.h>
void main(void)
{
DDRC=0xff; // inisialisasi PORTC sebagi keluaran
while(1) // perulangan yang tidak pernah terpenuhi
{
PORTC=0x00;
delay_ms(1000);
PORTC=0xff;
delay_ms(1000);
}
}
4. Program LED Berjalan
//prog4: LED berjalan
#include<mega8535.h>
#include<delay.h>
void main(void)
{
char urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char i;
DDRC=0xff;
PORTC=0Xff;
while(1)
{
for(i=0;i<8;i++)
{
micro club dte
PORTC=urutan[i];
delay_ms(500);
}
}
}
Penjelasan :
#include<mega8535.h> : Inisialisasi Mikrokontroller yang dipakai, memanggil library
( mempersiapkan perintah2 yang dapat digunakan saat menggunakan mikrokontroler
Atmega8535).
#include<delay.h> : memanggil library delay, dimana terdapat fungsi2 delay/tunda yang
dapat kita gunakan, seperti delay_ms(“konstanta”) =tunda untuk milisecond,
delay_us(“konstanta”) =tunda untuk microsecond.
DDRn : Menyiapkan PORTn sebagai Keluaran (0xff) atau masukan (0x00)
PORTn : Keluarkan data di PORTn
n : mewakili A,B,C,dan D (PORT)
Karena common Annoda maka pada saat logika “0”, lampu LED akan menyala. Untuk
penggunaan biner, maka penulisannya adalah 0b10101010. Untuk penggunaan Hexa, maka penulisannya
adalah 0xaa.
PENEKANAN TOMBOL
Port-port mikrokontroler dilengkapi pull up internal, sehingga kondisi default-nya adalah high.
Untuk menjadikan Port ini sebagai input, kita tinggal memberikan logika high atau membiarkannya
dalam kondisi default. Jika kita menginginkan sebuah masukan terbaca kita sebaiknya menggunakan
masukan berupa sinyal Low. Prinsip kerja Hardware ,saat kita menekan tombol SW maka signal reendah
akan dikrim ke PORTA pada mikrokontroler, Dengan demikian port ini akan mempunyai logika sesuai
dengan penekanan tombol . Kemudian akan memicu PORTC unruk mengeluarkan data.( Tergantung
Programnya bagaimana)
Contoh Programnya:
1. Penekanan Tombol di PORTA
#include<mega8535.h>
void main(void)
{
DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
DDRC=PORTA=PORTC=0xff;
while(1)
{ PORTC=PINA;
micro club dte
};
}
2. Penekanan Tombol di PORTA 2
#include<mega8535.h>
void main(void)
{
DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
DDRC=PORTA=PORTC=0xff;
while(1)
{
if (PINA.0==0) {PORTC=0x5f;}
else if
(PINA.1==0) {PORTC=0xAf;}
else if
(PINA.2==0) {PORTC=0x9f;}
else if
(PINA.3==0) {PORTC=0x6f;}
else
{PORTC=0x0f};
}
}
Penjelasan:
DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
DDRC=PORTB=PORTC=0xff; : PORTC sebagai keluaran. Data di PORTC dan
PORTB adalah tinggi semua ( 0xff ). Biner: (11111111).
PINB.0 : Kita bisa mengakses langsung ke PIN PORTB nomor 0 ( catatan: PIN
dan PORT berbeda. PIN untuk satu saja kalau PORT untuk keseluruhan PIN. Satu PORT
ada 8 PIN )
While (1) : Dipakai karena agar program mengulang kembali instruksi yang berada di
bawahnya. Ciri perulangan while adalah dia akan terus melakukan perulangan karena
tidaka akan terpenuhi.
Inti penekanan Tombol adalah Membuat sebuah PORT menjadi masukan. Dan aksinya tentunya akan dilakukan di
PORT yang diset sebagai keluaran.
>>>>>>>>>>>>>>>
Tugas, buatlah program led berjalan dengan penekanan tombol, jika PINA.0 ditekan akan berjalan kekanan, jika PINA.1 ditekan akan berjalan kekiri, jika PINA.2 ditekan akan berkedip-kedip, jika tidak di tekan kondisi led mati.
Tugas dirumah, cari artikel dan pelajari mengenai tipe data dan instruksi dalam CAVR