Selasa, 24 Desember 2013

DISPLAY LED PADA PERCOBAAN MIKROKONTROLER

0 komentar
percobaan display led pada mikrontroler

TUJUAN
1. Mahasiswa memahami rangkaian mikrokontroller untuk menghidupkan dan mematikan LED.
2. Mahasiswa dapat memahami program assembly untuk menghidupkan dan mematikan LED.
3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL dan RR, CJNE. 
4. Mahasiswa memahami pembuatan instruksi waktu tunda 

DASAR TEORI

percobaan mikrontroler
Gambar 1.1. Diagram skematik IC89s51 

Pada diagram skematik tersebut, terdapat 4 (empat) buah port, Port0, Port 1, Port 2 dan Port 3, yang masing-masing terdiri dari 8 bit data. Tata cara penulisan port adalah: P0.0 s/d P0.7, P1.0 s/d P1.7, P2.0 s/d P2.7 dan P3.0 s/d P3.7. 

Instruksi MOV, adalah instruksi copy data 8 bit. 
Contoh:
Mov P0,A          ; copy isi data yang ada di akumulator ke Port 0 
Mov P0,#01010101b ; isi Port 0 dengan data biner 01010101b atau keluarkan data biner tersebut ke P0 

Instruksi Setb, adalah instruksi mengirim logika 1 pada sebuah bit port

Instruksi Clr, adalah instruksi mengirim logika 0 pada sebut bit port 
Contoh: 
Setb P0.0 ; kirim logika 1 pada P0.0 
Clr P0.7  ; kirim logika 0 pada P0.7 

Instruksi RL, Geser data A ke kiri 

Instruksi RR, Geser data A ke kanan 
Contoh: 
Mov A,#00000001b; isi data akumulator dengan data biner tersebut 
RL A; Geser data yang ada di akumulator ke kiri, shg data akan berisi A=00000010b 
RL A; Geser data yang ada di akumulator ke kiri, shg data akan berisi A=00000100b 
RR A; Geser data yang ada di akumulator ke kanan, shg data akan berisi A=00000010b 

Instruksi CJNE, Compare and Jump if Not Equal (bandingkan dan lompatlah jika tidak sama) 
Contoh: 
                  Mov A, P2 
Periksa: CJNE A,#1,Periksa 
         Mov P0,A 

