Anda di halaman 1dari 12

Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

LABORATORIUM TEKNIK LISTRIK


POLITEKNIK NEGERI AMBON
MATAKULIAH SISTEM DIGITAL NO.REG.

SEMESTER 4

NO. JOB. SHEET 3 KONTROL TAMPILAN 7-SEGMENT


KELAS

I. TUJUAN
1. Mampu memprogramkan mikrokontroler MCS-51 untuk bekerja menampilkan angka
desimal pada 7-segment (angka BCD).
2. Mampu membuat program delay menggunakan bahasa assembler MCS-51.
3. Mampu menghubungkan perangkat lunak MCS-51 dengan rangkaian hardware.

II. TEORI
Percobaan ini menggunakan tampilan 7-segmen dua digit (DS3 - DS4) dari MTS-51 Trainer
untuk menampilkan angka desimal. Karena dekoder BCD-ke-7-segmen/driver dibangun di
dalam Trainer, nilai BCD yang akan ditampilkan harus ditulis ke port 2. Jalur I/O P2.3-P2.0
adalah input dari DS4 (unit digit) dan jalur P2.7-P2.4 adalah input dari DS3 (digit puluhan).
Rujuk ke rangkaian di Gbr. 4-2-2 untuk detailnya. Perhatikan bahwa sakelar SW2_3 harus
ditempatkan di posisi ON posisi ON.

Gambar 4-2-2

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng 1


Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Deskripsi Fungsional:
Penghitung Dua Digit ke atas secara berurutan dan berulang-ulang tampilkan angka 00
hingga 99 pada DS3 dan DS4. Setiap angka bertahan selama 0,5 detik.

Deskripsi Program:
Nilai hitungan awal 00H dimuat ke A dan ditulis ke P2. Setelah 0,5 detik, isi A ditambah satu
dan hasil biner dikonversi ke nilai BCD menggunakan instruksi DA A. Kemudian CPU
melompat ke NEXT untuk mengulangi rutinitas keluaran.

Jika Anda ingin menghentikan penghitung ketika mencapai 99, ganti instruksi JMP NEXT
dengan instruksi berikut.

CJNE A, #00H, NEXT


JMP $

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


2
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Perhitungan penundaan
Penundaan subrutin penundaan sama dengan hasil kali total siklus mesin dan waktu siklus
mesin sebagai berikut:
Total siklus mesin = 1+200x(1+249x2+2)+2 =100.203. Karena frekuensi osilator Alat Peraga
MTS-51 adalah 12 MHz, 1 s setiap siklus mesin, maka total penundaan sama dengan 0,1
detik (=100.203 x 1s =100.203 s).

Subrutin penundaan unit


Dalam aplikasi kontrol komputer mikro, satu atau lebih rutinitas penundaan sering kali
diperlukan. Untuk menyederhanakan perhitungan penundaan, kita dapat menulis subrutin
penundaan unit yang menunda waktu tetap, misalnya 0,1 detik, dan menggunakan penghitung
(register) untuk menentukan waktu eksekusi subrutin penundaan unit. Sebagai contoh, kita
memanggil subrutin penundaan 0.1 detik sebanyak 10 kali untuk penundaan selama satu detik.
Jumlah pemanggilan sudah tersimpan dalam register penghitung. Perhatikan subrutin
penundaan 0.1 detik di bawah ini:

Dua register R6 dan R7 digunakan dalam perulangan bersarang. Jika penundaan 0,5 detik
diperlukan, nilai awal penghitung-R5 harus ditetapkan ke lima seperti yang tercantum di
bawah ini:

Subrutin berikut ini melakukan fungsi yang sama seperti di atas.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


3
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

III. PERALATAN :
1. Modul/Trainer MTS-51
2. Emulator 8051

IV. LANGKAH-LANGKAH PERCOBAAN


PROCEDURES
1. Gunakan aplikasi MIDE-51 untuk mengedit dan menyimpan

2.

3.
4.
5.

