Laman

Minggu, 22 Desember 2013

Pengertian Dasar Mikrokontroler/Procesor

 Apa itu mikrokontroler, Mikrokontroler adalah chip yang telah berisi prosessor, memori dan I/O programmable. mikrokontroler di desain untuk  aplikasi embedded.  mikrokontrol biasanya digunakan untuk mengontrol produk atau  perangkat secara otomatis, seperti pada kontrol mesin mobil, remote control,  alat listrik, dan lain2nya.  kelebihan penggunaan mikrokontroler dalam kontrol digital, adalah karena lebih ekonomis dalam mengontrol baik perangkat maupun proses, dimana jika dibandingkan dengan mengunakan system dengan prosessor terpisah dengan memori dan perangkat I/O, seperti komputer desktop dan sejenisnya, karena dengan mikrokontroler ketiga komponen tersebut sudah berada dalam satu chip, sehingga ukuran dan biayanya lebih rendah.
okey…..:D,
salah satu mikrokontroler yang banyak digunakan, yaitu AVR, salah satu mikrokontroler yang diproduksi oleh Atmel
Arsitektur
Mikrokontroler AVR RISC(Reduced instruction set computing atau “Komputasi set instruksi yang disederhanakan” pertama kali digagas oleh John Cocke) adalah perangkat yang di desain untuk berjalan dengan cepat, dengan menggunakan instruksi mesin yang disederhanakan sehingga dapat meningkatkan kinerja dari mikrokontroler. (sebelum ada RISC, namanya CISC(Complex Instruction Set Computers) nantilah kalo sempat di tulis :D sekalian kelebihan dan kekurangnnya). dengan pengunaan instruksi yang lebih sederhana memberikan konstribusi pada kecepatan dengan instruksi mesin yang terbatas. Mikrokontroler AVR RISC dapat berjalan pada single cycle dari prosesor clock, yang berarti Mikrokontroler AVR dengan clock 8 MHz, dapat mengeksekusi sekitar 8 juta instruksi perdetiknya atau 8 MIPS(million instruction per second).
Memori
Bagian memori dari mikrokontrol Atmel RISC AVR berbasis Harvard Model, yang mana memorinya terbagi sehingga dapat meningkatkan kecepatan akses dan meningkatkan kapasitas.  CPU membagi antarmuka untuk bagian kode memori FLASH, bagian memori data , dan memori EEPROM.
  • kode memori FLASH
    memori FLASH merupakan blok dari memori FLASH yang dimulai dari lokasi 0×000 dan ukurannya tergantung dari mikrokontroler yang digunakan. Memori FLASH merupakan memori non-volatile dan digunakan untuk menyimpan kode eksekusi dan konstanta, karena kode-kode tersebut akan digunakan kembali meskipun mikrokontroler tidak terhubung ke catu daya, oh iya….. yang dimaksud non-volatile yaitu kode yang disimpan dalam memori tidak hilang meskipun mikrokontrol tidak dialiri listrik,  ruang memori antara 16 bit pada setiap lokasi untuk menagani instruksi mesin yang khusunya single-16 bit word.
  • Memori Data
    Memori data Atmel AVR khasnya  terdiri dari tiga bagian memori baca/tulis  terpisah .bagian terendah terdiri dari 32 register kerja  umum,  yang diikuti oleh 64 register I/O, yang diikuti oleh internal SRAM. Register kerja umum hanya : digunakan untuk menyimpan variabel lokal dan data temporal yang digunakan oleh program saat dieksusi dan dapat juga digunakan untuk penyimpanan data variabel global, 64 register I/O digunakan sebagai antarmuka untuk perangkat I/O dan peripheral yang berada di papan mikrokontroler. dan internal SRAM digunakan sebagai area penyimpanan variable umum dan juga untuk prosessor stack. 
    • Register-register
      Register kerja umum menempati 32 sel terndah dalam data memori. register ini kebanyakan digunakan seperti data penyimpanan dalam kalkulator yang mana hanya disimpan sementara. terkadang digunakan untuk menyimpan variable lokal, dan terkadang variable global, dan terkadang sebagai pengarah ke memori yang digunakan oleh prosessor. singkatnya prosessor menggunakan 32 register kerja sebagaimana program dieksekusi.
    • Rigister I/O
      Setiap regiter memberikan akses ke register kontrol atau ke register data I/O peripheral yang berada dalam mikrokontroler. Programer lebioh sering menggunakan I/O register untuk mengantarmuka ke peripheral I/O  dari mikrokontroler. ukuran Register I/O tergantung dari perangkat. setiap register I/O memiliki nama, sebuah alamat I/O, dan alamat SRAM.
    • SRAM
      Bagian SRAM dari memori digunakan untuk menyimpan variabel yang tidak dapat disimpan kedalam register dan untuk menyimpan prosessor satck.
  • Memori EEPROM
    bagian memori EEPROM adalah area memori baca/tulis yang non volatile. ini biasanya digunakan untuk menyimpan data yang tidak boleh hilang saat catu daya dilepas (mikrokontroler dimatikan) dan dipasang kembali (mikrokontroler dinyalakan). ruang EEPROM dimulai dari 0×000 dan ke nilai maksimum tergantung spesifikasi mikrontroler yang digunakan.
