Mikrokontroler Atmel

Mikrokontroler AT89C51/52 mempunyai 40 kaki, 32 kaki diantaranya adalah untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port, yang masing-masing dikenal sebagai port 0, port 1, port 2, port 3. Data dapat dengan mudah dimasukkan  diolah dan dikeluarkan dari port-port tersebut dengan instruksi-instruksi yang sederhana. Perhatikan gambar pin mikrokontroler di bawah ini:

mikro

Gambar 1.1. Diagram pin mikrokontroler AT89C51

Secara umum arsitektur mikrokontroler AT89C51/52 seperti pada blok gambar dibawah ini, Mikrokontroler 89C51 adalah mikrokontroler dengan arsitektur MCS51 seperti 8031 dengan memori Flash PEROM (Programmable and Erasable Read Only Memory)

mikro1

Deskripsi PIN

Nomor Pin Nama Pin Alternatif Keterangan
20 GND Ground
40 VCC Power Supply
32…39 P0.7…P0.0 D7…D0 & A7…A0 Port 0 dapat berfungsi sebagai I/O biasa, low order

multiplex address/data ataupun menerima kode byte

pada saat Flash Programming

Pada fungsi sebagai I/O biasa port ini dapat memberikan

output sink ke delapan buah TTL Input atau dapat diubah

sebagai input dengan memberikan logika 1 pada port

tersebut

Pada fungsi sebagai low order multiplex address/data

port ini akan mempunyai internal pull up

Pada saat Flash Programming diperlukan external pull up

Terutama pada saat verifikasi program

1…8 P1.0…P1.7 Port 1 berfungsi sebagai I/O biasa atau menerima low

order address bytes selama pada saat Flash

Programming

Port ini mempunyai internal pull up dan berfungsi sebagai

input dengan memberikan logika 1

Sebagai output port ini dapat memberikan output sink

ke empat buah input TTL

21…28 P2.0…P2.7 A8…A15 Port 2 berfungsi sebagai I/O biasa atau high order

address, pada saat mengakses memory secara 16 bit

(Movx @Dptr)

Pada saat mengakes memory secara 8 bit, (Mov @Rn)

port ini akan mengeluarkan isi dari P2 Special

Function Register

Port ini mempunyai internal pull up dan berfungsi sebagai

input dengan memberikan logika 1

Sebagai output port ini dapat memberikan output sink

Ke empat buah input TTL

10…17 Port 3 Sebagai I/O biasa Port 3 mempunyai sifat yang sama

dengan Port 1 maupun Port 2

Sedangkan sebagai fungsi spesial port-port ini mempunyai

keterangan sebagai berikut

10

11

12

13

14

15

16

17

P3.0

P3.1

P3.2

P3.3

P3.4

P3.5

P3.6

P3.7

RXD

TXD

INT0

INT1

T0

T1

WR

RD

Port Serial Input

Port Serial Output

Port External Interrupt 0

Port External Interrupt 1

Port External Timer 0 Input

Port External Timer 1 Input

External Data Memory Write Strobe

External Data Memory Read Strobe

9 RST Reset akan aktif dengan memberikan input high selama

2 cycle

30 ALE PROG Pin ini dapat berfungsi sebagai Address Latch Enable (ALE)
yang me-latch low byte address pada saat mengakses memori eksternal

Sedangkan pada saat Flash Programming (PROG)

berfungsi sebagai pulse input untuk

Pada operasi normal ALE akan mengeluarkan sinyal clock

sebesar 1/16 frekwensi oscillator kecuali pada saat

mengakses memori eksternal

Sinyal clock pada pin ini dapat pula didisable dengan

men-set bit 0 dari Special Function Register di alamat 8EH

ALE hanya akan aktif pada saat mengakses memori eksternal

(MOVX & MOVC)

29 PSEN Pin ini berfungsi pada saat mengeksekusi program yang terletak

pada memori eksternal. PSEN akan aktif dua kali

setiap cycle

31 EA VP Pada kondisi low maka pin ini akan berfungsi sebagai EA

yaitu mikrokontroler akan menjalankan program yang ada

pada memori eksternal setelah sistem direset

Apabila berkondisi high maka pin ini akan berfungsi untuk

