laporan praktikum sistem mikroprosesor

85
BAB I PENDAHULUAN 1.1 TUJUAN - Praktikan mampu memahami penggunaan input dan output menggunakan Dinamic C 9.62 - Praktikan mampu membuat program LED-flash (berkedip) dengan mengakses komponen I/O pada aplikasi Dinamic C 9.62 dengan pengaturan Flash- Frekuensi sebesar 20Hz 1.2 DASAR TEORI - Using Dynamic C Dynamic C combines all the development tools necessary for compiling programmes and operating, in one User visual interface. The tools include the following components • Source text editor • C-Compiler including Assembler • Functions library • Debugger • File management • Rabbit-BIOS 1

Upload: syahriallingga

Post on 28-Dec-2015

539 views

Category:

Documents


9 download

DESCRIPTION

Sistem Mikroprosesor

TRANSCRIPT

Page 1: Laporan Praktikum Sistem Mikroprosesor

BAB I

PENDAHULUAN

1.1 TUJUAN

- Praktikan mampu memahami penggunaan input dan output menggunakan

Dinamic C 9.62

- Praktikan mampu membuat program LED-flash (berkedip) dengan

mengakses komponen I/O pada aplikasi Dinamic C 9.62 dengan

pengaturan Flash-Frekuensi sebesar 20Hz

1.2 DASAR TEORI

- Using Dynamic C

Dynamic C combines all the development tools necessary for compiling

programmes and operating, in one User visual interface. The tools include the

following components

• Source text editor

• C-Compiler including Assembler

• Functions library

• Debugger

• File management

• Rabbit-BIOS

The complex process when downloading an application program to the Target

is also supervised by the functions integrated in Dynamic C. After a successful

installation of Dynamic C, extensive documents and Help texts for the Rabbit

2000 and Dynamic C are available. Bear in mind that the software is continuously

being further developed and up-dated. This means that alterations are possible in

the descriptions, operating elements may be added or removed.

1

Page 2: Laporan Praktikum Sistem Mikroprosesor

- Access to I/O Components

When accessing I/O components (peripherals), a differentiation is made

between external and internal access.

The components in the EXERCISE-UNIT are addressed via external I/O

commands. Here, the command line is identified by the term ioe before a transport

command, e.g.

ioe ld (0xE000),A ; Output command

Test the access to the output components for the LED-row and the 7-segment

display by supplementing other code lines in BASIC01.C and work through the

program fragment in single-step.

Access to the LED-row:

ld a, 11111110b ; Load 8-bit accumulator

ioe ld (0xE000),A ; Output command for LED-row: LED "0“ lights

Access to the 7-segment displays:

ld a, 11000000b ; Load 8-bit accumulator (segments 7 and 8 "Off")

ioe ld (0xC000),A ; Output command for 7-segment display "Data"

ld a, 11101111b ; Load 8-bit accumulator (digit 4 "On")

ioe ld (0x8000),A ; Output command for 7-segment display “Digit“

; Digit 4 shows a "0"

Now test the access to the input components, Switch-row and Key-matrix, in

the same way.

Access to the Switch-row:

sr01: ioe ld A,(0xE000 ; Input command for the Switch-row

jp sr01 ; Branch instruction to sr01

Set a Breakpoint at "sr01“ and work through the loop in single-step. For each

run-through, change the settings of the switches and observe the result in the

Registers window under accumulator "A“.

Access to the Key-matrix:

tf01: ioe ld A,(0x8000) ; Input command for the Key-matrix

jp tf01

2

Page 3: Laporan Praktikum Sistem Mikroprosesor

Set a Breakpoint at "tf01“ and work through the loop in single-step while

pressing a key and observe the result in the Registers window under

accumulator "A“. The effects are seen only at the right hand bits of the

accumulator.

Dasar Teori Tambahan

Selain CPU dan unit memory, unit input output merupakan komponen

pokok dalam sebuah system mikroprosesor. System mikroprosesor memerlukan

unit I/O untuk menyajikan sebuah pengolahan CPU. Unit I/O bekerja sebagai

penghubung antara CPU dengan alat-alat input seperti keyboard, mouse dan juga

sebagai penghubung dengan alat-alat output seperti monitor, printer dan

sebagainya.

(staff.uny.ac.id/sites/default/files/unit%20IO%sistem%20Mikroprosesor.pdf)

Prinsip kerja LED, LED akan menyala apabila mendapat bias Forward

atau ada arus listrik yang mengalir dari Anoda ke Katoda. Dalam rangkaian

Elektronika pemasangan kaki LED tidak boleh terbalik, karena apabila terbalik

atau mendapat bias Reverse maka LED tidak akan menyala. LED memiliki

karakteristik yang berbeda menurut warna yang dihasilkan. Arus listrik yang

diperbolehkan untuk LED berkisar antara 10 mA - 20 mA dan pada tegangan 1,6

Volt - 3,5 Volt sesuai dengan warna yang dihasilkan. Apabila Arus atau Tegangan

yang mengalir lebih dari ketentuan tersebut, maka LED akan terbakar atau putus.

(http://edukasielektro.blogspot.com/2013/03/light-emitting-diode-led.html)

Light Emmiting Diode, yang disebut dan dikenla dengan nama LED

adalah komponen elektronik semikonduktor yang memancarkan cahaya atau infra

merah ketika diberi tegangan. Akibat dari Electroluminescence, artinya warna

cahaya yang dihasilkan tergantung kepada bahan yang digunakannya.

(teknik-elektro.net/light-emmiting-diode.html)

3

Page 4: Laporan Praktikum Sistem Mikroprosesor

Pada dasarnya LED merupakan komponen elektronika yang terbuat dari

bahan semikonduktor jenis diode yang mampu memancarkan cahaya. LED

merupakan produk temuan lain diode, strukturnya juga sama dengan dioda.

(teknisi-elektro.blogspot.com/2013/01/jenis-led-dan-cara-kerjanya)

LED adalah salah satu jenis dioda, maka LED memiliki dua buah kutub

yaitu anoda dan katoda. Dalam hal ini LED akan menyala bila ada arus listrik

yang mengalir dari anoda menuju katoda. Pemasangan kutub LED tidak boleh

terbalik, LED memiliki karakteristik warna yang berbeda-beda menurut warna

yang dihasilkan.

(www.sentrabelanja.com/article/cara-kerja-lampu-led)

4

Page 5: Laporan Praktikum Sistem Mikroprosesor

BAB II

PROSEDUR PERCOBAAN

2.1 Alat dan Bahan

Tabel 2.1 Alat dan Bahan

NO Alat dan Bahan Jumlah

1 PC 1 Unit

2 Platform with integrated power module +5V (SO4000-

1E)

1 Unit

3 Mains adapter, AC 90...230V 45...65Hz, DC 9V 630mA

(SO4000-1F)

1 Unit

4 Microprocessor training system (SO4000-3SA) 1 Unit

5 Serial interface cable, 9/9-pole (LM9040) 1 Unit

6 Serial interface cable RS323 1 Unit

7 Logic probe LM8101 1 Unit

8 Software Dinamic C 9.62 1 Unit

Gambar 2.1

Peralatan yang digunakan

5

Page 6: Laporan Praktikum Sistem Mikroprosesor

2.2 Prosedur Percobaan

1. Adapter-Unit, Rabbit-Core dan Exercise-Unit dipasangkan pada Work-

Platform Arbeits platform.

Gambar 2.2 rangkaian percobaan

2. Work-Platform Arbeits platform dihubungkan ke PC menggunakan kedua

kabel serial.

3. Work-Platform Arbeitsplattform dihubungkan dengan sumber tegangan

(external power supply)

4. Aplikasi Dinamic C 9.62 di start

5. Data teknikal pada mikroporcessor-core di konfigurasi seperti berikut:

6. Interface COM dipilih melalui menu Options dan dikonfigurasi

Communication Options pada Project Options :

7. Parameter compiler ditentukan melalui menu Options → Project Options

→ Compiler Options

6

Page 7: Laporan Praktikum Sistem Mikroprosesor

Gambar 2.3 Konfigurasi parameter compiler

8. Setelah kabel serial disetting, kemudian dipilih sesuai COMx yang telah

terinstall.

9. Program frame FRAME1.C dibuka kemudian disimpan latihan sesuai

dengan kelompok saat mengikuti praktikum. (contoh: MODUL1_KEL1.C)

10. Program berikut diketikkan pada frame program yang sudah disimpan

sebelumnya.

#asm debug

; -------------- The Assembler main program -----------------

start:

ld A,11111111b

ioe ld 0xE000),A

call wait_long

ld A,00001111b

ioe ld (0xE000),A

call wait_long

call wait_long

call wait_long

call wait_long

jr start

; ------------------------------------------------------------

#endasm

7

Page 8: Laporan Praktikum Sistem Mikroprosesor

11. Setelah selesai diketiketikkan kode program di atas, program dicompile pada

menu compile

12. Program yang sudah di compile dijalankan dengan dipilih menu run

13. Output melalui work-platform dilihat dan di analisa pada MCLS-modular.

14. Rangkaian akhir seperti berikut

8

Page 9: Laporan Praktikum Sistem Mikroprosesor

BAB III

ANALISA DATA DAN PEMBAHASAN

3.1 Data Hasil Percobaan

Coding :

#asm debug

; -------------- The Assembler main program -----------------

start:

ld A,11111111b

ioe ld (0xE000),A

call wait_long

ld A,01010101b

ioe ld (0xE000),A

call wait_long

call wait_long

call wait_long

call wait_long

jr start

; ------------------------------------------------------------

#endasm

Output :

Tabel 3.1 output

NO LED STATUS 1 STATUS 2

1 0 1 0

2 1 1 1

3 2 1 0

4 3 1 1

5 4 1 0

6 5 1 1

7 6 1 0

8 7 1 1

9

Page 10: Laporan Praktikum Sistem Mikroprosesor

3.2 Analisa Data

#asm debug

; -------------- The Assembler main program -----------------

start:

ld A,11111111b // tanda LED bernilai 0 mati (led 0-7 mati)

ioe ld 0xE000),A // Output baris LED