(Reference : Embedded C Programming and the Atmel AVR by Barnet, Cox and O’Cull)







 KONSEP DASAR MIKROKONTROLER





1.         Umum.   Dengan  memahami bagian-bagian utama dan fungsi bagian-bagian utama dari mikrokontroler secara umum untuk keluarga tertentu merupakan pedoman pemahaman  konsep dasar bagaimana prinsip kerja suatu mikrokontroler.

2.         Deskripsi Mikrokontroler.  Pemahaman konsep dasar dari mikrokontroler ditunjukkan pada Gambar 2.1 Diagram blok mikrokontroler umum.


Gambar 2.1 Diagram blok mikrokontroler umum

Masing-masing bagian tersebut saling dihubungkan melalui internal bus, umumnya terdiri dari 3 bus yaitu address bus, data bus dan control bus.
Masing-masing bagian memiliki fungsi-fungsi :
            a.         Register.        Register adalah suatu tempat penyimpanan (variabel)            bilangan bulat 8 atau 16 bit. Pada umumnya register jumlahnya banyak,         masing-masing ada yang memiliki fungsi khusus dan ada pula yang memiliki        kegunaan umum. Register yang memiliki fungsi khusus misalnya adalah    register timer yang berisi data penghitungan pulsa untuk timer, atau register           pengatur mode operasi counter (pencacah pulsa). Sedangkan register yang             bersifat umum digunakan untuk menyimpan data sementara yang diperlukan untuk proses penghitungan dan proses operasi mikrokontroler. Register dengan kegunaan umum dibutuhkan mengingat pada saat yang bersamaan     mikrokontroler hanya mampu melakukan operasi aritmatika atau logika hanya       pada satu atau dua operand saja. Sehingga untuk operasi-operasi yang          melibatkan banyak variabel harus dimanipulasi dengan menggunakan          variabel-variabel register umum.
            b.         Accumulator. Merupakan salah satu register khusus yang berfungsi          sebagai operand umum proses aritmetika dan logika.
            c.         Program Counter.    Merupakan salah satu register khusus yang         berfungsi sebagai pencacah/penghitung eksekusi program mikrokontroler.
            d.         ALU (Arithmetic and Logic Unit).        ALU memiliki kemampuan mengerjakan proses-proses aritmatika (penjumlahan, pengurangan, perkalian,      pembagian)   dan  operasi logika (misalnya AND, OR, XOR, NOT) terhadap    bilangan bulat 8 atau 16 bit.
            d.         Clock Circuits.          Mikrokontroler adalah rangkaian logika sekuensial, dimana proses kerjanya berjalan melalui sinkronisasi clock.  Karenanya diperlukan clock circuits yang menyediakan clock bagi seluruh bagian            rangkaian.
            e.         Internal   ROM  (Read Only Memory).   Merupakan  memori penyimpan      data yang isinya tidak dapat diubah atau dihapus (hanya dapat             dibaca). ROM            biasanya diisi dengan program untuk menjalankan         mikrokontroler segera         setelah power dinyalakan, dan berisi data-data konstanta yang diperlukan oleh         program. Isi ROM tidak dapat hilang walaupun power dimatikan.
            f.          Internal    RAM    (Random Access Memory).    Merupakan  memori penyimpan data yang isinya dapat diubah atau dihapus. RAM biasanya berisi data-data variabel dan register. Data yang tersimpan pada          RAM bersifat hilang jika catu daya yang terhubung padanya dimatikan.
            g.         Stack Pointer. Stack adalah bagian dari RAM yang memiliki metode penyimpanan dan pengambilan data secara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan dengan metode acak. Karena data yang masuk ke         dalam stack pada urutan yang terakhir adalah data yang pertama kali dibaca   kembali. Stack Pointer berisi offset dimana posisi data stack yang terakhir           masuk (atau yang pertama kali dapat diambil).
            h.         I/O  (input/output) Ports.       Merupakan sarana yang dipergunakan oleh     mikrokontroler untuk mengakses peralatan-peralatan lain di luar dirinya, berupa pin-pin yang dapat berfungsi untuk mengeluarkan data digital ataupun menginputkan data.
            i.          Interrupt circuits.       Adalah rangkaian yang memiliki fungsi untuk mengendalikan sinyal-sinyal interupsi baik internal maupun eksternal. Adanya        sinyal interupsi akan menghentikan eksekusi normal program mikrokontroler            untuk selanjutnya menjalankan sub-program untuk melayani interupsi tersebut.
            Diagram blok tersebut tidaklah selalu sama untuk setiap jenis mikrokontroler.       Beberapa mikrokontroler menyertakan rangkaian ADC (Analog to Digital         Converter) di dalamnya, ada pula yang menyertakan port I/O serial di             samping port I/O paralel yang sudah ada.