HASIL
Berikan penjelasan untuk percobaan diatas (

Percobaan di atas adalah contoh kode bahasa assembly yang ditulis untuk sebuah mikrokontroler
atau sistem terbenam serupa. Kode ini bertujuan untuk mengulangi proses peningkatan nilai A,
menampilkan nilai A ke port P22, dan menunda eksekusi selama 0,5 detik menggunakan subrutin
"DELAY".

Berikut penjelasan langkah per langkah dari kode tersebut:

1. "ORG 000H" menandakan bahwa kode ini akan mulai dieksekusi dari alamat memori 000H.
2. "MOV A, 00H" memindahkan nilai 00H ke dalam akumulator (register A). Register A
adalah register khusus yang digunakan untuk operasi aritmetika dan logika.
3. Label "NEXT" menandakan awal dari loop.
4. "MOV P22, A" memindahkan nilai dari register A ke port P22. Port P22 merupakan suatu
port yang digunakan untuk mengirimkan data keluar dari mikrokontroler.
5. "CALL DELAY" memanggil subrutin "DELAY" untuk memperkenalkan penundaan selama
0,5 detik.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


4
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

6. "ADD A, #1" menambahkan nilai 1 ke register A. Ini akan meningkatkan nilai A setiap kali
loop dieksekusi.
7. "DA A" adalah instruksi "Decimal Adjust" yang memastikan hasil penambahan di register A
diatur dengan benar untuk mempertahankan digit desimal yang tepat.
8. "JMP NEXT" adalah instruksi untuk melompat kembali ke label "NEXT", sehingga loop
akan berulang.
9. "DELAY 0,5S" adalah label yang menandakan awal dari subrutin "DELAY" dengan
parameter 0,5 detik.
10. "MOV R5, #5" memindahkan nilai 5 ke register R5. Register R5 digunakan sebagai
penghitung luar dalam loop penundaan.
11. Label "DL2" menandakan awal dari loop luar dalam subrutin "DELAY".
12. "MOV R6, #200" memindahkan nilai 200 ke register R6. Register R6 digunakan sebagai
penghitung tengah dalam loop penundaan.
13. Label "DL1" menandakan awal dari loop tengah dalam subrutin "DELAY".
14. "MOV R7, #249" memindahkan nilai 249 ke register R7. Register R7 digunakan sebagai
penghitung dalam loop penundaan.
15. "DJNZ R7, $" adalah instruksi "Decrement and Jump if Not Zero" yang mengurangi nilai R7
dan melompat kembali ke label saat R7 belum mencapai nol.
16. "DJNZ R6, DL1" adalah instruksi "Decrement and Jump if Not Zero" yang mengurangi nilai
R6 dan melompat kembali ke label DL1 saat R6 belum mencapai nol.
17. "DJNZ R5, DL2" adalah instruksi "Decrement and Jump if Not Zero" yang mengurangi nilai
R5 dan melompat kembali ke label DL2 saat R5 belum mencapai nol.
18. "RET" adalah instruksi "Return" yang mengakhiri subrutin "DELAY" dan melanjutkan
eksekusi ke instruksi berikutnya setelah pemanggilan subrutin.
19. "END" menandakan akhir dari kode assembly.

V.
PERCOBAAN 1 : Buat program dan upload ke mikrokontroler
Penghitung Dua Digit ke bawah s

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


5
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

1. Jelaskan cara kerja program mikrokontroler untuk percobaan 1 dikaitkan dengan


sistem perangkat keras pada gambar 4-2-2.

Dalam percobaan tersebut, program mikrokontroler dikaitkan dengan sistem perangkat


keras yang menggunakan tampilan 7-segmen dua digit (DS3 - DS4) dari MTS-51 Trainer
untuk menampilkan angka desimal.

Untuk mengontrol tampilan 7-segmen tersebut, kode program memanfaatkan port P2 pada
mikrokontroler. Jalur I/O P2.3-P2.0 digunakan sebagai input untuk DS4 (digit satuan) dan
jalur P2.7-P2.4 digunakan sebagai input untuk DS3 (digit puluhan).

Langkah-langkah program tersebut adalah sebagai berikut:

1. Pada awal program, nilai 99H (153 dalam desimal) dimasukkan ke register A
menggunakan instruksi "MOV A, #99H". Nilai ini akan ditampilkan pada tampilan 7-
segmen.
2. Selanjutnya, nilai yang ada di register A dipindahkan ke port P2 menggunakan
instruksi "MOV P2, A". Hal ini akan mengatur tampilan 7-segmen sesuai dengan nilai
di register A.
3. Program kemudian memanggil subrutin "DELAY" menggunakan instruksi "CALL
DELAY". Subrutin ini akan memperkenalkan penundaan selama 0,5 detik sebelum
program melanjutkan eksekusi berikutnya.
4. Setelah penundaan, nilai 99H ditambahkan ke nilai yang ada di register A
menggunakan instruksi "ADD A, #99H". Ini akan meningkatkan nilai yang
ditampilkan pada tampilan 7-segmen.
5. Instruksi "DA A" digunakan untuk melakukan penyesuaian desimal pada register A
setelah penambahan. Hal ini memastikan bahwa digit desimal yang tepat ditampilkan
pada tampilan 7-segmen.
6. Instruksi "JMP NEXT" digunakan untuk melompat kembali ke label "NEXT" dan
memulai kembali loop, sehingga tampilan 7-segmen akan diperbarui dengan nilai yang
baru.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


6
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

7. Subrutin "DELAY" digunakan untuk menciptakan penundaan selama 0,5 detik. Ini
dicapai dengan menggunakan beberapa loop yang menghitung secara berulang-ulang
dalam waktu tertentu, dengan nilai loop yang ditentukan secara empiris untuk
mencapai penundaan yang diinginkan.
8. Setelah penundaan selesai, instruksi "RET" digunakan untuk mengakhiri subrutin
"DELAY" dan program akan melanjutkan eksekusi ke instruksi berikutnya setelah
pemanggilan subrutin.

Dalam kaitannya dengan sistem perangkat keras, program ini memanfaatkan port P2 untuk
mengendalikan tampilan 7-segmen dan memastikan bahwa sakelar SW2_3 ditempatkan
pada posisi ON agar sistem dapat berfungsi dengan baik.

1. Jelaskan apa fungsi ADD dan DA pada program mikrokontroler percobaan 1

Fungsi ADD (Addition): Instruksi "ADD A, #99H" adalah instruksi yang digunakan untuk
menambahkan nilai 99H ke nilai yang ada di register A. Operasi ini dilakukan dalam format
angka biner atau desimal, tergantung pada mode operasi yang ditetapkan dalam
mikrokontroler. Hasil penambahan disimpan kembali di register A.

Fungsi DA (Decimal Adjust): Instruksi "DA A" adalah instruksi yang digunakan untuk
menyesuaikan nilai di register A agar sesuai dengan format desimal. Ini diperlukan karena
setelah operasi penambahan, nilai di register A mungkin melewati batas angka desimal yang
valid (0-9). Instruksi DA akan menyesuaikan nilai di register A agar sesuai dengan digit
desimal yang benar. Misalnya, jika nilai di register A adalah 0xA5 (165 dalam desimal),
setelah instruksi DA dieksekusi, nilai di register A akan menjadi 0x05 (5 dalam desimal).

Dengan menggunakan instruksi ADD dan DA, program tersebut memungkinkan


penambahan nilai ke register A dan penyesuaian desimal agar nilai yang ditampilkan pada
tampilan 7-segmen tetap dalam format yang tepat. Ini memungkinkan tampilan angka yang
sesuai pada perangkat keras, dalam hal ini pada tampilan 7-segmen yang dikendalikan
melalui port P2.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


7
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

PERCOBAAN 2 : Buat program dan upload ke mikrokontroler


Secara berurutan menampilkan angka dari 00 hingga 99, lalu dari 99 hingga 00 pada
DS3 dan DS4, lalu ulangi urutannya. Setiap nomor tetap bertahan selama 0,5 detik.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


8
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

1. Jelaskan cara kerja program mikrokontroler untuk percobaan 2 dikaitkan dengan


sistem perangkat keras pada gambar 4-2-2.

Program mikrokontroler di atas terkait dengan sistem perangkat keras yang menggunakan
tampilan 7-segmen dua digit (DS3 - DS4) dari MTS-51 Trainer untuk menampilkan angka
desimal. Untuk mengontrol tampilan 7-segmen, program ini memanfaatkan port P2 pada
mikrokontroler.

Langkah-langkah program tersebut adalah sebagai berikut:

1. Program dimulai dengan label "START". Pada tahap ini, program memanggil subrutin
"UPCOUNT" dan "DOWNCOUNT" secara berurutan.
2. Subrutin "UPCOUNT" bertujuan untuk menghitung dan menampilkan urutan angka dari
00H hingga FFH (0 hingga 255 dalam desimal) pada tampilan 7-segmen.

a. Pertama, register A diatur ke nilai 00H menggunakan instruksi "MOV A, #00H". b.


Selanjutnya, nilai di register A dipindahkan ke port P2 menggunakan instruksi "MOV P2,
A", sehingga nilai tersebut akan ditampilkan pada tampilan 7-segmen. c. Program
kemudian memanggil subrutin "DELAY" untuk membuat penundaan selama 0,5 detik. d.
Setelah itu, instruksi "ADD A, #1" digunakan untuk menambahkan 1 ke nilai yang ada di
register A. e. Instruksi "DA A" digunakan untuk menyesuaikan nilai di register A agar
sesuai dengan format desimal. f. Instruksi "CJNE A, #00H, NEXTU" digunakan untuk
memeriksa apakah nilai di register A masih bukan 00H (0 dalam desimal). Jika masih
bukan 00H, program akan melompat ke label "NEXTU" dan melanjutkan proses
pengulangan. g. Jika nilai di register A telah mencapai 00H, program akan kembali ke
subrutin "UPCOUNT" dan mengulang proses dari awal.

3. Subrutin "DOWNCOUNT" memiliki tujuan yang sama dengan "UPCOUNT", tetapi


menghitung dan menampilkan urutan angka dari 99H (153 dalam desimal) hingga 00H (0
dalam desimal) pada tampilan 7-segmen.

a. Pertama, register A diatur ke nilai 99H menggunakan instruksi "MOV A, #99H". b.


Selanjutnya, nilai di register A dipindahkan ke port P2 menggunakan instruksi "MOV P2,
A", sehingga nilai tersebut akan ditampilkan pada tampilan 7-segmen. c. Program
kemudian memanggil subrutin "DELAY" untuk membuat penundaan selama 0,5 detik. d.
Setelah itu, instruksi "ADD A, #99H" digunakan untuk menambahkan nilai 99H ke nilai
yang ada di register A. e. Instruksi "DA A" digunakan untuk menyesuaikan nilai di
register A agar sesuai dengan format desimal. f. Instruksi "CJNE A, #99H, NEXTD"
digunakan untuk memeriksa apakah nilai di register A masih bukan 99H (153 dalam
desimal). Jika masih bukan 99H, program akan melompat ke label "NEXTD" dan
melanjutkan proses pengulangan. g. Jika nilai di register A telah mencapai 99H, program
akan kembali ke subrutin "DOWNCOUNT" dan mengulang proses dari awal.

4. Subrutin "DELAY" digunakan untuk menciptakan penundaan selama 0,5 detik. Subrutin
ini menggunakan beberapa loop yang menghitung secara berulang-ulang dalam waktu
tertentu, dengan nilai loop yang ditentukan secara empiris untuk mencapai penundaan
yang diinginkan.
MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng
9
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

Dalam kaitannya dengan sistem perangkat keras, program ini memanfaatkan port P2 untuk
mengendalikan tampilan 7-segmen dan memastikan bahwa sakelar SW2_3 ditempatkan pada
posisi ON agar sistem dapat berfungsi dengan baik. Data BCD yang akan ditampilkan pada
tampilan 7-segmen ditulis ke port P2.3-P2.0 untuk DS4 (digit satuan) dan P2.7-P2.4 untuk
DS3 (digit puluhan).

Dengan mengatur nilai pada port P2 sesuai dengan nilai yang ingin ditampilkan, program
mengendalikan tampilan pada perangkat keras.

2. Jelaskan apa maksud CALL UPCOUNT & CALL DOWNCOUNT pada program
mikrokontroler percobaan 2

Dalam program mikrokontroler tersebut, instruksi "CALL UPCOUNT" dan "CALL


DOWNCOUNT" digunakan untuk memanggil subrutin "UPCOUNT" dan "DOWNCOUNT"
secara berurutan.

CALL UPCOUNT: Ketika instruksi "CALL UPCOUNT" dieksekusi, program akan


melompat ke subrutin "UPCOUNT". Subrutin ini bertanggung jawab untuk menghitung dan
menampilkan urutan angka dari 00H hingga FFH (0 hingga 255 dalam desimal) pada
tampilan 7-segmen. Setelah selesai menjalankan subrutin "UPCOUNT", program akan
kembali ke titik setelah instruksi "CALL UPCOUNT", yaitu instruksi "CALL
DOWNCOUNT".

CALL DOWNCOUNT: Ketika instruksi "CALL DOWNCOUNT" dieksekusi, program akan


melompat ke subrutin "DOWNCOUNT". Subrutin ini memiliki tujuan yang sama dengan
"UPCOUNT", tetapi menghitung dan menampilkan urutan angka dari 99H (153 dalam
desimal) hingga 00H (0 dalam desimal) pada tampilan 7-segmen. Setelah selesai
menjalankan subrutin "DOWNCOUNT", program akan kembali ke titik setelah instruksi
"CALL DOWNCOUNT", yaitu instruksi "JMP START".

Dengan memanggil subrutin "UPCOUNT" dan "DOWNCOUNT" secara bergantian dalam


loop utama yang ditandai dengan label "START", program tersebut dapat menciptakan efek
penjumlahan dan pengurangan berulang pada tampilan 7-segmen. Ini memungkinkan urutan
angka untuk ditampilkan secara berulang pada perangkat keras dengan menggunakan
subrutin yang sesuai untuk mengatur nilai pada port P2 yang mengendalikan tampilan 7-
segmen.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


10
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

3. Jelaskan apa maksud instruksi CJNE A,#00, NEXTU dan apa fungsi NEXTU
pada program mikrokontroler percobaan 2

Instruksi "CJNE A, #00, NEXTU" digunakan dalam subrutin "UPCOUNT" pada program
mikrokontroler di atas. Berikut penjelasan tentang instruksi dan fungsi yang terkait:

1. CJNE A, #00, NEXTU: Instruksi ini adalah Conditional Jump jika Not Equal (CJNE)
yang membandingkan nilai di dalam register A dengan nilai 00H. CJNE digunakan untuk
membandingkan dua nilai dan melakukan lompatan ke label tertentu jika kedua nilai
tersebut tidak sama.
o A: Register yang dibandingkan dengan nilai 00H.
o #00: Nilai 00H yang digunakan sebagai perbandingan.
o NEXTU: Label yang dituju jika nilai di dalam register A tidak sama dengan 00H.

Fungsi instruksi ini adalah untuk melakukan pengecekan apakah nilai di dalam register A
sudah mencapai 00H. Jika nilai A masih tidak sama dengan 00H, program akan melompat ke
label NEXTU dan melanjutkan perulangan untuk mengupdate dan menampilkan angka pada
tampilan 7-segmen.

2. NEXTU: NEXTU adalah label yang dituju oleh instruksi CJNE ketika nilai di dalam
register A tidak sama dengan 00H. Label ini digunakan untuk mengatur aliran program
kembali ke instruksi MOV P2, A setelah pengecekan dilakukan. Dalam konteks program
ini, NEXTU digunakan untuk melanjutkan perulangan dan memperbarui tampilan pada
tampilan 7-segmen dengan nilai yang baru.

Dengan menggunakan instruksi CJNE A, #00, NEXTU, program memastikan bahwa


subrutin "UPCOUNT" akan berjalan terus menerus hingga nilai di dalam register A
mencapai 00H, sehingga memungkinkan angka untuk ditampilkan secara berulang pada
perangkat keras

4. Jelaskan apa maksud instruksi CJNE A,#99, NEXTD dan apa fungsi NEXTD
pada program mikrokontroler percobaan 2

Instruksi "CJNE A, #99, NEXTD" digunakan dalam subrutin "DOWNCOUNT" pada


program mikrokontroler di atas. Berikut penjelasan tentang instruksi dan fungsi yang terkait:

1. CJNE A, #99, NEXTD: Instruksi ini adalah Conditional Jump jika Not Equal (CJNE)
yang membandingkan nilai di dalam register A dengan nilai 99H. CJNE digunakan untuk
membandingkan dua nilai dan melakukan lompatan ke label tertentu jika kedua nilai
tersebut tidak sama.
o A: Register yang dibandingkan dengan nilai 99H.
o #99: Nilai 99H yang digunakan sebagai perbandingan.
o NEXTD: Label yang dituju jika nilai di dalam register A tidak sama dengan 99H.

Fungsi instruksi ini adalah untuk melakukan pengecekan apakah nilai di dalam register A
sudah mencapai 99H. Jika nilai A masih tidak sama dengan 99H, program akan melompat ke
label NEXTD dan melanjutkan perulangan untuk mengupdate dan menampilkan angka pada
tampilan 7-segmen.

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


11
Jurusan Teknik Elektro: Prodi Teknologi Rekayasa Sistem Kelistrikan Migas Politeknik Negeri Ambon

2. NEXTD: NEXTD adalah label yang dituju oleh instruksi CJNE ketika nilai di dalam
register A tidak sama dengan 99H. Label ini digunakan untuk mengatur aliran program
kembali ke instruksi MOV P2, A setelah pengecekan dilakukan. Dalam konteks program
ini, NEXTD digunakan untuk melanjutkan perulangan dan memperbarui tampilan pada
tampilan 7-segmen dengan nilai yang baru.

Dengan menggunakan instruksi CJNE A, #99, NEXTD, program memastikan bahwa


subrutin "DOWNCOUNT" akan berjalan terus menerus hingga nilai di dalam register A
mencapai 99H, sehingga memungkinkan angka untuk ditampilkan secara berulang pada
perangkat keras

MODUL PRAKTEK MTS-51 Marceau A.F. Haurissa, ST.,M.Eng


12

Anda mungkin juga menyukai