Sukai Halaman Grosir Mutiara Lombok Supplier Murah

Pengertian Mikrokontroler AT89C51

2.1. MIKROKONTROLER 
Mikrokontroler  sebagai  suatu  terobosan  teknologi  mikroprosesor  dan mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor  yang  lebih  banyak  namun  hanya membutuhkan  ruang  kecil  serta  dapat  diproduksi secara  massal  (dalam  jumlah  banyak)  sehingga  harganya  menjadi  lebih  murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi  selera  industri  dan  para  konsumen  akan  kebutuhan  dan  keinginan  alat-alat  bantu  dan  mainan  yang  lebih  baik  dan  canggih.  Dengan  alasan  demikian mikrokontroler  banyak  digunakan  oleh  berbagai  kepentingan  untuk  menciptakan suatu kreasi elektronika yang beraneka ragam.


2.1.1. ARSITEKTUR  MIKROKONTROLER  AT89C51
Blok  diagram  lengkap  dari  Mikrokontroler  AT89C51  seri  AT89 (Keluarga 51) Atmel akan diperlihatkan secara jelas pada Gambar 2.1:




Untuk  mengetahui  bagian-bagian  dari  blok  diagram  diatas  dapat  dijelaskan sebagai berikut :

a.  Register A
 Register  A  (akumulator)  yang  menempati  lokasi  pada  alamat  Eoh digunakan  sebagai  register  untuk  penyimpanan  data  sementara  dalam  program, instruksinya mengacu sebagai register A.

b.  Register B
Register  B  (lokasi  Foh)  digunakan  selama  operasi  perkalian  dan pembagian,  untuk  instruksi  lain  dapat  diperlakukan  sebagai  register  Scratch  pad  (papan coret-coret) lainnya.

c.  Program Status Word (PSW)
Register PSW (lokasi Doh) mengandung informasi status program. 

d.  Stack Pointer
Register Stack Pointer  (SP) pada  lokasi 81h merupakan  register dengan panjang  8-bit,  digunakan  dalam  proses  simpan  dan  ambil  dari/ke  stack.  Nilainya akan  dinaikkan  sebelum  data  disimpan menggunakan  intruksi  PUSH  dan  CALL. Walau Stack bisa menempati lokasi dimana saja dalam RAM, register SP akan selalu diinisialisasikan  ke  07h  setelah  adanya  reset,  hal  ini menyebabkan  stack  berawal dilokasi 08h.

e.  Data Pointer
Register Data Pointer atau DPTR mengandung DPTR untuk byte  tinggi (DPH)  dan  byte  rendah  (DPL)  yang masing-masing  berada  dilokasi  83h  dan  82h, bersama-sama membentuk  register  yang mampu menyimpan  alamat  16  bit. Dapat dimanipulasi sebagai register 16-bit atau sebagai dua register 8-bit yang terpisah.

f.  Port 0, Port 1, Port 2, dan Port 3
P0, P1, P2 dan P3 masing-masing menempati  lokasi 80h, 90h, A0h dan b0h  merupakan  pengunci-pengunci  (latches),  yang  digunakan  untuk  menyimpan data yang akan dibaca atau ditulis dari/ke port, masing-masing Port 0, Port 1, Port 2 dan Port 3.

g.  Serial Data Buffer.
Serial  data  buffer  (SBUF)  pada  lokasi  99h  sebenarnya  terdiri  dari  dua register  yang  terpisah  yaitu  register  penyangga  pengirim  (transmit  buffer)  dan penyangga  penerima  (receive  buffer).  Pada  saat  data  disalin  ke  SBUF, maka  data sesungguhnya  dikirim  kepenyangga  pengirim  dan  sekaligus  mengawali  transmisi data  serial,  sedangkan  pada  saat  data  disalin  dari  SBUF,  maka  sebenarnya  data  tersebut berasal dari penyangga penerima.

h.  Timer Register
Pasangan  register-register    (THO,  TL0)  dilokasi  8Ch  dan  8Ah,  (TH1, TL1)  dilokasi BDh  dan  8Bh  serta  (TH2, TL2)  dilokasi CDh  dan CCh merupakan register-register pencacah 16-bit untuk masing-masing Timer 0, Timer 1 dan Timer 2. 