3.         Cara Kerja Mikrokontroler.      Prinsip kerja  mikrokontroler adalah  :
a.         Berdasarkan nilai yang berada pada register Program Counter, mikrokontroler mengambil data pada ROM dengan address sebagaimana nilai    yang tertera pada Program Counter. Selanjutnya Program Counter ditambah             nilainya dengan 1 (increment) secara otomatis.  Data yang diambil tersebut            adalah urutan instruksi program pengendali mikrokontroler yang sebelumnya    telah dibuat oleh pemakai. 
b.         Instruksi tersebut diolah dan dijalankan. Proses pengerjaan bergantung   pada jenis instruksi: bisa membaca, mengubah nilai-nilai pada register, RAM,             isi port atau melakukan pembacaan dan dilanjutkan dengan pengubahan data. 
c.         Program Counter telah berubah nilainya (baik karena penambahan           otomatis sebagaimana pada langkah 1 di atas atau karena pengubahan pada         langkah b. Selanjutnya yang dilakukan mikrokontroler adalah mengulang       kembali siklus ini pada langkah 1. Demikian seterusnya hingga power        dimatikan.
            Dari pengertian di atas dapat disimpulkan bahwa pada dasarnya unjuk kerja mikrokontroler sangatlah bergantung pada urutan instruksi yang dijalankannya, yaitu program yang ditulis di ROM.
            Dengan membuat program yang bermacam-macam, maka tentunya mikrokontroler dapat mengerjakan proses yang bermacam-macam pula. Fasilitas-fasilitas yang ada misalnya timer/counter, port I/O, serial port, Analog to Digital Converter (ADC) dapat dimanfaatkan oleh program untuk menghasilkan proses yang diinginkan.  Misalnya saja ADC dipergunakan oleh sebuah mikrokontroler pengendali alat ukur digital untuk mengukur tegangan sinyal input. Kemudian hasil pembacaan ADC diolah untuk kemudian dikirimkan ke sebuah display yang terhubung pada port I/O, menampilkan hasil pembacaan yang telah diolah. Proses pengendalian ADC, pemberian sinyal-sinyal yang tepat pada display, kesemuanya dikerjakan secara berurutan pada program yang ditulis di ROM.
            Penulisan program mikrokontroler pada umumnya adalah menggunakan bahasa assembly untuk mikrokontroler yang bersangkutan (setiap mikrokontroler memiliki instruksi bahasa assembly yang berlainan). Kemudian dengan bantuan sebuah komputer, bahasa assembly tersebut diubah menjadi bahasa mesin mikrokontroler, dan disalin ke dalam ROM mikrokontroler.
            Pada buku ini akan dibahas mikrokontroler dari keluarga MCS-51, dengan beberapa contoh aplikasi sederhana. Selanjutnya dari pengertian yang didapat, diharapkan dapat dikembangkan sendiri aplikasi-aplikasi lain sebagaimana yang diinginkan.


BAB KELUARGA MIKROKONTROLER MCS-51


4.         Umum.           Keluarga mikrokontroler MCS-51 terdiri dari 8031, 8032, 8051, 8052, 8751, 8752, 8951 dan 8952. Masing-masing berbeda dalam konfigurasi internalnya. Perbedaan pokok adalah bahwa 8031 dan 8032 tidak memiliki internal ROM, 8751 dan 8752 jenis internal ROM-nya adalah EPROM (Erasable & Programmable ROM) sedangkan 8951 dan 8952 jenis internal ROM-nya adalah PEROM (Flash Programmable and Erasable ROM).
Keluarga mikrokontroler MCS-51 memiliki konfigurasi dasar sebagai berikut :
            a.         Parallel I/O Port 8 bit  (P0-P3)
            b.         Serial Full-Duplex Asynchronous  I/O  Port 
            c.         Internal Random Access Memory (RAM) sejumlah 128 byte (8051, 8031, 8751) atau 256 byte (8052, 8032, 8752)
            d.         Internal Read Only Memory (ROM) sejumlah 4 kilobyte (8051, 8751)  atau 8 kilobyte (8052, 8752)
            e.         Programmable Timer/Counter sejumlah 2 (8051, 8031, 8751) atau 3 (8052, 8032,   8752)
            f.          System  Interrupt  dengan 2  sumber  interrupt  eksternal  dan  4  sumber interrupt  internal

            Dengan fasilitas yang cukup lengkap semacam itu, maka dimungkinkan penggunaan mikrokontroler ini dalam konfigurasi single chip, dimana  hanya dibutuhkan satu chip  untuk menjalankan seluruh sistem rangkaian.
Tabel 3.1 Keluarga MCS-51
Device
Internal memory Program
Internal Memory data
Timers/Event Counters


Interrupts

8052AH
8KX8 RAM
256X8 RAM
3 X 16 BIT
6
8051AH
4KX8 ROM
128X8 RAM
2 X 16 BIT
5
8051
4KX8 ROM
128X8 RAM
2 X 16 BIT
5
8032AH
None
256X8 RAM
3 X 16 BIT
6
8031AH
None
128X8 RAM
2 X 16 BIT
5
8031
None
128X8 RAM
2 X 16 BIT
5
8751H
4KX8 EPROM
128X8 RAM
2 X 16 BIT
5
8751H-12
4KX8 EPROM
128X8 RAM
2 X 16 BIT
5
8751H-88
4KX8 EPROM
128X8 RAM
2 X 16 BIT
5
AT89C51
4KX8 PEROM
128X8 RAM
2 X 16 BIT
5


5.         Arsitektur  MCS-51.
a.         Diagram blok MCS-51.      Diagram blok arsitektur MCS-51 dapat    dilihat             pada gambar 2.1. Pada  diagram blok tersebut dapat disimpulkan bahwa            untuk aplikasi yang tidak membutuhkan adanya RAM dan/atau ROM         dengan skala            besar, maka MCS-51 telah dapat dipergunakan dalam konfigurasi single chip. Fasilitas Parallel Port yang dimiliki dapat             dipergunakan untuk mengendalikan peralatan eksternal atau menginputkan      data yang diperlukan.    Port serial dapat dipergunakan untuk mengakses sistem komunikasi data dengan dunia luar, misalnya dengan komputer IBM PC,           atau peralatan lainnya baik langsung lewat kabel ataupun melalui modem dengan saluran telepon, radio, atau bahkan serat optik. Timer/counter yang             ada dapat dipergunakan untuk mencacah pulsa, menghitung lama pulsa, atau    sebagai pewaktu umum. Sedangkan sistem interrupt membuat MCS-51 dapat             dipakai pada aplikasi-aplikasi yang mendekati sistem dengan proses real-            time. Rangkaian clock internal yang dimiliki MCS-51 menjadikan cukup hanya ditambahkan sebuah kristal osilator dan dua buah kapasitor untuk    menghasilkan clock bagi seluruh sistem rangkaian. Untuk kebutuhan ROM          dan RAM yang besar, sistem MCS-         51 mengijinkan penggunaan RAM dan       ROM  masing-masing  sebesar  maksimal  64  Kilo  byte,  cukup besar             untuk aplikasi-aplikasi umum mikrokontroler.

 Gambar 3.1 Diagram blok MCS-51


            b.         Fungsi kaki-kaki (pin out) MCS-51.
            Pin Out MCS-51 dapat dilihat pada gambar di bawah ini :

Gambar 3.2 Pin-out 8031
            Fungsi kaki-kaki 8031 :
            VSS      :        dihubungkan dengan ground rangkaian
     VCC      :        dihubungkan dengan tegangan catu +5 V
            Port 0  :        merupakan Port I/O 8 bit dua-arah. Port ini digunakan sebagai multipleks bus alamat rendah dan bus data selama pengaksesan ke eksternal           memori. Setiap pin-nya dapat mengendalikan langsung    4    beban    TTL.   Port  0    juga   menerima   dan mengeluarkan code byte selama proses pemrograman dan verifikasi ROM/EPROM internal. 
   Port 1  :        merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung. Setiap pin dapat diakses secara operasi tiap bit atau byte bergantung pemrogram. Port 1 juga menerima address rendah  selama proses pemrograman dan verifikasi ROM/EPROM internal. 
   Port 2  :        merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung.  Port ini digunakan sebagai  bus alamat tinggi   selama pengaksesan ke eksternal memori. Port 2 juga menerima address tinggi  selama proses pemrograman dan verifikasi ROM/EPROM internal.
   Port 3  :        merupakan Port I/O 8 bit dua-arah, yang dapat mengendalikan beban 4 TTL secara langsung. Setiap pin dapat diakses secara operasi tiap bit atau byte bergantung pemrogram. Masing-masing pin pada Port ini memiliki fungsi khusus sebagai berikut :

Tabel 3.1 Fungsi Pin-pin Port 3

Port Pin
Fungsi Alternatif
P3.0
RXD (serial input port)
P3.1
TXD (serial output port)
P3.2
-INT0 (external interrupt  0)
 P3.3.
-INT1 (external interrupt  1)
P3.4
T0 (timer/counter 0 external input)
P3.5
T1 (timer/counter 1 external input)
P3.6
-WR (external data memory write strobe)
P3.7
-RD (external data memory read strobe)


RST             :   merupakan input untuk RESET. 
ALE             :  Address Latch Enable, digunakan untuk memberikan sinyal latch pada alamat rendah pada multipleks bus adress dan data.
PSEN          :   merupakan sinyal read strobe untuk eksternal program memori. 
EA/VPP      :   merupakan input untuk mode program memori.jika dihubungkan ke ground , program memori  adalah eksternal, jika dihubungkan ke VCC, program memori adalah internal, jika dihubungkan ke VPP, diperlukan untuk proses pemrograman   ROM.

            XTAL1, XTAL2   :   merupakan input untuk kristal clock.






.
         Organisasi Memori.   Pada keluarga MCS-51 ini pengalamatan memori  dibedakan atas dua yaitu  untuk program memori dan untuk data memori.  Pemisahan antara program memori dan data memori merupakan ciri khas MCS-51.  Masing-masing program memori dan data memori dapat mengalamati sampai 64 Kilobyte , dengan masing-masing byte lebar datanya 8 bit.

            a.         Program memori.   Program memori hanya dapat dibaca, tidak dapat         ditulis. Di sini tersimpan program yang akan dijalankan oleh MCS-51 dan data-   data konstanta. Sinyal pembacaan eprom eksternal adalah dari pin -           PSEN. Pada MCS-51 ada dua tipe organisasi memori dari program memori, yaitu :
   1)         Pengaksesan program memori sebagian berasal dari internal           eprom yang menempati alamat terendah dan alamat berikutnya dari            eprom eksternal. Sebagai contoh untuk MCS-51 dengan model        eprom internal seperti 8051, 8051AH, 8751, alamat 4 Kbyte             program memori terendah adalah ROM internal dan alamat berikutnya    adalah pada eprom eksternal.
   2)         Pengaksesan program memori yang semuanya dari eksternal          eprom.       
            Secara diagram blok digambarkan sebagai berikut :