call wait_long // Delay program 100ms

ld A,01010101b // output LED 0,2,4,6 mati, 1,3,5,7 menyala

ioe ld (0xE000),A // Output baris LED

call wait_long // Delay program 100ms

call wait_long // Delay program 100ms

call wait_long // Delay program 100ms

call wait_long // Delay program 100ms

jr start // memulai program dari awal (looping)

; ------------------------------------------------------------

#endasm

3.3 Pembahasan

Source Code :

#asm debug

; -------------- The Assembler main program -----------------

start:

ld A,11111111b

ioe ld 0xE000),A

call wait_long

ld A,01010101b

ioe ld (0xE000),A

call wait_long

call wait_long

call wait_long

call wait_long

jr start

; ------------------------------------------------------------

#endasm

10

Page 11: Laporan Praktikum Sistem Mikroprosesor

Praktikum ini bertujuan untuk mengetahui flashing LED

berdasarkan perintah yang di inputkan ke mikroprosesor. Mula-mula di

inisialisasi variable A dengan nilai 1 di tiap posisi bit nya dengan perintah

ld A, 11111111b. Kemudian dilakukan inisialisasi baris output LED,

output LED di inisialisasi dengan bilangan hexadesimal karena

mikroprosesor hanya mengenal bilangan hexadecimal, kemudian

dilakukan delay program selama 100ms dengan perintah call wait_long,

delay program ini dilakukan agar program dapat dengan baik masuk ke

kondisi atau perintah program berikutnya.

Kemudian variable A di inisialisasi lagi dengan bilangan

01010101. Disini dapat dilihat ada 2 kondisi variable A, penjelasannya

adalah sebagai berikut :

- Kondisi pertama, saat A = 11111111b, ini perintah agar LED 0-7 pada

posisi bit bernilai 1 akan mati, dan 0 akan menyala

- Kondisi kedua, saat A = 01010101b, LED 0,2,4,6 padam dan 1,3,5,7

menyala.

- Time Flashing (waktu kedip) LED akan tergantung dengan berapa

banyak perintah call wait_long yang di inputkan oleh user.

Inti dari percobaan ini adalah, awalnya pada perintah ld

A,1111111b kita telah menetapkan bahwa LED pada bit bernilai 1 akan

padam dan LED pada bit bernilai sebaliknya 0 (nol)) akan menyala, maka

sebab itu pada output hasil percobaan didapati LED 0,2,4,6 padam karena

bitnya bernilai 1, dan LED 1,3,5,7 menyala karena bitnya bernilai 0.

11

Page 12: Laporan Praktikum Sistem Mikroprosesor

BAB IV

PENUTUP

4.1 Kesimpulan

1. Input perintah ke mikroprosesor menggunakan perintah ioe ld

2. LED yang digunakan pada percobaan memiliki panjang bit sebesar 8 bit

(LED 0-7)

3. Perintah call wait_long digunakan sebagai perintah untuk delay program

selama 100ms.

4. Pada percobaan ini telah di atur ketentuannya, yaitu ketika bit LED

bernilai 1 maka LED padam dan bila bit LED bernilai 0 maka LED

menyala.

5. Time Flashing (kedipan LED) akan semakin cepat bila call wait_long

dikurangi pada source code.

12

Page 13: Laporan Praktikum Sistem Mikroprosesor

BAB I

PENDAHULUAN

1.1 TUJUAN

- Praktikan mampu memahami mode pengalamatan, mengerti bagaimana

penggunaan instruksi conditional jump, dan instruksi logika dan arimatika

- Praktikan mampu membuat dan memahami konsep bilangan hexadecimal

yang ditampilkan pada display 7-segment

1.2 DASAR TEORI

Mode Pengalamatan

Mode pengalamatan merujuk pada bagaimana pemrogram mengalamati

suatu lokasi memori. Setiap mode pengalamatan memberikan fleksibilitas khusus

yang sangat penting. Mode pengalamatan ini meliputi immediate addressing,

direct addressing, dan indirect addressing

1. Immediate Addressing Mode

Cara yang paling sederhana untuk membangkitkan data pada destinasi

dengan cara membuat data menjadi bagian dari op code.

Pada mnemonic digunakan tanda “#”

Instruksi Data

Op Code Next Byte

Mnemonic Operasi

MOV A, #01h copy data 01h ke Register A

MOV R3, #1Ch copy data 1Ch ke Register R3

MOV DPTR,#ABCDh copy data ABCDh ke Register R3

2. Register Addressing Mode

Nama register (A, DPTR, R0 – R7) digunakan sebagai bagian dari op code

mnemonik baik sebagai source atau sebagai destinasi.

13

Page 14: Laporan Praktikum Sistem Mikroprosesor

Mnemonic Operasi

MOV A, R0 copy data pada R0 ke register A

MOV R5, A copy data pada A ke R53. Indirect Addressing

3. Direct Addressing Mode

Penunjukan pengalamatan secara langsung

Mnemonic Operasi

MOV A, 80h copy data dari Port 0 ke register A

MOV A, P0 copy data dari Port 0 ke register A

MOV 80h, A copy data dari register A ke Port 0

MOV P0 , A copy data dari register A ke Port 0

4. Indirect Addresing Mode

Menggunakan register sebagai pencatat atau pemegang

Alamat aktual yang akan digunakan untuk memindahkan data

Register itu sendiri bukan alamat

Menggunakan R0 dan R1 sebagai Pointer data

Menggunakan tanda “ @ ”

Mnemonic Operasi

MOV A @R0 copy isi data dari alamat yang dicatat

oleh R0 ke register A

MOV @R1, A copy data yang ada di register A ke alamat

yang dicatat oleh R1

MOV @R0,80h copy data dari Port 0 ke alamat yang

tercatat oleh R0

INSTRUKSI LOGIKA DAN ARITMATIKA

Berikut daftar operasi logika dan aritmatika dan keterangannya :

1. Operasi arimetika

Instruksi Keterangan

ADD Add

ADDC Add with carry flag

SUBB Subtract

14

Page 15: Laporan Praktikum Sistem Mikroprosesor

INC Increment

DEC Decrement

MUL Multiply

DIV Divide

CLR Clear

CPL Complement

RL Rotate accumulator left

RLC Rotate accumulator left through carry

RR Rotate accumulator right

RRC Rotate accumulator right through carry

2. Operasi logika

Instruksi Keterangan

ANL AND

ORL OR

XRL Exclusive OR

FLAGS

Name Flag Function

Sign-flag S Copy of the MMSB in target operands for signed

numbers

0 = positive, 1 = negative

Zero-flag Z Z = 1 when target operand is zero, otherwise Z = 0

Overflow-

flag

V V = 1 for an overflow in additions or borrowing in

subtractions, for signed numbers in two’s

complement, otherwise V = 0

Carry-flag C V = 1 for an overflow in additions or borrowing in

subtractions, for unsigned numbers, otherwise C = 0

15

Page 16: Laporan Praktikum Sistem Mikroprosesor

DASAR TEORI TAMBAHAN

Subroutine atau procedure adalah suatu blok program terpisah

yang digunakan untuk mengerjakan suatu pekerjaan tertentu. Kegunaan yang

umum dari subroutine adalah menghemat kode program bila terjadi proses yang

sama diulang berkali-kali. Salah satu bentuk subroutine di dalam visual basic

dikenal dengan event dari komponen.

http://happyanindya8.wordpress.com/oop-1/sub-routine-function/

Mode pengalamatan adalah bagaimana cara menunjuk dan mengalamati

suatu lokasi memori pada sebuah alamat di mana operand akan diambil. Mode

pengalamatan diterapkan pada set instruksi, dimana pada umumnya instruksi

terdiri dari opcode (kode operasi) dan alamat. Setiap mode pengalamatan

memberikan fleksibilitas khusus yang sangat penting. Mode pengalamatan ini

meliputi direct addressing, indirect addressing, dan immediate addressing.

(msgt.files.wordpress.com/2010/01/pengalamatan1.doc)

Pada stack berlaku aturan LIFO (Last In First Out), yaitu elemen yang

terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang

dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita

hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah

meletakkan piring pertama pada tempatnya, selsnjutnya meletakkan piring kedua

di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil

satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang

terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

(http://khabib.staff.ugm.ac.id/index.php?

option=com_content&view=article&id=84:tumpukan-a-antrian-stack-a-

queue&catid=28:introduction-to-algorithm-and-programming)

Stack digunakan untuk menuliskan ungkapan menggunakan notasi tertentu

(Notasi Polish). Biasanya ungkapan yang digunakan adalah ungkapan numeris.

