BIOLOGI ONLINE

blog pendidikan biologi

Pemrograman Bahasa Assembly (Assembler)

Bahasa assembly adalah sebuah program yang terdiri dari instruksi-instruksi  yang menggantikan kode-kode biner dari bahasa mesin dengan “mnemonik” yang mudah diingat. Misalnya sebuah instruksi penambahan dalam bahasa mesin dengan kode “10110011” yang dalam bahasa assembly dapat dibuat dalam instruksi mnemonik ADD, sehingga mudah diingat dibandingkan dengan angka 0 dan 1, dalam setiap instruksi membutuhkan suatu operand baik berupa data langsung maupun suatu lokasi memori yang menyimpan data yang bersangkutan. Bahasa assembly sering juga disebut kode sumber atau kode simbolik yang tidak dapat dijalankan oleh prosesor, sedangkan assembler adalah suatu program yang dapat menerjemahkan program bahasa assembly ke program bahasa mesin. bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Program bahasa mesin sering disebut sebagai kode objek.

Baris-baris program yang mengandung instruksi mesin atau pengarah assembler harus mengikuti aturan program assembler ASM51. Masing-masing baris atas beberapa field yang dipisahkan dengan spasi atau tabulasi adalah bagian label, bagian mnemonic, bagian operand yang bisa lebih dari satu bagian komentar dan diakhiri dengan END.

2.2.1    Bagian – Bagian Dari Program Assembler

Berikut ini adalah bagian – bagian dari rogram assembler yaitu:

  1. 1.      Label

            Label merupakan suatu simbol yang didefinisikan sendiri oleh pembuat program untuk menandai lokasi memori pada area program. Simbol dan label adalah dua hal yang berbeda. Simbol tidak menggunakan titik dua, sedangkan label harus diakhiri dengan titik dua.

                  Contoh :

                  PAR                      EQU 500        ; “PAR” Menunjukan suatu simbol

                                                                       ; dari nilai 500

                  MULAI:

                  MOV                      A, #0FFh       ; pada label; “Mulai” nilai 0FFh

                                                                        ; dipindahkan ke Akumulator

Dalam satu baris hanya ada satu label, pada umumnya Assembler membatasi jumlah karakter yang bisa digunakan hingga 31 karakter.

  1. 2.      Mnenonik

            Mnemonic instruksi atau pengarah Assembler dimasukan dalam “Mnemonic field” yang mengikuti “label mnemonic”. Mnemonic instruksi misalnya ADD, MOV, INC dan lain-lain.Sedangkan pengarah Assembler misalnya ORG, EQU, DB dan lain-lain.

  1. 3.      Operand

            Operand ditulis setelah mnemonic, bisa berupa alamat atau data yang digunakan instruksi yang bersangkutan.

          Contoh :

          MOV                      A, #20h         ; A dan #20h adalah operand

          LAGI:

          JNB                        LAGI            ; LAGI adalah operand

  1. 4.      Komentar

           Komentar harus diawali dengan titik koma. Sub rutin dari bagian besar program yang mengerjakan suatu operasi biasanya diawali dengan blok komentar yang menjelaskan fungsi sub rutin atau bagian besar program tersebut.

  1. 5.      End

            Petunjuk END merupakan kode perintah terakhir yang menunjukan batas akhir dari proses Assembly.

Instruksi yang sering digunakan dalam pembuatan program yaitu :

a.   Instruksi Aritmatik

               Instruksi aritmatik selalu melibatkan akumulator dan ada juga beberapa instruksi yang melibatkan register lain.

Berikut ini contoh instruksi–instruksi arimatika yaitu:

Tabel 2.4 Instruksi-instruksi Aritmatik

Instruksi

Keterangan

Contoh

