![Laporan Modul 5 [PDF]](https://pdfs.asia/img/200x200/laporan-modul-5.jpg)
35 0 3 MB
LAPORAN MODUL 5 PRAKTIKUM SISTEM MIKROPROSESOR STUDI KASUS PEMROGRAMAN MIKROPROSESOR
 
 Disusun Oleh : Nama : Setia Budinugroho NIM
 
 : 12502241015
 
 Kelas : A 3.1
 
 JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA 2013
 
 A) Kegiatan Belajar
 
 Kegiatan Belajar I : Percobaan program Transfer Data TUJUAN : 
 
 Memahami pemakaian fungsi instruksi transfer data
 
 
 
 Menentukan nilai seting inisialisasi data
 
 
 
 Menulis program
 
 
 
 Memasukkan program (op-code) ke Komputer Mikro MPF-I
 
 
 
 Mengeksekusi program
 
 
 
 Menganilis hasil eksekusi
 
  Percobaan I Kasus : Tuliskan program dalam bahasa assembly untuk mengeset isi register-register A=00h, B=01h, C=02h, D=03h, E=04h, H=05h, L=06h dengan menggunakan instruksi transfer data 8 bit. Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP 1 2 3 4 5 6 7 8 9
 
 PERINTAH Start Isi register A dengan data 00h Isi register B dengan data 01h Isi register C dengan data 02h Isi register D dengan data 03h Isi register E dengan data 04h Isi register H dengan data 05h Isi register L dengan data 06h Stop
 
 Laporan Mikrokontroler Modul 5
 
 1
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program. Perhatikan pemilihan bentuk grafis flowchart harus benar karena akan mewakili kesesuaian pemilihan jenis dan macam instruksi.
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya.
 
 Laporan Mikrokontroler Modul 5
 
 2
 
 Addr 1800 1802 1804 1806 1808 180A 180C 180E
 
 Kode Operasi 3E 00 06 01 0E 02 16 03 1E 04 26 05 2E 06
 
 No.
 
 Label 1. 2. 3. 4. 5. 6. 7. 8.
 
 FF
 
 Assembly
 
 Keterangan
 
 LD A , 00H LD B , 01H LD C , 02H LD D , 03H LD E , 04H LD H , 05H LD L , 06H RST 38
 
 d). Pemasukan Program dan Eksekusi Program o Masukkan semua kode operasi program sesuai alamat setiap perintah. o Cek kembali apakah semua kode operasi telah benar dan sesuai dengan posisi alamatnya. o Jika semua sudah benar lanjutkan dengan operasi eksekusi menggunakan eksekusi GO dan baca hasil program di masing-masing register dengan mencatat pada tabel berikut: Register
 
 A
 
 B
 
 C
 
 D
 
 E
 
 H
 
 L
 
 Data
 
 00
 
 01
 
 02
 
 03
 
 04
 
 05
 
 06
 
 
 
 Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. e). Analisa Data Percobaan di atas adalah contoh dari transfer data immediate 8 bit ke register. Jadi ketika kita ingin memasukkan data ke sebuah register, kita akan memasukkannya secara langsung ke register tersebut tanpa mengolah data tersebut terlebih dahulu. Dari op code dapat dijelaskan bahwa address 1800 berisi op code 3E, hal ini digunakan untuk memanggil register A untuk bersiap menerima data, kemudian address 1801 berisi data 8 bit yang akan dimasukkan ke register A, yaitu 00. Setelah itu berlanjut memanggil register B, dan proses yang terjadi sama, yang berbeda adalah op code yang digunakan untuk memanggil register yang akan digunakan untuk menyimpan data. Setelah selesai maka menggunakan FF sebagai reset atau end program.
 
 Laporan Mikrokontroler Modul 5
 
 3
 
  Percobaan II Kasus : Tuliskan program dalam bahasa assembly untuk mengeset isi register-register B=BBh, C=CCh, D=DDh, E=EEh, H=FFh, L=00h dengan menggunakan instruksi transfer data 16 bit. Penyelesaian: a) Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Isi register BC dengan data BBCCh
 
 3.
 
 Isi register DE dengan data DDEEh
 
 4.
 
 Isi register HLdengan data FF00h
 
 5.
 
 Stop b) Flowchart:
 
 Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program. Perhatikan pemilihan bentuk grafis flowchart harus benar karena akan mewakili kesesuaian pemilihan jenis dan macam instruksi.
 
 Laporan Mikrokontroler Modul 5
 
 4
 
 c) Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya. Addr
 
 Kode Operasi
 
 No.
 
 Labe
 
 Assembly
 
 1800
 
 01 CC DD
 
 1.
 
 LD BC ,BBCCH
 
 1802
 
 11 EE DD
 
 2.
 
 LD DE, DDEEH
 
 1804
 
 21 00 FF
 
 3.
 
 LDHL, FF00H
 
 180e
 
 FF
 
 4.
 
 RST 38
 
 Keterangan
 
 d) Pemasukan Program dan Eksekusi Program 
 
 Masukkan semua kode operasi program sesuai alamat setiap perintah.
 
 
 
 Cek kembali apakah semua kode operasi telah benar dan sesuai dengan posisi alamatnya.
 
 
 
 Jika semua sudah benar lanjutkan dengan operasi eksekusi menggunakan eksekusi GO dan baca hasil program di masing-masing register dengan mencatat pada tabel berikut : Register Data
 
 BC
 
 DE
 
 HL
 
 BBCC
 
 DDEE
 
 FF00
 
 4). Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki.
 
 Laporan Mikrokontroler Modul 5
 
 5
 
 e) Analisa Data Hampir sama dengan Percobaan I, ini merupakan implementasi dari transfer data 16 bit ke register. Jadi data yang akan dimasukkan tidak perlu diolah dahulu karena data langsung ditempatkan ke register tujuan. Dari kode operasi dapat dijelaskan bahwa untuk dapat menuju register BC maka diperlukan kode 01 untuk memanggil register tersebut dan data diisi dengan dibuat terbalik ( register C terlebih dahulu ) karena pada waktu mengisi, nantinya register B akan terisi dengan dengan data CC kemudian data akan bergeser secara otomatis ke register C ketika register B mendapat data BB. Begitu juga dengan pengisian data ke register DE dan HL, yang berbeda hanyalah op code yang digunakan. Setelah selesai maka menggunakan FF sebagai reset atau end program.
 
  Percobaan III Kasus : Tuliskan program dalam bahasa assembly untuk menghapus 50 lokasi isi memori pada alamat 1900H sampai 1931H dengan data 00H. Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Isi register B dengan data 32h = 50 desimal
 
 3.
 
 Isi register HL dengan data 1900h
 
 4.
 
 Isi register A dengan data 00h
 
 5.
 
 Isi memori pada alamat sama dengan isi register HL dengan data register A
 
 6.
 
 Tambahkan nilai isi register HL dengan satu
 
 7.
 
 Kurangkan isi register B dengan satu
 
 8.
 
 Apakah isi register BC tidak sama dengan Nol
 
 9.
 
 Jika Ya kembali ke Step 5
 
 10.
 
 Stop
 
 Laporan Mikrokontroler Modul 5
 
 6
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program. Perhatikan pemilihan bentuk grafis flowchart harus benar karena akan mewakili kesesuaian pemilihan jenis dan macam instruksi.
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masingmasing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya. Addr 1800 1802 1805 1806 1807 1808 1809 180C
 
 Kode Operasi 06 32 21 00 19 AF 77 23 05 C2 FF
 
 No. 1. 2. 3. 4. 5. 6. 7. 8.
 
 Laporan Mikrokontroler Modul 5
 
 Label
 
 ULANG
 
 Assembly LD B, 32H LD HL,1900H XOR A A =00 LD (HL), A INC HL DEC B JPNZ, ULANG RST 38
 
 Keterangan
 
 Loop ke 1806
 
 7
 
 d). Pemasukan Program dan Eksekusi Program 1). Masukkan semua kode operasi program sesuai alamat setiap perintah. 2). Cek kembali apakah semua kode operasi telah benar dan sesuai dengan posisi alamatnya. 3). Jika semua sudah benar lanjutkan dengan operasi eksekusi menggunakan eksekusi GO dan baca hasil program di memori mulai alamat 1900 sampai dengan alamat 1931 dengan mencatat pada tabel berikut : Memori 1900 Data
 
 00
 
 1901 00
 
 1902 00
 
 1903 00
 
 1904 00
 
 dst
 
 1931 00
 
 4). Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. e). Analisa Data Pada percobaan ketiga yaitu program penghapusan 50 lokasi isi memori pada alamat 1900 sampai 1931 dengan data 00H. Maka langkah yang diambil untuk yang pertama adalah mengisi register B dengan data 32H (50 desimal) sesuai dengan alamat yang akan dihapus sebagai program counter penghitung perulangan yang akan dilakukan. Kemudian mengisikan register HL dengan alamat 1900H sebagai alamat awal yang akan dihapus datanya dengan 00H. Kemudian isikan register A dengan data 00H sebagai data penghapus yang akan diisikan pada memori. Setelah itu baru dimulai penghapusan data dengan memasukkan data 00H yang ada pada register A ke alamat awal 1900h pada register HL. Lalu alamat pada register HL ditambah dengan satu dengan perintah INC HL yang dimaksutkan untuk menunjuk pada alamat selanjutnya yang akan dihapus datanya. Kemudian register B dikurangi satu dengan perintah DEC B sebagai penghitung langkah kerja program yang kemudian akan di eksekusi dengan perintah keputusan JPNZ. JPNZ akan membaca apakah isi register B sama dengan 0, jika ya maka akan mengulang ke step 5 yaitu mengisikan data 00 ke alamat selanjutnya. Langkah tersebut akan diulang sampai isi register B sama dengan 0, yaitu 50 kali.
 
 Laporan Mikrokontroler Modul 5
 
 8
 
  Percobaan IV Kasus : Tuliskan program dalam bahasa assembly untuk mengeset data : 00h, 01h, 02h, 03h, 03h, 04h, 05h, 06h, 07h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, dan 0Fh di memori RWM mulai alamat 1900 sampai 190F. Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Isi register B dengan data 10h = 16 desimal
 
 3.
 
 Isi register HL dengan data 1900h
 
 4.
 
 Isi register A dengan data 00h
 
 5.
 
 Isi memori pada alamat sama dengan isi register HL dengan data register A
 
 6.
 
 Tambahkan nilai/isi register HL dengan satu
 
 7.
 
 Tambahkan nilai/isi register A dengan satu
 
 8.
 
 Kurangkan nilai/isi register B dengan satu
 
 9.
 
 Apakah isi register BC tidak sama dengan Nol
 
 10.
 
 Jika Ya kembali ke Step 5
 
 11.
 
 Stop
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program. Perhatikan pemilihan bentuk grafis flowchart harus benar karena akan mewakili kesesuaian pemilihan jenis dan macam instruksi.
 
 Laporan Mikrokontroler Modul 5
 
 9
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya. Addr 1800 1802 1805 1806 1807 1808 1809 180A 180D
 
 Kode Operasi 06 32 21 00 19 AF 77 23 3C 05 C2 06 18 FF
 
 No. 1. 2. 3. 4. 5. 6. 7. 8. 9
 
 Label
 
 ULANG
 
 Assembly LD B, 32H LD HL,1900H XOR A A =00 LD (HL), A INC HL INC A DEC B JPNZ, ULANG RST 38
 
 Keterangan
 
 Loop ke 1806
 
 d). Pemasukan Program dan Eksekusi Program 1) Masukkan semua kode operasi program sesuai alamat setiap perintah. 2) Cek kembali apakah semua kode operasi telah benar dan sesuai dengan posisi alamatnya.
 
 Laporan Mikrokontroler Modul 5
 
 10
 
 3) Jika semua sudah benar lanjutkan dengan operasi eksekusi menggunakan eksekusi GO dan baca hasil program di memori mulai alamat 1900 sampai dengan alamat 190F dengan mencatat pada tabel berikut : Memori 1900
 
 1901
 
 1902
 
 1903
 
 1904
 
 1905
 
 1906
 
 1907
 
 00
 
 01
 
 02
 
 03
 
 04
 
 05
 
 06
 
 07
 
 Memori 1908
 
 1909
 
 190A
 
 190B
 
 190C
 
 190D
 
 190E
 
 190F
 
 09
 
 0A
 
 0B
 
 0C
 
 0D
 
 0E
 
 0F
 
 Data
 
 Data
 
 08
 
 4) Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. e). Analisa Data Pada percobaan 4 yaitu program pengisian data 00h samapi 0Fh di memori RWM mulai dari alamat 1900h sampai 190Fh. Maka untuk langkah pertama yang diambil adalah mengisikan register B dengan data 10h (16 desimal). Kemudian mengisikan register HL dengan alamat 1900h sebagai alamat awal. Kemudian mengisikan register A dengan data 00h sebagai alamat yang akan diisikan pada alamat awal. Setelah itu langkah selanjutnya mengisikan memori awal 1900h dengan data pada register A. Setelah itu alamat pada register HL ditambah dengan satu sebagai penunjuk alamat berikutnya dengan perintah INC HL. Kemudian pada data pada register A juga ditambah dengan satu sebagai data yang akan dimasukkan pada alamat berikutnya dengan perintah INC A. Setelah itu data pada register B dikurang satu untuk mengetahui sudah brapa langkah yang sudah dilakukan. Kemudian dengan perintah JPNZ maka data pada register B akan dibaca, apabila data tidak sama dengan 0 maka akan melompat keperintah 5 yaitu mengisikan data pada register A ke register HL. Jika data peda register B sama dengan 0 maka program akan berhenti.
 
 Laporan Mikrokontroler Modul 5
 
 11
 
 Kegiatan Belajar II: Percobaan Aplikasi Aritmetika “Jumlah-Kurang” a. TUJUAN : 1) Memahami pemakaian fungsi instruksi aritmetika 2) Menentukan nilai seting inisialisasi data 3) Menulis program 4) Memasukkan program (op-code) ke Komputer Mikro MPF-I 5) Mengeksekusi program 6) Menganilis hasil eksekusi b. PERCOBAAN  Percobaan I Kasus. Buatlah Algoritma Program, Flow Chart dan Program untuk menjumlahkan 2 byte bilangan biner yang masing-masing beralamat di 1900H, 1901H, 1902H, 1903H. Simpanlah hasilnya di alamat 1904H, 1905H, 1906H. Program di tulis pada alamat awal program 1800H. Pola masalah : [ 1901 ] [ 1900 ] [ 1903 ] [ 1902 ] + ------------------------------------------------[ 1906 ] [ 1905 ] [ 1904 ] Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut.
 
 Laporan Mikrokontroler Modul 5
 
 12
 
 STEP 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
 
 PERINTAH Start Ambil data yang ada pada alamat 1900 dan simpan di Reg. A Jumlahkan data yang ada di register A dengan data yang ada pada alamat 1902 Simpan hasil penjumlahan yang ada di register A pada alamat 1904 Ambil data yang ada pada alamat 1901 dan simpan di Reg. A Jumlahkan data yang ada di register A dengan data yang ada pada alamat 1903 dan sertakan bit Carry Flag Simpan hasil penjumlahan yang ada di register A pada alamat 1905 Ambil bit Carry Flag Simpan pada alamat 1906 Stop
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program.
 
 Laporan Mikrokontroler Modul 5
 
 13
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya. Addr
 
 Kode Operasi
 
 No.
 
 1800
 
 DD 21 00 19
 
 1.
 
 LD IX , 1900
 
 1804
 
 DD 7E 00
 
 2.
 
 LD A , (IX+00
 
 1807
 
 DD 86 02
 
 3.
 
 ADD A , (IX+02)
 
 180A
 
 DD 77 04
 
 4.
 
 LD (IX+04) , A
 
 180D
 
 DD 7E 01
 
 5.
 
 LD A , (IX+01)
 
 1810
 
 DD 8E 03
 
 6.
 
 ADC A, (IX+03)
 
 1813
 
 DD 77 05
 
 7.
 
 LD (IX+05) , A
 
 1816
 
 3E 00
 
 8.
 
 LD A , 00
 
 1818
 
 8F
 
 9.
 
 ADC A , A
 
 1819
 
 DD 77 06
 
 10.
 
 LD (IX+06) , A
 
 181C
 
 FF
 
 11.
 
 RST 38
 
 Laporan Mikrokontroler Modul 5
 
 Label
 
 Assembly
 
 Keterangan
 
 14
 
 d). Pemasukan Program dan Eksekusi Program : o Masukkan program di atas dan uji menggunakan data seperti tabel berikut ini; o Sebelum dieksekusi masukkan data 1 dan data 2 di memori sesuai alamat satu per satu dari kasus 1 sampai dengan kasus 5. Kasus 1. 2. 3. 4. 5.
 
 Data 1
 
 Data 2
 
 Data 1 + Data 2
 
 [1900]
 
 [1901]
 
 [1902]
 
 [1903]
 
 [1904]
 
 [1905]
 
 [1906]
 
 10 06 8F 2C F4
 
 00 05 9F 7F 2A
 
 03 08 F5 77 7C
 
 02 07 AF 2D C2
 
 13 0E 84 A3 70
 
 02 0C 4F (F = 1D) AC (F = BC) ED (F = 48)
 
 00 00 01 00 (F = 40) 00 (F = 40)
 
 e). Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. Konsultasilah dengan Guru atau Tutor saudara jika ada masalah. f). Analisa Data Pertama data yang akan digunakan sebagai angka perkalian dimasukkan ke dalam address 1900 dan angka pengali dimasukkan ke dalam address 1902. Dari address 1900 dimasukkan dan disimpan ke register A. Kemudian data yang ada pada register A dijumlahkan dengan data yang ada pada address 1902 dan hasilnya dimasukkan ke dalam alamat 1904. Hal yang sama dilakukan pada address 1901 yang akan dimasukkan datanya ke register A dan kemudian ditambahkan dengan data yang ada pada address 1903 dan kemudian menaruh hasilnya pada register 1905. Namun pada ini ditambahkan bit carry yang kemudan diletakkan pada address 1906.
 
 Laporan Mikrokontroler Modul 5
 
 15
 
 o Percobaan II Kasus. Buatlah Algoritma Program, Flow Chart dan Program untuk menjumlahkan 2 byte bilangan desimal yang masing-masing beralamat di 1900H, 1901H, 1902H, 1903H. Simpanlah hasilnya di alamat 1904H, 1905H, 1906H. Program di tulis pada alamat awal program 1800H. Pola masalah : [ 1901 ] [ 1900 ] [ 1903 ] [ 1902 ] + ------------------------------------------------[ 1906 ] [ 1905 ] [ 1904 ] Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Ambil data yang ada pada alamat 1900 dan simpan di Reg. A
 
 3.
 
 Jumlahkan data yang ada di register A dengan data yang ada pada alamat 1902
 
 4.
 
 Lakukan koreksi DAA
 
 5.
 
 Simpan hasil penjumlahan yang ada di register A pada alamat 1904
 
 6.
 
 Ambil data yang ada pada alamat 1901 dan simpan di Reg. A
 
 7.
 
 Jumlahkan data yang ada di register A dengan data yang ada pada alamat 1903 dan sertakan bit Carry Flag
 
 8.
 
 Lakukan koreksi DAA
 
 9.
 
 Simpan hasil penjumlahan yang ada di register A pada alamat 1905
 
 10.
 
 Ambil bit Carry Flag
 
 11.
 
 Simpan pada alamat 1906
 
 12.
 
 Stop
 
 Laporan Mikrokontroler Modul 5
 
 16
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program.
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya.
 
 Laporan Mikrokontroler Modul 5
 
 17
 
 Addr
 
 Kode Operasi
 
 No.
 
 Label
 
 Assembly
 
 1800
 
 DD 21 00 19
 
 1.
 
 LD IX , 1900
 
 1804
 
 DD 7E 00
 
 2.
 
 LD A , (IX+00
 
 1807
 
 DD 86 02
 
 3.
 
 ADD A , (IX+02)
 
 180A
 
 27
 
 4.
 
 DAA
 
 180B
 
 DD 77 04
 
 5.
 
 LD (IX+04) , A
 
 180E
 
 DD 7E 01
 
 6.
 
 LD A , (IX+01)
 
 1811
 
 DD 8E 03
 
 7.
 
 ADC A, (IX+03)
 
 1814
 
 27
 
 8.
 
 DAA
 
 1815
 
 DD 77 05
 
 9.
 
 LD (IX+05) , A
 
 1818
 
 3E 00
 
 10.
 
 LD A , 00
 
 181A
 
 8F
 
 11.
 
 ADC A , A
 
 181B
 
 DD 77 06
 
 12.
 
 LD (IX+06) , A
 
 181E
 
 FF
 
 13.
 
 RST 38
 
 Keterangan
 
 KOREKSI
 
 KOREKSI
 
 d). Pemasukan Program dan dan Eksekusi Program : o Masukkan program di atas dan uji menggunakan data seperti tabel berikut ini; o Sebelum dieksekusi masukkan data 1 dan data 2 di memori sesuai alamat satu per satu dari kasus 1 sampai dengan kasus 5. Kasus
 
 Data 1 [1900]
 
 Data 2 [1901]
 
 [1902]
 
 Data 1 + Data 2 [1903]
 
 [1904]
 
 [1905]
 
 [1906]
 
 1. 10 00 03 02 13 02 00 2. 06 05 08 07 0E 0C 00 3. 45 90 25 15 6A A5 00 4. 90 80 77 65 07 E6 00 (F = 00) 5. 64 77 29 21 8D 98 00 (F = 40) e). Bagaimana dengan hasil eksekusi program saudara apakah sesuai dengan kasus/ permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. Konsultasilah dengan Guru atau Tutor saudara jika ada masalah.
 
 Laporan Mikrokontroler Modul 5
 
 18
 
 f). Analisa Data Hampir sama dengan percobaan I, namun yang berbeda adalah data yang digunakan adalah bilangan decimal, namun tetap harus diubah dahulu menjadi nilai heksa dahulu. Pertama data yang akan digunakan sebagai angka perkalian dimasukkan ke dalam address 1900 dan angka pengali dimasukkan ke dalam address 1902. Dari address 1900 dimasukkan dan disimpan ke register A. Kemudian data yang ada pada register A dijumlahkan dengan data yang ada pada address 1902 dan hasilnya dimasukkan ke dalam alamat 1904. Hal yang sama dilakukan pada address 1901 yang akan dimasukkan datanya ke register A dan kemudian ditambahkan dengan data yang ada pada address 1903 dan kemudian menaruh hasilnya pada register 1905. Namun pada ini ditambahkan bit carry yang kemudan diletakkan pada address 1906.
 
  Percobaan III Kasus. Buatlah Algoritma Program, Flow Chart dan Program untuk pengurangan 1 byte bilangan biner yang masing-masing beralamat di 1900H, 1901H. Simpanlah hasilnya di alamat 1902. Program di tulis pada alamat awal program 1800H. Pola masalah : [ 1900 ] [ 1901 ] --------------------------[ 1902 ] Penyelesaian: a). Algoritma : Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP 1. 2. 3. 4. 5.
 
 PERINTAH Start Ambil data yang ada pada alamat 1900 dan simpan di Reg. A Kurangkan data yang ada di register A dengan data yang ada pada alamat 1901 Simpan hasil pengurangan yang ada di register A pada alamat 1902 Stop
 
 Laporan Mikrokontroler Modul 5
 
 19
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program.
 
 c) Penulisan Program : Addr
 
 Kode Operasi
 
 No.
 
 1800
 
 DD 21 00 19
 
 1.
 
 LD IX , 1900
 
 1804
 
 DD 7E 00
 
 2.
 
 LD A , (IX+00)
 
 1807
 
 DD 96 01
 
 3.
 
 SUB , (IX+01)
 
 180A
 
 DD 77 02
 
 4.
 
 LD (IX+2)A,
 
 180D
 
 FF
 
 5.
 
 RST 38
 
 Laporan Mikrokontroler Modul 5
 
 Label
 
 Assembly
 
 Keterangan
 
 20
 
 d). Pengujian Program : Masukkan program di atas dan uji menggunakan data seperti tabel berikut : KASUS
 
 [1900]
 
 [1901]
 
 [1902]
 
 1.
 
 F5
 
 2D
 
 C8
 
 2.
 
 E7
 
 D5
 
 12
 
 3.
 
 8F
 
 F5
 
 9A
 
 Program diatas adalah program pengurangan bilangan biner. Untuk membuat program tersebut bekerja sebagai program pengurangan bilangan desimal maka perlu di tambahkan satu perintah koreksi DAA seperti program berikut : Addr
 
 Kode Operasi
 
 No.
 
 Label
 
 Assembly
 
 1800
 
 DD 21 00 19
 
 1.
 
 LD IX , 1900
 
 1804
 
 DD 7E 00
 
 2.
 
 LD A , (IX+00)
 
 1807
 
 DD 96 01
 
 3.
 
 SUB , (IX+01)
 
 180A
 
 27
 
 4.
 
 DAA
 
 180B
 
 DD 77 02
 
 5.
 
 LD (IX+2)A,
 
 180E
 
 FF
 
 6.
 
 RST 38
 
 Keterangan
 
 Pengujian Program : Masukkan program di atas dan uji menggunakan data seperti tabel berikut : KASUS
 
 [1900]
 
 [1901]
 
 [1902]
 
 1.
 
 80
 
 40
 
 40
 
 2.
 
 90
 
 25
 
 65
 
 3.
 
 55
 
 15
 
 40
 
 Laporan Mikrokontroler Modul 5
 
 21
 
 Program pengurangan dapat dibuat menjadi program penjumlahan dengan menegatifkan bilangan pengurangnya. Program berikut menghasilkan keluaran yang sama. Addr
 
 Kode Operasi
 
 No.
 
 Label
 
 Assembly
 
 1800
 
 DD 21 00 19
 
 1.
 
 LD IX , 1900
 
 1804
 
 DD 7E 00
 
 2.
 
 LD A , (IX+00)
 
 1807
 
 ED 44
 
 3.
 
 NEG
 
 1809
 
 47
 
 4.
 
 LD B, A
 
 180A
 
 DD 7E 00
 
 5.
 
 LD A,(IX+00)
 
 180D
 
 80
 
 180E
 
 27
 
 4.
 
 DAA
 
 180B
 
 DD 77 02
 
 5.
 
 LD (IX+2)A,
 
 180E
 
 FF
 
 6.
 
 RST 38
 
 Keterangan
 
 AAD , B
 
 Pengujian Program : Masukkan program di atas dan uji menggunakan data seperti tabel berikut : [1900]
 
 [1901]
 
 [1902]
 
 80
 
 40
 
 A0
 
 90
 
 25
 
 D1
 
 55
 
 15
 
 A6
 
 e). Analisa Data Pada program pertama, merupakan program pengurangan secara langsung. Hal ini berarti data di masukkan ke alamat 1900 dan kemudian diletakkan dan disimpan pada register A. Kemudian pada register A dikurangkan dengan data yang telah ada pada alamat 1901 dan di register A kemudian dialihkan ke address 1902. Pada program kedua, menggunakan program koreksi DAA sebagai korektor untuk bilangan decimal yang digunakan. Bilangannya adalah 0110, yaitu dengan menambahkan angka tersebut ke bilangan decimal sehingga bilangan dapat ditambahkan, karena pada Z80 tidak dapat mengolah bilangan selain bilangan heksa. Pada program ketiga, menggunakan cara mengubah bilangan pengurang menjadi negasinya kemudian baru mengoperasikannya dan mengoreksinya dengan menggunakan bilangan korektor.
 
 Laporan Mikrokontroler Modul 5
 
 22
 
 Kegiatan Belajar III : Percobaan Aplikasi Aritmetika “Kali-Bagi” Saudara tentu masih ingat bahwa Mikroprosesor Z-80 CPU tidak memiliki instruksi aritmetika perkalian. Operasi perkalian biner tak bertanda dapat dilakukan dengan dua cara yaitu : (1) dengan menggeser bilangan biner ke kiri dan (2) melkukan penjumlahan berulang. Contoh :
 
 Perkalian cara geser bekerja memeriksa bilangan pengali. Jika bit tersebut berlogika 1, bilangan yang dikalikan ditulis sama. Jika bit tersebut adalah 0, tuliskan 0000. Posisi bilangan-bilangan yang disimpan tersebut diatur sehingga bit berorde paling kecil dari bilangan yang dikalikan berada satu garis dengan bit bilangan pengali yang sedang diperiksa. Dalam contoh diatas, bilangan yang dikalikan dengan bilangan pengali adalah 4 bit. Jadi operasi pemeriksaan, penggeseran, dan penjumlahan diulang 4 kali. Untuk perkalian 8 bit operasi diulang 8 kali, dan untuk perkalian 16 bit operasi diulang 16 kali. Perkalian cara penjumlahan berulang , bilangan yang dikalikan dijumlahkan sebanyak bilangan pengalinya.
 
 Laporan Mikrokontroler Modul 5
 
 23
 
  Percobaan IV Kasus : Kalikan data 8 bit pada register E dengan data 8 bit pada register A. Hasilnya disimpan pada register HL. Penyelesaian: Cara I dengan Metoda Geser Bit a). Algoritma :
 
 Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Set data pada Register E sebagai data Bilangan yang dikalikan
 
 3.
 
 Set data pada Register A sebagai data Bilangan pengali
 
 4.
 
 Set Register B = 8 sebagai pengulangan 8 kali loop
 
 5.
 
 Set Register D = 00h
 
 6.
 
 Set Register HL = 0000h
 
 7.
 
 Geser kekiri isi Register D (SLA D)
 
 8.
 
 Geser ke kiri isi Register E (SLA E)
 
 9.
 
 Jumlahkan isi Register D dengan 0 sertakan bit Cy
 
 10.
 
 Putar bit Data register A ke kiri (RLC A)
 
 1.
 
 Apakah Cy = 0
 
 12.
 
 Jika Ya lompat ke STEP 14
 
 13.
 
 Jumlahkan isi Register HL dengan isi Register DE
 
 14.
 
 Kurangi isi Register B dengan 1
 
 15.
 
 Apakah Z = 0
 
 16.
 
 Jika Ya kembali ke STEP 7
 
 17.
 
 Stop
 
 Laporan Mikrokontroler Modul 5
 
 24
 
 b). Flowchart: Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program.
 
 c). Penulisan Program : Penulisan program dalam bahasa assembly pertama-tama disarankan membuat table dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya.
 
 Laporan Mikrokontroler Modul 5
 
 25
 
 Addr
 
 Kode Operasi
 
 No.
 
 1800
 
 1E XX
 
 1802
 
 Label
 
 Assembly
 
 Keterangan
 
 1.
 
 LDE ,XX
 
 Bil.dikalikan
 
 3E XX
 
 2.
 
 LD A , XX
 
 Bil.pengali
 
 1804
 
 06 08
 
 3.
 
 LDB ,08H
 
 Σ putaran
 
 1806
 
 16 00
 
 4.
 
 LD D, 00H
 
 1808
 
 21 00 00
 
 5.
 
 LD HL, 0000H
 
 180B
 
 Cb 22
 
 6.
 
 180D
 
 CB 23
 
 7.
 
 SLA E
 
 180F
 
 4F
 
 8.
 
 LDC, A
 
 1810
 
 7A
 
 9.
 
 LDA,D
 
 1811
 
 CE 00
 
 10.
 
 ADCA, 00H
 
 1813
 
 57
 
 11.
 
 LD D,A
 
 1814
 
 79
 
 12.
 
 LDA,C
 
 1815
 
 07
 
 13.
 
 RLCA
 
 1816
 
 D2 1A 18
 
 14.
 
 JP NC,MAJU
 
 1819
 
 19
 
 15.
 
 ADD HL,DE
 
 181A
 
 10 EF
 
 16.
 
 DJNZ,LOOP
 
 181C
 
 FF
 
 17.
 
 RST 38
 
 LOOP
 
 ADD HL, HL
 
 d). Pemasukan Program dan Eksekusi Program : o Masukkan program di atas dan uji menggunakan data seperti tabel berikut ini; o Sebelum dieksekusi masukkan nilai Register A dan Register E dengan mengganti OpCode XX sesuai data kasus di bawah ini Kasus
 
 Data 1
 
 Data 2
 
 Data 1 X Data 2
 
 REGISTER A
 
 REGISTER E
 
 REGISTER HL
 
 1.
 
 25
 
 05
 
 0668
 
 2.
 
 45
 
 09
 
 0B64
 
 3.
 
 2C
 
 0A
 
 0410
 
 4.
 
 F5
 
 09
 
 0C4E
 
 5.
 
 D2
 
 0F
 
 08CA
 
 Laporan Mikrokontroler Modul 5
 
 26
 
 e).
 
 Bagaimana
 
 dengan
 
 hasil
 
 eksekusi
 
 program
 
 saudara
 
 apakah
 
 sesuai
 
 dengan
 
 kasus/permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. Konsultasilah dengan Guru atau Tutor saudara jika ada masalah. f). Program diatas dapat dibuat lebih sederhana seperti program berikut ini. Addr
 
 Kode Operasi
 
 No.
 
 1800
 
 1E XX
 
 1802
 
 Label
 
 Assembly
 
 Keterangan
 
 1.
 
 LDE ,XX
 
 Bil.dikalikan
 
 3E XX
 
 2.
 
 LD A , XX
 
 Bil.pengali
 
 1804
 
 06 08
 
 3.
 
 LDB ,08H
 
 Σ putaran
 
 1806
 
 16 00
 
 4.
 
 LD D, 00H
 
 1808
 
 21 00 00
 
 5.
 
 LD HL, 0000H
 
 180B
 
 29
 
 6.
 
 180C
 
 07
 
 7.
 
 RLCA
 
 180D
 
 30 01
 
 8.
 
 JR NC , MAJU
 
 1810
 
 19
 
 9.
 
 ADD HL,DE
 
 1810
 
 10 F9
 
 10.
 
 DJN ,LOOP
 
 1812
 
 FF
 
 11.
 
 RST 38
 
 LOOP
 
 ADD HL , HL
 
 STOP
 
  Analisa Data Program dimulai dengan set data register E sebagai data bilangan yang dikalikan, setelah itu set data pada register A sebagai data bilangan pengali. Masing-masing bilangan yang dikalikan dan dikali terdapat pada tabel kasus. Set register B dengan 8 yaitu sebagai pengulangan 8 kali loop. Register D diisi 00h dan register HL diisi 0000h. Isi register D dan E digeser kiri, kemudian menjumlahkan isi register D dengan 0 dan menyertakan bit Cy. Bit Data register A diputar ke kiri. Kemudian dengan melihat apakah Carry = 0, jika YA lompat ke STEP 14 dengan menjumlahkan isi Register HL dengan isi Register DE. Saat itulah isi Register B dikurangi dengan 1 sampai z = 0 lalu program berhenti, jika z belum menjadi 0, maka perulangan akan terus terjadi dan kembali ke STEP 7.
 
 Laporan Mikrokontroler Modul 5
 
 27
 
 Penyeleasian cara II dengan metode penjumlahan perulangan a) Alogoritma : Langkah pertama membuat program sebagai berikut STEP 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
 
 PERINTAH
 
 Start Set data pada register E sebagai data bilangan yang dikalikan Set data pada register A sebagai data bilangan untuk dikali Set register D =00h Ser register HL =0000h Jumlah isi register HL dengan register DE Kurangi A dengan 1 Apakah z =0 Jika ya kembali pada step 6 berhenti
 
 b) Flowchart Langhah kedua membuat flow chart
 
 Laporan Mikrokontroler Modul 5
 
 28
 
 c) Penulisan program Penulisan program dalam bahasa asemmbly pertama tama membuat tabel sesuai dibawah ini Addr
 
 Kode
 
 No .
 
 Label
 
 Assembly
 
 Keterangan
 
 operasi 1800
 
 1E XX
 
 1.
 
 LD E,XX
 
 Bil dikalikan
 
 1802
 
 3E XX
 
 2.
 
 LD A,XX
 
 Bil pengali
 
 1804
 
 16 00
 
 3.
 
 LD D,00h
 
 jumlahputaran
 
 1806
 
 21 00 00
 
 4.
 
 LD HL,0000h
 
 1809
 
 19
 
 5.
 
 LOOP
 
 ADD HL ,DE
 
 180A
 
 3D
 
 6.
 
 DEC A
 
 180B
 
 C2 09 18
 
 7.
 
 JP NZ, LOOP
 
 180E
 
 FF
 
 8.
 
 RST 38
 
 d) Pemasukan program dan eksekusi program 
 
 Masukan program di atas dan uji dengan program
 
 
 
 Sebelum di eksekusi masukan nilai .Register A dan E dengan mengganti op – code XX sesuai data kusus di bawah ini No .
 
 Data 1
 
 Data 2
 
 Data 1 x data 2
 
 Reg A
 
 Reg B
 
 Reg HL
 
 1
 
 25
 
 05
 
 00B9
 
 2
 
 45
 
 09
 
 0159
 
 3
 
 2C
 
 0A
 
 0168
 
 4
 
 F5
 
 09
 
 089D
 
 5
 
 D2
 
 0F
 
 0C4E
 
 Laporan Mikrokontroler Modul 5
 
 29
 
 e) Bagaiman hasil eksekusi program anda apakah sudah sesuai dengan kasus permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. Konsultasilah dengan Guru atau Tutor saudara jika ada masalah f) Analisa Data Sebelumnya set data register E sebagai data bilangan yang dikalikan dan set data pada register A sebagai data bilangan pengali. Setelah itu isi register D dengan 00h dan isi register HL dengan data 0000h. Setelah ituisidari Register HL dijumlahkan denganisi Register DE. Langkah berikutnya mengurangiisi dari Register A dengan 1. Jika hasil dari Z = 0, maka berhenti. Tetapi jika tidak sama dengan 0, maka akan kembalike STEP 6.
 
  Percobaan V a. Kasus Bagi data 8 bit pada register A dengan data 8 bit pada register E. Hasilnya disimpan pada register C. a) Alogaritma Langkah pertama buatlah algoritma yang menunjukkan step atau langkah kerja proses kerja program sebagai berikut. STEP
 
 PERINTAH
 
 1.
 
 Start
 
 2.
 
 Set data pada Register E sebagai data Bilangan pembagi
 
 3.
 
 Set data pada Register A sebagai data Bilangan yang dibagi
 
 4.
 
 Set Register C = 00h
 
 5.
 
 Bandingkan isi Register A dengan isi Register E
 
 6.
 
 Apakah Cy = 1
 
 7.
 
 Jika Ya lompat ke STEP 11
 
 8.
 
 Kurangkan isi register A dengan isi register E
 
 9.
 
 Tambahkan isi register C dengan 1
 
 10.
 
 Kembali ke STEP 5
 
 11.
 
 Copykan isi register A ke register B
 
 12.
 
 Stop
 
 Laporan Mikrokontroler Modul 5
 
 30
 
 b) Flowchart Langkah kedua yang harus dilakukan adalah membuat flowchart sebagai diagram yang menunjukkan proses aliran kerja program.
 
 c) Penulisan pemrograman Penulisan program dalam bahasa assembly pertama-tama disarankan membuat tabel dengan format seperti dibawah ini. Setiap baris isilah nomor 1 sampai dengan ke n. Perhatikan perintah program mulai dari yang ke satu, termasuk kategori apa lalu tetapkan perintah assembly-nya. Tuliskan semua pada kolom Assembly. Cari kode operasi masing-masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi. Kemudian berikan alamat sesuai jumbah byte kode operasinya
 
 Laporan Mikrokontroler Modul 5
 
 31
 
 addr
 
 Kode operasi
 
 No
 
 1800
 
 1E XX
 
 1802
 
 Label
 
 Assembly
 
 Keterangan
 
 1.
 
 LD E ,XX
 
 bil. pembagi
 
 3E XX
 
 2.
 
 LD A ,XX
 
 bil. terbagi
 
 1804
 
 0E 00
 
 3.
 
 LD C ,00H
 
 1806
 
 BB
 
 4.
 
 1807
 
 DA OE 18
 
 5.
 
 JPC ,STOP
 
 1809
 
 93
 
 6.
 
 SUB E
 
 180A
 
 0C
 
 7.
 
 INC C
 
 180B
 
 C3 06 18
 
 8.
 
 JP, LOOP
 
 189E
 
 47
 
 9.
 
 181F
 
 FF
 
 10.
 
 LOOP
 
 CP , E
 
 STOP
 
 LD B ,A RST 38
 
 d) Program dan eksekusi 
 
 masukkan program di atas dan uji menggunakan data seperti tabel berikut ini;
 
 
 
 Sebelum dieksekusi masukkan nilai Register A dan Register E dengan mengganti Op-Code XX sesuai data kasus di bawah ini
 
 No
 
 Data 1
 
 Data 2
 
 Data 1 : Data 2
 
 Reg A
 
 Reg B
 
 Reg B
 
 Reg C
 
 1
 
 25
 
 05
 
 EB
 
 07
 
 2
 
 45
 
 09
 
 EB
 
 07
 
 3
 
 2C
 
 0A
 
 EB
 
 04
 
 4
 
 F5
 
 09
 
 EB
 
 16
 
 5
 
 D2
 
 0F
 
 EB
 
 15
 
 .
 
 e) Bagaimana
 
 hasil eksekusi program saudara apakah sesuai dengan kasus/
 
 permasalahan. Jika tidak sesuai berarti masih ada kesalahan yang harus dicari dan diperbaiki. Konsultasilah dengan Guru atau Tutor saudara jika ada masalah
 
 Laporan Mikrokontroler Modul 5
 
 32
 
 f) Analisa Data Sebelumnya mengisi data pada Register E sebagai data Bilangan pembagi dan mengisi data pada Register A sebagai data Bilangan yang dibagi. Register C diisi dengan 00h. Kemudian Isi dari Register A dibandingkan dengan isi Register E. Jika hasilnya Carry = 1, maka lompat ke STEP 11 dan mengisi register B dengan isi dari register A. Tetapi jika Carry = 0 maka isi register A dikurangi dengan isi register E. Lalu menambahkan isi register C dengan 1. Kemudian kembali ke STEP 5 serta mengcopykan isi register A ke register B.
 
 Laporan Mikrokontroler Modul 5
 
 33
 
 Kegiatan Belajar IV : KEYPAD ENCODER Nama Subrutin
 
 : SCAN1
 
 Alamat Awal
 
 : 0624H
 
 Fungsi
 
 : Menyajikan tulisan LED secara multiplek dan melakukan scanning tombol Keypad dalam satu siklus, meliputi 36 buah tombol dan 6 buah LED sevent segment
 
 Jangka Waktu
 
 : 9,97 mili detik
 
 Input Data
 
 : Data karakter penyalaan segment LED berjumlah 6 byte disimpan berurutan pada memori Data Led segment yang paling kanan ditempatkan pada alamat terendah dan Data Led segment yang paling kiri ditempatkan pada alamat tertinggi. Alamat awal tempat simpan data karakter harus dicatat oleh register IX.
 
 Output Data
 
 : Jika tombol tidak ditekan , bit carry flag CY=1. Jika tombol ditekan CY=0 dan memberi kode posisi tombol pada pada register A.
 
 Berikut contoh-contoh penggunaan subrutin SCAN1. Contoh Program 03 Addr
 
 Op-code
 
 No 1
 
 Label
 
 Assembly
 
 keterangan
 
 Program 03 : menyalakan tulisan 123456 selama 1 detik
 
 2 3
 
 SCAN1
 
 EQU 0624H
 
 4
 
 ORG1800
 
 1800
 
 DD 21 0C 18
 
 5
 
 LD IX, ANGKA
 
 1804
 
 06 64
 
 6
 
 LD B, 64H
 
 64H=100D>pengali
 
 7 1806
 
 CD 24 06
 
 8
 
 1809
 
 10 FB
 
 9
 
 Laporan Mikrokontroler Modul 5
 
 Nyala
 
 CALL SCAN1 DJNZ Nyala
 
 34
 
 180B
 
 76
 
 10
 
 HALT
 
 11 180C
 
 12
 
 180D
 
 ANGKA
 
 DB AFH
 
 Data angka 6
 
 13
 
 DB AEH
 
 Data angka 5
 
 180E
 
 14
 
 DB 36H
 
 Data angka 4
 
 180F
 
 15
 
 DB BAH
 
 Data angka 3
 
 1810
 
 16
 
 DB 9BH
 
 Data angka 2
 
 1811
 
 17
 
 DB 30H
 
 Data angka 1
 
 18
 
 END
 
 ANALISA DATA Program 03 : menyalakan tulisan 123456 selama 1 detik SCAN1
 
 Nyala
 
 EQU 0624H
 
 ; alamat awal sub rutin SCAN1
 
 ORG1800
 
 ; program dimulai dari alamat 1800
 
 LD IX, ANGKA
 
 ; IX diisi data nyala segment LED (ANGKA)
 
 LD B, 64H
 
 ; kostanta waktu tunda
 
 CALL SCAN1
 
 ; menyajikan tulisan LED
 
 DJNZ Nyala
 
 ; dec B jump ke Nyala jika Z= 0, lanjut HALT jika Z=1
 
 HALT ANGKA
 
 DB AFH
 
 ; data penyalaan LED
 
 DB AEH DB 36H DB BAH DB 9BH DB 30H END
 
 Contoh program 04
 
 Addr
 
 Op-code
 
 No
 
 Laporan Mikrokontroler Modul 5
 
 Label
 
 Assembly
 
 keterangan
 
 35
 
 1
 
 Program 04 : menyalakan tulisan 123456 berkedip tiap
 
 2
 
 1 detik
 
 3
 
 SCAN1
 
 EQU 0624H
 
 4
 
 ORG1800
 
 1800
 
 21 13 18
 
 5
 
 LD HL, ANGKA
 
 1803
 
 E5
 
 6
 
 PUSH HL
 
 1804
 
 DD 21 19 18
 
 7
 
 LD IX, PADAM
 
 1808
 
 DD E3
 
 8
 
 180A
 
 06 64
 
 9
 
 Kedip
 
 EX(SP), IX LD B, 64H
 
 64H=100D>pengali
 
 10 180C
 
 CD 24 06
 
 11
 
 Tampil
 
 CALL SCAN1
 
 180F
 
 10 FB
 
 12
 
 DJNZ Tampil
 
 1811
 
 18 F5
 
 13
 
 JR Tampil
 
 14 1813
 
 AF
 
 15
 
 1814
 
 AE
 
 1815
 
 ANGKA
 
 DB AFH
 
 Data angka 6
 
 16
 
 DB AEH
 
 Data angka 5
 
 36
 
 17
 
 DB 36H
 
 Data angka 4
 
 1816
 
 BA
 
 18
 
 DB BAH
 
 Data angka 3
 
 1817
 
 9B
 
 19
 
 DB 9BH
 
 Data angka 2
 
 1818
 
 30
 
 20
 
 DB 30H
 
 Data angka 1
 
 1819
 
 00
 
 21
 
 DB 00H
 
 Data PADAM
 
 181A
 
 00
 
 22
 
 DB 00H
 
 Data PADAM
 
 181B
 
 00
 
 23
 
 DB 00H
 
 Data PADAM
 
 181C
 
 00
 
 24
 
 DB 00H
 
 Data PADAM
 
 181D
 
 00
 
 25
 
 DB 00H
 
 Data PADAM
 
 181E
 
 00
 
 26
 
 DB 00H
 
 Data PADAM
 
 27
 
 END
 
 PADAM
 
 ANALISA DATA Program 04 : menyalakan tulisan 123456 berkedip tiap 1 detik SCAN1
 
 EQU 0624H
 
 ; alamat awal sub rutin SCAN1
 
 ORG1800
 
 ; program dimulai dari alamat 1800
 
 LD HL, ANGKA
 
 ; HL diisi data nyala segment LED (ANGKA)
 
 Laporan Mikrokontroler Modul 5
 
 36
 
 PUSH HL
 
 ; muati lokasi alamat sama dengan isi register SP-1 dengan data dari register HLH dan SP-2 dengan data dari register HLL
 
 LD IX, PADAM Kedip
 
 Tampil
 
 ; IX diisi data untuk memadamkan LED(PADAM)
 
 EX(SP), IX LD B, 64H
 
 ; kostanta waktu tunda
 
 CALL SCAN1
 
 ; menyajikan tulisan LED
 
 DJNZ Tampil
 
 ; dec B jump ke Nyala jika Z= 0, lanjut JR Tampil apabila Z=1
 
 JR Tampil
 
 ; lompat relatif tanpa syarat ke Tampil
 
 ANGKA DB AFH
 
 ; data penyalaan LED
 
 DB AEH DB 36H DB BAH DB 9BH DB 30H PADAM DB 00H
 
 ; data untuk memadamkan LED
 
 DB 00H DB 00H DB 00H DB 00H DB 00H END Nama Subrutin
 
 : SCAN
 
 Alamat Awal
 
 : 05FEH
 
 Fungsi
 
 : Menyajikan tulisan LED secara multiplek dan melakukan scanning tombol Keypad dalam satu siklus, meliputi 36 buah tombol dan 6 buah LED sevent segment
 
 Jangka Waktu
 
 : Terus menerus menunggu hingga salah satu tombol ditekan
 
 Input Data
 
 : Data karakter penyalaan segment LED berjumlah 6 byte disimpan berurutan pada memori Data Led segment yang paling kanan ditempatkan pada alamat terendah dan Data Led segment
 
 Laporan Mikrokontroler Modul 5
 
 37
 
 yang paling kiri ditempatkan pada alamat tertinggi. Alamat awal tempat simpan data karakter harus dicatat oleh register IX. Output Data
 
 : Jika tombol tidak ditekan , bit carry flag CY=1. Jika tombol ditekan CY=0 dan memberi kode internal tombol pada pada register A.
 
 Addr
 
 Op-code
 
 No
 
 Label
 
 Assembly
 
 keterangan
 
 1
 
 Program 05: Menyajikan Tulisan SCAN--
 
 2
 
 Penyajian berhenti jika tombol STEP ditekan
 
 3
 
 SCAN
 
 EQU 05FEH
 
 4
 
 ORG1800 LD IX, TULISAN
 
 1800
 
 DD 21 0C 18
 
 5
 
 1804
 
 CD FE 05
 
 6
 
 1807
 
 FE 13
 
 7
 
 CP STEP
 
 1809
 
 20 F9
 
 8
 
 JR NZ, Nyala
 
 180B
 
 76
 
 9
 
 HALT
 
 180C
 
 02
 
 10
 
 180D
 
 02
 
 180E
 
 Nyala
 
 TULISAN
 
 CALL SCAN
 
 DB 02H
 
 Data tulisan -
 
 11
 
 DB 02H
 
 Data tulisan -
 
 23
 
 12
 
 DB 23H
 
 Data tulisan N
 
 180F
 
 BB
 
 13
 
 DB BBH
 
 Data tulisan A
 
 1810
 
 83
 
 14
 
 DB 83H
 
 Data tulisan C
 
 1811
 
 AE
 
 15
 
 DB AEH
 
 Data tulisan S
 
 16
 
 END
 
 ANALISA DATA Program 05: Menyajikan tulisan SCAN--.Penyajian berhenti jika tombol STEP ditekan
 
 Nyala
 
 LDIX,TULISAN
 
 ; alamat data untu TULISAN disimpan di register IX
 
 CP STEP
 
 ; pembanding dengan penekanan STEP
 
 JRNZ, Nyala
 
 ; jika STEP di tekan akan menghasilkan kondisi Z=1 ; program akan continue keperintah HALT
 
 HALT Laporan Mikrokontroler Modul 5
 
 ; berhenti 38
 
 TULISAN
 
 DB02H
 
 ; data tulisan -
 
 DB02H
 
 ; data tulisan -
 
 DB23H
 
 ; data tulisan N
 
 DBBBH
 
 ; data tulisan A
 
 DB83H
 
 ; data tulisan C
 
 DBAEH
 
 ; data tulisan S
 
 END
 
 ; program selesai
 
 Program 06 Addr
 
 Op-code
 
 No
 
 Label
 
 Assembly
 
 keterangan
 
 1
 
 Program 06 : menyajikan tulisan seperti kakulator , ketikan
 
 2
 
 hanya angka 0 s/d 9 berhenti jika tombol STEP ditekan
 
 3
 
 SCAN
 
 EQU 05FEH
 
 4
 
 BUFDIS
 
 EQU 1A00
 
 5
 
 ORG 1800
 
 1800
 
 DD 21 05 1A
 
 6
 
 LD IX, BUFDIS+5
 
 Membersihkan memori
 
 1804
 
 06 06
 
 7
 
 LD B, 06H
 
 pada alamat 1800-1805
 
 1806
 
 DD 36 00 00
 
 8
 
 LD(IX+00), 00H
 
 sehingga LED pada
 
 180A
 
 DD 2B
 
 9
 
 DEC 1X
 
 awal padam
 
 180C
 
 10 FB
 
 10
 
 DJNZ Hapus
 
 Hapus
 
 11 180E
 
 DD 21 00 1A
 
 12
 
 LD IX, BUFDIS
 
 1812
 
 CD FE 05
 
 13
 
 1815
 
 FE 0A
 
 14
 
 CP 0A
 
 1817
 
 38 07
 
 15
 
 JR C, BC Tabel
 
 Ketik
 
 CALL SCAN
 
 16 1819
 
 FE 13
 
 17
 
 CP STEP
 
 181B
 
 CA 2D 18
 
 18
 
 JPZ, SELESAI
 
 181E
 
 18 F2
 
 19
 
 JR Ketik
 
 Laporan Mikrokontroler Modul 5
 
 39
 
 20 1820
 
 21 F0 07
 
 21
 
 BC Tabel
 
 LD HL, 07F0
 
 1823
 
 85
 
 22
 
 ADD A, I
 
 1824
 
 6F
 
 23
 
 LD L, A
 
 1825
 
 7E
 
 24
 
 LD A, (HL)
 
 1826
 
 DD 2B
 
 25
 
 DEC IX
 
 1828
 
 DD 77 00
 
 26
 
 LD (IX+00), A
 
 182B
 
 18 E5
 
 27
 
 JR Ketik
 
 182D
 
 FF
 
 28
 
 SELESAI
 
 ANALISA DATA Program 06 : menyajikan tulisan seperti kakulator , ketikan hanya angka 0 s/d 9 berhenti jika tombol STEP ditekan LD IX, BUFDIS+5
 
 ; membersihkan memori pada alamat 1800 – 1805 sehingga LED pada awal padam
 
 Hapus
 
 LD B, 06H
 
 ; Buat cacahan data 06h di register B
 
 LD(IX+00), 00H
 
 ; Set data awal dengan 00
 
 DEC 1X
 
 ; Kurangi nilai pencatat alamat register IX dengan satu alamat
 
 Ketik
 
 DJNZ Hapus
 
 ; Z=0, kembali ke Hapus
 
 LD IX, BUFDIS
 
 ; Muat data pada alamat 1A00 ke register IX
 
 CALL SCAN
 
 ; Panggil sub rutin SCAN
 
 CP 0A
 
 ; Bandingkan isi register A dengan 0
 
 JR C, BC Tabel CP STEP JPZ, SELESAI BC Tabel
 
 : c=1, lompat ke Tabel ; Bandingkan dengan STEP : Z=1, maka lompat ke SELESAI
 
 JR Ketik
 
 ; Lompatke Ketik
 
 LD HL, 07F0
 
 ; Isi register HL dengan (07F0)
 
 ADD A, I
 
 ; Jumlahkan data pada register A dengan 1
 
 LD L, A
 
 ; Masukan data pada register A ke register L
 
 Laporan Mikrokontroler Modul 5
 
 40
 
 LD A, (HL)
 
 ; Masukan data yang tersimpan di memori tempat simpan data (reg HL) ke register A
 
 DEC IX
 
 ; Kurangi register IX dengan 1
 
 LD (IX+00), A
 
 ; Masukan data pada register A kealamat awal yang tersimpan di register IX
 
 JR Ketik SELESAI C .
 
 ; Lompatke Ketik ; program selesai
 
 KESIMPULAN Pada Kegiatan Belajar V : Keyboard Encoder dapat ditarik kesimpulan bahwa perbedaan dari SCAN1 dengan SCAN adalah SCAN tidak berbataskan oleh waktu sedangkan SCAN1 berbataskan waktu dengan jangka waktu 9,97 mili detik dalam menyajikan tulisan LED secara multiplek dan melakukan scanning tombol Keypad dalam satu siklus, meliputi 36 buah tombol dan 6 buah LED sevent segment.
 
 Laporan Mikrokontroler Modul 5
 
 41
 
 Kegiatan Belajar V : Pemrograman Monitor A.
 
 TUJUAN Memahami pemrograman monitor Komputer Mikro MPF – I
 
 B.
 
 TEORI DASAR MPF-1dilengkapidengan monitor seven segment,keyboard, speaker, memori yang cukupdanI/O untukkeperluan interfacing.Monitor MPF-1 menggunakan 6 buahseven segment dan keyboard menggunakankonfigurasimatrik 6x6 diatassebuah peripheral PPI 8255.
 
 C. ALAT DAN BAHAN 1. Unit Komputer Mikro MPF – I 2. Power Supply
 
 Laporan Mikrokontroler Modul 5
 
 42
 
 D. DATA DAN ANALISA Tabel Data Karakter Penyalaan LED MPF – I :
 
 Laporan Mikrokontroler Modul 5
 
 43
 
 1. Percobaan I: Menyalakan data angka 2 pada LED1 (paling kiri), maka dpat diturunkan data penyalaan dan pemilihan LED, seperti berikut : a. LED 1 paling kiri menyala angka 2 b. LED 2 padam c. LED 3 padam d. LED 4 padam e. LED 5 padam f. LED 6 padam Data penyalaan dan pemilihan LED adalah : a. Data penyalaan angka 2 adalah 9BH b. Data Pemilihan LED1 paling kiri adalah E0H Program :
 
 2. Percobaan II Secara konsep, program sama dengan percobaan I, tetapi ada perbedaan. Perbedaannya adalah seperti berikut : a. Data pemilihan angka 4 adalah 36H b. Data pemilihan LED2 adalah D0H 3. Percobaan III Secara konsep, program sama dengan percobaan I, tetapi ada perbedaan. Perbedaannya adalah seperti berikut : a. Data pemilihan angka 1 adalah 30H b. Data pemilihan LED3 adalah C8H Laporan Mikrokontroler Modul 5
 
 44
 
 4. Percobaan IV Secara konsep, program sama dengan percobaan I, tetapi ada perbedaan. Perbedaannya adalah seperti berikut : a. Data pemilihan angka 9 adalah BEH b. Data pemilihan LED4 adalah C4H 5. Percobaan V Secara konsep, program sama dengan percobaan I, tetapi ada perbedaan. Perbedaannya adalah seperti berikut : a. Data pemilihan angka 6 adalah AFH b. Data pemilihan LED5 adalah C2H 6. Percobaan VI Secara konsep, program sama dengan percobaan I, tetapi ada perbedaan. Perbedaannya adalah seperti berikut : c. Data pemilihan angka 4 adalah 36H d. Data pemilihan LED6 adalah C1H 7. Percobaan VII Penyalaan LED1, LED2, LED3, LED4, LED5, LED6 dengan karakter P. a. LED 1 menyala karakter P b. LED 2 menyala karakter P c. LED 3 menyala karakter P d. LED 4 menyala karakter P e. LED 5 menyala karakter P f. LED 6menyala karakter P Data Pemilihan dan pemilihan LED adalah : a. Data penyalaan karakter P adalah 1FH b. Data pemilihan Semua LED adalah FFH
 
 Laporan Mikrokontroler Modul 5
 
 45
 
 Tujuh contoh program di atas memberi suatu model penyalaan statis yaitu suatu bentuk penyalaan dimana dalam satu waktu hanya ada satu jenis karakter yang dapat disajikan. Hal ini terjadi karena masing-masing segment pada setiap LED terhubung menjadi satu yaitu pada Port B. Agar penyalaan LED dapat menyajikan karakter yang berbeda, maka tiap LED harus dinyalakan secara bergantian dengan perioda nyala tertentu.Jika perioda nyala LED cukup lama maka LED akan Nampak nyala bergantian. Apabila perioda nyala LED dipercepat dengan frekuensi yang cukup maka LED seakan-akan Nampak menyala bersama-sama namun sesungguhnya nyala bergantian. Cara penyalaan LED bergantian dengan perioda yang tepat agar nyala LED cukup terang disebut penyalaan dinamik dan penyalaan tersebut disebut penyalaan secara multiplek. Pola penyalaan multiplek dapat dijelaskan menggunakan algoritma sebagai berikut : a. LED 6 (paling kanan) dinyalakan selama perioda tertentu, sedangkan LED lainnya tetap padam selama perioda itu. b. LED5 dinyalakan selama perioda tertentu sedangkan LED lainnya tetap padam pada perioda itu. c. LED4 dinyalakan selama perioda tertentu sedangkan LED lainnya tetap padam pada perioda itu. d. LED3 dinyalakan selama perioda tertentu sedangkan LED lainnya tetap padam pada perioda itu. e. LED2 dinyalakan selama perioda tertentu sedangkan LED lainnya tetap padam pada perioda itu. f. LED1 dinyalakan selama perioda tertentu sedangkan LED lainnya tetap padam pada perioda itu.
 
 Laporan Mikrokontroler Modul 5
 
 46
 
 Kegiatan Belajar VI : Subrutin Pada MPF-I A.
 
 TUJUAN
 
 Mahasiswa mampu memahami pemakaian fungsi interuksi subrutin HEX7, HEX7SG, RAMCHK, TONE, TONE1K, TONE2K B.
 
 DASAR TEORI Subrutin SCAN dan SCAN1 yang telah dijelaskan adalah subrutin pelayanan yang telah disediakan pada MPF-1. Disamping itu ada subrutin lainnya yaitu : -
 
 SUBROUTINE HEX7 dengan address awal 0689H Fungsi a Output
 
 -
 
 : mengubah data 4 bit terendah di register A menjadi data nyala angka LED. : berada pada register A.
 
 SUBROUTINE HEX7SG dengan address awal 0678H Fungsi
 
 : mengubah data 8 bit (1 byte) di register A menjadi nyala LED.
 
 Output
 
 : berada di memori yang address awal harus dicatat oleh register HL. aaData nyala LED berasal dari nible rendah register A berada di HL dan a nible tinggi berada pada (HL + 1).
 
 -
 
 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
 
 Laporan Mikrokontroler Modul 5
 
 47
 
 RST -
 
 SUBROUTINE TONE dengan adddress awal 05E4H Fungsi : Memberikan nada di mana frekunsi dan lamanya dapat kita pilih. Input : 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.
 
 C. DATA DAN ANALISA DATA PROGRAM 7 ADDR
 
 OP-CODE
 
 LABEL
 
 ASSEMBLY
 
 KETERANGAN
 
 Program 07 : Membunyikan Tangga Nada Menggunakan Subrutin TONE TONE
 
 EQU 05E4H ORG 1800
 
 1800
 
 DD 21 1E 18
 
 LD IX, TABEL
 
 Membaca table frekuensi
 
 1804
 
 DD 4E 00
 
 LD C, (IX+00)
 
 nada
 
 1807
 
 21 00 01
 
 180A
 
 CD E4 05
 
 CALL TONE
 
 180D
 
 0E 01
 
 LD C, 01H
 
 Diam untuk sesaat dengan
 
 180F
 
 21 00 01
 
 LD HL, 0100H
 
 frekuensi > 20KHz
 
 1812
 
 CD E4 05
 
 CALL TONE
 
 Bunyi
 
 Laporan Mikrokontroler Modul 5
 
 LD HL, 0100H
 
 48
 
 1815
 
 AF
 
 XOR A
 
 Melanjutkan membaca data
 
 1816
 
 DD 23
 
 INC IX
 
 dan berhenti jika bertemu
 
 1818
 
 DD BE 00
 
 CP (IX+00)
 
 data 00H
 
 181B
 
 20 E7
 
 JRNZ, Bunyi
 
 181D
 
 76
 
 HALT
 
 181E
 
 82 76 86
 
 1821
 
 62 57 6D
 
 1824
 
 45 41 39
 
 1827
 
 33 31 2B
 
 DB 33H, 31H, 2BH
 
 182A
 
 26 21 20
 
 DB 26H, 21H, 20H
 
 182D
 
 20 21 26
 
 DB 20H, 21H, 26H
 
 1830
 
 2B 31 33
 
 DB 2BH, 31H, 33H
 
 1833
 
 39 41 45
 
 TABEL
 
 DB 82H, 76H, 68H DB 62H, 57H, 6DH
 
 SELESA
 
 DB 39H, 41H, 45H
 
 I 1836
 
 4D 57 62
 
 DB 4DH, 57H, 62H
 
 1839
 
 68 76 83
 
 DB 68H, 76H, 83H
 
 183C
 
 00 00
 
 DB 00H, 00H
 
 183C
 
 END
 
 Dari program diatas dapat diketahui bahwa ketika program dijalankan maka akan keluar bunyi : 62H 76H 68H 62H 57H DO
 
 RE
 
 MI
 
 FA
 
 48H 45H 40H
 
 SOL LA
 
 SI
 
 DO
 
 39H 33H 31H 2BH 25H 21H 20H RE
 
 MI
 
 FA
 
 SOL LA
 
 SI
 
 DO
 
 yang tersimpan pada alamat 181E hingga 183B. Lama proses pembacaan dilakukan selama data yang disimpan pada register HL. Dalam contoh program 07 diatas akan dilakukan selama 100H.
 
 Laporan Mikrokontroler Modul 5
 
 49
 
 PROGRAM 8 ADDR
 
 OP-CODE
 
 LABEL
 
 ASSEMBLY
 
 KETERANGAN
 
 Program 08 : Menyajikan Ketikan Angka Seperti Kalkulator Angka Bobot Tinggi Bergeser Kekiri SCAN
 
 EQU 05FEH
 
 HEX7
 
 HEX 0689H ORG 1900
 
 1900
 
 DD 21 F9 18
 
 LD IX, SIMDIS
 
 1904
 
 CD FE 05
 
 1907
 
 CD 89 06
 
 CALL HEX7
 
 190A
 
 DD 2B
 
 DEC IX
 
 190C
 
 DD 77 00
 
 LD (IX+00), A
 
 190F
 
 18 F3
 
 JR Tombol
 
 18F9
 
 00
 
 18FA
 
 00
 
 DB 00H
 
 18FB
 
 00
 
 DB 00H
 
 18FC
 
 00
 
 DB 00H
 
 18FD
 
 00
 
 DB 00H
 
 18FE
 
 00
 
 DB 00H
 
 Tombol
 
 SIMDIS
 
 CALL SCAN
 
 DB 00H
 
 Dari program diatas dapat diketahui bahwa ketika program dijalankan maka tampilan awal seven segment tidak menampilkan angka. Hal ini terjadi karena data yang dibaca pertama kali adalah data yang tersimpan pada alamat 18F9 hingga 18FE. Namun setelah ditekan angka 1, maka akan memunculkan angka 1 begitu pula ketika menekan angka 2 akan menampilkan angka 2 dimana angka 1 akan bergeser kekiri dan seterusnya hingga 6 karakter PROGRAM 9 ADDR
 
 OP-CODE
 
 LABEL
 
 ASSEMBLY
 
 KETERANGAN
 
 Program 08 : Menyajikan Ketikan Angka Seperti Kalkulator Angka Bobot Tinggi Bergeser Kekiri SCAN
 
 EQU 05FEH
 
 HEX7
 
 HEX 0689H
 
 Laporan Mikrokontroler Modul 5
 
 50
 
 ORG 1900 1900
 
 DD 21 F9 18
 
 1904
 
 CD FE 05
 
 1907
 
 LD IX, SIMDIS Tombol
 
 CALL SCAN
 
 Terima ketikan jika tombol
 
 FE 0A
 
 CP 0AH
 
 yang ditekan bukan 0 s/d 9
 
 1909
 
 30 F9
 
 JRNC, Tombol
 
 ulang
 
 190B
 
 CD 89 06
 
 CALL HEX7
 
 190E
 
 DD 2B
 
 DEC IX
 
 1910
 
 DD 77 00
 
 LD (IX+00, A
 
 1813
 
 18 EF
 
 JR Tombol
 
 18F9
 
 00
 
 18FA
 
 00
 
 DB 00H
 
 18FB
 
 00
 
 DB 00H
 
 18FC
 
 00
 
 DB 00H
 
 18FD
 
 00
 
 DB 00H
 
 18FE
 
 00
 
 DB 00H
 
 SIMDIS
 
 DB 00H
 
 Dari program diatas dapat diketahui bahwa ketika program dijalankan maka tampilan awal seven segment tidak menampilkan angka. Hal ini terjadi karena data yang dibaca pertama kali adalah data yang tersimpan pada alamat 18F9 hingga 18FE. Namun setelah ditekan angka 1, maka akan memunculkan angka 1 begitu pula ketika menekan angka 2 akan menampilkan angka 2 dimana angka 1 akan bergeser kekiri dan seterusnya hingga 6 karakter. Setelah 6 karakter ketika ditekan angka lagi maka seven segment paling kiri akan memunculkan angka tersebut dan angka paling kanan akan hilang, begitu pula seterusnya. PROGRAM 10 ADDR
 
 OP-CODE
 
 LABEL
 
 ASSEMBLY
 
 KETERANGAN
 
 Program 11 : Menyajikan Ketikan Kode Internal Tombol SCAN1
 
 EQU 0624H
 
 HEX7S
 
 EQU 0678H
 
 G ORG 1900
 
 Laporan Mikrokontroler Modul 5
 
 51
 
 1900
 
 DD 21 11 19
 
 1904
 
 CD FE 05
 
 1907
 
 LD IX, SIMDAT ScanPos
 
 CALL SCAN
 
 Terima Ketikan Jika tombol
 
 38 FB
 
 JRC, ScanPos
 
 yang ditekan
 
 1909
 
 21 11 19
 
 LD HL, SIMDAT
 
 190C
 
 CD 78 06
 
 CALL HEX7SG
 
 190F
 
 18 F3
 
 JRScanPos
 
 1911
 
 00
 
 SIMDA
 
 DB 00H
 
 T 1912
 
 00
 
 DB 00H
 
 1913
 
 00
 
 DB 00H
 
 1914
 
 00
 
 DB 00H
 
 1915
 
 00
 
 DB 00H
 
 1916
 
 00
 
 DB 00H
 
 Dari program diatas dapat diketahui bahwa ketika program dijalankan maka akan menampilkan ketikan kode posisi tombol. PROGRAM 11 ADD
 
 OP-CODE
 
 LABEL
 
 ASSEMBLY
 
 KETERANGAN
 
 R Program 10 : Menyajikan Ketikan Kode Posisi Tombol SCAN1
 
 EQU 0624H
 
 HEX7SG
 
 EQU 0678H ORG 1900
 
 1900
 
 DD 21 11
 
 LD IX, SIMDAT
 
 19 1904
 
 CD 24 06
 
 1907
 
 ScanPos
 
 CALL SCAN1
 
 Terima Ketikan Jika tombol
 
 38 FB
 
 JRC, ScanPos
 
 yang ditekan
 
 1909
 
 21 11 19
 
 LD HL, SIMDAT
 
 190C
 
 CD 78 06
 
 CALL HEX7SG
 
 190F
 
 18 F3
 
 JRScanPos
 
 Laporan Mikrokontroler Modul 5
 
 52
 
 Dari program diatas dapat diketahui bahwa ketika program dijalankan maka tampilan awal seven segment tidak menampilkan angka. Hal ini terjadi karena data yang dibaca pertama kali adalah data yang tersimpan pada alamat 1911 hingga 1916. Namun setelah ditekan angka 1, maka akan memunculkan angka 01 begitu pula ketika menekan angka 2 akan menampilkan angka 02 dan angka 01 akan hilang, begitu pula seterusnya.
 
 Laporan Mikrokontroler Modul 5
 
 53
 
  Tugas-tugas 1. Program Tulisan berjalan “PRODI PENDIDIKAN TEKNIK ELEKTRONIKA ANGKATAN 2012 FT UNY” a. Flowchart Start IX ← Huruf D ← 39 B ← 32 SCAN1 B ← B-1
 
 Z=0
 
 YA
 
 IX ← IX + 1 D←D-1
 
 Z=0
 
 Laporan Mikrokontroler Modul 5
 
 YA
 
 54
 
 b. Op-code Addr
 
 Kode Operasi
 
 No Label Assembly Keterangan Menyalakan tulisan berjalan “PRODI PENDIDIKAN TEKNIK ELEKTRONIKA ANGKATAN 2012 FT UNY”
 
 1800 1804 1806
 
 DD 21 3A 19 16 39 06 32
 
 1808 180B 180D 180F 1810 1813
 
 CD 24 06 10 FB DD 2B 15 C2 06 18 C3 00 18
 
 1902 1903 1904 1905 1906 1907 1908 1909 190A 190B 190C 190D 190E 190F 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 191A 191B 191C 191D 191E 191F 1920 1921 1922
 
 B6 23 B5 00 87 0F 00 9B 30 BD 9B 00 23 3F 87 3F 97 AF 23 3F 00 3F 97 30 23 BD 03 87 97 8F 85 8F 00
 
 Laporan Mikrokontroler Modul 5
 
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
 
 Ulang Geser
 
 LD IX, Huruf LD D, 39H LD B 32H CALL SCAN1 DJNZ, Tunda DEC IX DEC D JPNZ, Geser JP, Ulang DB B6H DB 23H DB B5H DB 00H DB 87H DB 0FH DB 00H DB 9BH DB 30H DB BDH DB 9BH DB 00H DB 23H DB 3FH DB 87H DB 3FH DB 97H DB AFH DB 23H DB 3FH DB 00H DB 3FH DB 97H DB 30H DB 23H DB BDH DB 03H DB 87H DB 97H DB 8FH DB 85H DB 8FH DB 00H
 
 Data Huruf Y Data Huruf N Data Huruf U PADAM Data Huruf T Data Huruf F PADAM Data Huruf 2 Data Huruf 1 Data Huruf 0 Data Huruf 2 PADAM Data Huruf N Data Huruf A Data Huruf T Data Huruf A Data Huruf K Data Huruf G Data Huruf N Data Huruf A PADAM Data Huruf A Data Huruf K Data Huruf I Data Huruf N Data Huruf O Data Huruf R Data Huruf T Data Huruf K Data Huruf E Data Huruf L Data Huruf E PADAM
 
 55
 
 1923 1924 1925 1926 1927 1928 1929 192A 192B 192C 192D 192E 192F 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 193A 193B 193C 193D 193E 193F
 
 97 30 23 97 8F 87 00 23 3F 97 30 B3 30 B3 23 8F 1F 00 30 B3 BD 03 1F 00 00 00 00 00 00
 
 Laporan Mikrokontroler Modul 5
 
 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
 
 Huruf
 
 DB 97H DB 30H DB 23H DB 97H DB 8FH DB 87H DB 00H DB 23H DB 3FH DB 97H DB 30H DB B3H DB 30H DB B3H DB 23H DB 8FH DB 1FH DB 00H DB 30H DB B3H DB BDH DB 03H DB 1FH DB 00H DB 00H DB 00H DB 00H DB 00H DB 00H
 
 Data Huruf K Data Huruf I Data Huruf N Data Huruf K Data Huruf E Data Huruf T PADAM Data Huruf N Data Huruf A Data Huruf K Data Huruf I Data Huruf D Data Huruf I Data Huruf D Data Huruf N Data Huruf E Data Huruf P PADAM Data Huruf I Data Huruf D Data Huruf O Data Huruf R Data Huruf P PADAM PADAM PADAM PADAM PADAM PADAM
 
 56
 
 2. Program Papan Skor regu A, B dan C a. Flowchart Start B ← 06 IX ← 1900
 
 A B ← 02
 
 (IX+00) ← BD
 
 PUSH BC
 
 IX ← IX + 01
 
 SCAN
 
 B←B-1 A
 
 Z=0 IX ← 1900
 
 C=0
 
 SCAN
 
 A
 
 0A
 
 HEX7 IY + 00 ← A
 
 0A
 
 IY ← IY + 1 Z=1 POP BC IY ← 1905 A
 
 B←B-1
 
 0B A
 
 Z=0
 
 Z=1 IY ← 1903 A
 
 0C A Z=1
 
 A
 
 Laporan Mikrokontroler Modul 5
 
 57
 
 b. Op-code Addr 1800 1802 1806 180A 180C 180E 1812 1815 1817 1819 181B 181D 181F 1821 1824 1828 182B 182F 1832 1836 1838 1839 183C 183E 1840 1843 1846 1848 1849 184B 184E
 
 Kode Operasi No Label Assembly Program papan skor regu A, B dan C 06 06 DD 21 00 19 DD 36 00 BD DD 23 10 F8 DD 21 00 19 CD FE 05 FE 0A 28 0B FE 0B 28 0E FE 0C 28 11 C3 0E 18 FD 21 05 19 C3 36 18 FD 21 03 19 C3 36 18 FD 21 01 19 06 02 C5 CD FE 05 FE 0A 30 F9 CD 89 06 FD 77 00 FD 2B C1 10 ED C3 0E 18 FF
 
 Laporan Mikrokontroler Modul 5
 
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
 
 Hapus Input
 
 Regu A Regu B Regu C Proses Cetak Baca
 
 LD B, 06 LD IX, 1900 LD(IX+00), BD INC IX DJNZ, Hapus LD IX 1900 CALL SCAN CP 0A JRZ, Regu A CP 0B JRZ, Regu B CP 0C JRZ, Regu C JP Input LD IY, 1905 JP Proses LD IY, 1903 JP Proses LD IY, 1901 LD B, 02 PUSH BC CALL SCAN CP 0A JRNZ, Baca CALL HEX7 LD (IY + 00), A DEC IY POP BC DJNZ, Cetak JP, Input RST 38
 
 Keterangan
 
 BD =Angka 0
 
 58
 
 3. Program Counter 2 digit a. Flowchart
 
 Start IX ← 1900 HL← 1900
 
 A
 
 A ← 00 POP HL POP AF
 
 PUSH AF PUSH HL
 
 A ← A-1
 
 HEX7SG
 
 DAA
 
 SCAN
 
 A
 
 10
 
 A
 
 Z=1
 
 A
 
 A
 
 POP HL POP AF A ← A-1
 
 10
 
 DAA Z=1
 
 Laporan Mikrokontroler Modul 5
 
 A
 
 59
 
 b. Op-Code Addr 1800 1804 1807 1809 180A 180B 180E 1811 1813 1815 1817 1819 181C 181D 181E 1820 1821 1824 1825 1826 1828 1829
 
 Kode Operasi DD 21 00 19 21 00 19 3E 00 F5 E5 CD 78 06 CD FE 05 FE 10 28 07 FE 11 28 0B C3 0E 18 E1 F1 C6 01 27 C3 09 18 E1 F1 D6 01 27 C3 09 18
 
 Laporan Mikrokontroler Modul 5
 
 No Label Assembly Program Counter 2 digit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 
 Tampil Baca
 
 Tmbah
 
 Kurang
 
 Keterangan
 
 LD IX, 1900 LD HL, 1900 LD A, 00 PUSH AF PUSH HL CALL HEX7SG CALL SCAN CP 10 JRZ, Tambah CP 11 JRZ, Kurang JP, Baca POP HL POP AF ADD A, 01 DAA JP, Tampil POP HL POP AF SUB 01 DAA JP, Tampil
 
 60
 
 4. Program Counter 4 digit a. Flowchart
 
 A
 
 Start
 
 POP HL
 
 IX ←1900
 
 A←L
 
 HL ←0000
 
 A ← A+1
 
 HL ←0000
 
 DAA
 
 PUSH HL
 
 L←A
 
 HL ←1900
 
 A←H
 
 HEX7SG
 
 A ← A + 00 + Cy
 
 POP HL
 
 DAA
 
 A ←H
 
 H←A
 
 PUSH HL
 
 A
 
 HL ←H1902 POP HL HEX7SG A←L SCAN A ← A+1 A
 
 10 Z=1
 
 A
 
 DAA A
 
 L←A A←H
 
 11
 
 A ← A + 00 + Cy Z=1
 
 B DAA H←A
 
 Laporan Mikrokontroler Modul 5
 
 61
 
 b. Op-code Address Kode Operasi
 
 No
 
 Label
 
 Assembly
 
 1800
 
 1
 
 LDIX, 1900
 
 1804 1807 1808 1809 180B 180E 180F 1810 1811 1814 1817 181A 181C 181F 1822 1825
 
 DD 21 00 18 21 00 00 7D E5 21 00 19 CD 78 06 E1 7C E5 21 02 19 CD 78 06 CD FE 05 FE 10 CA 28 18 FE 11 18 CA 36 18 C3 18 18
 
 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 
 LDHL, 0000 LDA, L PUSH HL LDHL, 1900 CALL HEX7SG POP HL LDA, H PUSH HL LDHL, 1902 CALL HEX7SG CALL SCAN CP 10 JPZ, Tambah CP11 JPZ, Kurang JP, BaCa
 
 1828 1829 182A 182C 182D 182E 182F 1831 1832 1833
 
 E1 7D C6 01 27 6F 7C CE 00 27 6F C3 07 18
 
 18 19 20 21 22 23 24 25 26 27
 
 Tambah
 
 POP HL LDA, L ADDA, 01 DAA LDL, A LDA, H ADC, 00 DAA LDH, A JP Tampil
 
 1836 1837 1838 183A 183B 183C 183D 183F 1840 1841
 
 E1 7D DB 01 27 6F 7C DF 00 27 6F C3 07 18
 
 28 29 30 31 32 33 34 35 36 37
 
 Kurang
 
 POP HL LDA, L SUB 01 DAA LDL, A LDA, H SBC 00 DAA LDH, A JP Tampil
 
 Keterangan
 
 Program 4 digit counter Saat tombol + ditekan maka data akan bertambah dan saat tombol minus ditekan maka data akan berkurang
 
 Laporan Mikrokontroler Modul 5
 
 Tampil
 
 Baca
 
 62