i.  Capture Register
Pasangan register (RCAP2H, RCHP2L) yang menempati lokasi CBh dan CAh  merupakan  register  Capture  untuk  mode  Timer  2  capture.  Pada  mode  ini, sebagai  tanggapan  terjadinya  suatu  transisi  sinyal  dikaki  (pin)  T2EX  (pada AT89C52/55), TH2 dan TL2 disalin masing-masing ke RCAP2H dan RCP2l. Timer 2  juga  memiliki  mode  isi  ulang  otomatis  16-bit  dan  RCAP2H  serta  RCAP2L digunakan untuk menyimpan nilai isi ulang tersebut.

j.  Control Register
Register-register  IP,  IE, TMOD, TCON, T2CON, T2MOD, SCON  dan PCON berisi bit-bit kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port serial yang akan dijelaskan nanti.


2.1.2. ORGANISASI  MEMORI  AT89C51
Mikrokontroler AT89C51 memiliki  ruang  alamat memori    data  dan program yang terpisah. Pemisahan memori program dan data tersebut membolehkan memori  data  dapat  diakses  dengan  alamat  8-bit,  sehingga  dapat  dengan  cepat  dan mudah  disimpan  dan  dimanipulasi  oleh  CPU  8-bit.  Walaupun  demikian,  alamat  memori data 16-bit bisa juga dihasilkan melalui register DPTR.

2.1.2.1 MEMORI PROGRAM.
Pada Gambar 2.2 dibawah  ini ditunjukkan pemetaan bagian bawah dari memori program. Setelah reset, CPU segera mengerjakan program mulai dari lokasi 0000h.

Ada Gambar disini

Sebagaimana  ditunjukkan  pada  Gambar  2.2  diatas,  masing-masing interupsi   diletakkan pada  lokasi yang sudah  tetap dalam memori program. Sebuah interupsi menyebabkan CPU melompat ke lokasi interupsi yang bersangkutan, yaitu letak  dari  subrutin  layanan  interupsi  tersebut.  Misalnya,  Eksternal  interupsi  0 disimpan pada  lokasi 0003h,  jika  interupsi digunakan, maka  layanan rutin  interupsi ini  harus  dituliskan  pada  lokasi  ini,  jika  tidak, maka  lokasi  tersebut  bisa  dipakai sebagai memori program serba guna.

Untuk lebih jelas perhatikan tabel berikut ini :

Ada Tabel Disini

Lokasi-lokasi layanan interupsi tersebut menempati lokasi-lokasi dengan jarak 8-byte : 0003h untuk eksternal interupt 0, 000Bh untuk timer 0,  0013h, untuk Eksternal Interupt 1,   001Bh untuk timer 1 dan seterusnya. Jika suatu rutin layanan interupsi sangat pendek (kurang dari 8 byte), maka seluruh rutin bisa disimpan pada lokasi  yang  bersangkutan  (sesuai  dengan  interupsi  yang  digunakan).  Jika  terlalu panjang  (lebih  atau  sama  dengan  8-byte),  maka  harus  digunakan  suatu  perintah lompat  ke  lokasi  rutin  interupsi  yang  sebenarnya  (dilokasi  lain  dalam  memori program).


2.1.2.2 MEMORI DATA

Memori  data  dapat  berupa  memori  data  internal  dan  memori  data eksternal. kita  dapat menentukan memori  data  eksternal  hingga  64K  byte. Alamat Alamat memori data eksternal bisa 1 atau 2 byte. Alamat satu byte sering digunakan untuk membantu  satu  atau  lebih  jalur  I/O dalam penghalamanan RAM. Alamat dua byte dapat dipakai dalam kasus jika byte alamat tinggi dikirim melalui port 2.

Memori data  internal memiliki  ruang memori dibagi menjadi  tiga blok, yang  dikenal  sebagai  128  bawah  (lower  128),  128  atas  (upper  128)  dan  register fungsi khusus (Special Function Register = SFR).

Alamat  memori  data  internal  selalu  8-bit  atau  1-byte,  yang konsekuensinya hanya mampu mengalamati hingga 256 byte saja. Namun demikian, mode-mode  pengalamatan  RAM  internal  (faktanya)  bisa  mengakomodasi  hingga 384-byte.  Pengaksesan  langsung    (direct  addressing)  dengan  alamat  diatas  7Fh mengakses  suatu  memori,  sedangkan  pengaksesan  tak  langsung  (indirect addressing) dengan alamat diatas 7Fh mengakses ruang memori lain yang berbeda. Sehingga  terlihat  128  atas  dan  SFR menempati  blok  yang  sama,  80h  hingga  FFh, walaupun secara fisik terpisah.

