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