Gambar 3.3 Organisasi Program Memori


            b.         Pemetaan  Program Memori.  Pemetaan program memori    ditunjukkan sebagai berikut :

                        1)         Alamat 0000H merupakan awal program. Setelah reset, CPU            akan  loncat pada alamat ini dan mengerjakan instruksi di dalamnya.
                        2)         Pada   fungsi  khusus  alamat  3H  dan   seterusnya  dengan interval 8 byte  dipakai  sebagai   alamat   dari   vektor   interupsi. Bila  interupsi  tidak  dipakai,  maka  alamat  tersebut dapat dipakai untuk program  biasa.

            c.         Data memori.  Data memori menempati alamat yang terpisah dari   program  memori. Data memori merupakan tempat penyimpanan data variabel, operasi stack dan sebagainya. Data memori dapat dibaca dan ditulis. Sinyal             pembacaan untuk eksternal ram berasal dari pin-RD dan untuk           penulisan berasal dari pin-WR. Peta   data memori  digambarkan sebagai  berikut :

                                                Gambar 3.4 Organisasi data memori                                           

            Alamat 00H-FFH (untuk 8051) merupakan alamat dari internal ram           yang   dapat dialamati dalam dua mode. Pada alamat 00H - 7FH dapat      dialamati dalam mode direct maupun indirect addressing. Alamat 80H - FFH    hanya dapat dialamati dalam mode direct addressing. Di luar alamat tersebut merupakan alamat eksternal ram.