Sebagai contoh ungkapan (A + B)*(C – D) apabila ditulis dengan menggunakan

notasi Polish menjadi * + A B – C D.

16

Page 17: Laporan Praktikum Sistem Mikroprosesor

http://kuliahinformatika.wordpress.com/2010/02/06/stack-queue-penjelasan-

deskripsi-fungsi-dasar-pemodelan-dan-penerapan-stack/

Seven Segment adalah suatu segmen-segmen yang digunakan

menampilkan angka. Seven segment ini tersusun atas 7 batang led yang disusun

membentuk angka 8 dengan menggunakan huruf a s/d g yang disebut dot matrix.

Setiap segmen ini terdiri dari 1 atau 2 Light Emitting Diode ( LED ). Seven

Segment merupakan gabungan dari 7 buah LED (Light Emitting Diode) yang

dirangkaikan membentuk suatu tampilan angka

http://it-kopl4k.blogspot.com/2012/12/pengertian-seven-

segmen.html#.UatBmtjdOKw

17

Page 18: Laporan Praktikum Sistem Mikroprosesor

BAB II

PROSEDUR PERCOBAAN

2.1 Alat dan Bahan

Tabel 2.1 Alat dan Bahan

No Alat dan Bahan Jumlah

1 PC 1 unit

2 Platform with integrated power module +5V (SO4000-1E) 1 unit

3 Mains adapter, AC 90...230V 45...65Hz, DC 9V 630mA

(SO4000-1F)

1 unit

4 Microprocessor training system (SO4000-3SA) 1 unit

5 interface cable, 9/9-pole (LM9040) 1 unit

6 interface cable RS323 1 unit

7 Logic probe LM8101 1 unit

8 Software Dinamic C 9.62 1 unit

Gambar 2.1 Peralatan yang digunakan

18

Page 19: Laporan Praktikum Sistem Mikroprosesor

2.2 PROSEDUR PERCOBAAN

Gambar 2.2 Rangkaian Percobaan

1. Adapter-Unit dipasang, Rabbit-Core dan Exercise-Unit pada Work-

Platform Arbeitsplattform.

2. Dihubungkan dengan Work-Platform Arbeitsplattform ke PC

menggunakan kedua kabel serial.

3. Diubungkan Work-Platform Arbeitsplattform dengan sumber tegangan

(external power supply)

4. Start Aplikasi Dinamic C 9.62

5. Dipilih data teknikal pada mikroporcessor-core seperti berikut:

6. Dipilih interface COM melalui menu Options dan konfigurasi

Communication Options pada Project Options :

7. Parameter ditentukan compiler melalui menu Options → Project Options

→ Compiler Options

19

Page 20: Laporan Praktikum Sistem Mikroprosesor

Gambar 2.3 Konfigurasi Parameter Compiler

8. Setelah kabel serial disetting, dipilih sesuai COMx yang telah terinstall.

9. Program dibuka frame FRAME1.C kemudian disimpan latihan sesuai

dengan kelompok saat mengikuti praktikum. (contoh: MODUL1_KEL1.C)

10. Program di ketikkan berikut pada frame program yang sudah disimpan

sebelumnya.

#asm debug

; ------------------------ The Assembler main program

---------------

; Main program

start:

ld HL,Code_Table ; Pointer to start of table

st1: ld A,(HL) ; Fetch character code

cp 0xFF ; End recognition ?

jr z,start ; If Yes, back to start

; .............................................................

ioe ld (0xC000),A ; Data to display

ld A,11101111b ; Digit 4

ioe ld (0x8000),A ; Digit information for display

; .............................................................

call wait_long ; Wait 100ms

20

Page 21: Laporan Praktikum Sistem Mikroprosesor

inc hl ; Pointer +1

jr st1 ; Continue with next character

; ----------------------------------------------------------------

; ..............................................................

; Table of character codes for the 7-segment display

Code_Table:

db 11000000b ; 0

db 11111001b ; 1

db 10100100b ; 2

db 10110000b ; 3

db 10011001b ; 4

db 10010010b ; 5

db 10000010b ; 6

db 11111000b ; 7

db 10000000b ; 8

db 10010000b ; 9

db 10001000b ; A

db 10000011b ; b

db 10100111b ; c

db 10100001b ; d

db 10000110b ; E

db 10001110b ; F

db 11111111b ; End identification

; ----------------------------------------------------------------

#endasm

11. Setelah selesai diketik kode program di atas, compile program pada menu

compile

12. Program dijalankan yang sudah di compile dengan memilih menu run

13. Dilihat dan analisa output melalui work-platform pada MCLS-modular.

21

Page 22: Laporan Praktikum Sistem Mikroprosesor

BAB III

ANALISA DATA DAN PEMBAHASAN

3.1 Data Hasil Percobaan

#asm debug

start:

ld HL,Code_Table

st1: ld A,(HL)

cp 0xFF

jr z,start

ioe ld (0xC000),A

ld A,11101111b

ioe ld (0x8000),A

call wait_long

inc hl

jr st1

Code_Table:

db 11000000b

db 11111001b

db 10100100b

db 10110000b

db 10011001b

db 10010010b

db 10000010b

db 11111000b

db 10000000b

db 10010000b

db 10001000b

db 10000011b

db 10100111b

db 10100001b

db 10000110b

db 10001110b

db 11111111b

#endasm

22

Page 23: Laporan Praktikum Sistem Mikroprosesor

Tabel 3.1 Tabel hasil percobaan

No Code Binary Code Hexa Decimal

1 db 11000000b 0

2 db 11111001b 1

3 db 10100100b 2

4 db 10110000b 3

5 db 10011001b 4

6 db 10010010b 5

7 db 10000010b 6

8 db 11111000b 7

9 db 10000000b 8

10 db 10010000b 9

11 db 10001000b A

12 db 10000011b B

13 db 10100111b C

14 db 10100001b D

15 db 10000110b E

16 db 10001110b F

17 db 11111111b -

3.2 Analisa Data

#asm debug // Awal baris program

start: // label start

ld HL,Code_Table // isi register HL dengan kode tabel

st1:ld A,(HL) // untuk pengulangan isi kode tabel

cp 0xFF // compare dan konversi binary ke hexa decimal

jr z,start // looping untuk start

ioe ld (0xC000),A // input output eksternal variable A (perintah

yang dikirimkan ke seven segment)

ld A,11101111b // perintah yang menentukan seven segment mana yang

akan menyala

ioe ld (0x8000),A // perintah agar seven segment dapat membentuk suatu

karakter ( angka atau huruf)

call wait_long // jeda program selama 100 ms

23

Page 24: Laporan Praktikum Sistem Mikroprosesor

inc hl // perintah penjumlahan (+1) ke isi register HL

jr st1 // looping st 1

Code_Table: // nama tabel register HL

db 11000000b // untuk menampilkan 0

db 11111001b // untuk menampilkan 1

db 10100100b // untuk menampilkan 2

db 10110000b // untuk menampilkan 3

db 10011001b // untuk menampilkan 4

db 10010010b // untuk menampilkan 5

db 10000010b // untuk menampilkan 6

db 11111000b // untuk menampilkan 7

db 10000000b // untuk menampilkan 8

db 10010000b // untuk menampilkan 9

db 10001000b // untuk menampilkan A

db 10000011b // untuk menampilkan B

db 10100111b // untuk menampilkan C

db 10100001b // untuk menampilkan D

db 10000110b // untuk menampilkan E

db 10001110b // untuk menampilkan F

db 11111111b // untuk mematikan semua lampu

#endasm // akhir dari program

3.3 Pembahasan

#asm debug

start:

ld HL,Code_Table

st1: ld A,(HL)

cp 0xFF

jr z,start

ioe ld (0xC000),A

ld A,11101111b

ioe ld (0x8000),A

call wait_long

inc hl

jr st1

Code_Table:

db 11000000b

db 11111001b

db 10100100b

24

Page 25: Laporan Praktikum Sistem Mikroprosesor

db 10110000b

db 10011001b

db 10010010b

db 10000010b

db 11111000b

db 10000000b

db 10010000b

db 10001000b

db 10000011b

db 10100111b

db 10100001b

db 10000110b

db 10001110b

db 11111111b

#endasm

Pada percobaan ini bertujuan agar kita mengetahui bagaimana cara kerja

seven segmen pada sistem mikroprosesor. Program di mulai dengan memasukkan

