Mikrokontroler AT89S51


Mikrokontroler adalah mikroprosesor yang telah dilengkapi komponen-komponen pendukung secara internal yaitu seperti: CPU, ROM, RAM, dan I/O yang membentuk mikrokomputer tunggal yang dikemas dalam bentuk IC

Mkrokontroler AT89S51 merupakan mikrokontroler produksi Atmel dan merupakan pengembangan dari 8051 produksi Intel.

Struktur memori dari AT89S51 adalah:

  1. RAM internal

Memiliki meemori sebesar 128 byte yang biasanya digunakan untuk menyimpan variable atau data yang bersifat sementara. Mempri ini dapat diakses tanpa tambahan rangkaian dengan koder alamat.

  1. Special Function Register (SFR)

Memori ini berisi register-register yang mempunyai fungsi khusus yang disediakan oleh mikrokontroler tersebut, seperti timer, serial, dan laian-lain. Register- register ini menempati alamat pada RAM internal yaitu pada alamat 80h sampai FFh

  1. Flash PEROM

Memori ini digunakan untuk menyimpan instruksi-instruksi MCS51 yang tetap, instruksi ini digunakan oleh AT89S51. Data  pada memori ini tidak akan hilang bila catu daya padam, akan tetapi memori dapat ditulis ulang apabila akan ada perubahan. Flash PEROM ini dapat ditulis ulang dengan kombinasi sinyal control dan tegangan bakar         (tegangan lebih besar dari +5 Volt, biasanya +12 Volt), akan tetapi untuk mikrokontroler AT89S51 dapat ditulis menggunakan PC dengan bantuan programmer (Downloader)

2.1.1        Konfigurasi Pin

Berikut adalah konfigurasi pin AT89S51 yang dikemas dalam Dual Inline Package (DIP) 40 pin.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 1  Konfigurasi pin mikrokontroler AT89S51

 

Pin 1 – 8          Port I, merupakan bidirectional  I/O port. Setiap keluaran tiap pin dapat dijadikan sebagai input bagi TTL. Juga dapat dikonfigurasikan sebagai multiplex low address/ data bus selama akses ke eksterenal program dan data memori. Dpat juga mnerima code byte selama flash programming dan output kode selama verivikasi program.

Pin 9                Pin Reset, sebagai mesukan sinyal reset, yaitu kondisi high pada pin ini selama dua siklus mesin keika oscillator running reset pada peralatan.

Pin 10-17         Port bidirectional I/O dengan internal pullup, dapat juga dikonfigurasikan  menjadi multiplexed low address/ data bus selama akses ke eksternal program dan data memori. Selain itu dapat mnerima code byte selama flash programming dan output code selama verivikasi program. Disamping itu memililiki fungsi berkaitan dengan pengiriman data secara serial, sinyal control dan eksternal data memory, timer

Port/ Pin

Fungsi

P3.0/ 10

RxD (serial input port)

P3.1/ 11

TxD (serial output port)

P3.2/ 12          

INT0 (internal interrupt 0)

P3.3/ 13

IN T1 (internal interrupt 1)

P3.4/ 14

T0 (Timer 0 eksternal input)

P3.5/ 15

T1 (Timer 1 eksternal input)

P3.6/ 16          

WR ( ekster nal data memory write strobe)

P3.7/ 17

RD (eksternal data memory read strobe)

Tabel 1   Fungsi Port 3

 

Pin 18-19         XTAL1 dan XTAL2, sebagai masukan clock. Pin 18 dan 19 ini digunakan jika menggunakan clock internal. Jika menggunakan rangkaian clock eksternal maka hanya pin 19 yang digunakan sedangkan pin 18 tidak digunakan/ digroundkan.

Pin 20              Ground

Pin 21-28         8 bit saluran I/O dua arah. Port ini juga digunakan untuk pengalamatan 16 bit alamat tinggi (dengan instruksi movx@dptr).

Pin 29              PSEN (Program Store enable), merupakan sinyal baca untuk mengeksekusi memori eksternal.

Pin30               ALE (Address latch enable), merupakan pulsa yang berfungsi untuk menahan alamat rendah (A0-A7) pada port 0 selama dilakukan proses baca/ tulis memori eksternal, juga berfungsi sebagai masukan pulsa program selama dilakukan pemrograman pada EEPROM internal.

Pin 31              EA (Eksternal Access), merupakan pin yang mengatur memori yang digunakan jika EA dihubungkan ke Vcc maka memori program yang digunakan adalah memori internal, sedangkan jika EA dihubungkan ke tanah maka memori yang akan digunakan adalah memori eksternal.

Pin 32-39         Port 0, selain sebagai saluran I/O 8 bit dua arah juga sebagai pengalamatan 16 bit alamat low (A0-A7) yang dimultipleks dengan saluran bus data (D0-D7) yang digunakan pada saat mengakses ROM dan RAM eksternal.

Pin 40              Vcc, masukan catu daya 5 Volt.

 

 

 

 