ADD A,Rn Menambah isi register Rn dengan isi akumulator lalu disimpan di akumulator ADD A,R1
ADD A, direct Menambah isi direct dengan akumulator, hasilnya disimpan di akumulator ADD A, 30H
ADD A, #data Menambahkan immediate data ke akumulator ADD A, #20H
ADD A, @Rn Menambahkan isi dari alamat yang ditunjuk Rn dengan akumulator ADD A, @R1
ADDC A, #data Menambahkan immediate data ke akumulator dengan carry ADDC A, #20H
SUBB A, Rn Kurangkan isi register Rn dari akumulator SUBB A, R1
INC A Tambah isi akumulator dengan 1 INC A
DEC A Kurangkan isi akumulator denga 1 DEC A
MUL AB Kalikan isi A dengan isi B, low-byte disimpan pada akumulator, dan high byte pada B MUL AB
DIV AB Bagi isi A dengan isi B. Akumulator menerima hasil integer pembagian dan B menerima integer sisanya. DIV AB

  1. b.      Instruksi Logika

               Instruksi Logika ini dipakai untuk melakukan operasi logika, yaitu operasi AND (instruksi ANL), operasi OR (instruksi ORL), operasi Exclusive-OR (instruksi XRL), operasi clear (instruksi CLR), instruksi komplemen (instruksi CPL), operasi penggeseran kanan atau kiri (instruksi RR, RRC, RL dan RLC) serta operasi penukaran data (instruksi SWAP). Data yang dipakai dalam operasi  ini biasanya berupa data yang berada dalam akumulator atau data yang berada dalam memori data.

c.   Instruksi Pemindahan Data

Instruksi – instruksi pemindahan data adalah :

Tabel 2.5 Instruksi – instruksi Perpindahan Data

Instuksi

Keterangan

Contoh

MOV A, Rn Memindahkan isi register Rn ke akumulator MOV A, R0
MOV A,direct Memindahkan isi direct byte ke akumulator MOV A, 30h
MOV A , #data Mengisi akumulator dengan nilai data MOV A,#20h
MOV A, @Rn Mengisi akumulator dengan isi dari alamat yang ditunjuk oleh Rn MOV A, @R0

2.2.2    Mode – Mode Pengalamatan

  1. 1.      Mode Pengalamatan Langsung

            Dalam pengalamat langsung nilai yang akan disimpan dalam suatu memori diperoleh secara langsung dengan mengambil dari lokasi memori yang lain.

            Contoh :

     MOV A,30H         ; isi akumulator dengan bilangan 30 heksadesimal

  1. 2.      Mode Pengalamatan Tak Langsung

            Dalam pengalamatan tak langsung, instruksi menentukan  suatu register yang digunakan untuk menyimpan alamat operan

            Contoh :

ADD A,R         ; Tambahkan isi RAM yang lokasinya ditunjukan oleh register R1 ke akumulator.

DEC @R1        ; Kurangi satu isi RAM yang  alamatnya ditunjukan                  oleh register R1.

  1. 3.      Mode Pengalamatan Segera

            Cara ini menggunakan konstanta.

Contoh :

            MOV A,#20H        ; isi akumulator dengan bilangan 20 heksadesimal

