0%(1)0% menganggap dokumen ini bermanfaat (1 suara)
232 tayangan63 halaman
Laporan ini membahas tiga percobaan pemrograman mikroprosesor menggunakan bahasa assembly untuk mengatur register dan mengisi memori. Percobaan pertama mengatur nilai register, kedua mengisi register pasangan, dan ketiga menghapus isi memori dengan nilai nol.
Laporan ini membahas tiga percobaan pemrograman mikroprosesor menggunakan bahasa assembly untuk mengatur register dan mengisi memori. Percobaan pertama mengatur nilai register, kedua mengisi register pasangan, dan ketiga menghapus isi memori dengan nilai nol.
Laporan ini membahas tiga percobaan pemrograman mikroprosesor menggunakan bahasa assembly untuk mengatur register dan mengisi memori. Percobaan pertama mengatur nilai register, kedua mengisi register pasangan, dan ketiga menghapus isi memori dengan nilai nol.
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