menjalankan program yang ada pada memori internal

Pada saat Flash Programming pin ini akan mendapat tegangan

12 Volt (VP)

19 XTAL1 Input Oscillator
18 XTAL2 Output Oscillator

STRUKTUR MEMORI

Memori dari 89C51 terbagi menjadi:

– RAM Internal

  • Register Bank
  • Bit addressable RAM
  • General Purpose RAM

– Register Fungsi Khusus (Special Function Register)

– Flash PEROM

– Memori Eksternal

RAM INTERNAL & REGISTER FUNGSI KHUSUS

Accumulator (ACC)

– Terletak pada alamat E0H

– Operasi Aritmatik (Add A,#05H)

– Operasi Logika (Anl A,#05H)

– Akses Memori Eksternal (Movx A,@DPTR)

– Untuk fungsi umum

Register B

– Terletak pada alamat B0H

– Fungsi umum

– Digunakan bersama Acc untuk operasi Aritmatik (Mul AB)

Program Status Word (D0H)

PSW.7  PSW.6     PSW.5    PSW.4     PSW.3      PSW.2   PSW.1    PSW.0

CY AC F0 RS1 RS0 OV P

PSW

Port

– Port 0 (80H)

– Port 1 (90H)

– Port 2 (A0H)

– Port 3 (B0H)

7            6             5             4             3            2              1             0

X

X

X

X

X

X

X

X

Port 1

7            6             5             4             3            2              1             0

X

X

X

X

X

X

X

X

Port 1

Data Pointer (DPTR)

– Terdiri dari dua register yaitu

  • DPH (82H)
  • DPL (83H)

– Untuk akses data atau source code di memori Flash PEROM atau

Memori Eksternal

Stack Pointer

mikro3

Flash PEROM

– Kapasitas 4 Kb

– Alamat 000H hingga FFFH

– Diakses bila:

  • Pin EA/VP 89C51 berlogika high
  • Ada perintah untuk memanggil instruksi di alamat tersebut

– Dapat diproteksi dengan:

  • Lock Bit 1, tidak dapat dibaca oleh program yang berada di memori eksternal
  • Lock Bit 2, tidak dapat dibaca oleh peralatan Programmer
  • Lock Bit 3, sama sekali tidak dapat mengakses/diakses

oleh/dari memori eksternal

External Memory

– Dibutuhkan untuk:

  • Memori berkapasitas besar
  • Emulasi Program

– Sistem pengalamatan Multiplex Addressing

Multiplex Addressing

– Pengalamatan 89C51 ke memori eksternal dipisah menjadi

High Byte Address                                  Low Byte Address

0 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0

MSB                                                                                                                      LSB

– Low byte address bus dimultiplex dengan data bus oleh D Latch

mikro2

– Akses Memori Eksternal terdiri dari:

  • Pembacaan Data
  • Pembacaan Program (Kode)
  • Penulisan Data/Kode

Proses Pembacaan

Proses pembacaan dapat dianalogikan sebagai proses membaca dari halaman tertentu dari sebuah buku di mana pada proses tersebut dibutuhkan:

– Halaman dari tulisan yang akan dibaca = Alamat Memori

– Perintah untuk membaca = Sinyal Read untuk Data dan Sinyal PSEN untuk kode

Pembacaan Data dari Memori Eksternal

Instruksi

MOV DPTR,#[address] ; Penentuan lokasi data yang akan dibaca

MOVX A,@DPTR              ; Perintah pembacaan data sekaligus meng-

; ambil data tersebut dan disimpan ke Aku-

; mulator A

Timing

Struktur Port dan Cara Kerja

Pada dasarnya mikrokontroler Atmel keluarga 51 mempunyai dua kelompok instruksi untuk mengeluarkan data ke port paralel.

  • Kelompok instruksi pertama bekerja pada port seutuhnya artinya 8 jalur dari port bersangkutan, misalnya MOV P3,#0FFh membuat ke-delapan jalur port 0 semuanya dalam kondisi logika ‘1’.
  • Kelompok instruksi kedua berpengaruh pada salah satu jalur atau bit dari port, misalnya instruksi SETB P3.4 artinya men-set bit 4 dari port 3 atau (bit 4 dari port 3 = 1 à  xxx1 xxxx ) atau instruksi CLR P3.3 digunakan untuk me-nolkan bit 3 dari port 3 (bit 3 dari port 3 = 0 à xxxx 0xxx).

Selain itu port paralel bisa pula dipakai untuk menerima masukan sinyal digital dari luar mikrokontroler:

  • Instruksi MOV A,P3 digunakan untuk membaca data digital pada seluruh bit (bit 0 hingga bit 7 = 8 bit) port 3 kemudian menyimpannya ke akumulator.

Pembacaan data bisa juga dilakukan hanya pada satu bit port saja, misalnya instruksi JNB P3.7,$ digunakan untuk memantau bit P3.7, jika P3.7 = 0, mikrokontroler akan kembali melaksanakan instruksi tersebut (lompat ke label $ artinya ke lokasi tersebut lagi), mikrokontroler akan meneruskan kembali instruksi berikutnya jika P3.7=1.

Instruksi MOVC A,@A+DPTR

Instruksi MOVC A,@A+DPTR, termasuk mode pengalamatan kode tidak langsung (code indirect adressing mode), mempunyai cara penyebutan data dalam memori program yang dilakukan secara tak langsung. Dalam instruksi ini instruksi MOV diganti dengan MOVC, tambahan huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini digunakan untuk memori program.  (MOV tanpa huruf C artinya digunakan untuk memori data). Tanda ‘@’ digunakan untuk menandai A+DPTR yang berfungsi untuk menyatakan lokasi memori yang isinya disalin ke akumulator A, dalam hal ini nilai yang tersimpan dalam DPTR (Data Pointer Register 2 byte) ditambah dengan nilai yang tersimpan dalam akumulator A (1 byte) sama dengan lokasi memori program yang ada.

Instruksi INC DPTR

Agak berbeda dengan instruksi INC A atau INC Rx (x=0 s/d 7), instruksi ini adalah satu-satunya instruksi penaikan (increment) yang bekerja pada data 16 bit yaitu DPTR, yaitu menaikkan penunjuk data sebesar 1. Suatu limpahan pada byte rendah (low order) dari DPTR atau DPL (Data Pointer Low) akan menaikkan byte tinggi (high order) yaitu yang tersimpan di DPH (Data Pointer High) sebesar 1. Flag tidak terpengaruh. Misalnya DPH=12 dan DPL=Feh, maka instruksi ini:

INC DPTR

INC DPTR

INC DPTR

Akan menghasilkan DPH=13h dan DPL=01h.

Pewaktu dan Pencacah (Timer/Counter)

Mikrokontroler AT89C51 mempunyai 2 pewaktu/pencacah (timer/counter) 16 bit yang digunakan untuk pengukuran interval waktu, lebar pulsa, mencacah kejadian, interupsi secara periodis, dan membangkitkan pulsa laju data serial..

Pewaktu dan pencacah dikendalikan oleh bit-bit dalam register Timer Control (TCON) dan Timer Mode (TMOD) seperti ditunjukan Gambar 2.1.3 dan Gambar 2.1.4. Hasil pencacah 0 terletak pada Register Timer Lower (TL0) dan register Timer High (TH0).

8

7

6

5

4

3

2

0

TF1

TR1 TF0 TR0 IE1 IT1 IE0 IT0

Gambar Register Timer Control (TCON)

Timer Control (TCON) terdiri atas :

Bit Simbol Fungsi
7 TF1 Timer 1 overflow flag
6 TR1 Timer 1 run control bit
5 TF0 Timer 0 overflow flag
4 TR0 Timer 0 run control bit
3 IE1 External interrupt 1 edge flag
2 IT1 External interrupt 1 signal control bit
1 IE0 External interrupt 0 edge flag
0 IT0 External interrupt 0 signal control bit

7

6

5

4

3

2

1

0

Gate

C/T

M1

M0

Gate

C/t

M1

M0

Timer 1                                    Timer 0

Gambar Register Timer Mode

Timer Mode (TMOD) terdiri atas :

Bit Simbol Fungsi
7/3 Gate OR gate enable which controls RUN/STOP of timer
6/2 C/T Timer or counter selector for timer I/O
5/1 M1 Mode select bit 1
4/0 M0 Mode select bit 0

M1

M0

Mode

0

0

0

0

1

1

1

0

2

1

1

3

Masukan pada untai pencacah adalah sebagai pencacah jika berasal dari sumber luar dan sebagai pewaktu bila masukan berasal dari sumber osilator internal. Masukan dari sumber luar atau dari osilalator internal ditentukan oleh bit C/T. Jika menggunakan osilator internal maka bit C/T diset 0 dan bit Gate diset 0. sedangkan frekuensi osilator akan di bagi 12 sebelum masuk ke untai pencacah. Jika masukan dari sumber luar (T0 atau T1) maka bit Gate diset 1 dengan syarat INT0 dan INT1 tinggi. Pencacah diaktifkan dengan menset bit TR0 dan TR1. Pencacah akan berlangsung sampai terjadi luapan saat pencacah berguling dari FFFFh ke 0000h, dengan bit TF1 dan TF0 akan diset 1 dan permintaan interupsi dibangkitkan.

TMOD mempunyai 2 register kembar 4 bit, mesing-masing mengendalikan salah satu pewaktu. TCON mempunyai 4 bit orde tinggi untuk bit kendali pewaktu dan 4 bit orde rendah untuk bit kendali interupsi eksternal. Ada 4 mode yang dapat dikonfigurasi pada pewaktu/pencacah, yaitu:

  1. Mode 0 (Pencacah dengan Praskala)

Mode 0 merupakan pencacah atau pewaktu dengan menggunakan praskala. Register TH0/TH1 bekerja sebagai pencacah 8-bit dan TL0/TL1 Sebagai pencacah 5 bit.

  1. Mode 1 (Pencacah 16 bit)

Dalam mode ini register TH0/TL0 dan register TH1/TL1 digunakan sebagai pencacah 16 bit.

  1. Mode 2 (Pencacah dengan Auto-reload)

Mode 2 merupakan pencacah/pewaktu auto-reload. Register TL1/TL0 bekerja sebagai pencacah 8-bit TH1/TH0 digunakan untuk menahan suatu nilai tertentu yang akan disimpan ke TL1/TL0 pada setiap TL1/TL0 terjadi luapan, yaitu ketika berguling dari FFh ke 00, dan akan membangkitkan pulsa untuk pengiriman dan penerimaan  data pada port serial.

  1. Mode 3

Untuk pencacah 1, pengubahan ke mode 3 akan menghentikanpencacah 1, yang merupakan cara lain menggunakan TR1 (TCON.6) untuk menghentikan dan menjalankan pencacah 1.

Untuk pencacah 0, TH0 sebagai pencacah 8 bit yang diaktifkan oleh bit TR1 dan jika terjadi luapan bit TF1 akan diset 1. sedangkan bit TR1 dan bit TF1 tidak dapat digunakan untuk mengendalikan pencacah 1. TL0 sebagai pencacah 8 bityang dikendalikan oleh bit Gate 0, C/T,TR0,TF0.

Interupsi dari pewaktu atau pencacah

Interupsi ini terjadi pada saat pewaktu atau pencacah terjadi luapan, maka flag TF0 atau TF1 akan diset 1, kemudian interupsi akan dibangkitkan dan setelah pelayanan interupsi di jalankan flag TF0 dan TF1 akan diset kembali ke 0.

Komunikasi Serial Asinkron

MCS51 dilengkapi dengan sarana komunikasi data seri, sebagai anggota keluarga MCS51. AT89C51 juga mempunyai sarana itu selengkapnya. Sarana komunikasi seri tersebut bisa bekerja dalam 4 macam mode, 1 mode bekerja sebagai sarana komunkasi seri sinkron, tiga lainnya merupakan sarana komunikasi seri asinkron.

Keempat macam mode kerja tersebut adalah :

o      Mode 0 – bekerja sebagai sarana komunikasi data seri sinkron, data seri dikirim dan diterima melalui kaki RxD, sedangkan kaki TxD dipakai untuk menyalurkan clock yang diperlukan komunikasi data sinkron. Data ditransmisikan per 8 bit dengan kecepatan transmisi data (Baud rate) tetap, sebesar 1/12 frekuensi kerja dari AT89C51.

o      Mode 1- mode ini dan 2 mode berikutnya merupakan sarana komunikasi seri asinkron. Data seri dikirim melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 10 bit, terdiri atas 1 bit Start (‘0’), 8 bit data dan 1 bit stop (‘1’). Kecepatan transmisi data (Baud Rate) ditentukan lewat Timer 1, bisa diatur untuk berbagai kecepatan.

o      Mode 2 – Data seri dikirim melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 11 bit, terdiri atas 1 bit Start (‘0’), 8 bit data, 1 bit data tambahan (bit ke 9) dan 1 bit stop (‘1’). Kecepatan transmisi data (Baud Rate) hanya bisa dipilih 1/32 atau 1/64 frekuensi kerja dari AT89C51.

o      Mode 3 – Data seri dikirim melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 11 bit, terdiri atas 1 bit Start (‘0’), 8 bit data, 1 bit data tambahan (bit ke 9) dan 1 bit stop (‘1’). Sesungguhnya Mode 2 dan 3 sama persis, perbedaannya adalah kecepatan transmisi data (Baud Rate) mode 3 ditentukan lewat Timer 1, bisa diatur untuk berbagai kecepatan, persis sama dengan mode 1.

Dari keempat mode kerja yang ada, mode 1 adalah mode yang paling banyak dipakai, mode inilah yang setara dengan komunikasi seri asinkron dipakai pada PC maupun modem.

Pengaturan Kecepatan Transmisi

Kecepatan transmisi (Baud Rate) merupakan suatu hal yang amat penting dalam komunikasi data seri asinkron, mengingat dalam komunikasi data seri asinkron clock tidak ikut dikirimkan, sehingga harus diusahakan bahwa kecepatan transmisi mengikuti standar yang sudah ada.

Dalam AT89C51, clock untuk transmisi data dibangkitkan dengan sarana Timer1. Untuk keperluan ini, Timer1 dioperasikan sebagai 8 bit auto reload timer (mode 2), artinya TL1 bekerja sebagai timer 8 bit menerima clock dari osilator kristal yang frekuensinya sudah dibagi 12 terlebih dulu, setiap kali pencacah (counter) nilainya menjadi 0 maka nilai yang sebelumnya sudah disimpan di TH1 secara otomatis diisikan lagi ke TL1, sehingga TL1 akan menghasilkan clock yang frekuensinya diatur oleh TH1, clock ini berikutnya dibagi lagi dengan 32 sebelum dipakai sebagai clock untuk UART. Hubungan frekuensi pada sistem tersebut dinyatakan dengan persamaan berikut :

Kalau kecepatan transmisi sudah ditentukann dan frekuensi kristal sudah dipastikan, maka nilai yang disimpan di TH1 bisa dihitung berdasarkan persamaan berikut :

Dalam persaman di atas, k adalah konstanta yang nilainya 1 atau 2, tergantung pada nilai yang tersimpan di bit SMOD dalam register PCON. Jika SMOD=’0′ k bernilai 1 dan k akan bernilai 2 kalau SMOD=’1′. Perlu dicacat, setelah AT89C51 di-reset, SMOD akan bernilai ‘0’, artinya jika tidak diatur lebih lanjut k bernilai 1.

Untuk mendapatkan kecepatan transmisi yang umum dipakai dalam komunikasi data seri asinkron (1200 Baud, 2400 Baud, 4800 Baud, 9600 Baud dan 19200 Baud), dari persamaan di atas bisa diturunkan ternyata frekuensi kristal yang paling tepat adalah 11.059 MHz. Meskipun angka ini agak aneh, tapi karena banyak dipakai kristal dengan frekuensi ini amat mudah diperoleh dipasar. Karena kristal 11.059 MHz dipilih agar bisa membangkitkan kecepatan transmisi data seri standar, dalam sistem berbasis AT89C51 yang tidak menggunakan sarana komunikasi data seri asinkron lebih baik dipilih kristal dengan frekuensi 12 MHz, sehingga clock untuk timer bisa merupakan frekuensi bulat 1 MHz.

~ by mohabi on December 21, 2008.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s