Pada instruksi tersebut, copy data dari P2 ke A, bandingkan data A dengan 1 apabila tidak sama (A=/ 1 maka akan lompat ke label Periksa ). Apabila sama ( A=#1, maka akan turun ke bawah). 

Instuksi DEC, Decrement register (mengurangi isi data register) 

Instruksi INC, Increment register (menambah isi data register) 
Contoh: 
Mov R0,#10; isi R0 dengan data 10 (sepuluh) 
DEC R0; kurangi isi R0 dengan 1, sehingga isi R0 sekarang menjadi 9(sembilan) 
DEC R0; kurangi isi R0 dengan 1, sehingga isi R0 sekarang menjadi 8(delapan) 
INC R0; tambahkan isi R0 dengan 1, sehingga isi R0 sekarang menjadi 9(sembilan) 

Instruksi SJMP, short jump, melompat ke sebuah label dengan jarak dekat 
Contoh: 
Mulai1: mov P0,#01010101b 
        Sjmp Mulai1 

Pada perintah tersebut berarti, program akan melompat ke label Mulai1, ingat label tidak di perkenankan ada spasi: Mulai 1 

Instruksi CALL, memanggil sebuah subrutin 
Contoh: 
Ayo:        mov P0,#01010101b 
            Call WaktuTunda 
            Sjmp Ayo 
WaktuTunda: Bla 
            Bla 
            Bla 
            Ret 
end 

Pada perintah tersebut, program akan memanggil subrutin WaktuTunda, yang berisi instruksi Bla-Bla-Bla, dan diakhiri dengan RET. Seperti halnya sebuah label, penamaan sebuah subrutin, tidak diperkenankan ada spasi: Waktu Tunda 

Instruksi DJNZ, Decrement and Jump if Not Zero 
Mov R0,#10 
AyoRek: DJNZ R0,AyoRek 
End 

Pada program tersebut data register R0, diisi dengan data 10, pada instruksi DJNZ, maka program akan mengurangi data pada register R0 (R0=R0-1), apabila data register R0 tidak nol (R0=/ 0) maka program akan melompat ke AyoRek. 

Struktur dalam penulisan bahasa Asembly 
Contoh: 
AyoMulai:   mov P0,#01010101b 
            Call Pekerjaan1 
            Call Pekerjaan2 
            Sjmp AyoMulai 
Pekerjaan1: Bla 
            Bla 
            Ret 
Pekerjaan2: Bla 
            Bla
            ret 
End 

Ads not by this site
Pada contoh penulisan program assembly tersebut, tampak sebuah label AyoMulai (perhatikan tatacara pembuatan lebel ini, tanpa ada spasi dan boleh dalam bahasa indonesia, untuk keperluan lompatan, dan diakhiri dengan End. Perhatikan tataletak pembuatan subrutin tersebut.

Rangkaian Display LED pada mikrokontroler
Gambar 1.2 Rangkaian Display LED 

Perhatikan pada gambar 1.1 tersebut. Delapan buah LED terhubung ke port 0, yang difungsikan sebagai output. Pada konfigurasi tersebut LED akan nyala bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. Agar Display LED ini dapat aktiv maka jumper EN LED harus dihubungkan singkat. 

Percobaan 1.1. Menghidupkan LED dengan Instruksi MOV 
Pada percobaan 1.1 ini LED akan dihidupkan atau dimatikan dengan mengirimkan data tertentu pada port 0.

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 
1. Hubungkan jumper pada LED_EN, untuk mengaktifkan 8 buah LED 
2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 
3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 
4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Ads not by this site
Display LED pada mikrokontroler
Gambar 1.3. Tampilan kosong MIDE Studio for MCS51

Display LED pada mikrokontroler
Gambar 1.4. Diagram alir percobaan 1.1 

5. Ketik program berikut ini: 

Org 0h 
Start: Mov P0,#11110000b   ; Isi P0 dengan 11110000 
       sjmp start          ; lompat ke start 
End

6. Simpanlah program yang anda ketik dan beri nama : prog11a.asm 
7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 
8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (Lihat Petunjuk Penggunaan)

Display LED pada mikrokontroler
Gambar 1.5. Tampilan program ISP Software 

9. Lakukan pengamatan pada LED 
10. Gantilah data #11110000b tersebut diatas dengan data seperti pada tabel berikut dan lakukan pencatatan LED mana yang padam.

Ads not by this site
Display LED pada mikrokontroler

Percobaan 1.2. Pembuatan Subrutine Waktu Tunda 
Pada percobaan ini, 8 LED akan berkedip secara continue, yang diakibatkan oleh pemberian waktu tunda. 

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Display LED pada mikrokontroler
Gambar 1.6. Diagram alir percobaan 1.2 

4. Ketik program berikut ini: 

Org 0h 
Start: Mov P0,#11111111b   ; Kirim data biner 11111111 ke P0 
       Call Delay          ; Memanggil waktu tunda 
       Mov P0,#00000000b   ; Kirim data biner 00000000 ke P0 
       Call Delay          ; Memanggil waktu tunda
       Sjmp start          ; lompat ke start 
Delay: mov R1,#255         ; Isi 255 ke R1 
Del1:  mov R2,#255         ; Isi 255 ke R2 
Del2:  djnz R2,del2        ; Dec. R2 dan lompat ke del2 if NZ 
       djnz R1,del1 
       ret 
end 

5. Simpanlah program yang anda ketik dan beri nama : prog12a.asm 
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (Lihat Petunjuk Penggunaan) 
8. Lakukan pengamatan pada LED 
9. Gantilah data tersebut untuk mengedipkan sebuah LED, dua buah LED dan seterusnya, sesuai tabel berikut ini.

Display LED pada mikrokontroler

Percobaan 1.3. Instruksi Setb dan Clr 
Percobaan ini, sebuah LED atau lebih dapat dihidupkan atau dimatikan dengan perintah setb dan clr. 

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 
4. Ketik program berikut ini:

Org 0h 
Start: Clr P0.0   ; Kirim logika ‘0’ ke P0.0 
       Clr P0.1   ; Kirim logika ‘0’ ke P0.1 
       Clr P0.2   ; Kirim logika ‘0’ ke P0.2 
       Clr P0.3   ; Kirim logika ‘0’ ke P0.3 
       Clr P0.4   ; Kirim logika ‘0’ ke P0.4 
       Clr P0.5   ; Kirim logika ‘0’ ke P0.5 
       Clr P0.6   ; Kirim logika ‘0’ ke P0.6 
       Clr P0.7   ; Kirim logika ‘0’ ke P0.7 
       Call Delay ; Memanggil waktu tunda 
       Setb P0.0  ; Kirim logika ‘1’ ke P0.0 
       Setb P0.1  ; Kirim logika ‘1’ ke P0.1 
       Setb P0.2  ; Kirim logika ‘1’ ke P0.2 
       Setb P0.3  ; Kirim logika ‘1’ ke P0.3 
       Setb P0.4  ; Kirim logika ‘1’ ke P0.4 
       Setb P0.5  ; Kirim logika ‘1’ ke P0.5 
       Setb P0.6  ; Kirim logika ‘1’ ke P0.6 
       Setb P0.7  ; Kirim logika ‘1’ ke P0.7 
       Call Delay ; Memanggil waktu tunda 
       Sjmp start ; lompat ke start 
Delay: mov R1,#255 
Del1:  mov R2,#255 
Del2:  djnz R2,del2 
       djnz R1,del1 
       ret 
end 

5. Simpanlah program yang anda ketik dan beri nama : prog13a.asm 
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (Lihat Petunjuk Penggunaan) 
8. Lakukan pengamatan pada LED 
9. Rencanakan program untuk mengedipkan dua buah LED, tiga buah LED dan seterusnya dengan instruksi Setb dan Clr. 

Percobaan 1.4. LED Berjalan dengan Instruksi RL/ RR (Rotate Left dan Right) 
Pada percobaan ini, sebuah LED akan berjalan dari kiri ke kanan dan sebaliknya, program ini memanfaatkan instruksi RL dan RR. 

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Ads not by this site
Display LED pada mikrokontroler
Gambar 1.6. Diagram alir percobaan 1.3 

4. Ketik program berikut ini: 

Org 0H 
Start: Mov A,#11111110b    ; isi A dengan 11111110b 
       Mov R0,#7           ; isi R0 dengan 7 
Kiri:  Mov P0,A            ; copy A ke P0 
       Call Delay          ; panggil sub rutine delay 
       RL A                ; data A diputar ke kiri 
       DEC R0              ; data R0 dikurangi 1 
       CJNE R0,#0,Kiri     ; bandingkan R0 dg 0, if NE jump kiri 
       Mov R0,#7 
Kanan: Mov P0,A 
       Call Delay 
       RR A                ; data A diputar ke kanan 
       DEC R0              ; data RO dikurangi 1 
       CJNE R0,#0,Kanan    ; bandingkan R0 dg 0, if NE jump kanan 
       Sjmp Start 
Delay: mov R1,#255 
Del1:  mov R2,#255 
Del2:  djnz R2,del2 
       djnz R1,del1 
       ret 
end 

5. Simpanlah program yang anda ketik dan beri nama : prog14a.asm 
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program Downloader 
8. Lakukan pengamatan pada LED

Leave a Reply

Labels