Anda di halaman 1dari 18

LAPORAN PRAKTIKUM

SISTEM TERTANAM (EMBEDDED SYSTEM)


MODUL 2 BASIC I/O DENGAN PORT 1









Nama : Aditia Darmadi J.
NIM : J3D112067
Kelas : Tek A P1



PROGRAM KEAHLIAN TEKNIK KOMPUTER
DIREKTORAT PROGRAM DIPLOMA
INSTITUT PERTANIAN BOGOR
BOGOR
2014
Tujuan praktikum

1. Mengerti dan memahami dasar alat DT-51 MinSys.
2. Mengerti dan memahami tentang basic input/output port dari DT-51 MinSys.
3. Dapat membuat program input dan output menggunakan Port 1 dari DT-51 dengan cara
mengakses Port 1 secara per bit dan per byte.

Teori Penunjang

Panduan Dasar Mikrokontroler keluarga MCS-51 Bab IV bagian 1
Mikrokontroler MCS51 buatan Atmel terdiri dari dua versi, yaitu versi 20 kaki dan
versi 40 kaki. Semua mikrokontroler ini dilengkapi dengan Flash PEROM
(Programmable Eraseable Read Only Memory) sebagai media memori-program, dan
susunan kaki IC-IC tersebut sama pada tiap versinya. Perbedaan dari mikrokontroler-
mikrokontroler tersebut terutama terletak pada kapasitas memori-program, memori-
data dan jumlah pewaktu 16-bit. Mikrokontroler MCS51 Atmel versi mini (20 pin)
dan versi 40 pin secara garis besar memiliki struktur dasar penyusun arsitektur
mikrokontroler yang sama. Bagian-bagian tersebut secara lebih lengkap (detil)
ditunjukan dalam diagram blok berikut.



Mikrokontroler MCS51 Atmel versi 40 kaki mempunyai 32 kaki sebagai port paralel
dan 8 pin yang lain untuk konfigurasi kerja mikrokontroler. Satu port paralel terdiri
dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel yang
masing-masing dikenal sebagai port 0, port 1, port 2, port 3. Nomor dari masing-
masing jalur (kaki) dari port paralel mikrokontroler MCS51 Atmel mulai dari 0
sampai 7, jalur (kaki) pertama dari port 0 disebut sebagai P0.0 dan jalur terakhir untuk
port 3 adalah P3.7. Mikrokontroler MCS51 Atmel versi mini mempunyai 20 kaki, 15
kaki diantaranya adalah kaki port 1 dan port 3. 5 kaki yang lain untuk konfigurasi
kerja mikrokontroler. Port 1 terdiri dari 8 jalur yaitu P1.0 sampai P1.7 dan port 3
terdiri dari 7 jalur yaitu P3.0 sampai P3.5 dan P3.7. Susunan kaki mikrokontroler
MCS51 atmel versi 40 kaki dapat dilihat pada gambar berikut.


