Anda di halaman 1dari 11

PERCOBAAN 6_0

ORG 0H LJMP START ORG 100H START: MOV A,P3 JZ NOL MOV P2,#11011111B MOV P1,#55H SJMP START NOL: MOV P2,#11011111B MOV P1,A SJMP START END

Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A, P3 Melakukan pengisian data dari Port 3 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. JZ NOL Melakukan lompatan ke alamat yang ditentukan apabila akumulator A adalah 00H dan langsung meneruskan instruksi dibawahnya bila akumulator A tidak 00H. Hal ini yaitu melompat kelabel NOL ( jika tombol ditekan akan menuju ke label NOL, jika tidak maka menuju default code yaitu kode di bawahnya) MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,#55H Melakukan pengisian data 55H pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 6_1
ORG 0H

LJMP START ORG 100H START: CLR C MOV A,P3 SUBB A,#20 JNC PLUS MOV P2,#11011111B MOV P1,#11H SJMP START PLUS: MOV P2,#11011111B MOV P1,#88H SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. CLR C Memberikan nilai 0 pada 8 bit Akumulator C MOV A, P3 Melakukan pengisian data dari Port 3 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. SUBB A,#20 Lakukan pengurangan data di Akumulator A dengan 20 dan simpan hasilnya di Akumulator A JNC PLUS Melakukan lompatan ke suatu alamat yang didefinisikan apabila carry flag. Apabila carry flag set maka program akan menjalankan instruksi selanjutnya. MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,#11H Melakukan pengisian data 11H pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,#88H Melakukan pengisian data 88H pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 6_2
ORG 0H LJMP START ORG 100H START: CLR C JB P3.7,SATU MOV P2,#11011111B MOV P1,#0AAH SJMP START SATU: MOV P2,#11011111B MOV P1,#11H SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. CLR C Memberikan nilai 0 pada 8 bit Akumulator C JB P3.7,SATU Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) set. Apabila bit tersebut clear maka program akan menjalankan instruksi selanjutnya. (Jika push button tidak ditekan maka program akan menuju label SATU) MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,#0AAH Melakukan pengisian data 0AAH pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,#11H Melakukan pengisian data 11H pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

TUGAS 6A LED ANIMASI

ORG 0000H LJMP START ORG 100H MOV P3,#00000001B START: MOV P1,#0FFH ACALL DELAY LOOP: JB P3.0,GESERKIRI JNB P3.0,GESERKANAN GESERKIRI: MOV A,#11111110B LOMPAT: MOV P1,A JNB P3.0,GESERKANAN RL A ACALL DELAY CJNE A,#11111110B,LOMPAT SJMP STOP GESERKANAN: MOV P1,A JB P3.0,LOMPAT RR A ACALL DELAY CJNE A,#01111111B,GESERKANAN SJMP STOP STOP: MOV P1,#0FFH ACALL DELAY LJMP START DELAY: MOV R2,#20 DELAY0: MOV R0,#255 DELAY1: MOV R1,#255 DELAY2: DJNZ R1,DELAY2 DJNZ R0,DELAY1 DJNZ R2,DELAY0 RET END

Preview : Kondisi penekanan push button P3.0=0(ke kanan)

Kondisi default P3.0=1 (ke kiri)

ANALISA : P3.0=1 maka tampilan led akan bergeser kekiri P3.0=0 maka tampilan led akan bergeser kekanan (ditekan ) MOV P3,#00000001B Memberikan nilai awal Port 3 dengan 00000001B LJMP START, melompat dan menjalankan program yang berada di dalam label START. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. ACALL DELAY Memanggil fungsi delay pada label DELAY

