You are on page 1of 5

LAB SHEET 8 PROGRAM PELAYANAN SUBROUTINE PADA MPF Z-80 (II)

a. TUJUAN Dapat menjalankan program dengan layanan subroutine guna membunyikan nada dengan frekuensi yangberbeda-beda.

b. BAHAN DAN ALAT 1. Lembar tugas 2. Sebuah lagu lengkap dengan notasinya 3. MPF-1 Z-80 dan sumber catunya

c. TEORI DASAR SUBROUTINE TONE dengan adddress awal 05E4H Fungsi Input : Memberikan nada di mana frekunsi dan lamanya dapat kita pilih. : Register C sebagai input untuk menentukan frekunsi nada dengan rumusan pendekatan sebagai berikut: f = 200/10{10+3(isi register C)}KHz T = {44+13(isi register C)}x2x0.56 mikro detik

Register HL diisi dengan bilangan 16 bit dari 0000H sampai maksimum 7FFFH dan isi HL menentukan lama suara yangtimbl pada loudspeker. Output : Nada loudspeaker

SUBROUTINE TONE 1K dengan address awal 05DEH Fungsi : Memberikan nada pada frekunsi 1 KHz dengan lama suara dapat kita pilih. Input : Register HL diisi dengan bilangan 0000H hingga 7FFFH untuk menentukan lama suara. Output : Nada loudspeaker.

SUBROUTINE TONE 2K dengan address awal 05E2H Untuk subroutine TONE 2K sebenarnya sama dengan subroutine TONE 1K hanya berbeda pada frekuensi yang dihasilkan. Frekuensi yang dihasilkan oleh subroutine TONE 2K dalah 2KHz.

SUBROUTINE RAMCHK dengan address awal 05F6H Fungsi : Untuk memeriksa adanya RAM pada suau address denganmenguji pelaksanaan simpannya. Output : Jika RAM ada dan pelaksaaan simpannya baik bit zero flag akan menjadi satu. Jika pada address tersebut pelaksanaan simpannya jelek atau tudak ada RAM-nya maka bit zero flagnya menjadi nol. Cara penggunaaan RAMCHK: LD HL, address awal RAM yang akan diperiksa LB BC, jumlah address RAM yang akan diperiksa Check RAM : CALL RAMCHK; atau call 06F6H JR Z, Check HALT Check : CP 1 JP PE, Check RAM RST

d. LANGKAH KERJA PROGRAM I ADDR 1800 1802 1803 1805 1808 180B 180D 1810 OP. CODE LABEL MNEMONIC OPERAND ORG 1800H 06 0B LD B, 0BH C5 LOOP PUSH BC 0E D3 LD C, D3H 21 08 00 LD HL, 0008H CD E4 05 CALL TONE 0E 8C LD C, 8CH 21 12 00 LD HL, 0012H CD E4 05 CALL TONE KOMENTAR B SP C HL 0BH BC D3H 0008H

C 8CH HL 0012H SBR. TONE

1813 1814 1816 1818 181C 181F 1820 1822 1900 1903

C1 10 EC 16 FF LD DD 21 00 19 CD 24 06 TAMP 15 20 FA C3 00 18 00 8F 23 A3 1F 00

POP BC DJNZ LOOP D, FFH LD IX, 1900H CALL SCAN 1 DEC D JRNZ TAMP JP 1800H ORG 1900H DEFW PONE

BC SP D FFH IX 1900H SBR. Scan 1 D D1 KEMBALI KE AWAL

Pada program di atas frekuensi bunyi pertama adalah 320 Hz dan lamanya 25 msec, sedangkan bunyi kedua frekuensinya 480 Hz dan lamanya 25 msec.