Fungsi Kaki-Kaki (Pin) Microcontroller Atmel MCS51
VCC, Kaki VCCdigunakan untuk masukan suplai tegangan.
GND, Kaki (pin) GNDfunsinya sebagai saluran ground atau pentanahan.
RST, Kaki RSTfungsinya sebagai masukan reset. Kondisi 1 selama 2 siklus
mesin pada saat oscillator bekerja akan me-reset mikrokontroler yang
bersangkutan.
ALE/PROG, Kaki ALEdigunakan sebagai keluaran ALE atau Adreess Latch
Enable yang akan menghasilkan pulsa-pulsa untuk menahan byte rendah (low
byte) alamat selama mengakses memori eksternal. Kaki ini juga berfungsi sebagai
masukan pulsa program (the program pulse input) atau selama pemrograman
flash. Pada operasi normal, ALEakan berpulsa dengan laju 1/6 dari frekuensi
kristal dan dapat digunakan sebagai pewaktuan (timing) atau pendekatan
(clocking) rangkainan eksternal.
PSEN, Kaki (Program Store Enable) merupakan sinyal baca untuk memori
program eksternal. Saat mikrokontroler MCS51 menjalankan program dari
memori eksternal, akan diaktifkan dua kali per-siklus mesin, kecuali dua aktivasi
dilompati (diabaikan) saat mengakses memori data eksternal.
EA/VPP, Kaki VPP( Exkternal Access Enable) fungsinya sebagai kontrol untuk
mengakses memori. harus dihubungkan ke ground, jika mikrokontroler akan
mengeksekusi program dari memori eksrternal. Selain itu harus dihubungkan ke
VCCjika akan mengakses program secara internal. Kaki ini juga berfungsi untuk
menerima tegangan 12V (VPP) selama pemrograman flash, khususnya untuk tipe
mikrokontroler 12V volt.
XTAL1, Kaki XTAL1merupakan masukan untuk penguat inverting oscillator dan
masukan untuk clock internal pada rangkaian operasi mikrokontroler.
XTAL2, Kaki XTAL2merupakan keluaran dari rangkaian penguat inverting
oscilator
Port 0, Port 0 merupakan port keluaran/masukan (I/O) 8-bit bertipe open drain bi-
directional. Sebagai port keluaran, masing-masing kaki dapat menyerap arus (sink
current) delapan masukan TTL (sekitar 3,8 mA). Pada saat logika 1 dituliskan
ke port 0, maka kaki-kaki port 0 ini dapat digunakan sebagai masukan-masukan
berimpedansi tinggi. Port 0 juga dapat dikonfigurasikan sebagai jalur alamat/data
bagian rendah (low byte) selama proses pengaksesan memori data dan program
eksternal. Jika digunakan dalam mode ini maka port 0 memiliki pull-up internal.
Port 0 juga dapat menerima kode-kode yang dikirimkan kepadanya selama proses
pemrograman dan mengeluarkan kode-kode selama proses verifikasi program
yang telah tersimpan dalam Flash PEROM. Dalam hal ini dibutuhkan pull-up
eksternal selama proses verifikasi program.
Port 1, Port 1 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi
dengan pull-up internal. Penyangga keluaran port 1 mampu
memberikan/menyerap arus empat masukan TTL(sekitar 1,6 mA). Jika logika 1
dituliskan ke kaki-kaki port 1, maka masing-masing kaki port 1 akan di-pull-up
high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai
masukan jika kaki-kaki port 1 dihubungkan ke ground (di-pull-up low), maka
masing-masing kaki akan memberikan arus (source current) karena di-pull-up
high secara internal. Port 1 juga menerima alamat bagian rendah (low byte)
selama pemrograman dan verifikasi pada Flash PEROM.
Port 2, Port 2 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi
dengan pull-up internal. Penyangga keluaran port 2 mampu
memberikan/menyerap arus empat masukan TTL (sekitar 1,6 mA). Jika logika 1
dituliskan ke kaki-kaki port 2, maka masing-masing kaki port 2 akan di-pull-up
high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai
masukan jika kaki-kaki port 2 dihubungkan ke ground (di-pull-up low), maka
masing-masing kaki akan memberikan arus (source current) karena di-pull-up
high secara internal. Port 2 akan memberikan byte alamat bagian tinggi (high
byte) selama pengambilan instruksi dari memori program eksternal dan selama
pengaksesan memori data yang menggunakan perintah dengan alamat 16-bit
(misalnya: MOVX @DPTR). Dalam aplikasi ini, jika ingin mengirimkan 1,
maka digunakan pull-up internal yang sudah disediakan. Selama pengaksesan
memori data eksternal yang menggunakan perintah dengan alamat 8-bit
(misalnya: MOVX @R1), port 2 akan mengirimkan isi dari SFR P2. Port 2 juga
menerima alamat bagian tinggi selama pemrograman dan verifikasi pada Flash
PEROM.
Port 3, Port 3 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi
dengan pull-up internal. Penyangga keluaran port 3 mampu
memberikan/menyerap arus empat masukan TTL(sekitar 1,6 mA). Jika logika 1
dituliskan ke kaki-kaki port 3, maka masing-masing kaki port 3 akan di-pull-up
high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai
masukan jika kaki-kaki port 3 dihubungkan ke ground (di-pull-up low), maka
masing-masing kaki akan memberikan arus (source) karena di-pull-up high secara
internal. Port 3 juga digunakan untuk menerima sinyal-sinyal kontrol (P3.6 dan
P3.7), bersama-sama dengan port 2 (P2.6 dan P2.7) selama proses pemrograman
dan verifikasi pada Flash PEROM.
3.Perintah yang digunakan
SJMP,LJMP
MOV,MOVX
SETB,CLR
JB,JNB
JC,JNC
CJNE

Listing Program

Percobaan I : Port 1 sebagai Output
Persiapan:
Hubungkan Port 1 DT-51 MinSys dengan PORT OUTPUT DT-51 Trainer Board
menggunakan kabel tipe Y.
Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai
sumber tegangan) menggunakan kabel tipe X.
Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.
Hubungkan DT-51 MinSys dengan sumber tegangan.

