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,
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 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.
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 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.
- Register-register
- 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.
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