PORT pada kaki miktokontroler dapat dijadikan sebagai input misalnya input berupa tombol. Saat tombol ditekan bisa menghasilkan suatu
1. rangkaian

catatan: rangkaian tidak digambarkan semua. seperti kaki VCC dan Ground pada IC mikrokontroler ATMega16 tidak digambarkan.
2. kode program
#include <io.h> void main(void) { PORTC=0xFF; DDRC=0xFF; PORTD=0xFF; DDRD=0x00; while (1) { // Please write your application code here if (PIND==0b11111110){PORTC=0xF0;} if (PIND==0b11111101){PORTC=0x0F;} if (PIND==0b11111100){PORTC=0xAA;} } }
3. pembahasan
PORTC=0xFF; DDRC=0xFF; PORTD=0xFF; DDRD=0x00;
PORTC dan DDRC diisi data 0xFF artinya dijadikan Output. PORTD dan DDRD diisi data 0x00 artinya dijadikan Input.
intinya bila
DDRA = 0xFF -> artinya dijadikan output
DDRB = 0xFF -> artinya dijadikan output
DDRC = 0xFF -> artinya dijadikan output
DDRD = 0xFF -> artinya dijadikan output
DDRA = 0x00 -> artinya dijadikan input
DDRB = 0x00 -> artinya dijadikan input
DDRC = 0x00 -> artinya dijadikan input
DDRD = 0x00 -> artinya dijadikan input
if (PIND==0b11111110){PORTC=0xF0;} if (PIND==0b11111101){PORTC=0x0F;} if (PIND==0b11111100){PORTC=0xAA;}
Perintah yang digunakan digunakan adalah PIND (PIND digunakan karena tombol berada di PORTD jika tombol berada pada PORT lain semisal PORTB maka perintahnya menjadi PINB). perintah PIND==0b11111110 adalah bagian mengecek apakah tobol pada kaki PORTD.0 dipencet. Jika PIND sama dengan 0b11111110 akan memerintahkan PORTC menyalakan LED sesuai data 0xF0(11110000).
Mikrokontroler tidak terbatas bisa mengenali sebuah tombol saja jika dipencet. Pada perintah PIND==0b11111100 menunjukkan tombol bisa dipencet secara kombinasi. Pada kode program ini mencontohkan bila tombol pada PORTD.0 dan PORTD.1 di pencet menghasilkan LED menyala dengan data 0xAA (10101010).