Pertama kali saya mempelajari mikrokontroler adalah bagaimana supaya saya dapat mengakses PIN I/O mikrokontroler. Mengakses PIN I/O mikrokontroler adalah pengetahuan dasar bagi para pengguna mikrokontroler, sehingga pengguna dapat menggunakan mikrokontroler sesuai dengan apa yang si user kehendaki. Misalnya untuk menyalakan LED, mengaktifkan relay, membuat sakelar elektris menggunakan transistor dan lainnya.
Mikrokontroler ATMEL Atmega memiliki tiga komponen penting yang digunakan untuk mengkonfigurasi PIN I/O yaitu DDRx, PORTx dan PINx.
DDRx berfungsi untuk menentukan apakah PINx berfungsi sebagai output atau berfungsi sebagai input. Jika DDRx di set high maka PINx berfungsi sebagai output dan jika DDRx di set low maka PINx berfungsi sebagai input. Berikut ini penjelasannya:
Konfigurasi seluruh PINx
Konfigurasi seluruh PINx
Perlu di ketahui bahwa jika kita deklarasikan PINx artinya seluruh PINx dari 0 sampai 7. Misalnya kita ingin mengkonfigurasi PINA sebagai output, maka DDRA di set high yaitu deklarasinya adalah DDRA=0xFF;(hex) atau DDRA=0b11111111;(biner) atau DDRA=255;(desimal) artinya semua PINA dari 0 sampai 7 berfungsi sebagai output. Jika PINA ingin berfungsi sebagai input maka DDRA di set low, deklarasinya adalah DDRA=0x00;(hex) atau DDRA=0b00000000;(biner) atau DDRA=0;(desimal).
Konfigurasi salah satu PINx
Konfigurasi salah satu PINx
Misalnya kita ingin menjadikan PINA ke 0 sebagai output maka DDRA ke 0 di set high, deklarasinya DDRA.0=1; . jika kita ingin menjadikan PINA ke 0 sebagai input maka DDRA ke 0 di set low, deklarasinya DDRA.0=0;. Rumusnya PINx.n , DDRx.n huruf x mewakili nama PIN atau DDR jika kita menggunakan Atmega 16 ada PINA,PINB,PINC dan PIND begitu pula DDR nya. Sedangkan huruf n mewakili urutan PIN atau DDR dari 0-7.
PORTx berfungsi untuk menentukan apakah PINx berfungsi sebagai output high atau low, atau berfungsi sebagai input dengan kondisi tristate atau di pull up. Berikut ini penjelasannya:
Konfigurasi seluruh PINx
Konfigurasi seluruh PINx
Jika PINB ingin dijadikan sebagai output high, maka DDRB di set high dan PORTB di set high, deklarasinya DDRB=0xFF;PORTB=0xFF; jika ingin berfungsi sebagai output low, maka DDRB di set high dan PORTB di set low, deklarasinya DDRB=0xFF;PORTB=0x00; itu konfigurasi untuk PIN sebagai output, jika ingin berfungsi sebagai input maka DDRB nya di set low DDRB=0x00; jika PINB di inginkan sebagai input dengan kondisi pull up maka PORTB di set high, deklarasinya PORTB=0xFF; dan jika PINB di inginkan sebagai input dengan kondisi tri state maka PORTB di set low, deklarasinya PORTB=0x00;
Konfigurasi salah satu PINx
Konfigurasi salah satu PINx
Jika ingin PINC ke 0 sebagai output high, maka deklarasinya DDRC.0=1;PORTC.0=1; dan jika PINC ke 0 sebagai output low, maka deklarasinya DDRC.0=1;PORTC.0; jika ingin PINC ke 0 sebagai input dengan kondisi tri state maka deklarasinya DDRC.0=0;PORTC.0=0; dan jika PINC ke 0 sebagai input dengan kondisi pull up maka deklarasinya DDRC.0=0;PORTC.0=1;
Nah supaya lebih mudah di pahami saya buatkan tabelnya
DDRx
|
PORTx
|
Kondisi PINx
|
high
|
high
|
Output High
|
high
|
low
|
Output low
|
low
|
high
|
Input (pull up)
|
low
|
low
|
Input (Tri state)
|
Semoga bermanfaat…
note: deklarasi program yang saya buat adalah dalam bahasa C dengan menggunakan CodeVision
note: deklarasi program yang saya buat adalah dalam bahasa C dengan menggunakan CodeVision
Tidak ada komentar:
Posting Komentar