RAM  Internal  yang  memiliki  128-byte  dipetakan.  32  byte  bawah dikelompokkan menjadi 4 bank dan 8 register (R0 hingga R7). Dua bit pada   PWS (Program  Status Word)  digunakan  untuk  memilih  kelompok  register  mana  yang digunakan. Arsitektur ini membolehkan penggunaan ruang kode secara lebih efisien, karena  instruksi-intruksi  register  lebih  pendek  dari  pada  instruksi-instruksi  yang menggunakan pengalamatan langsung. 16 byte berikutnya, diatas bank-bank register membentuk  suatu  blok  ruang  memori  yang  bisa  teralamati  per  bit.  Kumpulan instruksi mikrokontroler ini memiliki berbagai  pilihan instruksi-instruksi bit tunggal dan  instruksi-instruksi  ini mampu secara  langsung mengalamati 128 bit dalam area  ini. Alamat-alamat bit ini adalah 00h hingga 7Fh.

Semua  byte  yang  berada  didalam  128  bawah  dapat  diakses  baik  secara langsung maupun  tidak  langsung.  Bagian  128  atas  dari RAM  hanya  ada  didalam piranti yang memiliki RAM berukuran 256 byte.


2.1.2.3. RAM INTERNAL

Instruksi   MOV , membolehkan  data  dipindah-pindah  antar lokasi dalam RAM internal atau lokasi-lokasi SFR tanpa melalui akumulator. Perlu dicatat bahwa untuk  semua mikrokontroller Atmel Seri AT89C51,  stack  tersimpan dalam RAM  internal.  Intstruksi PUSH  pertama kali  akan menaikkan  isi SP  (stack pointer)  kemudian  menyalin  data  byte  yang  terkait  ke  dalam  lokasi  yang  yang ditunjuk  SP.  PUSH  dan  POP  hanya  menggunakan  pengalamatan  langsung  untuk mengidentifikasi  byte  yang  disimpan  atau  dikembalikan  (ditarik  dari  ruang  Stack), jika diimplementasikan  lokasinya dapat mencapai 128 (upper 128) atas  tetapi  tidak mengganggu ruang SFR.

Jika  piranti  mikrokontroler  yang  digunakan  tidak  melakukan implementasi bagian 128 atas dan SP-nya sendiri menunjuk pada lokasi di 128 atas tersebut, maka  data  byte  yang  di  PUSH  akan  hilang  serta  instruksi  POP menjadi tidak menentu.

