Anda di halaman 1dari 63

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 PERINTAH
1 Start
2 Isi register A dengan data 00h
3 Isi register B dengan data 01h
4 Isi register C dengan data 02h
5 Isi register D dengan data 03h
6 Isi register E dengan data 04h
7 Isi register H dengan data 05h
8 Isi register L dengan data 06h
9 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 Kode Operasi No. Label Assembly Keterangan
1800 3E 00 1. LD A , 00H
1802 06 01 2. LD B , 01H
1804 0E 02 3. LD C , 02H
1806 16 03 4. LD D , 03H
1808 1E 04 5. LD E , 04H
180A 26 05 6. LD H , 05H
180C 2E 06 7. LD L , 06H
180E FF 8. 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:
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.
Register A B C D E H L
Data 00 01 02 03 04 05 06
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.
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.
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
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 Keterangan
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
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 BC DE HL
Data 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 masing-
masing perintah menggunakan tabel set instruksi tuliskan ke kolom Kode Operasi.
Kemudian berikan alamat sesuai jumbah byte kode operasinya.
Addr Kode Operasi No. Label Assembly Keterangan
1800 06 32 1. LD B, 32H
1802 21 00 19 2. LD HL,1900H
1805 AF 3. XOR A A =00
1806 77 4. ULANG LD (HL), A
1807 23 5. INC HL
1808 05 6. DEC B
1809 C2 7. JPNZ, ULANG Loop ke 1806
180C FF 8. RST 38
Laporan Mikrokontroler Modul 5 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 1901 1902 1903 1904 dst 1931
Data 00 00 00 00 00 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 Kode Operasi No. Label Assembly Keterangan
1800 06 32 1. LD B, 32H
1802 21 00 19 2. LD HL,1900H
1805 AF 3. XOR A A =00
1806 77 4. ULANG LD (HL), A
1807 23 5. INC HL
1808 3C 6. INC A
1809 05 7. DEC B
180A C2 06 18 8. JPNZ, ULANG Loop ke 1806
180D FF 9 RST 38
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
Data 00 01 02 03 04 05 06 07
Memori 1908 1909 190A 190B 190C 190D 190E 190F
Data 08 09 0A 0B 0C 0D 0E 0F
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 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. Simpan hasil penjumlahan yang ada di register A pada alamat 1904
5. Ambil data yang ada pada alamat 1901 dan simpan di Reg. A
6. Jumlahkan data yang ada di register A dengan data yang ada pada alamat 1903 dan
sertakan bit Carry Flag
7. Simpan hasil penjumlahan yang ada di register A pada alamat 1905
8. Ambil bit Carry Flag
9. Simpan pada alamat 1906
10. 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. Label Assembly Keterangan
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 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.
K
a
s
u
s
Data 1 Data 2 Data 1 + Data 2
[1900] [1901] [1902] [1903] [1904] [1905] [1906]
1. 10 00 03 02 13 02 00
2. 06 05 08 07 0E 0C 00
3. 8F 9F F5 AF 84 4F (F = 1D) 01
4. 2C 7F 77 2D A3 AC (F = BC) 00 (F = 40)
5. F4 2A 7C C2 70 ED (F = 48) 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 Keterangan
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 KOREKSI
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 KOREKSI
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
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.
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.
K
a
s
u
s
Data 1 Data 2 Data 1 + Data 2
[1900] [1901] [1902] [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)
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 PERINTAH
1. Start
2. Ambil data yang ada pada alamat 1900 dan simpan di Reg. A
3. Kurangkan data yang ada di register A dengan data yang ada pada alamat 1901
4. Simpan hasil pengurangan yang ada di register A pada alamat 1902
5. 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. Label Assembly Keterangan
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 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 Keterangan
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
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 Keterangan
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 AAD , B
180E 27 4. DAA
180B DD 77 02 5. LD (IX+2)A,
180E FF 6. RST 38
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. Label Assembly Keterangan
1800 1E XX 1. LDE ,XX Bil.dikalikan
1802 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. LOOP ADD HL, HL
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
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 Op-
Code 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. Label Assembly Keterangan
1800 1E XX 1. LDE ,XX Bil.dikalikan
1802 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. LOOP ADD HL , HL
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 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 PERINTAH
1. Start
2. Set data pada register E sebagai data bilangan yang dikalikan
3. Set data pada register A sebagai data bilangan untuk dikali
4. Set register D =00h
5. Ser register HL =0000h
6. Jumlah isi register HL dengan register DE
7. Kurangi A dengan 1
8. Apakah z =0
9. Jika ya kembali pada step 6
10. 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
operasi
No . Label Assembly Keterangan
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
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
addr Kode operasi No Label Assembly Keterangan
1800 1E XX 1. LD E ,XX bil. pembagi
1802 3E XX 2. LD A ,XX bil. terbagi
1804 0E 00 3. LD C ,00H
1806 BB 4. LOOP CP , E
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. STOP LD B ,A
181F FF 10. RST 38
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
Addr Op-code No Label Assembly keterangan
1 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 Nyala CALL SCAN1
1809 10 FB 9 DJNZ Nyala
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
Laporan Mikrokontroler Modul 5 34
180B 76 10 HALT
11
180C 12 ANGKA DB AFH Data angka 6
180D 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
ANGKA
EQU 0624H
ORG1800
LD IX, ANGKA
LD B, 64H
CALL SCAN1
DJNZ Nyala
HALT
DB AFH
; alamat awal sub rutin SCAN1
; program dimulai dari alamat 1800
; IX diisi data nyala segment LED (ANGKA)
; kostanta waktu tunda
; menyajikan tulisan LED
; dec B jump ke Nyala jika Z= 0, lanjut HALT jika Z=1
; data penyalaan LED
DB AEH
DB 36H
DB BAH
DB 9BH
DB 30H
END
Contoh program 04
Addr Op-code No Label Assembly keterangan
Laporan Mikrokontroler Modul 5 35
1 Program 04 : menyalakan tulisan 123456 berkedip tiap
1 detik
2
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 Kedip EX(SP), IX
180A 06 64 9 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 ANGKA DB AFH Data angka 6
1814 AE 16 DB AEH Data angka 5
1815 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 PADAM 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
ANALISA DATA
Program 04 : menyalakan tulisan 123456 berkedip tiap 1 detik
SCAN1 EQU 0624H
ORG1800
LD HL, ANGKA
; alamat awal sub rutin SCAN1
; program dimulai dari alamat 1800
; HL diisi data nyala segment LED (ANGKA)
Laporan Mikrokontroler Modul 5 36
PUSH HL
LD IX, PADAM
; muati lokasi alamat sama dengan isi register SP-1 dengan data dari
register HLH dan SP-2 dengan data dari register HLL
; IX diisi data untuk memadamkan LED(PADAM)
Kedip EX(SP), IX
LD B, 64H ; kostanta waktu tunda
Tampil CALL SCAN1 ; menyajikan tulisan LED
DJNZ Tampil
JR Tampil
ANGKA DB AFH
DB AEH
DB 36H
DB BAH
DB 9BH
DB 30H
PADAM DB 00H
DB 00H
DB 00H
DB 00H
DB 00H
DB 00H
END
Nama Subrutin
Alamat Awal
Fungsi
Jangka Waktu
Input Data
; dec B jump ke Nyala jika Z= 0, lanjut JR Tampil apabila Z=1
; lompat relatif tanpa syarat ke Tampil
; data penyalaan LED
; data untuk memadamkan LED
: SCAN
: 05FEH
: Menyajikan tulisan LED secara multiplek dan melakukan
scanning tombol Keypad dalam satu siklus, meliputi 36 buah
tombol dan 6 buah LED sevent segment
: Terus menerus menunggu hingga salah satu tombol ditekan
: 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
Addr Op-code No Label Assembly keterangan
1 Program 05: Menyajikan Tulisan SCAN--
Penyajian berhenti jika tombol STEP ditekan
2
3 SCAN EQU 05FEH
4 ORG1800
1800 DD 21 0C 18 5 LD IX, TULISAN
1804 CD FE 05 6 Nyala CALL SCAN
1807 FE 13 7 CP STEP
1809 20 F9 8 JR NZ, Nyala
180B 76 9 HALT
180C 02 10 TULISAN DB 02H Data tulisan -
180D 02 11 DB 02H Data tulisan -
180E 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
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.
ANALISA DATA
Program 05:
Menyajikan tulisan SCAN--.Penyajian berhenti jika tombol STEP ditekan
LDIX,TULISAN ; alamat data untu TULISAN disimpan di register IX
Nyala CP STEP
JRNZ, Nyala
HALT
; pembanding dengan penekanan STEP
; jika STEP di tekan akan menghasilkan kondisi Z=1
; program akan continue keperintah HALT
; berhenti
Laporan Mikrokontroler Modul 5 38
Addr Op-code No Label Assembly keterangan
1 Program 06 : menyajikan tulisan seperti kakulator , ketikan
hanya angka 0 s/d 9 berhenti jika tombol STEP ditekan
2
3 SCAN EQU 05FEH
4 BUFDIS EQU 1A00
5 ORG 1800
1800 DD 21 05 1A 6 LD IX, BUFDIS+5 Membersihkan memori
pada alamat 1800-1805
sehingga LED pada
awal padam
1804 06 06 7 LD B, 06H
1806 DD 36 00 00 8 Hapus LD(IX+00), 00H
180A DD 2B 9 DEC 1X
180C 10 FB 10 DJNZ Hapus
11
180E DD 21 00 1A 12 LD IX, BUFDIS
1812 CD FE 05 13 Ketik CALL SCAN
1815 FE 0A 14 CP 0A
1817 38 07 15 JR C, BC Tabel
16
1819 FE 13 17 CP STEP
181B CA 2D 18 18 JPZ, SELESAI
181E 18 F2 19 JR Ketik
TULISAN
Program 06
DB02H
DB02H
DB23H
DBBBH
DB83H
DBAEH
END
; data tulisan -
; data tulisan -
; data tulisan N
; data tulisan A
; data tulisan C
; data tulisan S
; program selesai
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
LD B, 06H
; membersihkan memori pada alamat 1800 1805
sehingga LED pada awal padam
; Buat cacahan data 06h di register B
Hapus
Ketik
BC Tabel
LD(IX+00), 00H
DEC 1X
DJNZ Hapus
LD IX, BUFDIS
CALL SCAN
CP 0A
JR C, BC Tabel
CP STEP
JPZ, SELESAI
JR Ketik
LD HL, 07F0
ADD A, I
LD L, A
; Set data awal dengan 00
; Kurangi nilai pencatat alamat register IX dengan satu
alamat
; Z=0, kembali ke Hapus
; Muat data pada alamat 1A00 ke register IX
; Panggil sub rutin SCAN
; Bandingkan isi register A dengan 0
: c=1, lompat ke Tabel
; Bandingkan dengan STEP
: Z=1, maka lompat ke SELESAI
; Lompatke Ketik
; Isi register HL dengan (07F0)
; Jumlahkan data pada register A dengan 1
; Masukan data pada register A ke register L
Laporan Mikrokontroler Modul 5 40
SELESAI
LD A, (HL)
DEC IX
LD (IX+00), A
JR Ketik
; Masukan data yang tersimpan di memori tempat
simpan data (reg HL) ke register A
; Kurangi register IX dengan 1
; Masukan data pada register A kealamat awal yang
tersimpan di register IX
; Lompatke Ketik
; program selesai
C
.
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.
B.
TUJUAN
Memahami pemrograman monitor Komputer Mikro MPF I
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 B AHAN
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
Output
: mengubah data 8 bit (1 byte) di register A menjadi nyala LED.
: 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
Output
: Untuk memeriksa adanya RAM pada suau address denganmenguji
pelaksanaan simpannya.
: 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
ADDR OP-CODE LABEL ASSEMB LY 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
nada
1804 DD 4E 00 LD C, (IX+00)
1807 21 00 01 Bunyi LD HL, 0100H
180A CD E4 05 CALL TONE
180D 0E 01 LD C, 01H Diam untuk sesaat dengan
frekuensi > 20KHz
180F 21 00 01 LD HL, 0100H
1812 CD E4 05 CALL TONE
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
Input
Output
: Memberikan nada pada frekunsi 1 KHz dengan lama suara dapat kita
pilih.
: Register HL diisi dengan bilangan 0000H hingga 7FFFH untuk
menentukan lama suara.
: Nada loudspeaker.
C. DATA DAN ANALISA DATA
PROGRAM 7
Laporan Mikrokontroler Modul 5 48
1815 AF XOR A Melanjutkan membaca data
dan berhenti jika bertemu
data 00H
1816 DD 23 INC IX
1818 DD BE 00 CP (IX+00)
181B 20 E7 JRNZ, Bunyi
181D 76 HALT
181E 82 76 86 TABEL DB 82H, 76H, 68H
1821 62 57 6D DB 62H, 57H, 6DH
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 SELESA
I
DB 39H, 41H, 45H
1836 4D 57 62 DB 4DH, 57H, 62H
1839 68 76 83 DB 68H, 76H, 83H
183C 00 00 DB 00H, 00H
183C END
62H 76H 68H 62H 57H 48H 45H 40H
DO RE MI FA SOL LA SI DO
39H 33H 31H 2BH 25H 21H 20H
RE MI FA SOL LA SI DO
Dari program diatas dapat diketahui bahwa ketika program dijalankan maka akan keluar
bunyi :
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
ADDR OP-CODE LABEL ASSEMB LY 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 Tombol CALL SCAN
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 SIMDIS DB 00H
18FA 00 DB 00H
18FB 00 DB 00H
18FC 00 DB 00H
18FD 00 DB 00H
18FE 00 DB 00H
ADDR OP-CODE LABEL ASSEMB LY KETERANGAN
Program 08 : Menyajikan Ketikan Angka Seperti Kalkulator
Angka Bobot Tinggi Bergeser Kekiri
SCAN EQU 05FEH
HEX7 HEX 0689H
PROGRAM 8
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
Laporan Mikrokontroler Modul 5 50
ORG 1900
1900 DD 21 F9 18 LD IX, SIMDIS
1904 CD FE 05 Tombol CALL SCAN Terima ketikan jika tombol
yang ditekan bukan 0 s/d 9
ulang
1907 FE 0A CP 0AH
1909 30 F9 JRNC, Tombol
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 SIMDIS DB 00H
18FA 00 DB 00H
18FB 00 DB 00H
18FC 00 DB 00H
18FD 00 DB 00H
18FE 00 DB 00H
ADDR OP-CODE LABEL ASSEMB LY KETERANGAN
Program 11 : Menyajikan Ketikan Kode Internal Tombol
SCAN1 EQU 0624H
HEX7S
G
EQU 0678H
ORG 1900
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
Laporan Mikrokontroler Modul 5 51
1900 DD 21 11 19 LD IX, SIMDAT
1904 CD FE 05 ScanPos CALL SCAN Terima Ketikan Jika tombol
yang ditekan
1907 38 FB JRC, ScanPos
1909 21 11 19 LD HL, SIMDAT
190C CD 78 06 CALL HEX7SG
190F 18 F3 JRScanPos
1911 00 SIMDA
T
DB 00H
1912 00 DB 00H
1913 00 DB 00H
1914 00 DB 00H
1915 00 DB 00H
1916 00 DB 00H
ADD
R
OP-CODE LABEL ASSEMB LY KETERANGAN
Program 10 : Menyajikan Ketikan Kode Posisi Tombol
SCAN1 EQU 0624H
HEX7SG EQU 0678H
ORG 1900
1900 DD 21 11
19
LD IX, SIMDAT
1904 CD 24 06 ScanPos CALL SCAN1 Terima Ketikan Jika tombol
yang ditekan
1907 38 FB JRC, ScanPos
1909 21 11 19 LD HL, SIMDAT
190C CD 78 06 CALL HEX7SG
190F 18 F3 JRScanPos
Dari program diatas dapat diketahui bahwa ketika program dijalankan maka akan
menampilkan ketikan kode posisi tombol.
PROGRAM 11
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
YA
IX IX + 1
D D - 1
Z=0
Start
IX Huruf
D 39
B 32
SCAN1
B B-1
Z=0
YA
Laporan Mikrokontroler Modul 5 54
b. Op-code
Addr Kode Operasi No Label Assembly Keterangan
Menyalakan tulisan berjalan
PRODI PENDIDIKAN TEKNIK ELEKTRONIKA ANGKATAN 2012 FT UNY
1800 DD 21 3A 19 1 Ulang LD IX, Huruf
1804 16 39 2 LD D, 39H
1806 06 32 3 Geser LD B 32H
4
1808 CD 24 06 5 CALL SCAN1
180B 10 FB 6 DJNZ, Tunda
180D DD 2B 7 DEC IX
180F 15 8 DEC D
1810 C2 06 18 9 JPNZ, Geser
1813 C3 00 18 10 JP, Ulang
11
1902 B6 12 DB B6H Data Huruf Y
1903 23 13 DB 23H Data Huruf N
1904 B5 14 DB B5H Data Huruf U
1905 00 15 DB 00H PADAM
1906 87 16 DB 87H Data Huruf T
1907 0F 17 DB 0FH Data Huruf F
1908 00 18 DB 00H PADAM
1909 9B 19 DB 9BH Data Huruf 2
190A 30 20 DB 30H Data Huruf 1
190B BD 21 DB BDH Data Huruf 0
190C 9B 22 DB 9BH Data Huruf 2
190D 00 23 DB 00H PADAM
190E 23 24 DB 23H Data Huruf N
190F 3F 25 DB 3FH Data Huruf A
1910 87 26 DB 87H Data Huruf T
1911 3F 27 DB 3FH Data Huruf A
1912 97 28 DB 97H Data Huruf K
1913 AF 29 DB AFH Data Huruf G
1914 23 30 DB 23H Data Huruf N
1915 3F 31 DB 3FH Data Huruf A
1916 00 32 DB 00H PADAM
1917 3F 33 DB 3FH Data Huruf A
1918 97 34 DB 97H Data Huruf K
1919 30 35 DB 30H Data Huruf I
191A 23 36 DB 23H Data Huruf N
191B BD 37 DB BDH Data Huruf O
191C 03 38 DB 03H Data Huruf R
191D 87 39 DB 87H Data Huruf T
191E 97 40 DB 97H Data Huruf K
191F 8F 41 DB 8FH Data Huruf E
1920 85 42 DB 85H Data Huruf L
1921 8F 43 DB 8FH Data Huruf E
1922 00 44 DB 00H PADAM
Laporan Mikrokontroler Modul 5 55
1923 97 45 DB 97H Data Huruf K
1924 30 46 DB 30H Data Huruf I
1925 23 47 DB 23H Data Huruf N
1926 97 48 DB 97H Data Huruf K
1927 8F 49 DB 8FH Data Huruf E
1928 87 50 DB 87H Data Huruf T
1929 00 51 DB 00H PADAM
192A 23 52 DB 23H Data Huruf N
192B 3F 53 DB 3FH Data Huruf A
192C 97 54 DB 97H Data Huruf K
192D 30 55 DB 30H Data Huruf I
192E B3 56 DB B3H Data Huruf D
192F 30 57 DB 30H Data Huruf I
1930 B3 58 DB B3H Data Huruf D
1931 23 59 DB 23H Data Huruf N
1932 8F 60 DB 8FH Data Huruf E
1933 1F 61 DB 1FH Data Huruf P
1934 00 62 DB 00H PADAM
1935 30 63 DB 30H Data Huruf I
1936 B3 64 DB B3H Data Huruf D
1937 BD 65 DB BDH Data Huruf O
1938 03 66 DB 03H Data Huruf R
1939 1F 67 DB 1FH Data Huruf P
193A 00 68 Huruf DB 00H PADAM
193B 00 69 DB 00H PADAM
193C 00 70 DB 00H PADAM
193D 00 71 DB 00H PADAM
193E 00 72 DB 00H PADAM
193F 00 73 DB 00H PADAM
Laporan Mikrokontroler Modul 5 56
2. Program Papan Skor regu A, B dan C
a. Flowchart
Z = 1
IY 1903
A
A 0A
Z = 1
IY 1905
A
B 06
IX 1900
(IX+00) BD
IX IX + 01
B B - 1
Z = 0
IX 1900
SCAN
A 0B
A 0C
A
Z = 1
IY + 00 A
Z = 0
0A A
SCAN
PUSH BC
B 02
A
C = 0
HEX7
IY IY + 1
POP BC
B B - 1
Start
Laporan Mikrokontroler Modul 5 57
b. Op-code
Addr Kode Operasi No Label Assembly Keterangan
Program papan skor regu A, B dan C
1800 06 06 1 LD B, 06
1802 DD 21 00 19 2 LD IX, 1900
1806 DD 36 00 BD 3 Hapus LD(IX+00), BD BD =Angka 0
180A DD 23 4 INC IX
180C 10 F8 5 DJNZ, Hapus
180E DD 21 00 19 6 Input LD IX 1900
1812 CD FE 05 7 CALL SCAN
1815 FE 0A 8 CP 0A
1817 28 0B 9 JRZ, Regu A
1819 FE 0B 10 CP 0B
181B 28 0E 11 JRZ, Regu B
181D FE 0C 12 CP 0C
181F 28 11 13 JRZ, Regu C
1821 C3 0E 18 14 JP Input
1824 FD 21 05 19 15 Regu A LD IY, 1905
1828 C3 36 18 16 JP Proses
182B FD 21 03 19 17 Regu B LD IY, 1903
182F C3 36 18 18 JP Proses
1832 FD 21 01 19 19 Regu C LD IY, 1901
1836 06 02 20 Proses LD B, 02
1838 C5 21 Cetak PUSH BC
1839 CD FE 05 22 Baca CALL SCAN
183C FE 0A 23 CP 0A
183E 30 F9 24 JRNZ, Baca
1840 CD 89 06 25 CALL HEX7
1843 FD 77 00 26 LD (IY + 00), A
1846 FD 2B 27 DEC IY
1848 C1 28 POP BC
1849 10 ED 29 DJNZ, Cetak
184B C3 0E 18 30 JP, Input
184E FF 31 RST 38
Laporan Mikrokontroler Modul 5 58
3. Program Counter 2 digit
a. Flowchart
HEX7SG
Start
A 00
IX 1900
HL1900
PUSH AF
PUSH HL
SCAN
Z = 1
A 10
A
Z = 1
A 10
A
A A-1
A
POP HL
POP AF
DAA
A A-1
A
POP HL
POP AF
DAA
Laporan Mikrokontroler Modul 5 59
b. Op-Code
Addr Kode Operasi No Label Assembly Keterangan
Program Counter 2 digit
1800 DD 21 00 19 1 LD IX, 1900
1804 21 00 19 2 LD HL, 1900
1807 3E 00 3 LD A, 00
1809 F5 4 Tampil PUSH AF
180A E5 5 PUSH HL
180B CD 78 06 6 CALL HEX7SG
180E CD FE 05 7 Baca CALL SCAN
1811 FE 10 8 CP 10
1813 28 07 9 JRZ, Tambah
1815 FE 11 10 CP 11
1817 28 0B 11 JRZ, Kurang
1819 C3 0E 18 12 JP, Baca
181C E1 13 Tmbah POP HL
181D F1 14 POP AF
181E C6 01 15 ADD A, 01
1820 27 16 DAA
1821 C3 09 18 17 JP, Tampil
1824 E1 18 Kurang POP HL
1825 F1 19 POP AF
1826 D6 01 20 SUB 01
1828 27 21 DAA
1829 C3 09 18 22 JP, Tampil
Laporan Mikrokontroler Modul 5 60
4. Program Counter 4 digit
a. Flowchart
A
A
SCAN
PUSH HL
HL H1902
HEX7SG
POP HL
A H
HL 0000
HL 0000
PUSH HL
HL 1900
HEX7SG
Start
IX 1900
10
A
Z=1
Z=1
11
B
H A
A A+1
A
POP HL
A L
DAA
L A
A H
DAA
A A + 00 + Cy
H A
A A+1
A
POP HL
A L
DAA
L A
A H
DAA
A A + 00 + Cy
Laporan Mikrokontroler Modul 5 61
b. Op-code
Address Kode
Operasi
No Label Assembly Keterangan
Program 4 digit counter
Saat tombol + ditekan maka data akan bertambah dan
saat tombol minus ditekan maka data akan berkurang
1800 DD 21 00
18
1 LDIX, 1900
1804 21 00 00 2 LDHL, 0000
1807 7D 3 Tampil LDA, L
1808 E5 4 PUSH HL
1809 21 00 19 5 LDHL, 1900
180B CD 78 06 6 CALL HEX7SG
180E E1 7 POP HL
180F 7C 8 LDA, H
1810 E5 9 PUSH HL
1811 21 02 19 10 LDHL, 1902
1814 CD 78 06 11 CALL HEX7SG
1817 CD FE 05 12 Baca CALL SCAN
181A FE 10 13 CP 10
181C CA 28 18 14 JPZ, Tambah
181F FE 11 18 15 CP11
1822 CA 36 18 16 JPZ, Kurang
1825 C3 18 18 17 JP, BaCa
1828 E1 18 Tambah POP HL
1829 7D 19 LDA, L
182A C6 01 20 ADDA, 01
182C 27 21 DAA
182D 6F 22 LDL, A
182E 7C 23 LDA, H
182F CE 00 24 ADC, 00
1831 27 25 DAA
1832 6F 26 LDH, A
1833 C3 07 18 27 JP Tampil
1836 E1 28 Kurang POP HL
1837 7D 29 LDA, L
1838 DB 01 30 SUB 01
183A 27 31 DAA
183B 6F 32 LDL, A
183C 7C 33 LDA, H
183D DF 00 34 SBC 00
183F 27 35 DAA
1840 6F 36 LDH, A
1841 C3 07 18 37 JP Tampil
Laporan Mikrokontroler Modul 5 62

Anda mungkin juga menyukai