JB P3.0,GESERKIRI Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) set. Apabila bit tersebut clear maka program akan menjalankan instruksi selanjutnya. Intruksi ini merupakan default dari program ini ketika push button tidak ditekan, sehingga langsung melompat ke label GESERKIRI JNB P3.0,GESERKANAN Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) clear. Apabila bit tersebut set maka program akan menjalankan instruksi selanjutnya. Ketika push button ditekan, maka langsung melompat ke label GESERKANAN Di label GESERKIRI diberi nilai akumulator awal dengan 11111110b, nilai ini gunakan karena default animasi adalah dari kanan ke kiri. Setelah itu nilai akumulator di ekspor ke Port 1, sehingga di Port 1 akan ditampilkan nilai akumulator. Di dalam label ini juga terdapat pengecekan terhadap penekanan tombol push button yaitu JNB P3.0,GESERKANAN. Tujuan pengecekan ini yaitu agar sewaktu tombol ditekan maka akan langsung memebrikan efek berupa gerak geser kanan. Apabila tidak terdapat pengecekan, maka respon dari Microcontroller akan lama, bahkan error sewaktu ada penekanan tombol. Dalam label GESERKIRI tedapat pengecekan nilai akumulator untuk gerak ke kiri, yaitu CJNE A,#11111110B,LOMPAT. Setelah kondisi akumulator bernilai 11111110b, maka program akan melompat ke label STOP untuk kembali lagi ke label START Di label GESERKANAN memanfaatkan nilai akumulator setelah eksekusi GESERKIRI. Disini juga terdapat pengecekan terhadap nilai pada Port 3.0, Jika push button dilepas, maka akan menuju ke default program, yaitu GESERKIRI. Untuk pergerakan geser kanan digunakan intruksi RR ,yaitu Melakukan pergeseran ke kanan 1 bit untuk setiap bit dalam akumulator A SJMP START, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

TUGAS 6B LINE TRACER


MAJU EQU 00010100B KANAN EQU 00011000B KIRI EQU 00100100B ORG 0H LJMP MAIN ORG 100H MAIN: MOV P1,#00H MOV P3,#00000011B START: MOV P1,#MAJU ACALL DELAY JB P3.0,KIRI1 JB P3.1,KANAN1 NEXT: MOV P1,#MAJU ACALL DELAY MOV A,P3 CJNE A,00H,LANJUT3 LJMP STOP LANJUT3: JB P3.1,KANAN1 BACK: MOV A,P3 CJNE A,00H,LANJUT4 LJMP STOP

LANJUT4: AJMP START STOP: MOV P1,#00H ACALL DELAY KANAN1: MOV P1,#KANAN MOV A,P3 CJNE A,00H,LANJUT LJMP STOP LANJUT: JNB P3.0,KANAN1 SJMP NEXT KIRI1: MOV P1,#KIRI MOV A,P3 CJNE A,00H,LANJUT2 LJMP STOP LANJUT2: JNB P3.1,KIRI1 SJMP BACK DELAY: MOV R0,#255 DELAY1: MOV R1,#255 DELAY2: DJNZ R1,DELAY2 DJNZ R0,DELAY1 RET END Preview :

Kondisi maju

Kondisi belok kanan

Kondisi belok kiri

Kondisi stop

Test Drive 1 Test Drive 2