Instruksi-instruksi  transfer data mencakup  sebuah  instruksi MOV 16 bit (MOV  DPTR,#  data  16)  yang  dapat  digunakan  untuk  inisialisasi  DPTR  dalam penggunaan  Tabel  Tengok  atau  look-up-tabel  dalam  memori  program  atau  untuk akses data eksternal 16-bit. 


2.1.2.4. TABEL TENGOK ( LOOK UP TABLE)
 

Pada Tabel 2.2 dibawah ini memperlihatkan dua instruksi yang dapat digunakan  membaca tabel tengok yang tersimpan dalam memori program.  Ada Tabel Disini


Karena kedua  instruksi  ini hanya mengakses memori program  saja, maka tabel  tengok  hanya  bisa dibaca  saja,  tidak mungkin  diremajakan  atau  update.  Jika akses  tabelnya  ke  memori  program  eksternal,  maka  tanda  bacanya  melalui  kaki PSEN.

Instruksi MOVC yang pertama pada tabel diatas mampu mengakomodasi sebuah tabel dengan 256 entri, dengan indeks atau nomor baris 0 hingga 255. Angka indeks yang diinginkan disimpan dalam akumulator dan DPTR di set menunjuk ke alamat  lokasi  awal  tabel  yang  bersangkutan.  Dengan  demikian  perintah  MOVC A,@A+DPTR  digunakan  untuk  menyalin  entri  tabel  yang  dikehendaki  ke  dalam akumulator. Instruksi MOVC yang satunya juga sama, hanya saja menggunakan PC sebagai alamat dasarnya (bukan DPTR).


2.1.2.5. INSTRUKSI-INSTRUKSI REGISTER KHUSUS                
 

Bank-bank  register,yang  masing-masing  berisi  R0  hingga  R7  atau  8 register,  dapat  diakses  melalui  instruksi  yang  op-kodenya  mengandung  3-bit spesifikasi  register  (000  untuk  R0,    001  untuk  R1  hingga  111  untuk  R7). Pengaksesan  register  dengan  cara  demikian  bisa  menghemat  penggunaan  kode instruksi, karena tidak memerlukan sebuah byte untuk alamat. Saat instruksi tersebut dikerjakan, satu dari delapan register pada bank yang terpilih yang diakses.
 

Beberapa  instruksi  hanya  dikhususkan  untuk  suatu  register  tertentu. Misalnya  suatu  instruksi yang hanya bekerja pada akumulator  saja. Sehingga  tidak memerlukan alamat byte untuk menunjuk ke akumulator tersebut. Dalam hal ini, op- kodenya sendiri telah mengandung penunjuk ke register yang benar. Instruksi yang mengacu  akumulator  sebagai  A  akan  dikodekan  dengan  op-kode  spesifik-akumulator.
 

Tidak  semua  alamat  pada  SFR  (register  fungsi  khusus)  digunakan, alamat-alamat  yang  tidak  digunakan  tidak  diimplementasikan  pada  chip.  Jika dilakukan  usaha  pembacaan  pada  alamat-alamat yang  tidak  terpakai  tersebut  akan menghasilkan  data  acak  dan  penulisannya  tidak  menimbulkan  efek  sama  sekali. Pengguna perangkat lunak sebaiknya jangan menuliskan “1” pada lokasi-lokasi ‘tak bertuan’  tersebut,  karena  dapat  digunakan  untuk  mikrokontroler  generasi selanjutnya. Dengan  demikian,  nilai-nilai  reset  atau  non  aktif  dari  bit-bit  baru  ini akan selalu ‘0’ dan nilai aktifnya adalah ‘1’. 

 

2.1.3. MODE PENGALAMATAN 

Mode pengalamatan pada keluarga MCS 51  terdiri dari dua mode yaitu Mode Pengalamatan Langsung  (Direct Addressing) dan Mode Pengalamatan Tidak Langsung (Indirect Addressing).

Dalam  Pengalamatan  Langsung,  operan-operan  ditentukan  berdasarkan alamat 8-bit (1 byte) dalam suatu instruksi. Hanya RAM data internal dan SFR saja yang bisa diakses secara langsung. 
 

Mode  Pengalamatan  tak  Langsung  dalam  pengalamatannya,  intruksi  menentukan  suatu  register  yang  digunakan  untuk menyimpan  alamat  operan. Baik RAM  internal maupun RAM eksternal dapat diakses secara  tak  langsung. Register alamat untuk alamat-alamat 8-bit bisa menggunakan Stack Pointer atau RO atau R1  dari  bank  register  yang  dipilih.  Sedangkan  untuk  alamat  16-bit  hanya  bisa menggunakan  register  pointer  data  16-bit  atau  DPTR.  Beberapa  instruksi menggunakan operan berupa register yang menyimpan alamat data disimpan. Dalam hal  ini  digunakan  tanda  “at”  (@)  yang  dapat  digunakan  bersama  dengan R0, R1, DPTR atau PC tergantung dari instruksi yang digunakan.


2.1.4. TIMER DAN COUNTER DALAM AT89C51 


Pada  dasarnya  sarana masukkan  yang  satu  ini merupakan  seperangkat pencacah  biner  (binary  counter)  yang  terhubung  langsung  ke  saluran  data mikrokontroller,  sehingga mikrokontroler bisa membaca kondisi pencacah dan bila diperlukan mikrokotroler  dapat pula merubah kondisi pencacah tersebut.
 

Seperti layaknya pencacah biner, saat sinyal detak (clock) yang diberikan sudah  melebihi  kapasitas  pencacah,  maka  pencacah  akan  memberikan  sinyal overflow  atau  limpahan,  sinyal  ini  merupakan  suatu  hal  yang  penting  dalam pemakaian pencacah dan  terjadinya limpahan pencacah ini bisa dicatat dalam suatu register.  Selain  itu,  sinyal  detak  yang  diberikan  ke  pencacah  bisa  dikendalikan dengan mudah.
 

Sinyal  detak  yang  diberikan ke  pencacah  dibedakan menjadi 2 macam,  yang  pertama  ialah  sinyal  detak  yang  dengan  frekuensi  tetap  sudah  diketahui besarnya dan yang kedua adalah sinyal detak dengan frekuensi yang bisa bervariasi.
 

Jika sebuah pencacah bekerja dengan frekuensi tetap, dikatakan pencacah tersebut bekerja sebagai timer atau pewaktu, karena kondisi pencacah tersebut setara dengan waktu yang bisa ditentukan secara pasti.
 

Jika  sebuah  pencacah  bekerja  dengan  frekuensi  yamg  bervariasi, dikatakan  pencacah  tersebut  bekerja  sebagai  counter  atau  pencacah,  kondisi pencacah  tersebut  menyatakan  banyak  pulsa  detak  yang  sudah  diterima.  Untai pencacah biner tersebut merupakan pencacah biner naik (count up binary counter).

 

2.14.1. SARANA TIMER/COUNTER AT89C51 

Keluarga  mikrokontroler  AT89C51  dilengkapi  dengan  dua  perangkat timer/counter, masing-masing  dinamakan  sebagai Timer  0  dan Timer  1. Perangkat timer/counter  tersebut  merupakan  perangkat  keras  yang  terpadu  dalam  SFR. Pencacah biner timer 0 diakses melalui register TL0 (timer 0 low byte, memori data internal  alamat  6Ah)  dan  register  TH0  (timer  0  high  byte, memori  data  internal alamat 6Ch). Pencacah biner timer 1 diakses melalui register TL1 (timer 1 low byte, memori data internal alamat 6Bh) dan register TH1 (timer 1 high byte, memori data internal alamat 6Dh).
 

Pencacah  biner  timer/counter  AT89C51 merupakan  pencacah  biner  16 bit naik  (count up binary counter) yang mencacah dari 000Fh  sampai FFFFh,  saat kondisi  pencacah  berubah  dari  FFFFh  kembali  ke  000Fh  akan  timbul  sinyal limpahan (overflow).  

Untuk  mengatur  kerja  timer/counter  tersebut  digunakan  2  register tambahan yang dipakai bersama oleh timer 0 dan timer 1. register tambahan tersebut adalah register TCON (timer control register, memori data internal alamat 88h, bisa dialamat  per  bit)  dan  register  TMOD  (timer  mode  register, memori  data  internal alamat 89h, tidak bisa dialamati per bit). TL0, TH0,  TL1, dan TH1 merupakan SFR (special  function  register)  yang  dipakai  untuk membentuk  pencacah  biner  timer  0 dan  timer 1. Kapasitas keempat  register  tersebut masing-masing 8-bit, bisa disusun menjadi 4 macam mode pencacah biner.

 

2.1.4.2. MODE KERJA TIMER 0 DAN TIMER 1 

Pada mode 0, 1  , dan 2,  timer 0 dan  timer 1 masing-masing bisa dibuat timer  0  bekerja  pada  mode  1  dan  timer  1  bekerja  pada mode  2,  atau  kombinasi lainnya sesuai dengan keperluan. Sedangkan pada mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang terpadu (khusus)
 

  • MODE 0 – Pencacah Biner 13-bit
Pencacah  biner  dibentuk  dengan  TLx  (bisa  TL0  atau  TL1)  sebagai pencacah  biner  5  bit  (meskipun  kapasitas  sesungguhnya  8  bit).,  limpahan  dari pencacah  biner  5-bit  ini  dihubungkan  ke  THx  (bisa  TH0  atau  TH1)  membentuk sebuah untai pencacah biner 13-bit, limpahan dari pencacah 13-bit ini ditampung di TFx  (bisa  TF0  atau  TF1)  yang  berada  didalam  register  TCON.  Pada  saat  terjadi limpahan (dari 1FFFh ke 0000h) maka flag interupsi timer (TF1) akan diset (=1).
 

  • MODE 1 – Pencacah Biner 16-bit
Mode  ini  sama  dengan  mode  0,  hanya  saja  register  TLx  dipakai   sepenuhnya  sebagai  pencacah  biner  8-bit,  sehingga  kapasitas  pencacah  biner yang terbentuk adalah 16-bit. Seiring dengan sinyal detak, kondisi pencacah biner 16-bit ini  dimulai  dari  0000h,  0001h,  0002h, ……,  sampai  FFFFh,  kemudian  kembali menjadi 0000h (pada saat itu terjadi sinyal limpahan atau overflow pada TFx).
 

  • MODE 2 – Pencacah Biner 8-bit dengan Isi Ulang
 TLx dipakai sebagai pencacah biner 8-bit, sedangkan THx dipakai untuk menyimpan nilai yang disisikan ulang TLx  setiap kali kondisi TLx melimpah atau berubah dari FFh menjadi 00h. Dengan cara ini bisa diperoleh sinyal overflow yang frekuensinya bisa ditentukan oleh nilai yang disimpan dalam THx.
  • MODE 3 – Gabungan Pencacah Biner 16-bit dan 8-bit

Pada  mode  3  TL0,  TH0,  TL1  dan  TH1  dipakai  untuk  membentuk  3 rangkaian pencacah, yang pertama adalah untai pencacah biner 16-bit tanpa fasilitas pemantau sinyal limpahan atau overflow yang dibentuk dengan TL1 dan TH1. Yang kedua  adalah TL0  yang  dipakai  sebagai  pencacah  biner  8-bit  dengan TF0  sebagai sarana pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah  biner  8-bit  dengan  TF1  sebagai  sarana  pemantau  limpahan,  dengan demikian TH0 yang mengendalikan interupsi timer 1 (TF1).
 

Mode  3  biasanya  digunakan  pada  aplikasi  yang  membutuhkan  sebuah timer  atau  pencacah  8-bit  tambahan.  Dengan  timer  0  pada  mode  3,  AT89C51 seakan-akan memilki  3  buah  timer.  Pada mode  3  ini,  timer  dapat  dihidupkan  dan dimatikan menggunakan M1 dan M0 pada  register TMOD. Pada kasus  seperti  ini, timer 1 masih dapat digunakan oleh port serial untuk menghasilkan baud rate, atau aplikasi apa saja yang tidak membutuhkan interupsi.  

 

2.1.4.3. REGISTER PENGATUR TIMER   

Register timer digunakan untuk mengatur  timer. Register pengatur timer terdiri  dari  Register  TCON  dan  Register  TMOD.Register-register  ini  merupakan register untuk mengatur kerja  timer 0 dan  timer 1. Perhatikan Gambar 2.3 dan 2.4 dibawah ini :

TMOD – TIMER MODE REGISTER
Ada Gambar disini


Register TMOD dan register TCON merupakan register yang digunakan untuk mengatur kerja  timer 0 dan  timer 1,  susunan bit  register TMOD dan TCON masing-masing ditunjukkan dalam gambar A dan B. Register TMOD dibagi menjadi 2  bagian  secara  simetris,  bit  0  sampai  3  (TMOD.0  s/d  TMOD.3)  dipakai  untuk mengatur  timer 0, sedangkan bit 4 sampai 7 (TMOD.4 s/d TMOD.7) dipakai untuk mengatur timer 1, penjelasan sebagai berikut :     Bit M0/M1 dipakai untuk menentukan Mode Timer  seperti yang ditunjukkan pada tabel digambar 2.3

Bit C/T dipakai untuk mengatur sumber sinyal detak yang diberikan ke pencacah biner.  Jika  C/T  =  0,  maka  sinyal  detak  diperoleh  dari  osilator  kristal  yang frekuensinya  sudah  dibagi  12,  sedangkan  jika  C/T  =  1  maka  sinyal  detak diperoleh dari kaki T0 (untuk timer 0) atau kaki T1 (untuk timer 1).
 

Bit gate merupakan pengatur  saluran  sinyal detak. Bila bit GATE = 0,  saluran sinyal detak hanya diatur oleh bit TRx (bisa TR0 atau TR1 pada register TCON). Bila  bit GATE =  1  kaki  INT0  (untuk  timer  0)  atau  kaki  INT!  (untuk  timer  1) yang dipakai untuk mengatur sinyal detak.
 

Register  TCON  dibagi  menjadi  2  bagian,  4  bit  yang  pertama    (bit  0 sampai bit 3) dipakai untuk keperluan mengatur kaki INT0 dan INT1. Sisa 4 bit dari register TCON (bit 4 sampai dengan bit 7) dibagi menjadi 2 bagian secara simetris yang dipakai untuk mengatur timer 0 / timer 1, sebagai berikut :
 

Bit TFx (TF0 atau TF1) merupakan bit penampung limpahan, TFx akan menjadi ‘1’ setiap kali pencacah biner yang terhubung padanya melimpah atau overflow (kondisi pencacah berubah dari FFFFh kembali menjadi 0000h). Bila TFx bisa  dinolkan  secara manual dengan  instruksi CLR TF0  atau CLR TF!.  Jika  sarana interupsi dari timer 0/ timer 1 dipakai, TFx dinolkan saat AT89C51 menjalankan rutin layanan interupsi (ISR-inetrupt service routine).

Bit TRx (TR0 atau TR1) merupakan bit pengatur saluran sinyal detak, bila bit ini = 0 sinyal detak  tidak disalurkan ke pencacah biner sehingga pencacah berhenti melakukan pencacahan. Bila bit GATE = 1 pada register TMOD, maka saluran sinyal detak ini diatur bersama TRx dan sinyal pada kaki INTO/INT1.

 

2.1.5. SISTEM INTERUPSI PADA AT89C51 

AT89C51 menyediakan 5 sumber interupsi yaitu : dua interupsi internal, dua intrerupsi Timer dan sebuah interupsi Port serial.

2.1.5.1. STRUKTUR INTERUPSI.
Ada Tabel dibawah ini

Interupsi  eksternal  INT0  dan  INT1  dapat  dipilih  dengan  dua  macam pilihan : aktivasi tingkat (level activated) atau aktivasi transisi (trantition activated). Hal ini tergantung pada bit IT0 dan IT1 dalam register TCON. Tanda atau flag yang sesungguhnya  menghasilkan  interupsi  ini  adalah  bit-bit  IE0  (TCON.1)  dan  IE1 (TCON.3)  dalam  register  TCON.  Saat  rutin  layanan  interupsi  (RL1)  dijalankan, mikrokontroler secara otomatis akan menolkan tanda  interupsi terkait asal interupsi tersebut diaktivasi dengan  trasisi.  Jika aktivasi  secara  tingkat  (level), maka  sumber eksternallah yang mengontrol tanda interupsi tersebut.
 

Interupsi  timer 0 dan  timer 1 dihasilkan oleh TF0 dan TF1,  terjadi pada saat muncul  limpahan pada masing-masing  timer  (kecuali  timer 0 pada MODE 3). 

Saat terjadi interupsi timer, mikrokontroller akan menolkan tanda-tanda tersebut.
 

Interupsi port serial  terjadi baik pada saat RI = ! atau TI = 1 (pada saat selesai  penerimaan  atau  pengiriman  data).  Dalam  hal  ini  bit-bit  RI  dan  TI  harus dinolkan  secara manual melalui  program  yang ditulis.(akan  dijelaskan  pada  pasal-pasal berikutnya). Kedua interupsi port serial ini digabung menggunakan OR. Begitu juga dengan  interupsi Timer 2 (TF2) dan masukkan eksternal 2 (EXF2). Hasil dari masing-masing  gerbang OR  tersebut  yang  kemudian  akan menghasilkan  interupsi yang  bisa  diaktifkan melalui  bit  IE.4  untuk  RI  atau  TI  dan  IE.5  untuk  TF2  atau EXF2.
 

Semua  bit  yang  menyebabkan  terjadinya  interupsi  bisa  diset  atau dinolkan  melalui  perangkat  lunak  dan  hasilnya  sama  jika  dilakukan  melalui perangkat  keras.  Dengan  demikian  interupsi  bisa  dihasilkan  maupun  dibatalkan melalui program.

 

2.1.5.2. MENGAKTIFKAN DAN MENON-AKTIFKAN INTERUPSI 

Perhatikan  gambar  sebelumnya.,  masing-masing  sumber  interupsi tersebut dapat diaktifkan dan dinon-aktifkan sendiri-sendiri dengan mengatur bit-bit yang  terkait dalam  register  IE  (interupt enable) dialamat A8h. Selain pada  register IE juga terdapat sebuah bit yang digunakan untuk mengaktifkan dan menon-aktifkan interupsi  secara  keseluruhan.  Pada  AT89C51  bit  IE.5  belum  terimplementasi, sebaiknya  jangan  digunakan  karena  untuk  cadangan  pada  produk mikrokontroller sejenis dimasa datang.


2.1.5.3. TINGKAT PRIORITAS INTERUPSI  


Masing-masing inetrupsi dapat diprogram tingkat prioritasnya dengan mengatur  bit-bit  yang  terkait  pada  register  IP  (alamat  B8h).  perhatikan  gambar sebelumnya dan tabel berikut ini :

Ada tabel disini
 

Register  IP  akan  berisi  nol  saat  reset  yang  mengakibatkan  semua interupsi ditempatkan sebagai prioritas rendah. Dengan adanya sistem prioritas maka saat sebuah rutin layanan interupsi dikerjakan bisa diinterupsi dengan interupsi yang prioritasnya  lebih  tinggi.  Karena  hanya  ada  dua  tingkat  prioritas,  maka  interupsi yang  prioritas  rendah  bisa  diinterupsi  dengan  yang  prioritasnya  lebih  tinggi, sedangkan interupsi dengan prioritas tinggi tidak dapat diinterupsi lagi.
  

2.1.5.4. TEKNIK POLLING 


Pada  saat  ada  dua  interupsi  dengan  prioritas  yang  sama  muncul bersamaan, maka  dilakukan  polling  untuk menetukan mana  yang  dilayani  terlebih dahulu. Urutan polling sebagai berikut: eksternal 0, eksternal 1, timer 1, port serial kemudian baru timer 2.  

 

2.1.5.5. PEMROSESAN INTERUPSI 

Saat  terjadi  interupsi, kemudian diterima CPU didalam mikrokontroller, maka  program  akan  dihentikan  terlebih  dahulu  kemudian  dikerjakan  langkah-langkah penanganan interupsi sebagai berikut : 
1.  instruksi yang sedang dikerjakan diselesaikan terlebih dahulu
2.  isi PC (pencacah program) disimpan ke stack
3.  status interupsi yang bersangkutan disimpan ke stack
4.  interupsi-interupsi pada tingkat yang sama diblokir
5.  PC  kemudian  diisi  alamat  vektor  rutin  layanan  interupsi  (RLI)  yang bersangkutan

6.  RLI dikerjakan. 

RLI  diakhiri  dengan  instruksi  RETI  (bukan  RET).  Adanya  instruksi RETI  ini maka  alamat PC  yang  terakhir  yang  tersimpan di  stack diambil  lagi dan status  interupsi  sebelumnya  dikembalikan,  sehingga  program  utama  sempat ditinggalkan dapat diteruskan lagi.


2.1.5.6. VEKTOR-VEKTOR INTERUPSI 


Saat suatu  interupsi diterima, nilai yang disimpan ke PC sebagai alamat RLI  selanjutnya  disebut  sebagai  vektor  interupsi,  yang  sekaligus merupakan  awal alamat RLI yang bersangkutan.ada tabel disini


2.1.5.7. PERANCANGAN PROGRAM INTERUPSI
2.1.6. SAKLAR MINIATUR HEX ENCODER 16 POSISI (SWITCH BCD)
2.1.7. CATU DAYA

Dalam  sistem  elektronik,  hampir  semua  semua  rangkaian  elektronik membutuhkan sumber tegangan dc (direct current) yang teratur dengan besar 5 V-30 V.  Dalam  beberapa  kasus,  pencatuan  ini  dapat  dilakukan  secara  langsung  oleh baterai  (misalnya  6 V,  9 V, 12 V)  namun  dalam banyak kasus  lainnya  akan  lebih menguntungkan apabila kita menggunakan sumber ac (alternatting current) standar.

Diagram blok  catu  daya  dc  di  perlihatkan  pada gambar  2.6a. Karena  input sumbernya  memiliki  tegangan  yang  relatif  tinggi,  maka  digunakanlah  sebuah transformator  step-down  dengan  ratio  lilitan  yang  sesuai  untuk  mengkonversi tegangan  ini  ke  tegangan  rendah.  Output  ac  dari  sisi  sekunder  transformator kemudian  disearahkan  dengan  menggunakan  dioda-dioda  penyearah  (rectifier) silikon  konvensional  untuk  menghasilkan  output  yang  masih  kasar  (kadangkala disebut  sebagai  dc  berdenyut). Output  ini  kemudian  di  haluskan  dan  kemudian  di filter sebelum di salurkan ke input rangkaian. 


Note:

Pada postingan  Mikrokontroler AT89C51 ini saya tidak posting secara lengkap dikarena banyaknya data dalam bentuk table, gambar serta simbul simbul yang tidak dapat mendukung dengan fitur blog saya, sehingga untuk mendapatkan secara lengkap silahkan dapatkan dengan cara mendownloadnya.