Searching

Belum menemukan yang Anda cari, mungkin kata kunci Anda kurang tepat atau masih salah. Coba masukkan lagi kata kunci Anda yang baru pada fasilitas searching di Blog ini untuk lebih lengkap, search in database this blog :

Perhatian

Untuk tampilan gambar yang lebih jelas, Anda dapat klik langsung pada gambar yang ada. Selamat menjelajah !
More Read :

Saturday, February 24, 2007

Lompatan (Bab II)

2.8. Lompatan

Percabangan merupakan salah satu konsep utama dalam mempelajari bahasa pemrograman, bergantung pada data. Untuk contoh, bergantung pada keadaan dari push button, mikrokontroler dapat diprogram untuk menghentikan atau menjalankan motor dengan mendeteksi tombol yang ditekan pada push button.

Instruksi percabangan termasuk jump dan call. Mikrokontroler mempunyai tiga macam instruksi JUMP, yaitu LJMP ( long jump ) dapat melompat sampai pada jangkauan 64 kbyte, AJMP ( absolute jump ) dapat melompat sampai sejauh 2 kbyte, SJMP ( short jump ) dapat melompat sejauh 127 byte. Mikrokontroler mempunyai dua instruksi pemanggilan LCALL ( long call ) dan ACALL ( address call )

2.8.1. Lompatan LJMP, AJMP, dan SJMP

Contoh 1:

Org 0h

Start: LJMP Loncat1

:

: Maksimal ke alamat FFFFh

Org 02FFFh

Loncat1: :

:

:

end

Pada penggalan listing program contoh 1 tersebut, setelah instruksi LJMP ditemui maka program akan melompat pada label loncat1, letak alamat dari label loncat1 ini dapat berada pada jangkauan alamat 64K.

Contoh 2:

Org 0h

Start: AJMP Loncat2

:

: Maksimal ke alamat 0FFFh

Org 04FFh

Loncat2: :

:

end

Pada penggalan listing program contoh 2 tersebut, setelah instruksi AJMP ditemui maka program akan melompat pada label loncat2, letak alamat dari label loncat2 ini dapat berada pada jangkauan alamat 2K.

Contoh 3:

Org 0h

Start: SJMP Loncat3

:

: Maksimal ke alamat +/- 127 byte

Loncat3: :

:

End

Pada penggalan listing program contoh 1 tersebut, setelah instruksi SJMP ditemui maka program akan melompat pada label loncat1, letak alamat dari label loncat1 ini dapat berada pada jangkauan alamat 2 byte.


2.8.2. JZ dan JNZ

Instruksi JZ ( jump if accumulator zero ) dan instruksi JNZ ( jump if accumulator not zero ) adalah instruksi JUMP bersyarat yang memantau nilai accumulator A. Pada instruksi JZ, bila A = 0 maka maka program akan menuju label yang ditunjuk dan bila A ≠ 0 maka program akan menuju instruksi yang ada dibawahnya.

Percobaan 2.8.2.1:

Org 0h

Start: Mov A, #0 ; A = 0

JZ Proses2 ; Jika A = 0 maka akan menuju ke label Proses2

Proses1: Mov R1, #2 ; R1 = 2

Mov R2, #3 ; R2 = 3

Proses2: Mov R1, #0 ; R1 = 0

Mov R2, #0 ; R2 =0

end

Percobaan 2.8.2.2:

Org 0h

Start: Mov A, #1 ; A = 1

JNZ Proses1 ; Jika A ≠ 0 maka akan menuju ke label proses1

Proses1: Mov R1, #2 ; R1 = 2

Mov R2, #3 ; R2 = 3

Proses2: Mov R1, #0 ; R1 = 1

Mov R2, #0 ; R2 = 0

end

Bagaimanakah perbedaan pada kedua percobaan tersebut ?

2.8.3. JC dan JNC

Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on No Carry ) adalah instruksi bersyarat yang memantau bit Carry di dalam register PSW ( Program Status Word )

2.8.4. JB, JNB dan JBC

Instruksi JB ( Jump On Bit Set ) instruksi JNB ( Jump On Not Bit Set ) dan Instruksi JBC ( Jump On Bit Set Then Clear Bit ) merupakan instruksi jump bersyarat yang memantau nilai bit tertentu. Bit tersebut dapat merupakan bit-bit dalam register status maupun kaki input mikrokontroler.

2.8.5. DJNZ


Instruksi DJNZ ( Decrement and Jump if Not Zero ), merupakan instruksi yang akan mengurangi satu nilai register serbaguna ( R0 s/d R7 ), memori-data dan lompat ke label jika setelah pengurangan tersebut belum menghasilkan nilai Zero ( nol ).

Percobaan 2.8.5.1:

Org 0h

Start: Mov R0,#10 ; R0 = 10

Delay1:DJNZ R0, Delay1 ; R0 = R0 -1, Jika R0 ≠ 0 maka lompat ke label Delay1

end ; Jika R0 = 0 maka lanjutkan instruksi berikutnya.

Percobaan 2.8.5.2:

Org 0h

Start: Mov R0,#10 ; R0 = 10

Delay: Mov R1, #10 ; R1 = 10

Delay1: DJNZ R1, Delay1 ; R1 = R1-1, jika R1 0 maka lompat ke label delay1

; Jika R1 = 0 maka lanjutkan instruksi berikutnya

Delay2: DJNZ R0, Delay ; R0 = R0 - 1, jika R0 0 maka lompat ke label delay2

end ; Jika R0 = 0 maka lanjutkan instruksi beriktunya

2.8.6. CJNE


Instruksi CJNE ( Compare and Jump if Not Equal ) merupakan instruksi untuk membandingan dua nilai, dan akan melompat ke label tertentu bila hasil dari perbandingan adalah tidak sama.

Percobaan 2.8.6.1:

Org 0h

Start: Mov A, P1 ;A = P1

CJNE A,#1, Loncat1 ;Bandingkan A dengan 1, lompatlah ke loncat1

;Jika A ≠ 1.

;Jika A=1, maka sama lanjutkan instruksi selanjutnya

Mov R0,#100 ; R0 = 100

SJMP Exit ; Lompat ke label Exit

Loncat1: Mov R0,#0 ; R0 = 0

Exit:

end

No comments:

Disclaimer


Blog ini tidak bertanggung jawab atas kesalahan atas program yang Anda download ataupun sesuatu hal yang berhubungan dengan materi-materi yang ada. Terima kasih atas saran dan kritik yang membangun. Non profit blog. Untuk lebih lanjut hub Webmaster di : agencs@yahoo.com


"All Links In This Blog Is Temporary Link"

NO SPAM AND VIOLATED CONTENT

Generated®


Banner IP Browser

Lihat gambar di bawah ini, ingin punya yang seperti ini juga. Anda bisa pasang banner ini di blog Anda atau posting Anda. Bisa deteksi IP Adress, Browser.

Tulis code ini di footer blog kamu atau posting kamu. Copy (CTRL+C) Paste (CTRL+V) at this script.
Coba Deh, Kuueereeen lho ....
 


Creative Commons License
Powered by Blogger | Created and Maintained by Generated
Blogger Beta Template by GeckoandFly and Blogcrowds | Design by Andreas Viklund
This workis licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Malaysia License.
Best viewed in Firefox 1.5+ at 1024x768 or higher resolution
Copyright 2007 Content by BIZON network
Hosting Reseller Reviews cydots.com - Free Domains!