Test Drive 3 ANALISA : MAJU EQU 00010100b Merupakan deklarasi suatu variable MAJU yang memiliki nilai 00010100b KANAN EQU 00011000b Merupakan deklarasi suatu variable KANAN yang memiliki nilai 00011000b. Kemudian varabel ini dapat dimanfaatkan untuk program selanjutnya sehingga program lebih mudah untuk dimengerti KIRI EQU 00100100b Merupakan deklarasi suatu variable KIRI yang memiliki nilai 00100100b. Kemudian variable ini dapat digunakan oleh program selanjutnya LJMP MAIN Merupakan intruksi untuk melakukan lompatan Long ke label MAIN. Didalam variable ini terdapat beberapa intruksi ntuk deklarasi awal pada Port 1 dan Port 3. Untuk nilai Port 1 awal yaitu bernilai 00h dan nilai Port 3 yaitu 00000011b. Deklarasi pada Port 3 tersebut dimaksudkan untuk pembacaan sensor sebanyak 2, agar tidak membingungkan dalam proses programming. Setelah itu program akan menuju ke label START. Dalam label ini dihasilkan output dari port 1 dengan kondisi MAJU (Sesuai dengan variable MAJU yang bernilai 00010100b. ACALL DELAY Merupakan fungsi delay yang memanfaatkan perulangan sebanyak 255x255. JB P3.0,KIRI1 Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) set. Apabila bit tersebut clear maka program akan menjalankan instruksi selanjutnya. Intruksi ini merupakan intruksi yang apabila sensor pada PIN 3.0 membaca garis putih, sehingga PIN 3.0 bernilai 0, oleh karena itu program akan melompat ke label KIRI1 JB P3.1,KANAN1 Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) set. Apabila bit tersebut clear maka program akan menjalankan instruksi selanjutnya. Intruksi ini merupakan intruksi yang apabila sensor pada PIN 3.1 membaca garis putih, sehingga PIN 3.1 bernilai 0, oleh karena itu program akan melompat ke label KANAN1 Pada label KIRI1 akan dihasilkan output pada Port 1 memanfaatkan variable kiri yang bernilai 00100100b. Setelah itu terdapat pengecekan terhapat nilai akumulator A, dimana apabila nilai akumulator bernilai 00h, maka melompat ke label STOP untuk kembali lagi ke Label START. Jika nilai akumulator tidak sama dengan 00h, maka akan melanutkan proses scanning pada PIN 3.0 dan PIN 3.1 Pada label KANAN1 dihasilkan output pada Port 1 yang berupa nilai variable KANAN yaitu 00011000b. setelah itu terdapat pengecekan terhadap akumulator A, dimana apabila akumulator bernilai 00h, maka akan melompat ke label STOP. Apabila nilai akumulator tidak sama dengan 00h, maka akan melompat ke label LANJUT. Dalam label LANJUT terdapat pengecekan terhadap scanning sensor pada PIN 3.0, dimana apabila PIN 3.0 membaca garis putih akan lompat ke label KANAN1, jika tidak maka akan mengeksekusi baris program selanjutnya Dalam label STOP berfungsi menghentikan gerak motor dimana dihasilkan output 00h pada Port 1

KESIMPULAN Ajmp adalah Absolute Jump, melompat dan menjalankan program yang berada di alamat yang ditentukan oleh addr11. Proses yang terjadi adalah, 11 bit dari alamat yang ditentukan oleh addr11 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. Lompatan maksimalnya sejauh 2 kilobyte. Ljmp adalah Long Jump, Kode instruksi 02h yaitu melompat dan menjalankan program yang berada di alamat yang ditentukan oleh addr16. Proses yang terjadi adalah, 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. Lompatannya sejauh 64 kilobyte. Sjmp adalah Short Jump, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte. Jangkauan instruksi SJMP hanya -128 sampai +127 Acall yaitu Melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat pada addr11. Lcall yaitu Melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat pada addr16. Lompatan yang dapat dilakukan berada di area sebesar 64K byte.

Lompatan yang dapat dilakukan berada di area sebesar 2K byte. JZ adalah jump zero, Melakukan lompatan ke alamat yang ditentukan apabila akumulator A adalah 00H dan langsung meneruskan instruksi dibawahnya bila akumulator A tidak 00H. JNZ adalah jump not zero, Melakukan lompatan ke alamat yang ditentukan apabila akumulator A adalah bukan 00H dan langsung meneruskan instruksi dibawahnya bila akumulator A adalah 00H. CJNE adalah compare jump not zero, Instruksi ini melakukan perbandingan antara data tujuan dan data sumber serta melakukan lompatan ke alamat yang ditentukan apabila hasil perbandingan tidak sama. Bentuk perintah: CJNE data tujuan, data sumber, alamat lompatan DJNZ adalah decerement jump not zero, Melakukan pengurangan pada Rn (R0R7) dengan 1 dan lompat ke alamat yang ditentukan apabila hasilnya bukan 00.Apabila hasilnya telah mencapai 00, maka program akan terus menjalankan instruksi dibawahnya.

Anda mungkin juga menyukai