32 byte terendah data memori terbagi atas 4 buah bank yang masing-masing terdiri atas 8 buah register. Kombinasi dari bank ini ditentukan oleh         register PSW (pembahasan mengenai ini bisa dilihat pada bab berikutnya).             Register- register tersebut adalah R0 sampai R7  yang menempati alamat 00H -    1FH. Di atasnya merupakan segmen bit addresable yang besarnya 16 byte,    menempati alamat 20H sampai 2FH. Alamat berikutnya yaitu mulai 30H sampai 7FH dapat dibagai sebagai data ram.
            Setelah kondisi reset, kondisi baku register SP (stack pointer) akan             menuju alamat 07H dan begitu program dijalankan isi register SP akan         ditambah 1 (menunjuk ke alamat 08h). Dan ini merupakan register bank 1 register R0.  Bila memakai lebih dari satu bank register maka SP harus diinisialisasi ke lokasi yang lain.


REGISTER MIKROKONTROLER MCS-51


7.         Umum.           Sebagaimana semua mikrokontroler, MCS-51 memiliki sejumlah register  yang memiliki fungsi khusus (special function register - SFR) dan register umum (general purpose register).  General purpose register yang dapat diakses adalah 8 byte per bank yaitu register R0-R7, dengan jumlah bank sebanyak 4.  Special Function Register yang terdapat pada mikrokontroler ini memiliki address 080h-0FFh dengan peta memori seperti pada gambar 3.1. Tempat yang kosong pada peta memori tidak diimplementasikan dalam chip. Pembacaan data pada tempat kosong ini akan menghasilkan data acak, sedangkan penulisan data pada tempat-tempat kosong tersebut tidak akan mengakibatkan perubahan apa-apa. Register yang ditulis dalam tanda kurung menunjukkan register yang hanya ada pada versi 8032/8052/8752. Semua Register yang terletak pada kolom terkiri adalah register-register yang dapat dialamati per bit.











F8h








FFh
F0h
B







F7h
E8h








EFh
E0h
ACC







E7h
D8h








 DFh
D0h
PSW







D7H
C8h
(T2CON)

(RCAP2L)
(RCAP2H)
(TL2)
(TH2)


CFh
C0h








C7h
B8h
IE







BFh
B0h
P3







B7h
A8h
IP







AFh
A0h
P2







A7h
98h
SCON
SBUF






9Fh
90h
P1







97h
88h
TCON
TMOD
TL0
TL1
TH0
TH1


8Fh
80h
P0
SP
DPL
DPH



IP
87h

Gambar 4.1 Peta memori Special Function Registers


8.         Deskripsi Fungsi Register.          Masing-masing register tersebut dapat dideskripsikan sebagai berikut :
            a.         Register ACC (accumulator).  Register ini memiliki alamat  0E0h,     dapat dialamati per bit (bit adressable).  Pada penulisan program assembly, register ini biasa ditulis dengan kode A.
            b.         Register B.    Register ini memiliki alamat  0F0h, dapat dialamati per            bit (bit adressable).  Pada penulisan program assembly, register ini biasa ditulis             dengan kode B. Register ini digunakan pada proses perkalian dan      pembagian,   dan dapat dipakai pada instruksi lain sebagai register umum.
            c.         Register PSW (Program Status Register).   Register ini memiliki       alamat  0D0h, dapat dialamati per bit (bit adressable).  Pada penulisan        program assembly, register ini biasa ditulis dengan kode PSW.
            Bit-bit pada register ini berikut fungsinya dapat dilihat pada tabel di bawah ini :




