Laporan Embedded Basic I/o Di Port 1
Laporan Embedded Basic I/o Di Port 1
Laporan Praktikum
Modul 2 SISTEM TERTANAM (EMBEDDED SYSTEM)
PROGRAM KEAHLIAN TEKNIK KOMPUTER PROGRAM DIPLOMA INSTITUT PERTANIAN BOGOR BOGOR 2013
2.Dasar Teori
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 3
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 bidirectional. 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, mak a kakikaki 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 pullup 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. 4
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.
a.Program 1: Ketiklah program berikut ini,assemble,download ke DT-51 MinSys,dan amati hasilnya: $Mod51 CSEEG ORG 4000H
LJMP START ORG START: MOV SP,#30H SETB CLR SETB CLR SETB SETB SETB SETB P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 4100H
SJMP $ END
Jika tidak ada kesalahan,program tersebut akan menyebabkan Output LED pada Tutorial Board berada pada kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0
Nyala Nyala Nyala Nyala Padam Nyala Padam Nyala Catatan: SP dipindahkan ke alamat 30h karena alamat-alamat sebelumnya umumnya masih dipakai.Perintah SJMP $ pada program dan menyebabkan program berputar(looping) pada alamat (address) dimana perintah SJMP $ berada. b.Program 2: Ketiklah program berikut ini,assamble,download ke DT-51 MinSys,dan amati hasilnya: $mod51 CSEG ORG LJM ORG START: MOV SP,#30H SETB C 4000H START
MOV P1.4,C MOV P1.5,C MOV P1.6,C MOV P1.7,C SJMP $ END
7
Jika tidak ada kesalahan,program tersebut akan menerjamahkan Output LED pada Tutorial Board berada pada kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0
Padam Padam Padam Padam Nyala Nyala Nyala Nyala c. Program 3: Ketiklah program berikut ini,assamble,download ke DT-51 MinSys,dan amati hasilnya: $mod51 CSEG ORG LJM ORG START: MOV SP,#30H MOV P1.#0A3H SJMP $ END Jika tidak ada kesalahan,program tersebut akan menerjamahkan Output LED pada Tutorial Board berada pada kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0 4000H START
Nyala Padam Nyala Padam Padam Padam Nyala Nyala d. Program 4: Ketiklah program berikut ini,assamble,download ke DT-51 MinSys,dan amati hasilnya: $mod51 CSEG ORG LJM ORG START: MOV SP,#30H
8
4000H START
MOV A,#0C4H MOV P1,A SJMP $ END Jika tidak ada kesalahan,program tersebut akan menerjamahkan Output LED pada Tutorial Board berada pada kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0
Latihan Mandiri:
a. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0
Akseslah Port 1 per bit(satu persatu seperti program 1 atau 2). b. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi: BIT7 BIT6 BIT5 BIT4 BIT 3 BIT2 BIT1 BIT0
Akseslah Port 1 per bit(secara keseluruhan sama seperti program 3 atau 4).
a. Program 1: Ketiklah program berikut ini(tanpa tanda panah),assemble,download ke DT-51 MinSys, dan amati hasilnya:
START: MOV SP,#30H INIT: MOV DPTR,#2003H MOV A,#80H MOVX @DPTR,A LABEL1: JB DISPLAY2: MOV DPTR,#2000H MOV A,#00H MOV @DPTR,A SJMP LABEL1 DISPLAY: MOV DPTR,#2000H MOV A,#10H MOVX @DPTR,A SJMP LABEL1 END
10
P1.4,DISPLAY
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.
Program 2:
Ketiklah program berikut ini(tanpa tanda panah),assemble,download ke DT-51 MinSys, dan amati hasilnya:
$mod51
CSEG ORG LJMP ORG 4000H START 4100H
START: MOV SP,#30H INIT: MOV DPTR,#2003H MOV A,#80H MOVX @DPTR,A LABEL1: MOV C,P1.5 JC DISPLAY
11
MOV C,P1.0 JNC DISPLAY2: MOV DPTR,#2000H MOV A,#00H MOV @DPTR,A SJMP LABEL1 DISPLAY: MOV DPTR,#2000H MOV A,#20H MOVX @DPTR,A SJMP LABEL1 DISPLAY3: MOV DPTR,#2000H MOV A,#01H MOVX @DPTR,A SJMP LABEL1 END 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.
12
DISPLAY3
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.
b. Program 3: Ketiklah program berikut ini,assemble,download ke DT-51 MinSys dan amati hasilnya:
LJMP START
ORG 4100H
DISPLAY:
MOV DPTR,#2000H MOVX @DPTR,A SJMP END LABEL1
Jika tidak ada kesalahan program tersebut akan menampilkan nyala LED pada posisi yang sesuai dengan posisi toggle switch yang berlogika 1. Catatan:
13
LJMP START
ORG 4100H
DISPLAY:
MOV MOV DPTR,#2000H A,R1
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.
d. Program 5: 14
Ketiklah program berikut ini,assemble,download ke DT-51 MinSys dan amati hasilnya: $mod51
LJMP START
ORG 4100H
DISPLAY:
MOV DPTR,#2000H MOVX @DPTR,A SJMP END LABEL1
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.
15
Latihan Mandiri:
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.
Latihan Mandiri Percobaan I: Laihan A. $MOD51 CSEG ORG 4000H LJMP ORG START 4100H
16
START: MOV CLR C MOV P1.0,C MOV P1.1,C MOV P1.2,C SETB C SP,#30H
MOV P1.4,C MOV P1.5,C SETB C MOV P1.6,C MOV P1.7,C SJMP $ END Latihan B. $MOD51 CSEG ORG LJMP ORG START: MOV SP,#30H SETB CLR MOV P1.0 C P1.1,C 4000H START 4100H
MOV P1.6,C MOV P1.7,C SJMP $ END Latihan Mandiri Percobaan II: Latihan A. $mod51
CSEG ORG LJMP ORG 4000H START 4100H
START: MOV SP,#30H INIT: MOV DPTR,#2003H MOV A,#80H MOVX @DPTR,A LABEL1: MOV C,P1.0 JNC DISPLAY
DISPLAY3
MOV @DPTR,A SJMP LABEL1 DISPLAY: MOV DPTR,#2000H MOV A,#00H MOVX @DPTR,A SJMP LABEL1 DISPLAY3: MOV DPTR,#2000H MOV A,#01H MOVX @DPTR,A SJMP LABEL1 END Latihan B. $mod51
CSEG ORG LJMP ORG 4000H START 4100H
START: MOV SP,#30H INIT: MOV DPTR,#2003H MOV A,#80H MOVX @DPTR,A LABEL1: MOV A,P1 CJNE CJNE A,#0AAH,DISPLAY A,#0FH,DISPLAY3
19
SJMP LABEL1 DISPLAY2: MOV DPTR,#2000H MOV A,#00H MOV @DPTR,A SJMP LABEL1 DISPLAY: MOV DPTR,#2000H MOV A,#55H MOVX @DPTR,A SJMP LABEL1 DISPLAY3: MOV DPTR,#2000H MOV A,#AAH MOVX @DPTR,A SJMP LABEL1 END
5.Analisa Program
Listing Percobaan diatas dibuat dengan menggunakan format file .ASM dimana file di assemble dengan software lalu di download ke Mikrokontroler MCS51.Keluaran atau output akan dijalankan pada trainer board.Dengan mengubah nilai masukan pada trainer board dengan 1 dan 0 untuk melihat output dari listing program.
6.Kesimpulan
Dengan mengubah nilai akses pada setiap port output LED dapat diubah dengan menjadikan nilai DISPLAY 1 bernilai nyala dan 0 bernilai mati.Nilai masukkan pada port dapat dengan mengakses nilai Register,mengalamatkan secara langsung dan memanggil menghitung nilai heksadesimal.
20
Daftar Pustaka
1. Dany Christanto,Panduan dasar mikrokontroller keluarga MCS-51,Innovative Electronic,2004.
2. CARR,J Joseph,Designing Microprocessor Based Instrumentation,McGraw Hill,Singapore,1991. 3. ZAKS,Rodnay and LESEA ,Agustin,Microprocessor Interfacing Techniques 3rd Edition,Sybex Inc,London,1995.
7. http://elektronika-dasar.web.id/microcontroller-2/tipe-dan-fungsi-port-microcontroler-atmelmcs51/
21