a. Program 1 :
Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati
hasilnya :















Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada
Tutorial Board berada pada kondisi :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Nyala Nyala Nyala Nyala Padam Nyala Padam Nyala
Catatan :
SP dipindah ke alamat 30h karena alamat-alamat sebelumnya umumnya masih
dipakai.
Perintah SJMP $ pada program akan menyebabkan program berputar
(looping) pada alamat (address) di mana perintah SJMP $ berada.


b. Program 2 :
Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati
hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada
Tutorial Board berada pada kondisi :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Padam Padam Padam Padam Nyala Nyala Nyala Nyala

c. Program 3 :
Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati
hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada
Tutorial Board berada pada kondisi :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Nyala Padam Nyala Padam Padam Padam Nyala Nyala


d. Program 4 :
Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati
hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada
Tutorial Board berada pada kondisi :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Nyala Nyala Padam Padam Padam Nyala Padam Padam



Latihan Mandiri Percobaan I :
a. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Nyala Nyala Padam Padam Nyala Padam Padam Padam
Akseslah Port 1 per bit(satu persatu seperti program 1 atau 2).
b. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Nyala Nyala Padam Nyala Nyala Padam Padam Nyala
Akseslah Port 1 per byte (secara keseluruhan sama seperti program 3 atau 4).

Percobaan II : Port 1 sebagai I nput
Persiapan :
Hubungkan Port 1 DT-51 MinSys dengan PORT INPUT DT-51 Trainer Board
menggunakan kabel tipe Y.
Hubungkan Port A DT-51 MinSys dengan PORT OUTPUT DT-51 Trainer Board
menggunakan kabel tipe Y.
Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board
(Sebagai sumber tegangan) menggunakan kabel tipe X.
Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.
a. Program 1 :
Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51
MinSys, dan amati hasilnya :

















Jika tidak ada kesalahan ,program tersebut akan bekerja sebagai berikut:
- Jika toggle switch Bit 4 berlogika 0 maka semua LED akan padam(masuk ke
label DISPLAY2).
- Jika toggle switch Bit 4 berlogika 1 maka hanya LED Bit 4 yang akan
menyala(masuk ke label DISPLAY).


Catatan:
Karena program melakukan looping,maka perintah SJMP $ dapat di
hilangkan.Program dengan label INIT (inisialisasi PPI),DISPLAY,DAN
DISPLAY2 hendaknya tidak berubah karena penggunaan PPI barn akan
dijelaskan pada bab berikutnya.Penggunaan p1.4 tidak mutlak dan dapat
diganti dengan bit port 1 lain sebagain input.Nilai 00h dan 10h yang
diberi tanda dapat diganti dengan nilai lain sebagai output ke LED.

b. Program 2 :
Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51
MinSys, dan amati hasilnya :



























Jika tidak ada kesalahan,program tersebut akan bekerja sebagai berikut:
- Jika Toggle switch Bit 5 berlogika 1 maka hanya LED Bit 5 yang akan
menyala(masuk ke label DISPLAY).
- Jika Toggle switch Bit 5 berlogika 0 maka program akan memeriksa kondisi
toggle switch Bit 0.
- Jika toggle switch Bit 5 berlogika 0 dan toggle switch Bit 0 berlogika 1
maka semua LED akan padam(masuk ke label DISPLAY2).
- Jika toggle switch Bit 5 berlogika 0 dan toggle switch Bit 0 berlogika 0
maka hanya LED Bit 0 yang akan menyala(masuk ke label DISPLAY3).
- Jika toggle switch Bit 5 berlogika 1,kondisi toggle switch Bit 0 tidak
akan mempengaruhi kondisi LED.
Catatan:
Program denga table INIT (Inisialisasi PPI),DISPLAY,DISPLAY2 dan
DISPLAY3 hendaknya tidak diubah.Penggunaan P1.5 dan P1.0 tidak
mutlak dapat diganti dengan Port 1 sebagai input.Nilai 00h,20h,dan
01h yang diberi tanda dapat diganti dengan nilai lain sebagai output ke
LED.


c. Program 3 :
Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51
MinSys, dan amati hasilnya :














Jika tidak ada kesalahan program tersebut akan menampilkan nyala LED pada posisi
yang sesuai dengan posisi toggle switch yang berlogika 1.
Catatan:
Program dengan label INIT dan DISPLAY hendaknya tidak diubah.

d. Program 4 :
Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51
MinSys, dan amati hasilnya :












Jika tidak ada kesalahan,program tersebut akan bekerja sama seperti program
3.Hanya saja program ini tidak langsung memindahkan Accumulator ke Port 1
melainkan dipindahkan ke register R1 terlebih dahulu.
Catatan:
Program dengan label INIT dan DISPLAY hendaknaya tidak diubah.