CY
AC
F0
RS1
RS0
OV
-
P
(MSB)






(LSB)

Tabel 4.1 Fungsi bit pada register PSW

Simbol
Posisi
Nama dan Arti
CY
PSW.7
carry flag

AC

PSW.6
auxiliary carry flag, untuk operasi menggunakan bilangan BCD (binary coded decimal)
F0
PSW.5
Flag 0, bisa digunakan untuk keperluan pemakai
RS1
PSW.4
Bit 1 pemilih bank register    *)
RS0
PSW.3
Bit 0 pemilih bank register   *)   
OV
PSW.2
Overflow flag
-
PSW.1
flag yang dapat didefinisikan oleh pemakai

P

PSW.0
Parity flag yang di-set atau di-clear oleh hardware setiap siklus instruksi untuk memberikan kode parity terhadap isi register Accumulator

            *)         RS1 dan RS0 menentukan pemilihan register bank sebagai berikut :
Tabel  4.2 Pemilihan Bank Register R0-R7

RS1
RS0
Bank
Address Register R0-R7
0
0
0
00h - 07h
0
1
1
08h - 0fh
1
0
2
10h - 17h
1
1
3
18h - 1fh

d.         Stack Pointer (SP).      Register yang  memiliki alamat  081h ini nilainya ditambah 1 (increment) sebelum data disimpan dengan perintah PUSH ataupun CALL. Stack Pointer memiliki nilai 07h setelah proses             RESET dan POWER          ON, dengan demikian stack akan berawal dari alamat   080h. Namun posisi stack bisa berada di mana saja RAM internal.
e.         Data Pointer (DPTR).    Register ini adalah register 16 bit yang terdiri          dari dua register 8 bit yaitu DPL  (address : 082h) dan DPH (address : 083h). DPTR digunakan untuk menunjuk address memory  16 bit yang akan diakses        misalnya oleh instruksi MOVX  A,@DPTR.
f.          PORT 0-3 (P0-P3).   Register-register ini merupakan isi dari latch port         eksternal P0,P1,P2 dan P3. Memberikan nilai pada register ini sama artinya dengan memberikan data output pada pin port yang bersangkutan.
g.         Register SBUF (Serial Data Buffer). Register ini sebenarnya terdiri dari 2 buah register input dan output. Membaca register ini sama    artinya dengan membaca data yang diterima melalui pin serial port.         Menuliskan nilai pada register ini akan menghasilkan pengiriman nilai             tersebut melalui port serial keluar.
h.         Register TIMER.   Yaitu register-register 16 bit yang merupakan isi dari     timer/counter 0,1, dan 2. Timer/counter 1 memiliki register TH1 dan         TL1,    timer/counter 0 registernya TH0 dan TL0, sedangkan timer/counter 2    registernya TH2 dan TL2. Register TH2 dan TL2 hanya terdapat pada versi      8052.
i.          Register Capture (RCAP2L dan RCAP2H).  Register ini adalah register 16 bit yang digunakan oleh timer/counter 2 pada 8052 untuk melakukan mode capture. yaitu suatu mode dimana pada saat transisi tegangan logika pada pin T2EX,  maka isi register TH2 dan TL2 akan dipindahkan ke register capture ini.
j.          Register PCON (Power control).    Register ini memiliki alamat  087h,           dengan bit-bit kontrol sebagai berikut :

SMOD
-
-
-
GF1
GF2
PD
IDL
(MSB)






(LSB)




Tabel 4.3 Fungsi bit kontrol pada register PCON

Simbol
Posisi
Nama dan Arti
SMOD
PCON.7
Double baud rate bit
SMOD =1 baud rate adalah double jika serial port dijalankan pada mode 1,2, atau 3
GF1
PCON.3
General purpose flag 1 (flag untuk penggu-naan umum)
GF2
PCON.2
General purpose flag 2 (flag untuk penggu-naan umum)
PD
PCON.1
Mengaktifkan Power Down Mode untuk 80C51BH
IDL
PCON.0
Mengaktifkan Idle Mode untuk 80C51BH   

                        Keterangan :