Data konstanta merupakan data yang menyatu dengan instruksi, contoh intruksi diatas mempunyai arti bahwa data konstantanya, yaitu 20H, (sebagai data konstanta harus diawali dengan ’#’ dan tanda H untuk menyatakn format bilangan heksadesimal) disalin ke Akumulator (A).

  1. 4.      Mode Pengalamatan Data

            Pengalamatan data terjadi pada sebuah perintah ketika nilai operasi merupakan alamat data yang akan diisi atau yang akan dipindahkan.

            Contoh :

MOV P1,A            ; isi P1 dari nilai akumulator.

  1. 5.      Mode Pengalamatan Bit

            Pengalamatan bit adalah penunjukkan menggunakan simbol titik (.) yang menunjuk alamat lokasi bit, baik dalam RAM internal atau perangkat keras.

            Contoh :

            SETB P1.7            ; set bit port 1.7 high ( pot 1.7 diberi nilai logika 1)

01/02/2013 Posted by | TEKNIK ELEKTRO | 10 Komentar

Mikrokontroller AT89S51

Mikrokontroller adalah rangkaian elektronik atau chip yang sangat terintegrasi untuk membuat sebuah alat kontrol.  Biasanya terdiri dari CPU (Central Processing Unit), RAM (Random Access Memory), sebagian bentuk ROM (Read Only Memory), I/O (Input/Output) port, dan timers. Mikrokontroler digunakan untuk tugas yang sangat spesifik.  Sehingga jumlah komponen dapat dan ongkosproduksi dapat dikurangi.

Mikrokontroller AT89S51 merupakan mikrokomputer CMOS 8 bit dengan 4Kbyte Flash “Programable and Erasable Read Only Memory” (PEROM) berteknologi memori non-volatile (isi memori tidak akan hilang saat tegangan catu daya dimatikan). Memori ini biasa digunakan untuk menyimpan instruksi (perintah) berstandar MCS-51 sehingga memungkinkan mikrokontroller ini untuk bekerja dalam mode single chip operation (mode operasi keping tunggal) yang tidak memerlukan memori luar untuk menyimpan kode sumber sebagai perintah menjalankan mikrokontroller. Konfigurasi pin-pin mikrokontroller AT89S51 diperlihatkan pada Gambar 2.1.

Gambar 2.1 Konfigurasi Mikrokontroler AT89S51

Sumber: alldatasheet.com

Penjelasan masing-masing pin pada gambar diatas adalah sebagai berikut :

  1. Pin 40 (VCC) sebagai sumber tegangan
  2. Pin 20 (GND) digunakan sebagai pentanahan.
  3. Pin 32 sampai 39 (Port 0) merupakan port masukan dan keluaran biasa, juga bisa sebagai jalur alamat rendah dan bus data untuk memori eksternal.
  4. Pin 1 sampai 8 (Port 1) merupakan port masukan dan keluaran dua arah berjumlah 8 bit dengan rangkaian pull-up internal dan dapat juga berfungsi sebagai input dengan memberikan logika 1. Pada port ini terdapat pin MISO, MOSI dan SCK yang digunakan saat pemrograman dan verifikasi data.
  5. Pin 21 sampai 28 (Port 2) merupakan saluran atau bus I/O 8 bit dua arah biasa, atau dapat berfungsi sebagai saluran alamat tinggi pada saat mengakses memori eksternal.
  6. Pin 10 sampai 17 (Port 3) merupakan saluran I/O 8 bit dua arah dengan internal pull-up yang memiliki fungsi pengganti. Bila fungsi pengganti tidak difungsikan, port ini dapat digunakan sebagai port paralel 8 bit serba guna. Adapun fungsi pengganti pada port ini diperlihatkan seperti tabel di bawah ini:

Tabel 2.1 Fungsi pengganti Port 3 AT89S51

Bit

Nama

Fungsi Alternatif

P 3.0

RXD

Serial Input Port

P 3.1

TXD

Serial Output Port

P 3.2

INT 0

Eksternal Interupt 0

P 3.3

INT 1

Eksternal Interupt 1

P 3.4

T0

Timer 0 External Input

P 3.5

T1

Timer 1 External Input

P 3.6

WR

Eksternal data memori write strobe

P 3.7

RD

Eksternal data memori read strobe

  1. Pin 9 (Reset) merupakan masukan reset. Sebuah sinyal berlogika tinggi pada pin ini selama dua siklus mesin saat osilator bekerja akan mereset perangkat ini.
  2. Pin 19 (XTAL1) masukan untuk penguat membalik osilator dan masukan bagi rangkaian operasi detak internal.
  3. Pin 18 (XTAL 2) keluaran dari penguat membalik osilator.
  4. Pin 31 ( /VPP EA ) adalah pin untuk mengaktifkan pengaksesan eksternal. EA (Eksternal Acces Enable) harus selalu ditanahkan saat mikrokontroler akan mengeksekusi program dari memori eksternal dengan lokasi 0000h sampai FFFFh dan EA harus dihubungkan ke Vcc agar mikrokontroler mengakses program secara internal.
  5. Pin 19 (PSEN ) Program Store Enable adalah sinyal baca untuk memori program eksternal. Pada saat AT89S51 menjalankan program dari memori program eksternal, PSEN diaktifkan dua kali setiap siklus mesin, kecuali pada saat dua aktivasi PSEN dilompati selama tiap akses data memori eksternal
  6. Pin 30 (ALE/PROG ) adalah sebuah pulsa keluaran untuk menahan bit alamat rendah pada saat mengakses memori eksternal. Pin ini juga berfungsi sebagai sebagai pulsa input pemrograman (PROG) selama proses pemrograman. Sedangkan diagram blok mokrokontroller AT89S51 diperlihatkan pada gambar di bawah ini.

Gambar 2.2 : Diagram Blok Mikrokontroler AT89S51

Sumber: alldatasheet.com

2.1.1    Memori Program

Semua mikrokontroler Atmel memiliki ruang alamat (address space) memori program dan memori data yang terpisah. Pemisahan ruang alamat ini memudahkan memori data untuk diakses oleh alamat 8 bit, sehingga lebih cepat disimpan dan dimanipulasi oleh CPU 8 bit. Struktur memori program mikrokontroler AT89S51 ditunjukan pada Gambar 2.3. Setelah reset, CPU segera melaksanakan program mulai dari lokasi 0000h. Dengan demikian, awal dari program pengendali MCS 51 harus ditempatkan di memori nomor 0000h.

\

Gambar 2.3 Struktur Memori Program AT89S51

Sumber: Endra Hermawan, 2010

2.1.2    Memori Data

Gambar 2.4 menunjukkan struktur ruang-ruang memori data internal dan eksternal untuk AT89S51. Memori data eksternal dapat ditentukan sampai sebesar 64 Kbyte. Seperti terlihat dalam struktur memori data internal gambar 2.4 memori data dibagi menjadi dua bagian, memori nomor 00h sampai 7Fh merupakan memori seperti RAM selayaknya meskipun beberapa bagian mempunyai kegunaan khusus, sedangkan memori nomor 80h sampai FFh digunakan sangat khusus yang dinamakan sebagai Special Function Register.

Gambar 2.4 Peta Memori Data AT89S51

Sumber: Endra Hermawan, 2010

Peta memori data internalnya ditunjukkan pada Gambar 2.5 32 byte bawah yaitu alamat 00h sampai 1Fh selain sebagai memori-data biasa dapat pula digunakan sebagai register serba guna (General Purpose Register). Memori sebanyak 32 byte ini dikelompokkan menjadi 4 bank dan 8 register (R0 sampai R7). Dua bit pada PSW (Program Status Word) digunakan untuk memilih kelompok register mana yang digunakan. Arsitektur ini mengijinkan penggunaan ruang kode secara lebih efisien, karena instruksi-instruksi register lebih pendek daripada insutruksi-instruksi yang menggunakan pengalamatan langsung.16 Byte berikutnya, di atas bank-bank register, membentuk suatu blok ruang memori yang bisa teralamati per-bit (bit addressable). Alamat-alamat bit ini adalah 00h sampai 7Fh. Namun memori data pada lokasi ini tetap dapat digunakan sebagai memori data biasa. Sedangkan memori nomor 30h sampai 7Fh yaitu sebanyak 80 byte merupakan memori data biasa (general purpose RAM), dapat digunaan untuk menyimpan data maupun digunakan sebagai Stack.

Gambar 2.5 Peta Memori Data Internal AT89S51

Sumber: Endra Hermawan, 2010

2.1.3    SFR (Special Function Register)

SFR atau register fungsi khusus merupakan suatu daerah RAM dalam IC keluarga MCS51 yang digunakan untuk mengatur perilaku MCS51 dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. SFR dalam RAM internal menempati lokasi alamat 80h sampai 7Fh. Masing-masing register pada SFR ditunjukkan dalam tabel, yang meliputi simbol, nama dan alamatnya.

Tabel.2.2 Special Funtion Register

Simbol

Nama

Alamat

Acc

Akumulator

E0h

B

B register

F0h

PSW

Program Status Word

D0h

SP

Stack Pointer

81h

DPTR

(DPH)

(DPL)

Data Pointer 16 Bit

DPL Byte rendah

DPH Byte tinggi

82h

83h

P0

Port 0

80h

P1

Port 1

90h

P2

Port 2

A0h

P3

Port 3

B0h

IP

Interupt Priority Control

B8h

IE

Interupt Enable Control

A8h

TMOD

Timer/Counter Mode Control

89h

TCON

Timer/Counter Control

88h

TH0

Timer/Counter 0 High byte

8Ch

TL0

Timer/Counter 0 Low byte

8Ah

TH1

Timer/Counter 1 High byte

8Dh

TL1

Timer/Counter 1 Low byte

8Bh

SCON

Serial Control

98h

SBUF

Serial Data Buffer

99h

PCON

Power Control

87h

2.1.4    Sistem Interupsi

Apabila CPU pada mikrokontroler AT89S51 sedang melaksanakan suatu program, maka pelaksanaan program dapat dihentikan sementara dengan meminta interupsi. Apabila CPU mendapat permintaan interupsi, program counter akan diisi alamat dari vektor interupsi. CPU kemudian melaksanakan rutin pelayanan interupsi mulai dari alamat tersebut. Bila rutin pelayanan interupsi selesai dilaksanakan, CPU AT89S51 kembali ke pelaksanaan program utama yang ditinggalkan. Instruksi RETI (return from interupt routine) harus digunakan untuk kembali dari layanan rutin interupsi. Instruksi ini digunakan agar saluran interupsi kembali dapat dipakai.

Mikrokontoler AT89S51 menyediakan 5 sumber interupsi yaitu: interupsi eksternal (External interupt) yang berasal dari pin INT0 dan INT1, interupsi timer (Timer Interupt) yang berasal dari timer 0 maupun timer 1, dan yang terakhir adalah interupsi port seri (Serial Port Interupt) yang berasal dari bagian penerima dan pengirim port seri. Alamat awal layanan rutin interupsi dari setiap sumber interupsi diperlihatkan pada Tabel.

Tabel 2.3 Alamat Layanan Rutin Interupsi

Interupsi

Alamat

Prioritas Interupsi
INT 0

03h

1

Interupsi Timer 0

0Bh

2

INT 1

13h

3

Interupsi Timer 1

1Bh

4

Interupsi Port Serial

23h

5

Ada dua register yang mengontrol interupsi, yaitu IE (Interupt Enable) dan IP (Interupt Priority). Register IE berfungsi untuk mengaktifkan atau menonaktifkan sumber interupsi, sedangkan register IP digunakan untuk menentukan prioritas suatu sumber interupsi terhadap sumber interupsi lainnya, yaitu apabila ada dua atau lebih interupsi secara bersamaan. Jika register IP tidak didefinisikan, maka prioritas interupsi menggunakan urutan prioritas seperti dicantumkan pada Tabel 2.3

2.1.5    Timer/ Counter

Pada mikrokonteroler AT89S51 terdapat dua timer/counter 16 Bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Apabila timer/counter diaktifkan pada frekuensi kerja mikrokontroler 12 MHz, timer/counter akan melakukan perhitungan waktu sekali setiap 1 µs secara independen, tidak tergantung pada pelaksanaan suatu instruksi.

Apabila periode waktu tertentu telah dilampaui, timer/counter segera menginterupsi mikrokontroler untuk memberitahukan bahwa perhitungan periode waktu telah selesai dilaksanakan. Timer/counter AT89S51 dapat dipilih beroperasi dalam 4 mode operasi yaitu sebagai timer/counter 13 bit, timer counter 16 bit, timer/counter 8 bit dengan isi ulang (auto reload), dan gabungan timer/counter 16 bit dan 8 bit. Register timer mode (TMOD) dan register timer control (TCON) merupakan register pembantu untuk mengatur kerja timer 0 dan timer 1. Register TMOD digunakan sebagai pengontrol pemilih mode operasi timer/counter sedangkan register TCON digunakan sebagai pengontrol kerja timer/counter.

01/02/2013 Posted by | TEKNIK ELEKTRO | , , , , , | 3 Komentar