MIKROTRAINER MCS51 SEBAGAI PEMBELAJARAN MIKROKONTROLLER Pribadi Mumpuni Adhi, M. Fauzi Sahdan, Randy Menander, Panji Achmari, Almas Hilman Muhtadi, Zamzam Ibnu Sina, Woen Welly 10208069, 10208004, 10208021, 10208040, 10208068, 10208098, 10208060 Program Studi Fisika, Institut Teknologi Bandung, Indonesia Email : [email protected]Asisten : (M. Ruqy Faishal Islamy/10207056) Tanggal Praktikum : (03-04-2011) Abstrak Mikrokontroler merupakan suatu system embedded yang memiliki prosesor, memori(RAM dan ROM), serta unit penunjang lainnya. Mikrokontroler biasa digunakan sebagai pengatur system kerja dalam perangkat elektronik. Dalam pemrograman dengan mikrokontroler biasanya digunakan bahasa assembly atau bahasa yang lebih tinggi seperti bahasa C. Kemudian dari bahasa assembly atau bahasa C decompile menjadi bahasa mesin yang dapat dimengerti oleh mikrokontroler dalam bahasa hexa. Karena merupakan system embedded mikrokontroler mampu menjalankan proses analog to digital converter(ADC) secara mandiri. Resolusi dari ADC bergantung pada jumlah bit pada mikrokontroler yang digunakan. Pada praktikum ini dilakukan variasi pemrograman dengan bahasa C yang outputnya berupa LED yang menyala. Selanjutnya dilakukan percobaan ADC untuk tegangan analog untuk melihat fungsi transfer dari ADC. Kata Kunci : ADC, LED, Mikrokontroler I. Pendahuluan Pada praktikum menggunakan KIT mikrotrainer MCS51 sebagai pembelajaran mikrokontroler memiliki tujuan : a. Mengenalkan Mikrotrainer MCS-51 sebagai alat bantu pembelajaran mikrokontroler keluarga MCS-51 b. Mampu membuat program sederhana pada mikrokontroler At89s52 untuk menjalankan modul-modul yang terdapat pada mikrotrainer MCS-51 c. Memahami prinsip kerja mikrotrainer MCS-51 d. Memahami konsep akuisisi data pada mikrotrainer MCS-51. Mikrokontroler banyak digunakan sebagai pengatur utama sistem kerja berbagai perangkat elektronik. Tedapat tiga keluarga mikrokontroler yang dikenal saat ini, yaitu keluarga AVR, PIC, dan MCS-51. Perbedaan ketiganya terletak pada arsitektur dan fitur-fitur Mikrokontroler yang digunakan dalam kit MCS-51 Microtrainer adalah AT89S52 yang dibuat oleh Atmel. Ia termasuk dalam keluarga 8051 yang dikembangkan awalnya oleh Intel, namun selanjutnya beberapa perusahaan lain juga memproduksi keluarga mikrokontroler 8 bit ini. Gambar 1. Pin dan Port pada AT89S52 [1] Mikrokontroler AT89S52 memiliki 32 pin untuk port, yang berfungsi sebagai jalur masukan dan
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
MIKROTRAINER MCS51 SEBAGAI PEMBELAJARAN MIKROKONTROLLER
Pribadi Mumpuni Adhi, M. Fauzi Sahdan, Randy Menander, Panji Achmari, Almas Hilman Muhtadi,
Program Studi Fisika, Institut Teknologi Bandung, Indonesia Email : [email protected]
Asisten : (M. Ruqy Faishal Islamy/10207056)
Tanggal Praktikum : (03-04-2011)
Abstrak Mikrokontroler merupakan suatu system embedded yang memiliki prosesor, memori(RAM dan ROM), serta unit penunjang lainnya. Mikrokontroler biasa digunakan sebagai pengatur system kerja dalam perangkat elektronik. Dalam pemrograman dengan mikrokontroler biasanya digunakan bahasa assembly atau bahasa yang lebih tinggi seperti bahasa C. Kemudian dari bahasa assembly atau bahasa C decompile menjadi bahasa mesin yang dapat dimengerti oleh mikrokontroler dalam bahasa hexa. Karena merupakan system embedded mikrokontroler mampu menjalankan proses analog to digital converter(ADC) secara mandiri. Resolusi dari ADC bergantung pada jumlah bit pada mikrokontroler yang digunakan. Pada praktikum ini dilakukan variasi pemrograman dengan bahasa C yang outputnya berupa LED yang menyala. Selanjutnya dilakukan percobaan ADC untuk tegangan analog untuk melihat fungsi transfer dari ADC. Kata Kunci : ADC, LED, Mikrokontroler I. Pendahuluan
Pada praktikum menggunakan KIT mikrotrainer MCS51 sebagai pembelajaran mikrokontroler memiliki tujuan :
a. Mengenalkan Mikrotrainer MCS-51 sebagai
alat bantu pembelajaran mikrokontroler
keluarga MCS-51
b. Mampu membuat program sederhana pada
mikrokontroler At89s52 untuk menjalankan
modul-modul yang terdapat pada
mikrotrainer MCS-51
c. Memahami prinsip kerja mikrotrainer MCS-51
d. Memahami konsep akuisisi data pada
mikrotrainer MCS-51.
Mikrokontroler banyak digunakan sebagai pengatur utama sistem kerja berbagai perangkat elektronik. Tedapat tiga keluarga mikrokontroler yang dikenal saat ini, yaitu keluarga AVR, PIC, dan MCS-51. Perbedaan ketiganya terletak pada arsitektur dan fitur-fitur Mikrokontroler yang digunakan dalam kit MCS-51 Microtrainer adalah AT89S52 yang dibuat oleh Atmel. Ia termasuk dalam keluarga 8051 yang dikembangkan awalnya oleh Intel, namun selanjutnya beberapa perusahaan lain
juga memproduksi keluarga mikrokontroler 8 bit ini.
Gambar 1. Pin dan Port pada AT89S52[1]
Mikrokontroler AT89S52 memiliki 32 pin untuk
port, yang berfungsi sebagai jalur masukan dan
keluaran atau bagian dari sistem pengalamatan dan jalur data. Pin-pin pada port 0 bersifat open drain, jadi jika diberi logika 0 (low), pin menghasilkan keadaan low. Jika diberi logika 1 (high), pin bersifat mengambang dan bisa berfungsi sebagai masukan. Port 1,2, dan 3 bisa menghasilkan keadaan high dan
low dengan kemampuan arus sekitar 2 mA.
Port 0
Biasa digunakan untuk jalur masukan dan keluaran (I/O) umum.Selain itu, port 0 juga bisa digunakan sebagai jalur alamat dan data untuk memori luar. Dalam rangkaian pada kit, port 0 terhubung dengan sebuah DIP switch, keypad, dan Analog to Digital
Converter (ADC).
Port 1
Biasa digunakan untuk berhubungan dengan perangkat lain. Dalam kit, 3 bit milik port 1 digunakan untuk memilih 1 dari 7 pilihan masukan
untuk ADC.
Port 2
Bisa digunakan untuk jalur I/O umum, atau sebagai jalur alamat untuk memori luar. Dalam kit, port 2 bisa dihubungkan dengan 8 buah LED, 4 tampilan seven segment (“angka delapan”), atau tampilan
LCD.
Port 3
Bisa digunakan sebagai jalur I/O umum, dan memiliki fungsi-fungsi tambahan yang terdapat dalam Tabel 1.1. Beberapa pin milik port 3 juga bisa dihubungkan dengan sinyal kontrol ADC
PSEN (Program Store Enable)
Pin ini mengirim sinyal yang mengatur penulisan memori luar. Biasanya pin ini terhubung dengan pin OE (Output Enable) pada EPROM, yang mengatur
pembacaan data.
ALE (Address Latch Enable)
Pin ini digunakan sebagai jalur demultiplexing alamat dan data. Ketika port 0 digunakan sebagai jalur data dan byte rendah jalur alamat, sinyal ALE mengunci alamat selama setengah siklus dan data pada setengah siklus berikutnya.Pulsa ALE memiliki
kecepatan 1/6 dari osilator mikrokontroler.
EA (External Access)
Jika keadaan pin ini high, mikrokontroler sedang menjalankan program dari ROM dalam. Jika keadaan pin ini low, program yang dijalankan
berasal dari memori luar.
RST (Reset)
Jika pin ini diberi sinyal high, mikrokontroler akan memulai program dari awal dan mengisi semua
register dengan nilai awal.
Program dalam mikrokontroler disimpan dalam
ROM. Program ditulis di komputer dalam bahasa
assembly atau C, kemudian dilakukan compile untuk
mendapatkan file dalam bahasa mesin yang berisi
angka-angka heksadesimal. File ini, yang memiliki
nama dengan extension .HEX, dikirim ke dalam
mikrokontroler dengan programmer.
Saat ini telah tersedia mikrokontroler yang dapat
diprogram tanpa menggunakan EEPROM
programmer, yaitu dengan metode ISP (In System
Programming).Dengan ini mikrokontroler dapat
diprogram hanya dengan menghubungkan pin-pin
tertentu ke komputer. Selanjutnya, dengan
software tertentu, file .HEX dapat langsung diisikan
ke mikrokontroler yang terpasang pada kit. Untuk
mengisi program pada kit MCS-51 Microtrainer
diperlukan software AEC_ISP dan kabel paralel yang
dihubungkan ke port parallel komputer.
ADC adalah suatu komponen yang berfungsi
sebagai akuisisi data yaitumengambil isyarat analog
untuk diubah menjadi isyarat digital. Resolusi
darisebuah ADC dapat dinyatakan sebagai jumlah
bit (binary digit) yang digunakan untuk tiap-tiap
nilai dari signal analog. Sebuah ADC n bit, mampu
menyatakan 2n nilai yang berbeda dari suatu signal
analog. Semakin banyak jumlah bit, proses konversi
data menjadi semakin akurat karena nilai dari
isyaratanalog yang dinyatakan dalam bilangan biner
menjadi semakin banyak.
Resolusi ADC selalu dinyatakan sebagai jumlah
bit-bit dalam kode keluaran digitalnya. Misalnya,
ADC dengan resolusi n-bit memiliki 2n kode digital
yang mungkin dan berarti juga memiliki 2n tingkat
undak (step level). Meskipun demikian, karena
undak pertama dan undak terakhir hanya setengah
dari lebar penuh, maka rentang/tegangan skala-
penuh (FSR, full-scale range) dibagi dalam(2n-1)
lebar undak. Sehingga resolusi untuk ADC
dinyatakan dalam 1LSB atau Least Significant Bit
adalah :
Resolusi =
(1)
Secara teoretis, fungsi transfer ideal untuk
konverter analog ke digital (ADC, analog to digital
converter) berbentuk garis lurus. Bentuk ideal garis
lurus hanya dapat dicapai dengan konverter data
beresolusi tak-hingga. Karena tidak mungkin
mendapatkan resolusi tak hingga, maka secara
praktis fungsi tranfer ideal tersebut berbentuk
gelombang tangga seragam seperti terlihat pada
gambar di bawah ini:
Gambar 2. Fungsi Transfer ADC
II. Metode Percobaan
Metode praktikum kali ini adalah :
1. Hubungkan PC/komputer dengan kit Mikrotrainer MCS51.
2. Nyalakan kit Mikrotrainer MCS51. 3. Untuk percobaan dengan LED, pastikan LED
tersambung dengan port 2 kit MCS51. 4. Buka modul program yang akan diuji, lalu
compile modul yang ditulis dalam bahasa C tersebut sehingga dihasilkan sebuah file dengan extension .hex.
5. Buka program AEC_ISP.exe, reset mikrokontroler, lakukan download program ke mikrokontroler lalu reset kembali program. Maka LED akan menyala sesuai dengan program yang dijalankan.
6. Untuk percobaan ADC, gunakan 7 segment dan LCD sebagai keluaran di port 2, lalu buka kembali program AEC_ISP.exe lakukan hal yang sama.
III. Data dan Pengolahan
Percobaan ADC :
Analog (v) Digital
0 0
0.455 25
0.907 50
1.37 75
1.827 100
2.274 125
2.736 150
3.192 175
3.66 200
4.11 225
4.77 255 Tabel 1. Data Tegangan Analog dan Digital
Apabila diplot ke dalam satu grafik maka akan
didapatkan :
Gambar 3. Grafik Transfer Analog to Digital
Converter Menggunakan persamaan (1) maka didapatkan
resolusi dari ADC 0,0188 Volt
Percobaan dengan LED : Diketahui source code dari program ledjalan2 #include<reg52.h>
void main()
{
unsigned char a;
unsigned int c;
a=0;
while(1) {
if(a==0) a=1;
else a = a << 1;
P2 = a ^ 0xff;
for(c=0;c<10000;c++); }
}
Kemudian untuk program yang dapat membuat LED berkedip apabila PUSH BUTTON mempunyai nilai 10101010, LED bergeser ke kanan apabila PUSH BUTTON mempunyai nilai 01010101, dan LED akan bergeser ke kiri apabila PUSH BUTTON mempunyai nilai 00110011 maka didapatkan source
code sebagai berikut :
#include<reg52.h>
void tunggu (int z)
{
int k;
for(k=0;k<z;k++)
{
int i;
for(i=0;i<=150;i++);
}
}
void main ()
{
unsigned char a;
unsigned int i;
a = P3;
if (a == 0x55) { //kedip2
P2 = 0x00;
tunggu (5000);
P2 = 0xff;
tunggu (5000);
}
else if (a == 0xaa) { //geser kanan
a=0x7f;
for(i=0;i<8;i++)
{
a=((a << 1 ) | ( a>>7 ) );
P2=a;
tunggu(5000);
}
}
else if (a == 0xcc) { //geser kiri
a=0xfe;
for(i=0;i<8;i++)
{
a=((a >> 1 ) | ( a<< 7 ) );
P2=a;
tunggu(5000);
}
}
else a=0xff;
}
IV. Analisis Pada program ledjalan2 pertama-tama
dinisialisasi variabel a dengan nilai desimal 0 atau apabila dibuat dalam bentuk biner adalah 00000000. Kemudian masuk ke dalam blok while yang akan membuat program akan diulang terus apabila kondisinya benar. Selanjutnya terdapat blok percabangan if yang membandingkan nilai jika a = 0 maka nilai a akan berubah menjadi desimal 1 atau dalam bentuk biner adalah 00000001.
Kemudian nilai variabel a diamasukkan ke dalam output pada port P2 yang terhubung dengan LED. Karena LED memiliki karakteristik active low maka dilakukan operasi XOR dengan bilangan hexa 0xff atau dalam biner 11111111, sehingga keluaran dari P2 adalah nilai biner 11111110 atau dalam artian LED pada P2.0 akan menyala.
Sekarang nilai a bernilai 00000001 yang berarti tidak sama dengan 0 lagi. Maka program akan masuk ke dalam baris else yang di dalamnya nilai a
digeser sebanyak satu bit ke kiri, sehingga nilai a sekarang menjadi 00000010. Selanjutnya kembali operasi XOR dengan 0xff dilakukan sehingga didapatkan nilai 11111101 yang kemudian dikeluarkan ke P2 sehingga LED pada P2.1 akan menyala. Begitu seterusnya sehingga secara bergantian LED akan berpidah-pindah mulai dari P2.0 sampai P2.7 kemudian akan kembali lagi ke P2.0 dan bergerak ke P2.7 sampai alat dimatikan atau simulasi dihentikan.
Terdapat perbedaan antara menggunakan alat pada Mikrtotrainer MCS51 secara langsung dengan simulasi menggunakan software Topview Simulator. Bila menggunakan alat secara langsung maka LED akan bergerak dari kanan ke kiri, tetapi dalam simulasi software LED bergerak dari kiri ke kanan. Hal ini disebabkan perbedaan port P2. Apabila menggunakan mikro secara langsung port P2.0 berada di paling kanan, sedangkan port P2.7 berada di paling kiri. Tetapi pada software simulasi posisi portnya terbalik. Untuk lebih jelas dapat dilihat pada ilustrasi di bawah ini:
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
0 1 1 1 1 1 1 1 Tabel 2 . Ilustrasi Pergerakan Lampu LED yang
Menyala pada Kit Mikrokontrainer
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0 Tabel 3. Ilustrasi Pergerakan Lampu LED yang
Menyala pada Software Topview Simulator
Angka nol (0) pada tabel menunjukkan posisi ketika lampu LED menyala. Berikut ini merupakan flowchart dari program ledjalan2.
Gambar 4 . Flowchart Program ledjalan2
Apabila program ledjalan2 dimodifikasi dengan
mengubah operasi XOR menjadi operasi AND atau OR maka akan didapatkan hasil yang berbeda. Pertama apabila operasi XOR diganti dengan AND. Hasil output pada P2 akan menjadi 00000001 atau dalam kata lain selain port P2.0 akan menyala sedangkan P2.0 sendiri akan mati. Sehingga apabila diteruskan akan terjadi pergeseran lampu LED yang mati dari P2.0 ke P2.7 dan seterusnya.
Yang kedua, apabila operasi XOR diganti dengan OR maka output pada P2 akan menjadi 11111111 atau lampu LED akan mati semua. Apabila diteruskan maka lampu led tidak akan pernah menyala karena output keluaran pada P2 selalu bernilai 1 atau high sedangkan untuk LED dia butuh nilai low atau nol (0) agar bisa menyala. Berikut ini ilutrasi apabila program diganti dengan AND atau OR.
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 Tabel 4. Ilustrasi Pergerakan Lampu LED Apabila
Tabel 5. Ilustrasi Pergerakan Lampu LED Apabila Diganti dengan OR
Pada program yang kedua dimana kita dapat
memilih keluaran pada LED bila PUSH BUTTON kita atur inputnya penjelasannya sebagai berikut. Pertama PUSH BUTTON kita deklarasikan sebagai port 3 atau P3. Nilai P3 ini diisi dengan variabel a. Apabila variabel a kita ubah nilainya maka program akan mengecek ke bagian kondisional if. Bila masukkan pada PUSH BUTTON adalah 0x55 atau dalam biner adalah 01010101 maka yang dibaca pada PUSH BUTTON software simulasi adalah 10101010. Karena seperti yang sudah dijelaskan sebelumnya bahwa pada software simulator port P3.0 berada di paling kanan sedangkan program selalu membaca P3.0 berada di sisi paling kiri, sehingga ketika PUSH BUTTON menunjukkan 10101010 LED akan berkedip.
Proses berkedipnya sendiri adalah ketika nilai P2 dimasukkan angka nol semua atau dalam hexa adalah 0x00 LED akan menyala kemudian kita delay waktu setelah itu nilai P2 diubah semuanya menjadi 0xff sehingga LED akan mati, kemudian dilakukan delay. Begitulah seterusnya sehingga LED akan terlihat berkedip-kedip.
Apabila nilai a sama dengan 0xaa atau pada PUSH BUTTON di software simulasi bernilai 0x55 yang dalam biner berbentuk 01010101 . Kemudian nilai a ini diubah menjadi 0x7f atau dalam biner 01111111. Nilai ini dimasukkan ke dalam P2 yang merupakan output dari LED. Sebelum dimasukkan
ke dalam P2, nilai bit a yang digeser ke kiri satu bit (11111110) dioperasikan OR dengan bit a yang digeser ke kanan 7 bit (00000000) sehingga didapatkan output pada P2 adalah 11111110. Karena P2.0 berada di sebelah kiri maka LED yang paling kiri akan menyala. Selanjutnya lampu LED akan terus bergeser ke kanan.
Apabila nilai a sama dengan 0xcc atau pada PUSH BUTTON di software simulasi bernilai 0x33 yang dalam biner 00110011. Kemudian nilai a ini diubah menjadi 0xfe atau dalam biner adalah 11111110. Nilai ini nanti akan dimasukkan ke dalam
output P2. Sebelum ditampilkan di P2 lakukan operasi bit, yaitu geser ke kanan satu kali sehingga bit-nya menjadi 01111111 dan dioperasikan OR dengan bit yang sudah di geser ke kiri sebanyak 7 bit yaitu 00000000. Nilai output yang ditampilkan adalah biner 01111111. Karena P2.0 berada di paling kiri maka nilai yang nol (0) hanya ada di P2.7 yang berada di kanan. Selanjutnya lampu LED akan bergeser ke kiri.
Terakhir, apabila semua masukan tidak sesuai dengan yang sudah diatur sebelumnya maka lampu LED akan mati seluruhnya.
Apabila dibuat dalam bentuk flowchart maka program tersebut dapat digambarkan sebagai berikut :
Gambar 5. Flowchart Program LED Berubah-ubah dengan PUSH BUTTON
Untuk mengubah bilangan biner menjadi desimal untuk setiap data analog tegangan langkah-langkahnya sebagai berikut. Pada percobaan ADC, konversi dari data analog ke data digital dilakukan secara otomatis oleh mikrokontroller. Nilai analog yang terbaca dikali dengan resolusinya sehingga didapatkan suatu bilangan yang menunjukkan angka digitalnya.
Pada kit ADC terhubung dengan port 0 (P0) kemudian di program nilai tersebut disimpan dalam sebuah variabel (lihat program pada lampiran ) dalam bentuk bilangan biner.
d = P0; //data ADC
Selanjutnya dalam baris dalam program
chartostr(d);
memanggil fungsi chartostr, dalam fungsi tersebut
void chartostr(unsigned char d) {
static unsigned char digit;
for(digit=0;digit<4;digit++)
{
angka[digit] = d % 10;
d = d / 10;
}
}
nilai digital yang terbaca secara otomatis diubah dalam bentuk desimal oleh program kemudian. Terdapat array angka yang nantinya berfungsi untuk menampilkan hasil dalam bentukga bilangan desimal pada 7 segment. Untuk perulangan yang pertama yaitu variabel digit bernialai nol (0), array angka[0] akan bernilai modulus dari variabel d dibagi 10. Kemudian variabel d nilainya diubah menjadi variabel d dibagi 10. Setelah itu masuk ke perulangan kedua, nilai array angka[1] akan bernilai variabel d yang sudah dibagi angka 10
dimoduluskan dengan angka 10, dan seterusnya. Apabila diilustrasikan dapat dilihat sebagai berikut.
Misalkan setelah dikonversi oleh ADC didapatkan nilai 128,
digit Angka[digit]= d %10 d=d/10 0 8 12
1 2 1 2 1 0
3 0 0
Tabel 6. Ilustrasi Pengisian array angka[digit] Maka akan didapatkan nilai angka[digit] sebagai
berikut: angka[0] = 8 angka[1] = 2 angka[2] = 1 angka[3] = 0 Rangakain 7 segment memiliki 8 bit input yang
terhubung dengan mikrokontroller. 8 bit input ini dibagi ke dalam dua bagian yaitu empat bit bawah sebagai bit data (P2.0-P2.3) dan empat bit atas sebagai bit control (P2.4-P2.7)[2]. Bit control merupakan active low sedangkan bit data merupakan active high.
Program utama kemudian memanggil fungsi display7seg(); yang merupakan fungsi untuk menampilkan bilangan desimal pada 7 segmen. Sedangkan fungsinya sendiri sebagai berikut :
void display7seg()
{
static unsigned char digit,c;
for(digit=0;digit<4;digit++)
{
P2 = angka[digit] | ((0x10<<digit)^0xf0);
for(c=0;c<100;c++); }
}
Penjelasan programnya, pada perulangan yang
pertama nilai P2 yang merupakan output yang dihubungkan ke 7 segmen akan selalu bernilai (dalam biner) 1110xxxx, dimana nilai x bergantung terhadap nilai angka[0] sehingga 7 segmen yang pertama (berada di paling kanan) akan menampikan bilangan desimal. Perulangan kedua, ketiga, dan keempat akan menghasilkan biner 1101xxxx, 1011xxxx, dan 0111xxxx.
Untuk lebih jelasnya dapat dilihat pada contoh kasus sebagai berikut. Misalkan nilai yang dibaca oleh ADC adalah 128, maka nilai variabel array angka[digit] akan seperti yang sudah dijelaskan sebelumnya. Maka dapat diilustrasikan sebagai berikut:
digit Angka[digit] 0x10<<digit ^ 0xf0 P2
0 00001000 11100000 0xe8 1 00000001 11010000 0xd1
2 00000010 10110000 0xb2 3 00000000 01110000 0x00
Tabel 7. Ilustrasi Pengisian P2
Atau dengan kata lain nilai P2-nya adalah secara berturut-turut 11101000, 11010001, 101110010, dan 00000000 yang artinya untuk 4 bit paling atas membuat 7 segment menyala apabila nilainya nol, dan untuk 4 bit paling bawah menyatakan bentuk 7 segmennya. Oleh karena itu akan terbaca nilai 0128 pada 7 segment. Begitulah proses perubahan bilangan biner ke bentuk bilangan desimal pada 7 segment.
V. Simpulan
a. Mikrokontroler hanya dapat membaca file berekstensi .hex untuk menjalankan program.
b. Lampu LED akan menyala apabila nilai low (0) yang dimasukkan pada program.
c. Resolusi dari suatu ADC bergantung kepada jumlah bit dari ADC tersebut.
Pustaka [1]http://www.atmel.com/dyn/resources/prod_documents/doc1919.pdf [2] Bejo, Agus. 2007. C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMega8535. Yogyakarta : Graha Ilmu