1)         penjelasan   selengkapnya tentang baud rate, serial port dan mode            kerjanya dapat dilihat pada pembahasan mengenai serial port.
2)         GF1    dan    GF2    dapat    dipergunakan   pemrogram untuk             mendefinisikan sendiri bit flag yang diinginkan.
3)         Power  down  adalah  salah  satu  fasilitas untuk mematikan             operasi  mikrokontroler tanpa   menghilangkan isi data pada RAM, yang hanya tersedia   pada MCS-51   dengan   versi  CHMOS yaitu 80C51BH,   80C31BH    atau    87C51.  Pada mode ini, setelah flag PCON.1 diset, maka clock  osilator   sistem   dihentikan   sehingga             mikrokontroler berhenti    beroperasi,    akan   tetapi   isi RAM dan isi register-register yang ada tidaklah hilang. Untuk keluar dari mode ini dapat   dilakukan  dengan  melakukan hardware  RESET yang akan menyebabkan hilangnya isi SFR (special function register) sedangkan isi RAM tetap seperti semula.
4)         Idle mode juga hanya tersedia pada MCS-51 versi CHMOS. Pada   mode ini,  sinyal clock dimatikan hanya pada unit pemroses pusat. Timer, sistem Interrupt dan    Serial    Port    tetap   bekerja sebagaimana biasa. Dengan tidak bekerjanya unit pemroses pusat,             maka arus listrik yang ditarik oleh mikrokontroler adalah berkurang sehingga menghemat energi catu daya. Hal   ini biasanya dilakukan    pada saat mikrokontroler menunggu adanya sinyal interrupt.  Selama  proses  tunggu,  adalah  bijaksana  jika  unit             pemroses pusat dimatikan untuk penghematan energi.
                  Untuk   keluar   dari   mode   ini   ada   dua   cara, yaitu dengan adanya             pengaktifan sinyal interrupt yang secara otomatis akan membuat bit idle    mode   menjadi   0   secara hardware. Setelah interrupt selesai dilayani       (ditandai dengan eksekusi instruksi IRET), maka mikrokontroler kembali pada idle mode. Cara kedua adalah dengan hardware RESET.
k.         Register IE (Interrupt Enable).     Register ini memiliki address 0A8h,           digunakan  untuk mengatur sistem  interrupt. Penjelasan selengkapnya mengenai sistem interrupt dapat dilihat pada pembahasan tentang interrupt        pada bab yang bersangkutan. Bit-bit kontrolnya adalah :
EA
-
ET2
ES
ET1
EX1
ET0
EX0
(MSB)






(LSB)
            Fungsi dari bit-bit kontrol ini dapat dilihat pada tabel 4.4 :
Tabel 4.4. Fungsi bit kontrol pada register IE
Simbol
Posisi
Nama dan Arti
EA
IE.7
Enable Interrupt
EA = 0 sistem interrupt tidak bekerja
EA =1  mengijinkan pengaktifan tiap sumber interrupt
ET2
IE.5
Dicadangkan untuk penggunaan di masa depan
ES
IE.4
Enable Serial Port interrupt
ET1
IE.3
Enable Timer 1 interrupt
EX1
IE.2
Enable external pin 1 interrupt
ET0
IE.1
Enable timer 0 interrupt
EX0
IE.0
Enable external pin  0 interrupt

l.          Register IP (Interrupt Priority).   Register ini memiliki address 0B8h, digunakan  untuk mengatur prioritas tertinggi yang dilayani sistem interrupt. Penjelasan selengkapnya mengenai hal ini dapat dilihat pada pembahasan   tentang interrupt pada bab yang bersangkutan. Bit-bit kontrolnya adalah :

-
-
PT2
PS
PT1
PX1
PT0
PX0
(MSB)






(LSB)
            Fungsi dari bit-bit kontrol ini dapat dilihat pada tabel 4.5:

Tabel 4.5. Fungsi bit kontrol pada register IP

Simbol
Posisi
Nama dan Arti
PT2
IP.5
Dicadangkan untuk penggunaan di masa depan
PS
IP.4
Prioritas Tertinggi Pada Serial Port interrupt
PT1
IP.3
Prioritas Tertinggi Pada Timer 1 interrupt
PX1
IP.2
Prioritas Tertinggi Pada external pin 1 interrupt
PT0
IP.1
Prioritas Tertinggi Pada timer 0 interrupt
PX0
IP.0
Prioritas Tertinggi Pada external pin  0 interrupt

m.        Register TCON (Timer/Counter Control).  Register yang memiliki address 088h berfungsi untuk mengontrol fungsi Timer 1 dan Timer 0,  mengatur respons MCS-51 terhadap level tegangan pada input external interrupt, serta memberikan tanda flag jika telah ada sinyal interrupt external.         Penjelasan selengkapnya mengenai hal ini dapat dilihat pada  bab yang bersangkutan. Bit-bit register ini  adalah :

TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
(MSB)






(LSB)
           



            Fungsi dari bit-bit register  ini dapat dilihat pada tabel 4.6 :

Tabel 4.6. Fungsi bit-bit pada register TCON

Simbol
Posisi
Nama dan Arti



TF1



TCON.7
Timer 1 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 1.  Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 1.
TR1
TCON.6
Timer 1 run control bit, untuk membuat ON/OFF Timer/counter 1


TF0


TCON.5
Timer 0 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 0.  Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 0.
TR0
TCON.4
Timer 0 run control bit, untuk membuat ON/OFF Timer/counter 0
IE1
TCON.3
Interrupt Edge 1 =1 menunjukkan adanya sinyal interrupt pada pin external interrupt 1
IT1
TCON.2
Type interrupt 1
IT1 = 1 : falling edge triggered interrupt
IT1 = 0 : low level triggered interrupt
IE0
TCON.1
Interrupt Edge 0 =1 menunjukkan adanya sinyal interrupt pada pin eksternal interrupt 0