code _tabel ke register HL (ld A, (HL) agar tabel dapat dibaca dan di looping

perbarisnya kemudian code_tabel di konversikan ke bilangan hexa decimal (cp

0xFF) . Kemudian di lakukan looping untuk st1 tadi (jr z, start) semua hal ini

adalah untuk membuat tabel yang nantinya isi tabel tersebut akan diisi, isi tabel ini

nantinya akan menentukan bentuk angka di 7-segment.

Kemudian di ketik 3 hal berikut :

Ioe ld (0xc000), A : berfungsi untuk memanggil fungsi variable A untuk 7-

Segment

ld A, 11101111 : berfungsi untuk menentukan berapa buah 7-segment yang

menyala (dalam kasus ini hanya 1 yang menyala pada

seven segment ke 4 dari kiri yang bernilai 0)

iod ld (0x8000),A : berfungsi agar tampilan seven segment yang di hasilkan

variable A dapat berubah bentuk dari angka KC angka lain

ke bentuk huruf

3 hal di atas sangat berpengaruh pada output yang di hasilkan 7-segment nantiya,

setelah dilakukan jeda program selama 100ms dengan perintah call wait_long, lalu

register HL dilakukan increament (penambahan +1). Saat proses looping

berlangsung dengan perintah inc hl, kemudian di looping untuk s+1 dengan

25

Page 26: Laporan Praktikum Sistem Mikroprosesor

perintah jr s+1 yang artinya program akan berlanjut ke kode table jika semua

benar kemudian di lakukan pengisian data untuk tabel bernama code_table tadi

dengan perintah db (spasi) bilangan biner 8 bit yang berbeda yang bila di jadikan

keluaran ke 7-segment dalam sistem hexadecimal menjadi 0-9 dan A-F, kemudian

program di akhiri dengan mengetik #endasm.

26

Page 27: Laporan Praktikum Sistem Mikroprosesor

BAB IV

PENUTUP

4.1 Kesimpulan

1. Output yang di hasilkan 7-segment sistem bilangan hexadecimal

2. Agar 7-segment dapat membentuk dan berubah-ubah bentuk dari angka

atau huruf digunakan perintah ioe ld (0x8000),A

3. Kecepatan kedip (flashing) dari 7-segment atau cepat rambatnya

perpindahan satu bentuk angka ke bentuk lain tergantung call wait-long

yang di ketik.

4. Jr st 1 adalah looping yang apabila benar program akan terus berlanjut dan

apabila salah akan melakukan pengulangan kembali.

5. Id A ,11101111b berfungsi untuk menentukan beberapa 7-segment yang

nyala.

27

Page 28: Laporan Praktikum Sistem Mikroprosesor

BAB I

PENDAHULUAN

1.1 TUJUAN

- Praktikan mampu mengerti dan memahami penggunaan pengalamatan

memori pada sistem mikroprosessor

- Praktikan mampu memahami penggunaan stack function dan teknik sub-

routine

- Praktikan dapat membuat program mode pengalamatan memori yang

ditampilkan pada 7-segment

1.2 DASAR TEORI

Sub-routine Techniques

Konsep subrutin secara global digambarkan seperti berikut ini.

Gambar

1.1 Diagram konsep Sub-routine

Beberapa hal yang terkait dengan subrutin adalah :

Diawali dengan instruksi yang berlabel sebagai alamat masuk atau alamat

yang dipanggil.

28

Page 29: Laporan Praktikum Sistem Mikroprosesor

Instruksi pertamannya harus membuat temporary storage (untuk

mengamankan kondisi mutakhir), terutama bila subrutin dapat dipanggil

oleh interupt (dapat diinterupsi).

Ditengahnya memberikan suatu hasil.

Diakhirir dengan instruksi RETURN untuk kemlabi ke program utama

(main program)

Stack Function

Stack Addressing

Merupakan metode pengalamatan yang alamat efektifnya (alamat yang

dituju) ditentukan oleh isi stack pointer (SP), jadi alamat yang dituju =

(SP) atau isi SP.

Ini berarti, isi SP harus ditentukan terlebih dulu, dan perlu hati-hati dalam

menentukan isi SP dikarenakan SP banyak digunakan oleh mikroprosesor

untuk mengatur operasi-operasinya.

Operasi Stack

1. create

2. empty

3. full

4. push

5. pop

NOTASI PEMANFAATAN STACK

NOTASI INFIX PREFIX

Cara penulisan ungkapan yaitu dengan menggunakan notasi infix, yang

artinya operator ditulis diantara 2 operator. Seorang ahli matematika bernama Jan

Lukasiewiccz mengembangkan suatu cara penulisan ungkapan numeris yang

disebut prefix, yang artinya operator ditulis sebelum kedua operand yang akan

disajikan. Contoh :

Proses konversi dari infix ke prefix :

= ( A + B ) * ( C – D )

29

Page 30: Laporan Praktikum Sistem Mikroprosesor

= [ + A B ] * [ - C D ]

= * [ + A B ] [ - C D ]

= * + A B - C D

NOTASI INFIX POSTFIX

Cara penulisan ungkapan yaitu dengan menggunakan notasi postfix, yang

artinya operator ditulis sesudah operand. Contoh :

Proses konversi dari infix ke postfix :

= ( 6 - 2 ) * ( 5 + 4 )

= [ 6 2 - ] * [ 5 4 + ]

= [ 6 2 - ] [ 5 4 + ] *

= 6 2 - 5 4 + *

DASAR TEORI TAMBAHAN

Metode pengalamatan merupakan aspek dari intruksi bidang arsitektur

pada central Proccessing Unit (CPU) atau pada mikroprosessor. Metode

pengalamatan ini menentukan bagaimana bahasa mesin dapat mengetahui letak

proses datanya pada isi memory guna mengetahui proses berjalannya program

secara optimal.

(theyoan.blogspot.com/2012/11/metode-pengalamatan.html)

Stack merupakan istilah dari susunan beberapa data dalam bahasa

pemrograman, stack juga merupakan kumpulan data, dimana data yang diletakkan

diatas data yang lain. Dengan demikian stack adalah struktur data yang

menggunakan konsep LIFO (last In First Out).

(molimood.blogspot.com/2013/02/stack-algoritma-dan-struktur-data.html)

Stack adalah struktur data yang bersifat Last In First out (LIFO). Struktur

dari stack yang dapat kita lihat sehari-hari adalah stack of coin, stack of book dan

computer stack. Terdapat 2 operasi yang dapat dikerjakan dalam stack, yaitu push

dan pop. Push merupakan penambahan data ke tumpukan (stack), sedangkan pop

adalah pengambilan data yang menempati posisi teratas dari stack.

30

Page 31: Laporan Praktikum Sistem Mikroprosesor

(www.docstoc.com)

Stack memiliki system kerja Last In First Out, yang artinya yang erakhir

masuk akan dikeluarkan pada bagian awal, aplikasi di kehidupan sehari-hari

contohnya adalah tumpukan beberapa buku tulis, buku yang terakhit ditumpuk

akan pertama kali di ambil oleh user. Elemen stack dapat ditambahkan dengan

cara menambahkan data ke tumpukan stack paling atas.

(tutorialpemrograman.wordpress.com/2009/02/15/stack-tumpukan-dan-queue-

antrian-dalam-bahasa-java.html)

Stack merupakan sebuah koleksi objek yang menggunakan prinsip LIFO,

yaitu data yang terakhir ditumpuk akan dikeluarkan pertama kali dari tumpukan

tersebut.

(id.wikipedia.org/wiki/stack_(struktur_data))

31

Page 32: Laporan Praktikum Sistem Mikroprosesor

BAB II

PROSEDUR PERCOBAAN

2.1 ALAT PERALATAN

Tabel 2.1 Alat dan Bahan

NO Alat dan Bahan Jumlah

1 PC 1 unit

2 Platform with integrated power module +5V (SO4000-

1E)

1 unit

3 Mains adapter, AC 90...230V 45...65Hz, DC 9V 630mA

(SO4000-1F)

1 unit

4 Microprocessor training system (SO4000-3SA) 1 unit

5 Serial interface cable, 9/9-pole (LM9040) 1 unit

6 Serial interface cable RS323 1 unit

7 Logic probe LM8101 1 unit

8 Software Dinamic C 9.62 1 unit

Gambar 2.1 Peralatan yang digunakan

32

Page 33: Laporan Praktikum Sistem Mikroprosesor

2.2 PROSEDUR PERCOBAAN

Gambar 2.2 Rangkaian percobaan

1. Adapter-Unit, Rabbit-Core dan Exercise-Unit dipasangkan pada Work-

Platform Arbeitsplattform.

2. Work-Platform Arbeitsplattform dihubungkan ke PC menggunakan kedua

kabel serial.

3. Work-Platform Arbeitsplattform dihubungkan dengan sumber tegangan

(external power supply)

4. Aplikasi Dinamic C 9.62 di start

5. Data teknikal dipilih pada mikroporcessor-core seperti berikut:

6. Interface COM dipilih melalui menu Options dan dikonfigurasi

Communication Options pada Project Options :

7. Parameter compiler ditentukan melalui menu Options → Project Options

→ Compiler Options

33

Page 34: Laporan Praktikum Sistem Mikroprosesor

Gambar 2.3 Konfigurasi Parameter Compiler

8. Setelah kabel serial disetting, pilih sesuai COMx yang telah terinstall.

9. Program frame FRAME1.C dibuka kemudian disimpan latihan sesuai dengan

kelompok saat mengikuti praktikum. (contoh: MODUL1_KEL1.C)

10. Program berikut diketikkan pada frame program yang sudah disimpan

sebelumnya.

#asm debug

; ------------------------ The Assembler main program --------------

; Main program

; ...................................................................

; Defining the constants

limit_l: equ 0x1000 ; Lower address limit

limit_u: equ 0x101F ; Upper address limit

adr_matrix: equ 0x8000 ; Gate address of the key-matrix

code_key1: equ 0x81 ; Code for key 1

code_key3: equ 0x83 ; Code for key 3

; ...................................................................

; -------------------------------------------------------------------

start:

call clr_display ; Clear the display

ld HL,limit_l ; Pointer to start of addressed area

X00:

ld A,0x07h ; Addresses starting at the left display

digit

34

Page 35: Laporan Praktikum Sistem Mikroprosesor

ld (position),A

ld A,L ; LT address to wordX

ld (wordX),A

ld A,H ; HT address to wordX+1

ld (wordX+1),A

call write_word_display ; Write Word to display

; .................................................................

ld A,1 ; Write data bit starting at digit 1

ld (position),A

ld A,(HL) ; Fetch data bit from memory location

ld (byteX),A ; Data byte to byteX

call write_byte_display ; Write byte to display

; .................................................................

x03:

call wait_long ; Wait

ioe ld A,(adr_matrix) ; Read key-code

cp 0x8eh ; Key 1 for address +1 pressed ?

jp z,x01 ; If Yes, then to x01

cp 0x8ch ; Key 3 for address -1 pressed ?

jp z,x02 ; If Yes, then to x02

jp x03

x01: inc HL ; Pointer +1

call control_UL ; Check, upper limit reached ?

call sound_out ; Short 2kHz tone

jp X00 ; Program loop

x02: dec HL ; Pointer -1

call control_LL ; Check, lower limit reached ?

call sound_out ; Short 2kHz tone

jp X00

; -------------------------------------------------------------------

; -------------------------------------------------------------------

; Sub-routine for checking the upper limit

control_UL:

ex DE,HL

scf ; Clear Carry-flag

ccf

ld HL,limit_u+1

sbc HL,DE ; Upper limit exceeded ?

jr nz,c_end1 ; If No, then to end of SR

ld DE,limit_u ; If Yes, then pointer to upper limit

c_end1:

ex DE,HL

35

Page 36: Laporan Praktikum Sistem Mikroprosesor

ret

; ------------------------------------------------------------------

; ------------------------------------------------------------------

; Sub-routine for checking the lower limit

control_LL:

ex DE,HL

scf ; Clear Carry-flag

ccf

ld HL,limit_l-1

sbc HL,DE ; Lower limit exceeded ?

jr nz,c_end2 ; If No, then to end of SR

ld DE,limit_l ; If Yes, then pointer to lower limit

c_end2:

ex DE,HL

ret

; -------------------------------------------------------------------

#endasm

11. Setelah kode program di atas selesai diketikan, program di compile pada menu

compile

12. Program yang sudah di compile dijalankan dengan memilih menu run

13. Dilihat dan dianalisa output melalui work-platform pada MCLS-modular.

36

Page 37: Laporan Praktikum Sistem Mikroprosesor

BAB III

ANALISA DAN PEMBAHASAN

3.1 Data Hasil Percobaan

Coding :

#asm debug

; ------------------------ The Assembler main program --------------

; Main program

; ...................................................................

; Defining the constants

limit_l: equ 0x1000

limit_u: equ 0x101F

adr_matrix: equ 0x8000

code_key1: equ 0x81

code_key3: equ 0x83

; ...................................................................

; -------------------------------------------------------------------

start:

call clr_display

ld HL,limit_l

ld A,0x07h

ld (position),A

ld A,L

ld (wordX),A

ld A,H

ld (wordX+1),A

call write_word_display

; .................................................................

ld A,1

ld (position),A

ld A,(HL)

ld (byteX),A

call write_byte_display

; .................................................................

x03:

call wait_long

ioe ld A,(adr_matrix)

cp 0x8eh

jp z,x01

cp 0x8ch

jp z,x02

37

Page 38: Laporan Praktikum Sistem Mikroprosesor

jp x03

x01: inc HL

call control_UL

call sound_out

jp X00

x02: dec HL

call control_LL

call sound_out

jp X00

; -------------------------------------------------------------------

; -------------------------------------------------------------------

; Sub-routine for checking the upper limit

control_UL:

ex DE,HL

scf

ccf

ld HL,limit_u+1

sbc HL,DE

jr nz,c_end1

ld DE,limit_u

c_end1:

ex DE,HL

ret

; ------------------------------------------------------------------

; ------------------------------------------------------------------

; Sub-routine for checking the lower limit

control_LL:

ex DE,HL

scf

ccf

ld HL,limit_l-1

sbc HL,DE

jr nz,c_end2

ld DE,limit_l

c_end2:

ex DE,HL

ret

; -------------------------------------------------------------------

#endasm

Output :

38

Page 39: Laporan Praktikum Sistem Mikroprosesor

Tabel 3.1 Output Hasil Percobaan

NO ADDRESS ISI

1 1000 14

2 1001 FD

3 1002 E4

4 1003 3F

5 1004 EB

6 1005 FD

7 1006 E4

8 1007 28

9 1008 B7

10 1009 ED

11 100A 52

12 100B 7L

13 100C B5

14 100D 20

15 100E 21

16 100F 21

17 1010 01

18 1011 00

19 1012 C0

20 1013 55

21 1014 10

22 1015 00

23 1016 FD

24 1017 E4

25 1018 4C

26 1019 EB

27 101A FD

28 101B EA

29 101C 4E

30 101D 44

31 101E 4D

32 101F 45

39

Page 40: Laporan Praktikum Sistem Mikroprosesor

3.2 Analisa Data

#asm debug // mulai program (mode debug)

limit_l: equ 0x1000 // Batas alamat bawah

limit_u: equ 0x101F // batas alamat atas

adr_matrix: equ 0x8000 // alamat gate matrix

code_key1: equ 0x81 // kode key1

code_key3: equ 0x83 //kode key3

; -------------------------------------------------------------------

start:

call clr_display // bersihkan layar

ld HL,limit_l // pointer mulai menunjuk area alamat

X00:

ld A,0x07h //digit alamat di mulai dari kiri

ld (position),A //pindah isi A ke parameter position

ld A,L //pindah isi L ke A

ld (wordX),A //pindah isi A ke parameter wordX

ld A,H //pindah isi H ke A

ld (wordX+1),A //pindah isi A ke wordX lalu di +1

call write_word_display //panggil fungsi untuk menuliskan word ke

display

; .................................................................

ld A,1 //tulis data string mulai dari bit 1

ld (position),A //pindah A ke parameter position

ld A,(HL) //fetch data bit dari lokasi memori

ld (byteX),A //pindah isi A ke parameter byteX

call write_byte_display //panggil fungsi write byte

; .................................................................

x03: //label x03

call wait_long //delay 100ms

ioe ld A,(adr_matrix) //baca kunci keycode dari matrix

cp 0x8eh //key1 untuk +1

jp z,x01 //jika ditekan +1 maka lompat ke x01

cp 0x8ch //key3 untuk kondisi -1

jp z,x02 //jika -1 maka lompat ke x02

jp x03 // lompat ke x03

x01: inc HL //label x01, increment HL

call control_UL //fungsi batas atas

call sound_out //fungsi sound 8bit

jp X00 // Program loop

x02: dec HL //label x02, decrement HL

call control_LL //cek apakah tercapai batas paling bawah

40

Page 41: Laporan Praktikum Sistem Mikroprosesor

call sound_out //fungsi sound 8bit

jp X00 //jump ke x00

; -------------------------------------------------------------------

; -------------------------------------------------------------------

; Sub-routine for checking the upper limit

control_UL:

ex DE,HL

scf // Clear Carry-flag

ccf

ld HL,limit_u+1

sbc HL,DE //cek apaka tercapai batas atas

jr nz,c_end1 //jika belum maka end

ld DE,limit_u //jika sudah lompat ke DE

c_end1:

ex DE,HL

ret

; ------------------------------------------------------------------

; ------------------------------------------------------------------

; Sub-routine for checking the lower limit

control_LL:

ex DE,HL

scf //clear carry flag

ccf

ld HL,limit_l-1

sbc HL,DE //cek apakah tercapai batas terbawah

jr nz,c_end2 //jika belum, lompat ke end

ld DE,limit_l //jika sudah maka pointer ke lower limit

c_end2:

ex DE,HL

ret

; -------------------------------------------------------------------

#endasm

3.3 Pembahasan

#asm debug

; ------------------------ The Assembler main program -----------

; Main program

; ................................................................

..

; Defining the constants

limit_l: equ 0x1000

limit_u: equ 0x101F

41

Page 42: Laporan Praktikum Sistem Mikroprosesor

adr_matrix: equ 0x8000

code_key1: equ 0x81

code_key3: equ 0x83

; ................................................................

; ---------------------------------------------------------------

start:

call clr_display

ld HL,limit_l

ld A,0x07h

ld (position),A

ld A,L

ld (wordX),A

ld A,H

ld (wordX+1),A

call write_word_display

;................................................................

ld A,1

ld (position),A

ld A,(HL)

ld (byteX),A

call write_byte_display

;...............................................................

x03:

call wait_long

ioe ld A,(adr_matrix)

cp 0x8eh

jp z,x01

cp 0x8ch

jp z,x02

jp x03

x01: inc HL

call control_UL

call sound_out

jp X00

x02: dec HL

call control_LL

call sound_out

jp X00

;-----------------------------------------------------------------

--

; Sub-routine for checking the upper limit

control_UL:

42

Page 43: Laporan Praktikum Sistem Mikroprosesor

ex DE,HL

scf

ccf

ld HL,limit_u+1

sbc HL,DE

jr nz,c_end1

ld DE,limit_u

c_end1:

ex DE,HL

ret

; ----------------------------------------------------------------

; ----------------------------------------------------------------

; Sub-routine for checking the lower limit

control_LL:

ex DE,HL

scf

ccf

ld HL,limit_l-1

sbc HL,DE

jr nz,c_end2

ld DE,limit_l

c_end2:

ex DE,HL

ret

; ----------------------------------------------------------------

#endasm

Coding di atas merupakan source code dari program untuk

menampilkan alamat dan isi dari suatu lokasi memori. Pada outputnya,

alamat memory ditampilkan dalam bentuk bilangan biner dan

heksadesimal, sedangkam isinya 2 digit hexadecimal.

Mula-mula di seklarasikan terlebih dahulu batas atas, batas bawah,

alamat matrix dan key code, natas atas dan batas bawah (upper & lower

limit) merupakan batas bilangan yang muncul pada posisi terbawah dan

yang paling atas (upper limit). Ada beberapa label yang dibuat dalam

program ini, di antaranya adalah :

X00 : label yang menhandle posisi memory (isi) dari parameter

position.

X01 dan x02 : label yang menghandle penambahan (increment) serta

pengurangan (decrement) terhadap register HL, kedua label ini juga

43

Page 44: Laporan Praktikum Sistem Mikroprosesor

menghandle control batas atas dan bawah serta suara “beep” pada saat

user memindahkan alamat memori.

X03 : label yang menghandle alamat berbasis matrix serta terlibat

dalam input ke mikroprosesor, didalam label ini juga ada proses jump

register dan compare variable.

Control UL (Upper Limit) ; label yang menghandle batasan atas dari

isi lokasi memori.

Control LL (Lower Limit) : label yang menghandle batasan bawah

dari isi lokasi memori.

Inti dari program di atas adalah bagaimana caranya mengetahui

informasi lokasi memory dalam output 7 segment di perangkat

mikroprosessor, untuk proses penampil ini ada beberapa fungsi yang

digunakan, yaitu :

Call write_word-display : akan menampilkan huruf pada 7 segment

44

Page 45: Laporan Praktikum Sistem Mikroprosesor

BAB IV

PENUTUP

4.1 Kesimpulan

1. Sebelum menampilkan isi lokasi memori, sebelumnya harus ditentukan

dahulu batas teratas dan terbawah alamat memori yang akan ditampilkan.

2. Komponen label untuk menampilkan output di seven segment pada

percobaan ini adalah x00, x01, x02 dan x03

3. Fungsi pemanggilan yang digunakan pada percobaan ini adalah :

Call write_word_display : tampilkan huruf

Call write_byte_display : tampilkan bit angka

Call sound_out : mengeluarkan bunyi beep per alamat

4. Agar program tidak melewati keadaan limit_UL dan limit_LL digunakan

fungsi control_Ul dan control_LL

5. Control_LL dan control_UL merupakan sub routine dalam program

6. Pada proses sub routine, flag pada register terlibat yaitu pada ssc dan ccf

7. Register yang digunakan pada percobaan ini adalah HL dan DE

8. Register HL terlibat dalam proses increment dan decrement langsung

45

Page 46: Laporan Praktikum Sistem Mikroprosesor

BAB I

PENDAHULUAN

1.1 TUJUAN

- Praktikan mampu memahami komponen penyusun sistem minimum untuk

jam digital yang ditampilkan pada tampilan 7-segment

- Praktikan mampu mengerti bagaimana cara kerja jam digital 7-segment

dengan penambahan waktu delay sebesar 10ms

1.2 DASAR TEORI

Seven Segment Display

Seven Segment adalah tujuh segmen-segmen yang digunakan menampilkan

angka. Seven segment merupakan display visual yang umum digunakan

dalam dunia digital. Seven segment sering dijumpai pada jam digital, penujuk

antrian, diplay angka digital dan termometer digital.

Gambar 1.1 Seven – Segment Display

46

Page 47: Laporan Praktikum Sistem Mikroprosesor

jenis-jenis Seven Segment:

1. Common Anoda

Semua anoda dari LED dalam seven segmen disatukan secara parallel dan

semua itu dihubungkan ke VCC, dan kemudian LED dihubungkan melalui

tahanan pembatas arus keluar dari penggerak LED. Karena dihubungkan

ke VCC, maka COMMON ANODA ini berada pada kondisi AKTIF LOW

(led akan menyala/aktif bila diberi logika 0). 

2. Common Katoda

Merupakan kebalikan dari common Anoda. Disini semua katoda disatukan

secara parallel dan dihubungkan ke GROUND. Karena seluruh katoda

dihubungkan ke GROUND, makan COOMON KATODA ini berada pada

kondisi AKTIF HIGH (led akan menyala/aktif bila diberi logika 1)

Diagram Blok dan Prinsip Kerja Rangkaian

Diagram blok sederhana dan prinsip kerja jam digital ini adalah sebagai berikut :

Diagram Blok sistem jam digital

Gambar 1.2 Diagram block system jam digital

1. Sumber detak merupakan suatu pembangkit pulsa yang menghasilkan detak 1

getaran per detik ( 1 Hz ).

2. Pencacah I dan pencacah II akan mencacah dari 00 (0000 0000) hingga 59

(0101 1001) yang kemudian akan digunakan pada penunjuk detik dan menit.

Sedangkan pencacah III merupakan pencacah dari 00 (0000 0000) hingga 23

(0010 0011) yang digunakan pada penunjuk jam.

3. Dari hasil sistem perencanaan di atas dapat dilihat bahwa pada dasarnya

pencacah I dan pencacah II merupakan jenis pencacah yang sama, pada

pengaplikasiannya digunakan pencacah 10 (decade counter) yaitu IC 7490,

sehingga bilangan dipecah menjadi dua yaitu penunjukan satuan dan puluhan.

47

Pencacah I

Pencacah II

Pencacah III

Sumber Detak

Page 48: Laporan Praktikum Sistem Mikroprosesor

Special function register

Register khusus (SFR – Special Function Register) adalah satu daerah dalam IC

keluarga MCS51 yang dipakai untuk mengatur perilaku MCS51 dalam hal-hal

khusus, misalnya tempat untuk berhubungan dengan port pararel P1 atau P3, dan

sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data

seperti layaknya memori data.

Keterangan pada peta SFR di atas dapat dilihat pada tabel berikut ini :

Tabel 1.1 Keterangan Peta SFR

Simbol Nama Alamat

ACC Akumulator E0H

B B register F0H

PSW Program Status Word D0H

SP Stack Pointer 81H

DPTR0 Data Pointer 0 16 bit

DP0L Byte rendah

DP0H Byte tinggi

82H

83H

DPTR1 Data Pointer 0 16 bit

DP1L Byte rendah

DP1H Byte tinggi

84H

85H

P0 Port 0 80H

P1 Port 1 90H

P2 Port 2 A0H

P3 Port 3 B0H

IP Interrupt Priority Control B8H

IE Interrupt Enable Control A8H

TMOD Timer/Counter Mode Control 89H

TCON Timer/Counter Control 88H

TH0 Timer/Counter Control 0 High

Byte

8CH

TL0 Timer/Counter Control 0 Low Byte 8AH

TH1 Timer/Counter Control 1 High

Byte

8DH

48

Page 49: Laporan Praktikum Sistem Mikroprosesor

TL1 Timer/Counter Control 1 Low Byte 8BH

SCON Serial Control 98H

SBUF Serial Data Buffer 99H

PCON Power Control 87H

WDTRST Watchdog Timer Reset A6H

AUXR Auxiliary Register 8EH

DASAR TEORI TAMBAHAN

Layar tujuh segmen (bahasa Inggris: Seven-segment display (SSD)) adalah

salah satu perangkat layar untuk menampilkan sistem angka desimal yang

merupakan alternatif dari layar dot-matrix. Layar tujuh segmen ini seringkali

digunakan pada jam digital, meteran elektronik, dan perangkat elektronik lainnya

yang menampilkan informasi numerik. Ide mengenai layar tujuh segmen ini sudah

cukup tua. Pada tahun 1910 misalnya, sudah ada layar tujuh segmen yang

diterangi oleh lampu pijar yang digunakan pada panel sinyal kamar ketel suatu

pembangkit listrik.

(Warren O. Rogers, Power Plant Signalling System, Power and the Engineer, Vol.

32, No. 5 (Feb. 1, 1910); pages 204-206.)

Register TL0, TL1, TH0, TH1 adalah register timer / counter masing-

masing sebesar 8 bit (1 byte) yang secara berurutan menempati alamat 0x8A,

0x8B, 0x8C, 0x8D pada SRF. TH0 dan TL0 secara bersama-sama membentuk

register time 0 / counter 0 16 bit (1byte) atas dan TL0 untuk 8 bit (1byte) bawah.

TH1 dan TL1 secara bersama-sama membentuk Register timer / counter 1 16 bit,

TH1 untuk 8 bit (1 byte) atas dan TL1 untuk 8 bit (1 byte) bawah.

Register TH0-TL0 dan TH1-TL1 menentukan jumlah pencacahan pulsa dari awal

sampe akhir. Reegister ini dapat dibaca utuk mengetahui isi pencacahan.

(http://doc2men.blogspot.com/2012/12/register-yang-berhubungan-dengan-

timer.html)

49

Page 50: Laporan Praktikum Sistem Mikroprosesor

Jenis-jenis Seven Segment :

1. Common Anoda

Semua anoda dari LED dalam seven segmen disatukan secara parallel dan semua

itu dihubungkan ke VCC, dan kemudian LED dihubungkan melalui tahanan

pembatas arus keluar dari penggerak LED. Karena dihubungkan ke VCC, maka

COMMON ANODA ini berada pada kondisi AKTIF LOW (led akan

menyala/aktif bila diberi logika 0).

2. Common Katoda

Merupakan kebalikan dari Common Anoda. Disini semua katoda disatukan secara

parallel dan dihubungkan ke GROUND. Karena seluruh katoda dihubungkan ke

GROUND, maka COMMON KATODA ini berada pada kondisi AKTIF HIGH

(led akan menyala/aktif bila diberi logika 1).

(http://sinelectronic.blogspot.com/2012/02/seven-segment-adalah-tujuh-

segmen.html)

RTC adalah jenis pewaktu yang bekerja berdasarkan waktu yang

sebenarnya atau dengan kata lain berdasarkan waktu yang ada pada jam kita. Agar

dapat berfungsi, pewaktu ini membutuhkan dua parameter utama yang harus

ditentukan, yaitu pada saat mulai (start) dan pada saat berhenti (stop).

DS1307 merupakan salah satu tipe IC RTC yang dapat bekerja dalam daya

listrik rendah. Di dalamnya berisi waktu jam dan kalender dalam format BCD.

Waktu jam dan kalender memberikan informasi detik, menit, jam, hari, tanggal,

bulan, dan tahun. Untuk bagian jam dapat berformat 24 jam atau 12 jam.

Pendeteksi sumber listrik juga disediakan untuk mendeteksi kegagalan sumber

listrik dan langsung mengalihkannya ke sumber baterai.

(Lamp Switch Centralization Based On Microcontroller AVR ATMega 8535,

Library IT TELKOM Bandung)

Prinsip kerja seven segmen ialah input biner pada switch dikonversikan

masuk ke dalam decoder, baru kemudian decoder mengkonversi bilangan biner

tersebut menjadi decimal, yang nantinya akan ditampilkan pada seven segment.

50

Page 51: Laporan Praktikum Sistem Mikroprosesor

Seven segment dapat menampilkan angka-angka desimal dan beberapa

karakter tertentu melalui kombinasi aktif atau tidaknya LED penyusunan dalam

seven segment. Untuk memudahkan penggunaan seven segment, umumnya

digunakan sebuah decoder( mengubah/ mengkoversi input bilangan biner menjadi

decimal) atau seven segment driver yang akan mengatur aktif tidaknya led-led

dalam seven segment sesuai dengan nilai biner yang diberikan.

Dekoder BCD ke seven segment digunakan untuk menerima masukan

BCD 4-bit dan memberikan keluaran yang melewatkan arus melalui segmen

untuk menampilkan angka desimal. Jenis dekoder BCD ke seven segment ada dua

macam yaitu dekoder yang berfungsi untuk menyalakan seven segment mode

common anoda dan dekoder yang berfungsi untuk menyalakan seven segment

mode common katoda.

(http://ilmubawang.blogspot.com/2011/04/download-artikel-ini-dalam-

bahasa.html)

51

Page 52: Laporan Praktikum Sistem Mikroprosesor

BAB II

PROSEDUR PERCOBAAN

2.1 ALAT PERALATAN

Tabel 2.1 Alat dan bahan

No. Alat dan Bahan Jumlah

1 PC 1 Unit

2 Platform with integrated power module +5V (SO4000-1E) 1 Unit

3 Mains adapter, AC 90...230V 45...65Hz, DC 9V 630mA

(SO4000-1F)

1 Unit

4 Microprocessor training system (SO4000-3SA) 1 Unit

5 Serial interface cable, 9/9-pole (LM9040) 1 Unit

6 Serial interface cable RS323 1 Unit

7 Logic probe LM8101 1 Unit

8 Software Dinamic C 9.62 1 Unit

Gambar 2.1 Peralatan yang digunakan

52

Page 53: Laporan Praktikum Sistem Mikroprosesor

2.2 PROSEDUR PERCOBAAN

Gambar 2.2 Rangkaian Percobaan

1. Adapter-Unit, Rabbit-Core dan Exercise-Unit dipasang pada Work-

Platform Arbeitsplattform.

2. Work-Platform dihubungkan Arbeitsplattform ke PC menggunakan kedua

kabel serial.

3. Work-Platform Arbeitsplattform dihubungkan dengan sumber tegangan

(external power supply)

4. Aplikasi Dinamic C 9.62 dimulai

5. Pilih data teknikal pada mikroporcessor-core seperti berikut:

6. Interface COM dipilih melalui menu Options dan dikonfigurasi

Communication Options pada Project Options :

7. Parameter compiler ditentukan melalui menu Options → Project Options

→ Compiler Options

53

Page 54: Laporan Praktikum Sistem Mikroprosesor

Gambar 2.3 Konfigurasi Parameter Compiler

8. Setelah kabel serial disetting, pilih sesuai COMx yang telah terinstall.

9. Program frame FRAME1.C di kemudian simpan latihan sesuai dengan

kelompok saat mengikuti praktikum. (contoh: MODUL1_KEL1.C)

10. Program berikut diketikkan pada frame program yang sudah disimpan

sebelumnya.

#asm debug

; ------------------------ The Assembler main program

------------------

; Main program

;

-----------------------------------------------------------------

------

start:

call clr_display ; Clear display

call show_lines ; Hyphen in display

m01: call show_time ; Show the time information

; .........................................................

m00: call time_10ms ; Time delay 10ms

ld A,(ms10) ; 10ms time-variable +1

inc A

ld (ms10),A

cp A,100 ; 100*10ms = 1s expired ?

jp nz,m00 ; If No, then to m00

54

Page 55: Laporan Praktikum Sistem Mikroprosesor

; .........................................................

ld A,0 ; Reset 10ms time-variable

ld (ms10),A

; Count seconds with decimal correction

ld A,(sec)

inc A

res 0,D ; Parameter for dec_adjust

call dec_adjust

ld (sec),A

; .........................................................

cp A,0x60h ; Full 60s ?

jp nz,m01 ; If No, continue at m01

; .........................................................

ld A,0 ; Reset seconds

ld (sec),A

; .........................................................

; Count minutes with decimal correction

ld A,(min)

inc A

res 0,D

call dec_adjust

ld (min),A

; .........................................................

cp a,0x60h ; 1 hour complete ?

jp nz,m01 ; If No, continue at m01

; .........................................................

ld A,0 ; Reset minutes

ld (min),A

; .........................................................

; Count hours with decimal correction

ld A,(std)

inc A

res 0,D

call dec_adjust

ld (std),A

; .........................................................

cp A,0x24h ; 24 hours complete ?

jp nz,m01 ; If No, continue at m01

; .........................................................

ld A,0 ; Reset hours

ld (std),A

; .........................................................

jp m01

55

Page 56: Laporan Praktikum Sistem Mikroprosesor

; --------------------- End of Assembler-Main program

-------------------

;

-----------------------------------------------------------------

------

; Display the hyphens

show_lines:

ld A,10111111b ; Hyphen segment active

ioe ld (0xc000h),A ; Data to display latch

ld A,11011011b ; Select digits 5 and 2

ioe ld (0x8000h),A ; Drive to the digits

ret

;

-----------------------------------------------------------------

------

;

-----------------------------------------------------------------

------

; Show complete time

show_time:

call show_sec ; Display the seconds

call show_min ; Display the minutes

call show_hours ; Display the hours

ret

;

-----------------------------------------------------------------

------

;

-----------------------------------------------------------------

------

; Write seconds to display

show_sec:

ld A,0x01 ; Seconds starting at digit 1

ld (position),A

ld A,(sec) ; Sekunden

ld (byteX),A ; Data byte to byteX

call write_byte_display ; Write byte to display

ret

;

-----------------------------------------------------------------

-------------

;

-----------------------------------------------------------------

-------------

56

Page 57: Laporan Praktikum Sistem Mikroprosesor

; Write minutes to display

show_min:

ld A,0x04 ; Minutes starting at digit 4

ld (position),A

ld A,(min) ; Minutes

ld (byteX),A ; Data byte to byteX

call write_byte_display ; Write byte to display

ret

;

-----------------------------------------------------------------

-------------

;

-----------------------------------------------------------------

-------------

; Write hours to display

show_hours:

ld A,0x07 ; Hours starting at digit 7

ld (position),A

ld A,(std) ; Hours

ld (byteX),A ; Data byte to byteX

call write_byte_display ; Write byte to display

ret

;

-----------------------------------------------------------------

------

; Software time delay approx. 10ms

time_10ms:

push bc

ld b,38 ; 38*250µs

t01: call time_250us

djnz t01

pop bc

ret

;

-----------------------------------------------------------------

------

; ................................................................

.......

; Defining the time-variables

ms10: db 00

sec: db 50h ; with pre-assignment

min: db 58h ; with pre-assignment

std: db 23h ; with pre-assignment

57

Page 58: Laporan Praktikum Sistem Mikroprosesor

;

-----------------------------------------------------------------

------

#endasm

11. Setelah selesai diketikkan kode program di atas, program di compile pada

menu compile

12. Program yang sudah di compile dijalankan dengan memilih menu run

13. Dilihat dan dianalisa output melalui work-platform pada MCLS-modular.

BAB III

ANALISA DATA DAN PEMBAHASAN

3.1 DATA HASIL PERCOBAAN

#asm debug

start :

call clr_display

call show_lines

m01:

call show_time

m00:

call time_10ms

ld A, (ms10)

inc A

ld (ms10) ,A

cp A,100

jp nz,m00

ld A,0

ld (ms10) ,A

ld A, (sec)

inc A

res 0,D

call dec_adjust

ld (sec) ,A

cp A,0x60h

58

Page 59: Laporan Praktikum Sistem Mikroprosesor

jp nz,m01

ld A,0

ld (sec) ,A

ld A,(min)

inc A

res 0,D

call dec_adjust

ld (min) ,A

cp a,0x60h

jp nz,m01

ld A,0

ld (min) ,A

ld A, (std)

inc A

res 0,D

call dec_adjust

ld (std) ,A

cp A, 0x24h

jp nz, m01

ld A,0

ld (std),A

jp m01

show_lines :

ld A,10111111b

ioe ld (0xc000h) ,A

ld A,11011011b

ioe ld (0x8000h) ,A

ret

show_time :

call show_sec

call show_min

call show_hours

ret

59

Page 60: Laporan Praktikum Sistem Mikroprosesor

show_sec :

ld A,0x01

ld (position) ,A

ld A, (sec)

ld (byteX) ,A

call write_byte_display

ret

show_min :

ld A,0x04

ld (position) ,A

ld A, (min)

ld (byteX) ,A

call write_byte_display

ret

show_hours :

ld A,0x07

ld (position) ,A

ld A, (std)

ld (byteX) ,A

call write_byte_display

ret

time_10ms :

push bc

ld b,38

t01 :

call time_250us

djnz t01

pop bc

ret

ms10: db 00

sec: db 50h

min: db 58h

std: db 23h

#endasm

Output : 23-58-50

60

Page 61: Laporan Praktikum Sistem Mikroprosesor

3.2 ANALISA DATA

#asm debug // Header Memulai Program Assembly

start : // Label Start

call clr_display // Memanggil perintah untuk menghapus layar

call show_lines // Memanggil perintah untuk menampilkan garis

m01: // Label m01

call show_time // Memanggil perintah untuk menampilakan waktu

m00: // Label m00

call time_10ms // Memanggil perintah untuk waktu delay 10ms

ld A, (ms10) // Mengisi register A dengan Parameter ms10

inc A // Menambahkan nilai register A

ld (ms10) ,A // Mengisi parameter ms10 dengan register A

cp A,100 // Membandingkan nilai 100 dengan register A

(100x10ms = 1s)

jp nz,m00 // Proses perulangan jika nilai m00 sama dengan null

ld A,0 // Mengisi register A dengan 0

ld (ms10) ,A // Mengisi reegister ms10 dengan register A

ld A, (sec) // Mengisi register A dengan parameter sec

inc A // Menambahkan nilai register A

res 0,D // Mereset nilai register D menjadi 0

call dec_adjust // memanggil perintah decimal adjust

ld (sec) ,A // Mengisi parameter sec dengan register A

cp A,0x60h // Membandingkan register A dengan nilai 0x60h

jp nz,m01 // Proses perulangan jika nilai m01 sama dengan null

ld A,0 // Memasukan nilai 0 ke dalam register A

ld (sec) ,A // Memasukan register A kedalam parameter sec

ld A, (min) // Mengisi register A dengan parameter min

inc A // Menambahkan nilai register A

res 0,D // Mereset nilai register D menjadi 0

call dec_adjust // memanggil perintah decimal adjust

ld (min) ,A // Mengisi parameter min dengan register A

cp A,0x60h // Membandingkan register A dengan nilai 60 hexa

jp nz,m01 // Proses perulangan jika nilai m01 sama dengan null

61

Page 62: Laporan Praktikum Sistem Mikroprosesor

ld A,0 // Memasukan nilai 0 ke dalam register A

ld (min) ,A // Memasukan register A kedalam parameter min

ld A, (std) // Mengisi register A dengan parameter std

inc A // Menambahkan nilai register A

res 0,D // Mereset nilai register D menjadi 0

call dec_adjust // Memanggil perintah decimal adjust

ld (std) ,A // Mengisi parameter std dengan register A

cp A,0x24h // Membandingkan register A dengan nilai 24 hexa

jp nz,m01 // Proses perulangan jika nilai m01 sama dengan null

ld A,0 // Memasukan nilai 0 ke dalam register A

ld (std) ,A // Memasukan register A kedalam parameter std

jp m01 // Lompat ke label m01

show_lines : // Label Show_lines

ld A,10111111b // Memasukan nilai biner 10111111 kedalam register A

ioe ld (0xc000h) ,A // Perintah untuk menampilkan data pada seven

segment.

ld A,11011011b // Memasukan nilai biner 11011011 kedalam register A

ioe ld (0x8000h) ,A // Menempatkan data pada seven segment sesuai dengan

data biner yang di input

ret // Return from subroutine

show_time : // Label Show_time

call show_sec // Memanggil perintah untuk menampilkan detik

call show_min // Memanggil perintah untuk menampilkan minute

call show_hours // Memanggil perintah untuk menampilkan jam

ret // Return from subroutine

show_sec : // Label Show_sec

ld A,0x01 // Mengisi register A dengan nilai 0x01

ld (position) ,A // Mengisi parameter position dengan nilai

register A

ld A, (sec) // Mengisi register A dengan parameter sec

ld (byteX) ,A // Mengisi parameter byteX dengan register A

call write_byte_display // Memanggil perintah byter untuk ditampilkan

ret // Return from subroutine

show_min : // Label Show_min

ld A,0x01 // Mengisi register A dengan nilai 0x04

ld (position) ,A // Mengisi parameter position dengan nilai register A

ld A, (min) // Mengisi register A dengan parameter min

62

Page 63: Laporan Praktikum Sistem Mikroprosesor

ld (byteX) ,A // Mengisi parameter byteX dengan register A

call write_byte_display // Memanggil perintah byter untuk ditampilkan

ret // Return from subroutine

show_hours : // Label Show_hours

ld A,0x01 // Mengisi register A dengan nilai 0x07

ld (position) ,A // Mengisi parameter position dengan nilai register A

ld A, (std) // Mengisi register A dengan parameter std

ld (byteX) ,A // Mengisi parameter byteX dengan register A

call write_byte_display // Memanggil perintah byter untuk ditampilkan

ret // Return from subroutine

time_10ms : // Label time_10ms

push bc // Masukan register bs pada stack

ld b,38 // Mengisi register B dengan 38

t01 : // Label t01

call time_250us // Memanggil perintah 250us

djnz t01 // Lompat ke label t01

pop bc // Mengeluarkan register BC dengan stack

ret // Return From Subroutine

ms10: db 00 // Mendefinisikan nilai awal ms10 adalah 00

sec: db 50h // Mendefinisikan nilai awal sec adalah 50

min: db 58h // Mendefinisikan nilai awal min adalah 45

std: db 23h // Mendenifisikan nilai awal std adalah 14

#endasm // Perintah prinsip program

3.3 PEMBAHASAN

Clock program with software delay adalah suatu program

waktu (timer) berbasis real time clock. Delay disini bermaksud

adalah waktu jeda sebesar 10 ms yang akan diulang selama 100 x

untuk mendapatkan nilai sec.

Program ini ditampilkan oleh seven – segment common

anoda , yang mana jika masukan low rangkaian pada seven –

segment terdapat 3 bagian yang dipisahkan oleh garis, yaitu bagian

std, min, sec. Bagian-bagian ini nantinya ditampilkan pada seven –

segment yang akan mengalami proses perulangan sesuai dengan

nilai yang di berikan.

63

Page 64: Laporan Praktikum Sistem Mikroprosesor

Kerena program ini merupakan real time clock jadi waktu /

penentuan nilai pada std, min, sec dapat ditentukan mulai dari

mana. Hal ini dilakukan sama seperti mensetting jam digital.

64

Page 65: Laporan Praktikum Sistem Mikroprosesor

BAB IV

PENUTUP

4.1 Kesimpulan

1. Pada percobaan praktikum ini, fungsi dari coding itu yaitu menampilkan

waktu jam pada LED yang mana tujuannya untuk proses pembuatan jam

digital.

2. Waktu permulaan jam pada LED diatur dengan ms10 : db 00, sec : db 50,

min : db 58h, std : db 23h yang mana akan tampil angka 23-58-50.

3. Sec : db 50 waktu permulaan jalan detik pada LED, min : db 58h waktu

permulaan jalan menit pada LED, std : db 23h waktu permulaan jalan jam

pada LED.

4. Pada praktikum ini hitungan waktu delay adalah sebesar 10 ms. Maka

setiap 100x perulangan nilainya sama dengan 1 s (detik)

5. Praktikum ini menggunakan seven – segment common anoda, yang mana

jika diberikan masukan “0” maka rangkaian menjadi aktif.

6. Fungsi nz pada program adalah untuk memberikan sebuah variable varian

yang telah diisi sebuah nilai jika value bernilai Null.

7. Program ini merupakan program real time clock jadi kita sebelumnya

dapat mendefinisikan std, min, sec sebelumn timer dijalankan.

8. Untuk memproses menampilkan min, sec atau std pada seven – segment.

Biasanya di tentukan posisinya dengan cara memberikan nilai pada

register A sebelum register A di copy ke parameter position

65