2.1.2        Arsitektur

Gambar 2 Arsitektur Mikrokontroler AT89S51

Pada mikrokontroler AT89S51 dikombinasikan sebuah CPU, dua jenis memori (ROM dan RAM), input/ output, status mode, dan register. Setiap bagian dihubungkan dengan jalur data bus 8 bit. Jalur data ini juga digunakan untuk berhubungan dengan sisi luar mikrokontroller melalui port I/O ketika ekspansi memori atau instruksi I/O.

CPU (Central Processing Unit) merupakan otak dari mikrokontroler AT89S51 yang terrdiri dari:

  • ALU (Aritmatic Logic Unit)

Digunakan pada pengoperasian aritmatika dan logika. Fungsi aritmatika dasar yang dapat dibuat adalah penjumlahan, perkalian, pembagian. Sedangkan fungsi logika yang dapat dioperasikan adalah AND, OR, dan XOR, serta pergeseran bit, komplemen, set, clear, dan sebagainya.

  • Accumulator dan PSW (Program Status Word)

Akumulator (register A) merupakan register 8 bit yang berfungsi sebagai tempat tujuan dari hasil instruksi aritmatika. Akumulator juga merupakan asal dan tujuan dari instruksi logika dan sejumlah instruksi pemindahan data khusus. Banyak instruksi yang mempunyai efek tertentu, misal status tanda (positif atau negatif, nol, paritas, dan alin sebagainya) yang dikelompokan secara bersama ke dalam sebuah register PSW.

  • Register SP (Stack Pointer)

Register 8 bit yang mempunyai fungsi khusus adalah register B yang akan melayani proses eksekusi instruksi perkalian dan penjumlahan. Register ini digunakan bersamaan dengan akumulator.

Register SP merupakan register stack (penyimpan sementara) 8 bit ynag akan menyimpan byte terakhir yang di push. SP akan bertambah satu jika ada instruksi push dan berkurangsatu jika ada instruksi pop

  • SFR (Special Function Register)

SFR

Fungsi

Alamat (Hex)

DPH

Addressing external memory

83

DPL

Addressing enable control

82

IE

Interrupt enable control

0A8

IP

Interupt priority

0B8

PO

Input-output port latch

80

P1

Input-output port lacth

90

P2

Input-output port latch

0A0

P3

Input-output port latch

0B0

PCON

Program control

87

SCON

Serial port control

98

SBUF

Serial port data buffer

99

TMOD

Timer/ counter mode control

89

TCON

Timer/ counter control

88

TL0

Timer 0 low byte

8A

TH0

Timer 0 high byte

8C

TL1

Timer 1 low byte

8B

TH1

Timer 1 high byte

8D

 

Tabel 2  Secial Function Register

2.1.3        Peta Memori

Program-program  dan data-data pada komputer  maupun pada mikrokontroler disimpan pada memori. Memori yang diakses oleh prosesor terdiri dari RAM dan ROM. Mikrokontroler AT89S51 memiliki ruang alamat memori data dan program yang terpisah. Pemisahan memori program dan data tersebut membolehkan memori data diakses dengan alamat 8 bit, sehingga dapat dengan cepat dan mudah disimpan dan dimanipulasi oleh CPU 8 bit. Namun demikian, alamat memori data 16 bit juga dapat dihasilkan melalui register DPTR.

2.1.3.1  Memori program

Memori program hanya dapat dibaca. Memori program biasa kita sebut dengan ROM. ROM ini biasanya berisi kode/ program untuk mengontrol kerja dari mikrokontroler. Terdapat program yang dapat diakses langsung hingga 64 Kbyte. Sedangkan strobe (tanda) untuk akses program memori eksternal melalui sinyal PSEN. Alamat-alamat paling bawah berada pada flash on chip.

2.1.3.2  Memori Data

Biasa disebut dengan RAM. Memori data menempati ruang alamat yang terpisah dari memori program. Memori eksternal dapat diakses secara langsung hingga 64 Kbyte dalam ruang memori data eksternal. CPU akan memberikan sinyal baca dan tulis (RW dan RD) selama pengaksesan memori data eksternal.

v     Memori data pada AT89S51 adalah sebagai berikut:

  • Pengaksesan secara langsung  (direct addressing)

Pengaksesan alamat langsung terletak pada alamat 80H sampai FFH. Terdiri dari 128 byte.

  • Pengaksesan secara tak langsung (Indirect addressing).

Pengaksesan tak langsung terletak pada alamat 00H sampai 7FH dengan kapasitas RAM 128 byte.

  • SFR (Special Function Register)

SFR mempunyai blok alamat yang sama dengan direct addressing yaitu berada pada alamat 80H sampai FFH, tetapi secara fisik berbeda.

 

2.1.4        Pewaktuan (Timer) CPU

Semua mikrokontroler 51 Atmel memiliki osilator on chip yang dapat digunakan sebagai sumber detak (clock) ke CPU. Untuk menggunakannya, hubungkan sebuah osilator kristal atau keramik diantara kaki-kai XTAL 1 dan XTAL 2 pada mikrokontrole r dan hubungkan kapasitornya ke ground.