IT0

TCON.0
Type interrupt 0
IT0 = 1 : falling edge triggered interrupt
IT0 = 0 : low level triggered interrupt

n.         Register TMOD (Timer/Counter Mode).   Register yang memiliki address 089h berfungsi untuk mengontrol mode Timer 1 dan Timer 0.  Bit-bit register ini  adalah :

GATE
C/-T
M1
M0
GATE
C/-T
M1
M0
(MSB)






(LSB)
T i m e r 1
T i m e r  0

     
     


      Fungsi dari bit-bit register  ini dapat dilihat pada tabel 4.7 :

Tabel 4.7. Fungsi bit-bit pada register TMOD

Bit
Fungsi



GATE
untuk menentukan apakah timer/counter dikontrol oleh hardware ataukah software
GATE = 1 : hardware control : timer/counter x aktif jika pin INTx dalam kondisi high dan TRx pada register TCON diaktifkan
GATE = 0 : software control : timer/counter x aktif jika TRx pada register TCON diaktifkan
C/-T
counter/timer mode
M1
selector mode
M0
selector mode


Tabel 4.8. Mode operasi timer/counter

M1
M0
Mode Operasi
0
0
13-bit timer (kompatible dengan MCS-48)
0
1
16 - bit timer/counter
1
0
8 - bit auto-reload timer/counter


1


1
(Timer 0) : TL0 berfungsi sebagai 8 - bit timer/counter yang dikontrol oleh control bit Timer 0 yang standard, sedangkan TH0 adalah 8-bit timer yang dikontrol oleh control bit Timer 1. Pada mode ini Timer/counter 1 berhenti beroperasi



o.         Register T2CON (Timer/Counter 2 Control).  Register ini hanya dipunyai oleh 8052, dengan address 0C8h berfungsi untuk mengontrol fungsi    Timer 2. Bit-bit register ini  adalah :

TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/-T2
CP/-RL2
(MSB)






(LSB)



Tabel  4.9 Bit-bit kontrol Timer/Counter 2

Simbol
Posisi
Nama dan Arti


TF2


T2CON.7
Timer 2 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 1.  Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 2.
EXF2
T2CON.6
Timer 1 run control bit, untuk membuat ON/OFF Timer/counter 1


RCLK


T2CON.5
Timer 0 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 0.  Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 0.
TCLK
T2CON.4
Timer 0 run control bit, untuk membuat ON/OFF Timer/counter 0



EXEN2



T2CON.3
timer 2 external enable flag
= 1 : mengijinkan capture atau auto reload saat terjadi transisi negatif pada pin T2EX, jika timer 2 tidak sedang digunakan untuk memberikan clock pada serial port.
= 0 : mengabaikan perubahan level tegangan pada PIN T2EX
TR2
T2CON.2
TR2 = 1 : start timer 2
TR2 = 0 : stop timer 2
C/-T2
T2CON.1
Memilih mode timer/counter 2



CP/-RL2



T2CON.0
Capture/Reload  flag
 = 1 : capture terjadi  saat transisi negatif pada T2EX, jika EXEN2= 1
 = 0 : auto-reload terjadi saat timer 2 overflow atau saat transisi negatif pada T2EX, jika EXEN2= 1


p.         Register SCON (Serial Port Control).       Register ini memiliki  address 098h berfungsi untuk mengontrol fungsi Serial Port. Bit-bit register     ini  adalah :


SM0
SM1
SM2
REN
TB8
RB8
TI
RI
(MSB)






(LSB)



Tabel 4.10 Bit-bit kontrol Serial Port


Simbol
Posisi
Nama dan Arti
SM0
SCON.7
Bit Pemilih mode Serial Port
SM1
Scon.6
Bit Pemilih mode Serial Port

SM2

Scon.5
Mengijinkan komunikasi multiprosesor pada mode 2 dan 3. Penjelasan selengkapnya lihat bab mengenai serial port
REN
Scon.4
Reception Enable : menghidup/matikan penerimaan data serial
TB8
Scon.3
bit ke-9 yang akan dikirimkan (mode 2 dan 3)

RB8

Scon.2
bit ke-9 yang diterima (untuk mode 2 dan 3) sedangkan pada mode 1 bit ini adalah stop bit jika SM2=0


TI


Scon.1
Transmit interrupt flag : diset oleh hardware pada akhir waktu bit ke-8 untuk mode 0, atau pada awal stop bit pada mode-mode yang lain. Flag ini hanya bisa di-clear oleh software 


RI


Scon.0
Receive interrupt flag : diset oleh hardware pada akhir waktu bit ke-8 untuk mode 0, atau pada setengah jalan selama waktu stop bit untuk mode yang lain.  Flag ini hanya bisa di-clear oleh software



Tabel 4.11 Bit-bit  pemilihan mode serial port

SM0
SM1
Mode
Deskripsi
Baud Rate
0
0
0
shift register
Fosc/12
0
1
1
8-bit UART
variabel
1
0
2
9-bit UART
Fosc/64  atau Fosc/32
1
1
3
9-bit UART
variabel

Tidak ada komentar:

Posting Komentar