PROGRAM II ADDR 1800 1803 1805 1808 180B 180F 1810 1811 1814 1818 181B 181E 181F 1820 1821 1823 1824 1826 OP. CODE LABEL MNEMONIC OPERAND ORG 1800H CD 3A 18 CALL CLEAR 0E 06 LD C, 0AH 11 00 00 LD BC, 0000H 21 50 18 LD HL, 1850H DD 21 00 19 LD LD IX, 1900H 7E LOOP1 LD A, (HL) E5 PUSH HL DD 77 00 LD (IX+0), A DD 21 00 19 LD IX, 1900H CD 2A 18 CALL TAMPILAN CD 3A 18 CALL CLEAR E1 POP HL 23 INC HL 13 INC DEC DE DD 19 ADD IX, DE 0D DEC C 20 E9 RNZ LOOP1 C3 00 18 JP 1800H SUBROUTINE TAMPILAN ORG 122AH LD B, 64H TAMP. CALL SCAN1 DJNZ TAMP. KOMENTAR SBR. CLEAR C 0AH BC 0000H HL 1850H IX 1900H A (HL) SP HL (IX) A IX 1900H SBR. TAMPILAN SBR. CLEAR HL SP HL HL + 1 DE + 1 IX IX + DE C C1

182A 182C 182F

06 24 CD 24 06 10 FB

B 64H SBR. SCAN1

1813

C9

RET1

KEMBALI KE PROGRAM INDUK

183A 183C 183F 1840 1841 1842 1844 1850

06 10 21 00 19 AF 77 23 10 FC C9

SUBROUTINE CLEAR ORG. 183AH LD B, 10H LD HL, 1900H XOR A CLEAR LD (HL), A INC HL DJNZ CLEAR RET

B HL A (HL) HL

10H 1900H A XOR A A HL + 1

A7 A7 A7 A7 A7 A7 DEFB

KEMBALI KE PROGRAM INDUK DATA

Program di atas adalah menampilkan karakter pada buffer yang address awalnya adalah 1900H. Sebelum menampilkan maka pada address tersebut di-clear setelah itu diisi data yang ada pada register HL ke register IX untuk menampilkan, lalu dari address 1900H di clear, kemudian register IX dan register HL diincreament, begitu seterusnya.

PROGRAM III ADDR OP. CODE LABEL MNEMONIC OPERAND KOMENTAR ORG 1800H 1800 DD 21 50 18 LD IX, Not/Nada ; isi alamat untuk nada 1804 FD 21 00 19 LD IY, Durasi ; isi alamat untuk durasi 1808 DD 4E 00 LOOP LD C, (IX+00H) ; salin data nada pada IX ke C 180B FD 66 00 LD H, (IY+00H) ; salin frek nada pada IY ke H 180E 2E 00 LD L, 00H ; salin periode nada ke L 1810 CD E4 05 SBR CALL TONE ; panggil SBR Tone 1813 0e 01 LD C, 01H ; isikan data 01H ke C 1815 21 00 01 LD HL, 0100H ; isikan frek & periode ke HL 1818 CD E4 05 SBR CALL TONE ; panggil SBR Tone 181B AF XOR A ; Xor-kan data di A 181C DD 23 INC IX ; tambah 1 pada IX untuk data berikutnya 181E FD 23 INC IY ; tambah 1 pada IY untuk data isi A 1823 C2 08 18 JPNZ bunyi nada ; ulangi program sampai habis 1826 76 HALT

Program di atas adalah untuk membunyikan suatu lagu dengan nada dan waktu sesuai lagu yang dipilih. Sebelum membuat program lengkap terutama untuk menyatakan nilai frekuensi nada maupun durasinya perlu terlebih dahulu mencatat judul lagu, nada dasar yang dipakai beserta not dan ketukannya. Sesudah itu baru ditulis pada kolom alamat yang ditentukan baik frekuensi nadanya maupun durasi setiap nadanya. Setelah diketikkan semua ke MPF Z80 eksekusilah program Saudara dan dengarkan vis speaker di MPF 80. Apabila belum cocok datanya dapat diperbaiki sesuai yang benar. Selamat mencoba.

You might also like