2.1.5        Metode Pengalamatan

Yang dimaksud dengan metode pengalamatan adalah bagaimana penulisan operand dari suatu instruksi, untuk mengalamatkansuatu data yang diinginkan baik asalnya maupun tujuannya.

v     Ragam pengalamatan AT89S51 adalah sebagai berikut:

  • Pengalamatan Register (register addressing)

Pengalamatan yang melibatkan register R0 sampai R7 yang bisa diseleksi dengan register PSW, ada dimana register R0 sampai R7 berada.

  • Pengalamatan langsung (direct addressing)

Pengalamatan langsung melibatakan register, port dan akumulator Ayang berada dalam chip (tidak dapat mengakses memori luar chip)

  • Pengalamatan tidak langsung (indirect addressing)

Pengalamatan tidask langsung ditandai dengan tanda @ (at), yang artinya di tempat itu terdapat data alamat yang harus dibaca datanya lebih dahulu

  • Pengalamatan segera (immediate addressing)

Menyangkut operasi-operasi dengan suatu nilai konstanta (yang sudah tetap), perintah ini ditandai dengan tanda #

  • Pengalamatan Relatif (Relative Addressing)

Pengalamatan relatif ada pada instruksi sjmp (short jump). Karena besar langkah lompat relatif (dari tempat semula), hanya 8 bit, maka sjmp hanya dapat lompat kedepan sejauh +127 langkah (lokasi memori) atsu mundur -128 langkah. Sehingga perlu diperhatikan jarak relatifnya, jangan sampai berada diluar jangkauan

  • Pengalamatan Absolut 11 bit (Absolute addressing)

Pengalamatan absolute ada pada instruksi acall dan ajmp. Lokasinya hingga 2 Kbyte. Opcode terdiri dari 2 byte.

  • Pengalamatan absolut 16 bit (long addressing)

Pengalamatan absolute ada pada instruksi lcalldan ljmp. Pada instruksi ini program akan dapat menuju alamat tertentu yang absolut hingga 16 bit, seluruh memori 64k pada sistem mikrokontroler dapat dicapai.

  • Pengalamatan berindeks (indexed addressing)

Pengalamatan berindeks mengunakan register 16 bit program counter (PC) atau data pointer (DPTR) sebagai tempat informasi alamat, untuk mengakses hingga 64K lokasi memori

2.1.6        Tipe-tipe instruksi

 Instruksi pada mikrokontroler AT89S51 dapat dikelompokan menjadi 3, yaitu:

1.                  Instruksi  Transfer Data

Kelompok instruksi ini digunakan untuk memindahkan data antara:

·        Register ke register

·        Memori ke memori

·        Register ke memori

·        Antarmuka ke register

·        Antarmuka ke antarmuka

Contoh:

            Mov     A,R1                ;pindahkan isi register ke accumulator A

            Mov     A,@R1            ;pindahkan isi memori yang alamatnya ada pada R1 ke accumulator

            Jadi pengalamatan data atau pengambilan data dari suatu port hanya menggunakan instruksi mov.

2.                  Instruksi Aritmatika

Instruksi Aritmatika meliputi penambahan (add), pengurangan (subb), perkalian (mul), dan pembagian (div)

·        ADD

Penambahan ini akan menjumlahkan suatu data dengan isi accumulator. Penambahan hanya melibatkan register accumulator

ADD : (A)          (A) + data

·        INC

Proses increment merupakan proses penambahan satu pada isi suatu register atau memori.

INC A : (A)          (A) + 1

Selain increment ada juga decrement (DEC) yang merupakan kebalikannya.

3.                  Instruksi Percabangan

Instruksi ini akan melakukan percabangan ke suatu alamat. Instruksi ini terdiri atas dua bagian, yaitu percabangan dengan syarat dan percabangan tanpa syarat.

a)      Percabangan dengan syarat

·        CJNE

Instruksi CJNE (compare and jump if not equal) membandingkan dua nilai yang disebut dan MCS akan melompat ke memori program yang dituju kalau kedua nilai tersebut tidak sama.

  • DJNZ

Instruksi DJNZ (decrement and jump if not zero) merupakan instruksi yang akan mengurangi 1 nilai register serba guna (R0 sampai R7)atau memori data dan akan melompat ke memori program yang dituju jika setelah pengurangan belum dihasilkan 0

  • JB/ JNB/ JNC

Instruksi JB (jump on bit set), JNB (jump on bit nol set), JNC (jump on bit set then clear) merupakan instruksi bersyarat yang memerlukan kondisi tertentu.

b)      Percabangan tanpa syarat

  • SJMP

Instruksi ini akan menuju ke alamat kode yang telah dituju

  • CALL

Instruksi ini akan memanggil subrutin pada alamat yang telah ditentukan atau yang sudah terwakili.


About this entry