MAIN PAGE KONSEP MIKROKONTROLER
Pendahuluan
Sistem Input
Sistem Output
CPU
Clock
dan Memori
Program Komputer
Sistem Mikrokontroler
MEMORI & I/O
PARALEL
Pendahuluan
Jenis-jenis Memori
I/O Tipe Memori
Register Kontrol
Peta Memori
ARSITEKTUR
KOMPUTER
Pendahuluan
Register-register CPU
Reset
PEMROGRAMAN
MC6805
Pendahuluan
Alamat IMEDIATE
Alamat INHERENT
Alamat EXTENDED
Alamat DIRECT
Alamat INDEXED
Alamat RELATIVE
Assembler Directives
File Kode Objek
Rangkuman Instruksi
PERIPERAL
ON-CHIP
Port Serial
ADC
EEPROM
Timer
COP |
Pendahuluan
Setiap hal yang dikerjakan CPU dibagi-bagi menjadi beberapa langkah yang sederhana dan
berurutan. Osilator clock membangkitkan clock CPU yang digunakan dalam langkah (step)
kerja CPU dalam urutan perkerjaannya. Karena clock CPU ini sangat cepat untuk ukuran
manusia, sehingga yang terlihat bahwa CPU bekerja secara langsung dan cepat.
Mikrokontroler 8-bit dari Motorola M68HC05 dan M68HC11 memiliki organisasi khusus yan
disebut dengan arsitektur Von Neumann. Dalam arsitektur ini, CPU dan rangkaian memori
di-interkoneksi-kan dengan bus alamat dan bus data. Bus alamat digunakan untuk menentukan
lokasi memori yang mana yang akan diakses, dan bus data digunakan untuk mengirim informasi
baik dari CPU ke lokasi memori dan sebaliknya.
Dalam arsitektur implementasi Motorola ini terdapat beberapa memori spesial yang disebut
dengan register CPU yang terletak di dalam CPU itu sendiri. Register ini mirip dengan
memori yang dapat menyimpan informasi. Tetapi register ini terjalur langsung di dalam CPU
dan bukan bagian dari memori konvensional mikrokontroler.
CPU menganggap semua lokasi memori sebagai satu kesatuan walaupun di dalamnya terdapat
instruksi program, data variabel, maupun kontrol input-output (I/O). Teknik semacam ini
yang disebut dengan memory-mapped I/O. Artinya, semua piranti input-output dari sistem
mikrokontroler memiliki alamat tersendiri yang ikut dipetakan dalam peta memori, sehingga
dianggap sebagai bagian dari memori itu sendiri.
Di dalam CPU juga terdapat komponen ALU atau Arithmatic Logic Unit yang digunakan untuk
melakukan kalkulasi aritmatika dan logika yang didefinisikan oleh instruksi. Berbagai
macam variasi operasi aritmatika biner dikerjakan dalam ALU ini. Hampir semua operasi
aritmatika biner didasarkan pada operasi tambah. Pengurangan dikerjakan sebagai proses
tambah dengan salah satu data dikomplemenkan. Perkalian dikerjakan sebagai urutan beberapa
proses tambah dan operasi shift dalam ALU. Blok diagram dari CPU M68HC05 ditampilkan dalam
gambar 4.1 di bawah ini.
Register-register CPU
CPU yang berbeda memiliki set register yang berbeda pula. Perbedaan utama terletak pada
jumlah dan ukuran dari register itu sendiri. Dalam gambar 4.1 diperlihatkan
register-register CPU yang terdapat dalam mikrokontroler keluarga M68HC05.
Register A berukuran 8 bit, juga dikenal sebagai akumulator
karena register ini digunakan untuk menyimpan hasil dari operasi aritmatika dan manipulasi
data. Register ini juga dapat langsung diakses untuk operasi non-aritmatika. Akumulator
digunakan dalam proses eksekusi dari program saat isi dari beberapa lokasi memori yang
digunakan di-load ke akumulator. Demikian juga instruksi penyimpanan akan menyebabkan isi
dari akumulator disimpan dalam memori yang telah ditentukan.
Register X adalah index register yang berukuran 8 bit. Kegunaan utama dari index register
ini adalah untuk menunjukkan suatu area memori di mana CPU akan mengambil atau menuliskan
suatu informasi. Kadang-kadang index register juga disebut dengan pointer register.
PC atau program counter digunakan CPU untuk menata urutan alamat instruksi yang akan
dikerjakan. Saat CPU reset atau baru dihidupkan, PC ini dimuati dengan alamat yang telah
ditentukan dalam reset vector. Lokasi reset vector ini berisi alamat dari instruksi
pertama yang akan dikerjakan oleh CPU. Saat suatu instruksi dikerjakan, CPU akan menambah
isi PC sehingga akan menunjuk ke alamat informasi berikutnya yang akan dibutuhkan CPU.
Jumlah bit dari PC sama persis dengan jumlah jalur bus alamat. Isi dari register ini
dinyatakan dalam empat digit heksadesimal di mana enam bit teratas selalu nol karena hanya
10 bit jalur bus alamat.
CCR atau condition code register adalah register dengan ukuran 8 bit, yang menyimpan
indikator status dari hasil operasi CPU sebelumnya. Terdapat tiga bit teratas tidak
digunakan dan selalu sama dengan logika satu. Instruksi percabangan menggunakan bit-bit
status dalam register ini untuk mengerjakan suatu keputusan percabangan.
Isi dari CCR ini adalah sebuah interrupt mask dan empat indikator status seperti pada
gambar 4.1. Kelima flag tersebut adalah H atau half cary, N atau negative, Z atau zero,
dan C atau carry/borrow.
Flag H (half carry) digunakan untuk operasi aritmatika BCD (Binary Coded Decimal) dan
dipengaruhi oleh kerja instruksi ADD dan ADC. Bit H ini akan set jika ada carry yang
timbul dari digit heksadesimal 0-3 (low order) dan digit desimal 4-7 (high order).
Bit I (interrupt mask) bukanlah status flag tetapi merupakan bit yang akan
men-nonaktif-kan semua sumber interrupt yang maskable saat bit ini diset. Interrupt baru
akan aktif jika bit ini nol. Jika ada interrupt eksternal yang terjadi saat bit I diset,
maka interrupt tersebut akan di-latch dan akan diproses saat bit I dinolkan. Karena itu,
interrupt yang terjadi tidak akan hilang. Setelah interrupt ditangani, instruksi RTI
(return from interrupt) akan menyebabkan register ini dikembalikan ke nilai semula.
Umumnya, bit I ini akan menjadi nol setelah instruksi RTI dilaksanakan.
Flag N (negative) akan diset jika hasil dari operasi aritmatika, logika, maupun manipulasi
data yang terakhir adalah negatif. Nilai negatif dalam two's complement ditandai jika bit
MSB adalah satu.
Flag Z (zero) diset jika hasil dari operasi aritmatika, logika, maupun manipulasi data
terakhir adalah nol. Instruksi perbandingan (compare) akan mengurangi suatu harga dari
suatu lokasi memori yang akan dites. Jika nilainya sama, maka bit Z ini akan diset.
Flag C (carry/borrow) digunakan untuk menandai apakah ada carry dari hasil operasi tambah
atau ada borrow darioperasi pengurangan. Instruksi shift dan rotate juga dapat memakai bit
C ini.
SP atau stack pointer digunakan sebagai pointer ke lokasi yang tersedia berikutnya dalam
tumpukan stack dalam uruatn LIFO (last-in first-out). Stack ini dapat dianalogikan sebagai
tumpukan kartu. Setiap kartu menyimpan satu byte (8 bit) informasi. Dalam suatu saat, CPU
dapat menaruh satu kartu di atas tumpukan kartu tersebut maupun mengambil satu kartu dari
tumpukan. Kartu di dalam tumpukan tidak dapat diambil kecuali jika kartu di atasnya sudah
diambil sebelumnya. Stack mirip dengan tumpukan kartu ini hanya saja dalam fisiknya, stack
mempunyai arah tumpukan ke bawah bukan ke atas seperti pada tumpukan kartu.
SP akan menunjuk pada alamat stack yang akan tersedia berikutnya. Jika CPU menaruh
informasi dalam stack, maka data tersebut akan dituliskan dalam memori yang ditunjukkan
oleh nilai SP saat itu, dan kemudian nilai SP akan dikurangi satu sehingga SP akan
menunjukkan ke lokasi memori berikutnya yang kosong untuk digunakan sebagai penyimpan
berikutnya. Jika CPU mengambil data dari stack, SP akan ditambah satu sehingga menunjukkan
ke lokasi stack yang terakhir, dan kemudian data diambil dan dibaca oleh CPU. Saat CPU
pertama kali dihidupkan atau setelah instruksi Reset Stack Pointer (RSP), maka SP akan
menunjukkan memori tertentu dalam RAM.
Reset
Reset digunakan untuk memaksa sistem mikrokontroler untuk menuju alamat tertentu. Sistem
periperal dan sejumlah bit kontrol dan status juga dipaksa untuk menuju ke state awal
sebagai hasil dari proses reset. Aksi-aksi berikut ini yang terjadi akibat proses reset
dari mikrokontroler:
1. Semua register data direction (DDR) diset nol (input)
2. Nilai SP dipaksa menjadi $00FF
3. Bit I dalam CCR diset
4. Latch interrupt eksternal dinolkan
5. Latch STOP dinolkan
6. Latch WAIT dinolkan
Kondisi-kondisi berikut ini yang akan menyebabkan mikrokontroler M68HC05 menjadi reset:
1. Sinyal input low pada kaki RESET
2. Reset karena pertama kali dihidupkan
3. Timer watchdog COP (computer operating properly) sudah habis
4. Usaha untuk menjalankan perintah dari suatu alamat yang tidak diperbolehkan
Contact me at: hsutanto@milis.stts.edu
Copyright (c) Hermawan Sutanto
Written in January 1998
Copying content must have permission from me ! |