e. Program 5 :
Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51
MinSys, dan amati hasilnya :















Jika tidak ada kesalahan,program tersebut akan bekerja sebagai berikut:
- Jika posisi toggle switch bernilai 0Fh,maka tampilan LED tidak berubah(sama
dengan kondisi sebelumnya).
- Jika posisi toggle switch bernilai selain 0Fh,maka tampilan LED akan sesuai
dengan nilai toggle switch tersebut.
Catatan:
Program dengan label INIT dan DISPLAY hendaknya tidak diubah.


Latihan Mandiri Percobaan II:
a. Buatlah program untuk menampilkan LED di Port A dengan toggle switch di Port 1
dengan syarat:
- Jika toggle switch Bit 0 berlogika 0, semua LED padam.
- Jika toggle switch Bit 0 berlogika 1,program akan memeriksa kondisi toggle
switch Bit 7.
- Jika toggle switch Bit 0 berlogika 1 dan toggle switch Bit 7 berlogika 0,LED
Bit 0 menyala.
- Jika toggle switch Bit 0 berlogika 1 dan toggle switch Bit 7 berlogika 1,LED
Bit 7 menyala.
Petunjuk : Akseslah Port 1 per bit (satu per satu, seperti program 1 atau 2).
Catatan:
Gunakan bagian berlabel INIT dan DISPLAY2.
Ubahlah nilai yang diberi tanda panah agar Output LED sesuau dengan soal
latihan.

b. Buatlah program untuk menampilkan LED di Port A dengan toggle switch di Port 1
dengan syarat:
- Jika toggle switch bernilai 0AAH,LED Bit 6,Bit 4,Bit 2dan Bit 0 akan
menyala.
- Jika toggle switch bernilai 0Fh,LED Bit 7,Bit 5,Bit 1dan Bit 1 akan
menyala.
- Jika toggle switch bernilai selain kedua nilai tersebut di atas,semua LED padam.
Petunjuk : Akseslah Port 1 per byte (secara keseluruhan sama seperti program 3,4,
atau 5).
Catatan:
Gunakan bagian berlabel INIT dan DISPLAY.Gunakan perintah CJNE untuk
membandingkan/memeriksa Port 1.


Analisa Program

Latihan Mandiri Percobaan I:

a.


Pada program di atas, digunakan perintah CLR dan SETB untuk mematikan dan
menyalakan LED pada port DT-51. Perintah CLR digunakan untuk mematikan LED,
dan perintah SETB digunakan untuk menyalakan LED. Langkah yang dilakukan
pertama-tama adalah mendeklarasikan alamat akses untuk program tersebut, dalam hal
ini #30h, karena alamat-alamat sebelumnya umumnya masih dipakai. Setelah itu, atur
nilai pada P1.0 sesuai output yang diinginkan, dalam hal ini LED bit 0 ingin dimatikan
lampunya, maka kita harus memberikan perintah CLR P1.0 agar port 1 bernilai 0.
Setelah itu dengan perintah MOV, nilai dikirimkan ke Port 1 bit 0 sehingga hasilnya
LED pada P1.0 akan mati. Sebaliknya, perintah SETB digunakan untuk memberikan
nilai 1 sehingga output yang dihasilkan adalah LED yang menyala. Contoh pada
program di atas, LED pada port 1 bit 3 ingin dinyalakan sehingga kita harus menuliskan
SETB P1.3. Setelah memberikan nilai 1 pada port 1 bit 3, kirimkan nilai tersebut ke
port yang ingin dituju, dalam hal ini adalah P1.3, dengan perintah MOV, sehingga
hasilnya LED pada P1.3 akan menyala. Perintah SJMP $ digunakan agar program
melakukan looping pada alamat di mana perintah SJMP $ berada sehingga output yang
dihasilkan akan tetap.

b.

Pada program ini, hanya digunakan perintah MOV untuk menyalakan LED yang
diinginkan. Program ini lebih sederhana dari program sebelumnya karena program ini
hanya menuliskan bilangan hexadecimal dari lampu LED tersebut. Bilangan hexa
tersebut mewakili bit-bit yang ada pada LED mulai dari bit 0 sampai dengan bit 7.
Dengan menggunakan perintah MOV, nilai hexa yang sesuai langsung dikirimkan ke
port 1 (tanpa memandang bit-nya, artinya nilai akan dikirimkan ke semua bit port 1
bergantung pada nilai hexa-nya).








Latihan Mandiri Percobaan II:
a.


Pada percobaan kedua, program yang dikerjakan adalah menentukan nyala LED
berdasarkan suatu kondisi tertentu. Disini, digunakan label agar suatu rutin program
dapat berpindah ke rutin program berikutnya dengan teratur. Pada latihan ini digunakan
toogle switch untuk mengontrol nyala LED yang diinginkan. Hal yang dilakukan
pertama kali adalah memeriksa kondisi P1.0, apakah kondisinya 1 atau 0. Jika
kondisinya 0, maka program akan melakukan jump ke label display. Di dalam label
display, rutin program tersebut akan mematikan semua LED, sesuai kondisi yang
diinginkan. Jika P1.0 bernilai 1, maka program akan berlanjut ke baris program
berikutnya, yaitu MOV C, P1.7, yang akan mengecek nilai toogle switch bit 7. Jika
kondisinya 0, maka program akan melakukan jump ke display3 yang menjalankan rutin
program untuk menyalakan LED bit 0 (ditunjukkan dengan bilangan hexa 01H).
Sementara itu, jika kondisinya 1, maka program akan berlanjut ke baris berikutnya
yaitu label bernama display2, yang rutin programnya akan menyalakan LED bit 7
(ditunjukkan dengan bilangan hexa 80H). Jika diperhatikan dengan seksama, semua
rutin program pada label akan diakhiri dengan SJMP label1, yang artinya akan
dilakukan looping kembali pada rutin program label1 selama kondisi belum berubah.



b.



Pada percobaan selanjutnya, program akan melakukan akses dengan bilangan hexa,
artinya, program tidak akan memeriksa bit secara satu per satu, melainkan per byte atau
melihat port 1 secara keseluruhan. Pertama-tama, seperti program sebelumnya, nilai
toogle switch akan ditampung ke dalam akumulator A. Setelah itu, sesuai dengan
program yang diinginkan, program akan menjalankan baris program berikutnya, yaitu
CJNE A,#0AAh, DISPLAY. Perintah CJNE digunakan untuk membandingkan dua nilai,
entah itu ada dalam akumulator atau nilai dan alamat langsung, lalu melakukan jump ke
suatu label jika nilainya tidak sama. Pada program, jika kondisi toogle switch bernilai
AAh, maka program akan melakukan sub-rutin program selanjutnya yaitu pada
LABEL1. LABEL1 akan menghasilkan nyala lampu dengan biner 01010101B yang
ditunjukkan dengan nilai hexa 55H. Selanjutnya, jika kondisi toogle switch bukan
bernilai AAh, maka program akan melakukan jump (ingat perintah CJNE) ke
DISPLAY. Pada kondisi berikutnya, yang diinginkan adalah jika toogle switch bernilai
0Fh, maka akan menghasilkan nyala lampu dengan biner 10101010B. Kembali
dengan menggunakan perintah CJNE, nilai toogle switch yang telah ditampung dalam
akumulator A dibandingkan. Jika nilainya cocok yaitu 0Fh, maka program akan
melakukan sub-rutin program berikutnya yaitu label DISPLAY2 yang akan menjalankan
kondisi lampu dengan biner 10101010B tersebut. Seperti biasanya, semua sub-rutin
program diakhiri dengan SJMP label1 agar program melakukan looping kembali pada
sub-rutin program label1 selama kondisi belum berubah.


Kesimpulan

Akses Port 1 pada DT-51 dapat dilakukan dengan dua cara, yaitu pengaksesan secara bit
(satu per satu) dan secara byte (semua bit pada port).
Dalam modul ini, program biasanya terdiri dari dua bagian terpenting, yaitu bagian untuk
mengontrol program (didefinisikan pada bagian label) dan untuk tampilan program
(didefinisikan pada bagian display).
Suatu sub-rutin program dapat diakhiri dengan menggunakan SJMP (label awal), agar
program berjalan terus-menerus (secara berkesinambungan) sehingga output dapat dilihat
dengan baik. Bandingkan jika program tidak dilakukan looping dengan perintah SJMP,
maka program hanya akan berjalan sekali saja dan output juga hanya akan muncul sekali.
























Daftar Pustaka
Suheri, Asep. 2013. Modul Praktikum Sistem Tertanam. Bogor : Institut Pertanian Bogor
CARR, J Joseph. 1991. Designing Microprocessor Based I nstrumentation . McGraw Hill :
Singapore.
Dany, Christanto . 2004 . Panduan Dasar Mikrokontroller Keluarga MCS-51. Innovative
Electronic.