Anda di halaman 1dari 23

SUMBER BELAJAR PENUNJANG PLPG 2017

MATA PELAJARAN/PAKET KEAHLIAN


TEKNIK AUDIO VIDEO

BAB II
MIKROPROSESOR

Dr. SRI WALUYANTI

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN


DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN
2017
BAB II
MIKROKONTROLER

Kompetensi Standar
Kemampuan mengaplikasikan mikrokontroler pada pengendalian sederhana

Kompetensi Dasar
1. Menguraikan fungsi setiap bagian dalam arsitektur mikroprosesor (Arithmatic Logic
Unit, Register, Clock , dll.)
2. Dasar – dasar pemrograman dengan bahasa assembler

A. Pendahuluan
Seiring dengan perkembangan teknik digital semakin banyak barang-barang
konsumsi mengandung mikro kontroller. Dengan biaya murah dapat digunakan
sebagai solusi tugas-tugas yang sebelumnya digunakan transistor-transistor-logika.
Sekarang mikrokontroller telah banyak diproduksi dibanyak industri dengan beragam
seri, namun mempunyai prinsip kerja yang hampir sama.
1. Perbedaan Mikroprosesor, Mikrokomputer dan Mikrokontroler
Ada tiga istilah mikroprosesor, mikrokomputer dan mikrokontroler masing-
masing memiliki karakteristik tertentu dan istilah ini sering digunakan secara
bergantian, kenyataanya terdapat perbedaan tertentu yang digunakan untuk
mengklasifikasikannya ke dalam kategori terpisah.
2. Mikroprosesor.
Diantara mikroprosesor, mikrokomputer dan mikrokontroller, mikroprosesor
merupakan kategori yang paling sederhana. CPU (Central Processing Unit), merupakan
jantung dari ketiga sistem di atas terutama digunakan sebagai prosesor data.
Mikroprosesor umumnya terdiri dari unit aritmatika logika (ALU), instruksi decoder,
sejumlah register dan input / output (DIO) jalur digital secara blok diagram ditunjukkan
pada gambar 2-1. Beberapa prosesor menyediakan ruang memori seperti cache atau
tumpukan yang dapat digunakan untuk penyimpanan sementara dengan demikian
pengambilan data lebih cepat daripada harus mengakses memori sistem. Prosesor

1
terhubung ke beberapa data bus untuk mengakses memori dan input/ output
peripheral eksternal.
Banyaknya register program counter untuk melacak alamat instruksi, register
instruksi untuk loading dan menyimpan instruksi berikutnya tergantung dari arsitektur
memori mikroprosesor. Register tambahan dikenal sebagai register tujuan umum dan
menyimpan data saat sedang digunakan.

Gambar 2-1. Komponen dasar Mikroprosesor


3. Mikrokomputer
Mikrokomputer berisi semua komponen dari sebuah komputer yang terintegrasi
dalam sirkuit kecil, meskipun tidak pada satu chip. Istilah mikrokomputer umumnya
berlaku untuk komuter laptop dan desktop, Komponen sistem mikrokomputer terdiri
dari CPU (seperti mikroprosesor), memori dan/atau perangkat penyimpanan, serta
perangkat IO (Gambar 2-2.). Beberapa perangkat I/O termasuk keyboard, display,
jaringan. Mikrokomputer dapat digunakan untuk mengumpulkan atau menyebarkan
informasi.

2
Gambar 2-2. Komponen dasar Mikrokomputer

B. Model-model Memory
1. Von Neumann
Von Neuman diambil dari nama ilmuwan Arsitektur yang terlibat dalam Proyek
Manhattan dan berhasil dalam proyek komputasi yang tergabung dalam
pengembangan penyimpanan program komputer EDVAC, berhasil menulis laporan
tentang EDVAC yang menjadi sumber arsitektur von Neumann.
Arsitektur von Neumann program disimpan dalam memori. Blok memori
membedakan antara penyimpanan program dan penyimpanan data, sehingga
memungkinkan data yang akan diperlakukan sebagai kode dan sebaliknya. Selain itu,
memungkinkan penggunaan kode memodifikasi diri, yang berguna mengurangi
penggunaan memori atau meningkatkan kinerja.
Gambar 2-3 berisi blok diagram blok arsitektur von Neumann. Blok diagram
menunjukkan blok memori tunggal yang meliputi unit kontrol, perangkat baca dan
menafsirkan program, dan ALU, yang menjalankan sebagian besar operasi. CPU
perlunya berkomunikasi dengan memori eksternal yang dikenal sebagai hambatan
von Neumann. Kemacetan ini dikarenakan tugas berat dalam arsitektur jenis ini
dibandingkan dengan jenis lain karena ke unit kontrol dan ALU dilakukan secra bolak
baik antara membaca dan menulis ke memori, karena itu menjadi pembatas waktu
mengakses memori.

3
Gambar 2-3. Block diagram dari arsitektur von Neumann
2. Arsitektur Harvard
Salah satu solusi untuk hambatan von Neumann adalah untuk memisahkan
memori program dari memori data (gambar 2-4). Pemisahan ini memungkinkan untuk
beberapa perbaikan atas arsitektur von Neumann. Perbaikan pertama dan paling jelas
adalah bahwa kedua memori program dan memori data dapat diakses secara
bersamaan. Dalam arsitektur von Neumann, untuk menyimpan sebuah kata dari
register melalui ALU diteruskan ke memori, Unit kontrol pertama harus memuat dan
menafsirkan instruksi, maka ALU dapat mentransfer data ke memori, dan akhirnya unit
kontrol dapat melanjutkan ke instruksi berikutnya. Ini membutuhkan dua operasi baca
/ tulis terpisah sepanjang jalan yang sama.

Gambar 2-4. Blok diagram arsitektur Harvard


Dalam arsitektur Harvard menulis ke memori data dan membaca dari memori
program untuk operasi berikutnya dapat dilakukan secara bersamaan mengurangi

4
waktu yang dibutuhkan untuk setiap instruksi yang mengakses memori data.
Perubahan agak kurang jelas yang dapat meningkatkan kecepatan operasi adalah
bahwa panjang dari kata-kata dalam memori program tidak perlu lagi integer nomor
byte. Hal ini memungkinkan kata-kata instruksi dapat berisi baik instruksi dan alamat
memori dalam satu instruksi, dan karena itu setiap membaca dari memori program,
dan setiap siklus clock prosesor, bisa seluruh instruksi. Dalam arsitektur von Neumann
petunjuk seringkali beberapa kata-kata panjang untuk mencakup kedua op-kode dan
diperlukan setiap alamat memori. Contoh yang diberikan di atas karena itu akan
membutuhkan tiga baca / tulis operasi yang bertentangan dengan dua disebutkan
sebelumnya atau operasi tunggal dari arsitektur Harvard.
Kerugian utama dari arsitektur Harvard adalah bahwa hal itu tidak dapat
memodifikasi memori program, membatasi kegunaannya dalam sistem umum seperti
pribadi komputer. Ini tidak menimbulkan masalah bagi prosesor yang lebih khusus
seperti seperti yang di embedded system, meskipun bandwidth memory harus tinggi
sebagai memori dapat diakses oleh dua operasi per siklus. Kedua keluarga AVR
mikrokontroler yang diproduksi oleh Atmel dan Microchip PIC keluarga Harvard
arsitektur, meskipun mereka telah dimodifikasi sedikit untuk memungkinkan baca /
tulis operasi untuk program memori. Operasi ini terutama untuk boot-loader.
3. Modifikasi Arsitektur Harvard
Arsitektur Harvard dimodifikasi dengan menggabungkan keunggulan masing
masing arsitektur von Neumann dan Harvard. Secara khusus, data dan program
berbagi ruang memori, mirip dengan cara kerja arsitektur von Neumann, namun
data dan instruksi tidak berbagi cache memori atau jalur antara CPU dan memori. Hal
ini memungkinkan akses memori Von Neumann lebih leluasa, namun kemampuan
untuk menangani kode dan data tidak kurang dari arsitektur Harvard. Salah satu
contoh yang paling umum dari prosesor yang menggunakan arsitektur ini adalah
prosesor x86 ditemukan di sebagian besar komputer pribadi.
4. Arsitektur Stack (Tumpukan)
Tumpukan memori terakhir di keluarkan pertama (LIFO) digunakan untuk menyimpan
informasi yang berkaitan dengan prosedur panggilan serta data untuk operasi
tertentu. Tumpukan memori dapat dengan ukuran tetap atau variabel, atau memiliki

5
blok memori dengan ukuran tetap. Dalam kedua kasus prosesor akan memiliki
setumpuk pointer register yang menunjuk ke lokasi memori yang paling baru ditangani
di stack. Dalam beberapa prosesor stack dimulai pada alamat tertinggi di blok memori
dan turun ke bawah, selain itu dapat dimulai pada alamat terendah dan naik.

Penambahan data Pemindahan data Penambahan data

Data terbaru Data terbaru

Data terlama Data terlama


Pemindahan data

Gambar 2-5. Permintaan data penyimpan LIFO (kiri) dan FIFO (kanan)

LIFO mengacu pada urutan data yang dihapus dari mana data disimpan. Dalam
LIFO bagian terbaru dari data yang telah ditambahkan ke penyimpanan adalah yang
pertama dihapus ketika ada permintaan data. Alternatif untuk bertahan masuk
terakhir keluar pertama adalah masuk pertama keluar pertama atau FIFO. Dalam
paradigma penyimpanan data tertua setiap kali data diminta dihapus. Hal ini sering
disebut antrian karena serupa dengan garis orang menunggu di kasir bank.
Tumpukan dasar hanya mendukung dua operasi; push dan pop. Push merupakan
operasi menambahkan data ke atas tumpukan, menaikkan stack pointer, sementara
pop pengurangan stack pointer dan mengembalikan data di atas tumpukan. Beberapa
keadaan bergantung pada stack untuk banyak operasi tambahan operasi seperti
mengintip (operasi pop tanpa mengubah stack pointer), dup (pop diikuti dengan
mendorong hasilnya dua kali), atau swap (switching dua urutan teratas item pada
stack).
Selain stack, setiap prosesor dapat menyimpan beberapa data tanpa harus
mengakses sistem memori, meskipun jumlah penyimpanan bervariasi antara prosesor.

6
lokasi penyimpanan disebut register, dan sebagian besar prosesor akan memiliki
beberapa memori untuk penggunaan umum disebut register tujuan umum (GPR). Di
antara register tujuan khusus, ada satu yang disebut program counter. Berisi daftar
alamat memori dari instruksi berikutnya yang akan dieksekusi. Setiap waktu instruksi
dijalankan, alamat memori bertambah, dan tanpa itu prosesor tidak akan tahu mana
instruksi berikutnya yang harus dieksekusi.
Ada dua jenis kesalahan yang berkaitan dengan stack; underflow dan overflow.
Kesalahan underflow kurang umum dan paling sering ditemukan di tumpukan
perangkat lunak. Ini disebabkan oleh usaha pop ketika stack kosong. Kesalahan Di sisi
lain kesalahan stack overfloow terjadi ketika dilakukan usaha untuk melebihi ukuran
maksimum stack. Kesalahan overflow yang paling sering terjadi ketika ada terlalu
banyak panggilan fungsi berada pada alamat yang sama. Kesalahan ini dapat
diperbaiki dengan mengurangi fungsi panggilan, atau mengurangi kebutuhan memori
masing-masing fungsi.

C. Mikrokontroler
Mikrokontroler merupakan keseluruhan sistem komputer yang dikemas dalam
sebuah chip didalamnya terkandung mikroprosesor, I/O pendukung, memori, ADC
yang mempunyai satu atau lebih tugas yang spesifik. Mikrokontroler disebut sebagai
”one chip solution” karena terdiri dari : (1) CPU, (2) RAM, (3) EPROM/PROM/ROM, (4)
I/O (Input /Output) serial dan parallel, (5) timer, (6) Interupt Controller.
Mikrokontroller AVR (Alf and Vegard’s Risc processor ) memiliki arsitektur 8 bit,
dimana semua instruksi dikemas dalam kode 16-bit (16-bits word ) dan sebagian besar
instruksi dieksekusi dalam 1 (satu) siklus clock atau dikenal dengan teknologi RISC
(Reduced Instruction Set Computing), berbeda dengan instruksi MCS51 yang
membutuhkan 12 siklus clock atau dikenal dengan teknologi CISC (Complex Instruction
Set Computing ). Secara umum, AVR dapat dikelompokan ke dalam 4 kelas, yaitu
keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Dari segi arsitektur dan perintah
yang digunakan adalah sama, yang membedakannya adalah kelas memori, perypheral
dan fungsinya.

7
1. Hardware Mikrokontroler ATMega16
Mikrokontroler ATMega16 adalah mikrokontroler 8 bit buatan ATMEL dengan fitur:
 Performansi tinggi dengan daya rendah
o 131 Powerful Instructions – Most Single-clock Cycle Execution
o 32 × 8 General Purpose Working Registers
o Fully Static Operation
o Up to 16 MIPS Throughput at 16 MHz
o On-chip 2-cycle Multiplier
 Segments Memory Ketahanan Non-volatile tinggi
o 16 Kbytes of In-System Self-programmable Flash program memory
o 512 Bytes EEPROM
o 1 Kbyte Internal SRAM
o Write/Erase Cycles: 10,000 Flash/1 00,000 EEPROM
o Programming Lock for Software Security
 Fitur Peripheral
o Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
o One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
 Mode
o Real Time Counter with Separate Oscillator
o Four PWM Channels
o 8-channel, 10-bit ADC 8 Single-ended Channels 7 Differential Channels in TQF.
 Package Only 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x
o Byte-oriented Two-wire Serial Interface
o Programmable Serial USART
o Master/Slave SPI Serial Interface
o Programmable Watchdog Timer with Separate On-chip Oscillator
o On-chip Analog Comparator.
 Special Microcontroller Features
o Power-on Reset and Programmable Brown-out Detection
o Internal Calibrated RC Oscillator
o External and Internal Interrupt Sources

8
o Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
o and Extended Standby
 Pakaet dan I/O
o 32 Programmable I/O Lines
o 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF
 Tegangan kerja
o 2.7V - 5.5V for ATmega16L
o 4.5V - 5.5V for ATmega16
(http://staff.uny.ac.id/sites/default/files/07%20Modul%20Bahan%20Ajar-02_1.pdf)
ATmega16 adalah CMOS daya rendah 8-bit mikrokontroler berdasarkan ditingkatkan
AVR arsitektur RISC. Dengan mengeksekusi instruksi kuat dalam satu siklus clock
tunggal, ATmega16 mencapai throughput mendekati 1 MIPS per MHz memungkinkan
perancang sistem untuk mengoptimalkan konsumsi daya dibandingkan kecepatan
pemrosesan.
1. Susunan PIN Mikrokontroller ATMega 16 ditunjukkan dalam gambar berikut.

Gambar 2-6. Susunan Pin Mikrokontroler Atmega 16


Penjelasan fungsi untuk masing-masing pin IC Atmega 16 pada gambar 7 berikut ini.

9
a. Port A (PA7..PA0)
Port A berfungsi sebagai input analog pada konverter A/D. Port A juga sebagai suatu
port I/O 8-bit dua arah, jika A/D konverter tidak digunakan. Pin - pin Port dapat
menyediakan resistor internal pull-up (yang dipilih untuk masing-masing bit). Port A
output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi
dan kemampuan sumber. Ketika pin PA0 ke PA7 digunakan sebagai input dan secara
eksternal ditarik rendah, pin–pin akan memungkinkan arus sumber jika resistor
internal pull-up diaktifkan. Port A adalah tri-stated manakala suatu kondisi reset
menjadi aktif, sekalipun waktu habis.
b. Port B (PB7..PB0)
Pin B adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih
untuk beberapa bit). Pin B output buffer mempunyai karakteristik gerakan simetris
dengan keduanya arus sink tinggi. Sebagai input, Pin B jika diberi resistor pull-up
secara eksternal akan menarik arus sumber rendah ketika diaktifkan. Pin B adalah
tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
c. Port C (PC7..PC0)
Pin C adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih
untuk beberapa bit). Pin C output buffer mempunyai karakteristik gerakan simetris
dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pin C yang
secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. Pin C
adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
d. Port D (PD7..PD0)
Pin D adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih
untuk beberapa bit). Pin D output buffer mempunyai karakteristik gerakan simetris
dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pin D yang
secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. Pin
D adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
e. Terminal lain-lain meliputi:
o RESET (Reset input)
o XTAL1 (Input Oscillator)
o XTAL2 (Output Oscillator)

10
o AVCC adalah pin penyedia tegangan untuk Port A dan Konverter A/D.
o AREF adalah pin referensi analog untuk konverter A/D.

2. Peta Memori ATMega16


Memori Program Arsitektur ATMega16 mempunyai dua memori utama, yaitu memori
data dan memori program. Selain itu, ATMega16 memiliki memori EEPROM untuk
menyimpan data. ATMega16 memiliki 16K byte On-chip In-System Reprogrammable
Flash Memory untuk menyimpan program. Instruksi ATMega16 semuanya memiliki
format 16 atau 32 bit, maka memori flash diatur dalam 8K x 16 bit. Memori flash
dibagi kedalam dua bagian, yaitu bagian program boot dan aplikasi. Bootloader adalah
program kecil yang bekerja pada saat sistem dimulai yang dapat memasukkan seluruh
program aplikasi ke dalam memori prosesor.
a. Memori Data (SRAM)
Memori data AVR ATMega16 terbagi menjadi 3 bagian, yaitu 32 register umum, 64
buah register I/O dan 1 Kbyte SRAM internal. General purpose register menempati
alamat data terbawah, yaitu $00 sampai $1F. Sedangkan memori I/O menempati 64
alamat berikutnya mulai dari $20 hingga $5F. Memori I/O merupakan register yang
khusus digunakan untuk mengatur fungsi terhadap berbagai fitur mikrokontroler
seperti kontrol register, timer/counter, fungsi-fungsi I/O, dan sebagainya. 1024 alamat
berikutnya mulai dari $60 hingga $45F digunakan untuk SRAM internal.

11
Gambar 2-7. Peta Memori Data ATMega16

b. Memori Data EEPROM


ATMega16 terdiri dari 512 byte memori data EEPROM 8 bit, data dapat ditulis/dibaca
dari memori ini, ketika catu daya dimatikan, data terakhir yang ditulis pada memori
EEPROM masih tersimpan pada memori ini, atau dengan kata lain memori EEPROM
bersifat nonvolatile. Alamat EEPROM mulai dari $000 sampai $1FF.

3. Analog To Digital Converter


AVR ATMega16 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC
internal dengan resolusi 10 bit. Dalam mode operasinya, ADC dapat dikonfigurasi, baik
single ended input maupun differential input. Selain itu, ADC ATMega16 memiliki
konfigurasi pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter
derau (noise) yang amat fleksibel sehingga dapat dengan mudah disesuaikan dengan
kebutuhan dari ADC itu sendiri.

D. Arsitektur ATMega16
Arsitektur mikrokkontroler pada umumnya terdiri dari bagian – bagian seperti
ditunjukkan dalam gambar 2-8.

12
Gambar 2-8. Block Diagram Atmega 16

E. Fungsi dan Bagian-bagian Mikrokontroler


1) Register
Register merupakan tempat penyimpanan (variable) bilangan bulat yang terdiri dari 8
atau 16 bit. Register mempunyai dua fungsi khusus dan umum. Register fungsi khusus
misalnya register timer yang berisi data penghitungan pulsa untuk timer, atau register
pengatur mode operasi counter untuk menghitung pulsa. Sedangkan register yang

13
berfungsi umum untuk menyimpan data sementara yang diperlukan untuk
memproses penghitungan dan operasi mikrokontroler.
2) Accumulator
Merupakan salah satu register khusus yang berfungsi sebagai operand umum proses
aritmetika dan logika.
3) Program Counter
Merupakan salah satu register khusus yang berfungsi sebagai pencacah / penghitung
eksekusi program mikrokontroler.
4) ALU (Arithmetic and Logic Unit)
ALU memiliki kemampuan dalam mengerjakan proses-proses aritmatika (penjumlahan,
pengurangan, perkalian, pembagian) dan operasi logika (misalnya AND, OR, XOR, NOT)
terhadap bilangan bulat 8 atau 16 bit.
5) Clock Circuits
Mikrokontroler merupakan rangkaian logika sekuensial, dimana proses kerjanya
berjalan melalui sinkronisasi clock. Oleh karena itu diperlukan clock circuits yang
menyediakan clock untuk seluruh bagian rangkaian.
6) Internal ROM (Read Only Memory)
Merupakan memori penyimpan data dimana data tersebut tidak dapat diubah atau
dihapus (hanya dapat dibaca). ROM biasanya diisi dengan program untuk dijalankan
oleh mikrokontroler segera setelah power dihidupkan. Data dalam ROM tidak dapat
hilang meskipun power dimatikan karena bersifat non volatile.
7) Stack Pointer
Stack merupakan bagian dari RAM yang memiliki metode penyimpanan dan
pengambilan data secara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan
dengan cara acak karena data yang dituliskan ke dalam stack yang berada pada urutan
yang terakhir merupakan data yang pertama kali dibaca kembali. Stack Pointer berisi
offset dimana posisi data stack yang terakhir masuk (atau yang pertama kali dapat
diambil).

14
8) I/O (Input/Output) Ports
Merupakan sarana yang digunakan oleh mikrokontroler untuk mengakses peralatan-
peralatan lain di luar sistem. I/O Port berupa pin-pin yang dapat berfungsi untuk
mengeluarkan data digital ataupun sebagai masukan data eksternal.
9) 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.
Blok diagram di atas tidak 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 disamping port I/O paralel yang
sudah ada.
10) Internal RAM (Random Acces Memory)
Merupakan memori penyimpan data dimana data tersebut dapat diubah atau dihapus.
RAM biasanya berisi data-data variable dan register. Data yang tersimpan pada RAM
bersifat volatile yaitu akan hilang bila catu daya yang terhubung padanya dimatikan.
Mikrokontroler dapat digunakan untuk mengendalikan peralatan antara lain: (1)
telepon seluler, (2) kamera digital, (3) printer laser, (4) mesin cuci, (5) oven microwave,
(6) remote control, (7) sistem stereo, (8) robot dll.

F. Mikrokontroler Generasi Terbaru


Mikrokontroler At89S51/52, merupakan versi terbaru dibandingkan
mikrokontroler AT89C51 yang telah banyak digunakan saat ini. Mikrokontroler
AT89S52 ialah mikrokomputer CMOS 8 bit dengan 8KB Flash Programmable dan
Erasable Read Only Memory (PEROM). Mikrokontroler berteknologi memori non
volatile kerapatan tingi dari Atmel ini kompatibel dengan mikrokontroler standar
industri MCS-51 baik pin kaki Ic maupun set instruksinya serta harganya yang cukup
murah. Spesifikasi penting AT89S52 adalah sebagai berikut: Kompatibel dengan
keluarga mikrokontroler MCS51 sebelumnya,8 K Bytes In system Programmable (ISP)
flash memori dengan kemampuan 1000 kali baca/tulis, tegangan kerja 4-5.0V, bekerja

15
dengan rentang 0 – 33MHz, 256x8 bit RAM internal , 32 jalur I/0 dapat diprogram , 3
buah 16 bit Timer/Counter , 8 sumber interrupt , saluran full dupleks serial UART,
watchdog timer , dual data pointer , Mode pemrograman ISP yang fleksibel (Byte dan
Page Mode).
AT89S51/52 mempunyai memori data internal, terdiri dari RAM internal
sebesar 128 byte dengan alamat 00H-7FH dapat diakses menggunakan RAM address
register. RAM Internal terdiri dari Register Banks dengan 8 buah register (R0-R7).
Memori lain yaitu 21 buah Special Function Register dimulai dari alamat 80H-FFH.
Lokasi RAM ini berbeda dengan Flash PEROM dengan alamat 000H -7FFH. Jika
diperlukan, memori data eksternal untuk menyimpan variabel yang ditentukan oleh
user dapat ditambah berupa IC RAM atau ROM maksimal sebesar 64KB.

G. Asembler AVR
Program assembler ini sama dengan program bahasa mesin elektronik yang mana
berfungsi untuk mengontrol perangkat-perangkat elektronik yang telah
diorganisasikan. Assembler berfungsi menerjemahkan kode sumber assembly menjadi
kode obyek. Kode objek yang dihasilkan dapat digunakan sebagai masukan simulator
atau emulator seperti Atmel AVR dalam rangkaian emulator. Assembler juga
menghasilkan kode PROMable dan opsional file EEPROM yang dapat diprogram
langsung ke memori program dan memori EEPROM dari mikrokontroler AVR.
Seperangkat instruksi mikrokontroler keluarga AVR hanya singkat jelas, dapat dilihat
pada AVR Data Book untuk mendapatkan pengetahuan yang lebih rinci dari
seperangkat instruksi mikrokontroler yang berbeda. Quick Start tutorial adalah cara
mudah untuk mendapatkan pemahaman Atmel AVR Assembler.
Tabel 2-1. Panduan Pengguna Assembler AVR
Assembler Tutorial ini berasumsi bahwa assembler AVR dan file semua program telah terinstal dalam
Quick Start komputer. Bisa dilihat petunjuk instalasi.
Tutorial
Mulai Mulai asembler AVR dengan memilih File Open atau klik tolbar, buka “tutor1.asm. Unduh
file assembly ke dalam jendela editor. Baca header program dan pelajari program jangan
membuat perubahan
File Setelah melihat program, pilih menu merakit. Sebentar kemudian muncul pesan yang
Assembling berisi kesalahan-kesalahan. Ruang kerja muncul secara overlap dengan jendela editor,
pertama olehk karena itu bersihkan dahulu ruang kernjanya. Pilih jendela editor yang berisi kode
program, dan pilih "Window Tile Horizontal "dari menu. Hal ini berguna untuk
mendapatkan jendela editor lebih besar dari jendela pesan, turunkan jendela pesan dan

16
ikuti bagian bawah jendela Editor, layar akan terlihat seperti ini:

Penemuan Dari penampilan jendela Pesan, tampak usaha pengguna merakit sebuah program dengan
dan perbaikan banyak bug. Lebih jauh lagi kesalahan harus ditemukan dan diperbaiki. Arahkan ke pesan
kesalahan. kesalahan pertama di jendela pesan (satu dilaporkan pada baris 54) dan tekan tombol
mouse kiri. Perhatikan di jendela Editor, diperagakan bar vertikal merah di sepanjang garis
54. Pesan kesalahan mengatakan bahwa hanya variabel register R0 ke R31 yang bisa
ditugaskan. Itu benar karena AVR memiliki tepat 32 general purpose register bekerja
dengan nomor R0-R31, dan "tutor1.asm" mencoba untuk menetapkan nama
register 32. Lihat gambar di bawah ini.

Klik dua kali pada pesan kesalahan di jendela Pesan dan amati jendela Editor

17
menjadi aktif saat kursor diposisikan pada awal baris yang berisi kesalahan. Memperbaiki
kesalahan dengan mengubah "R32" untuk "R19" di jendela Editor.
Sekarang klik pada kesalahan berikutnya dalam daftar. Pesan argumen "Illegal jenis atau
count", mengatakan bahwa sesuatu yang salah dengan argumen instruksi
membandingkan ("cp"). Perhatikan bahwa daftar bernama "BH" adalah salah satu
argumen, yang menjadi
variabel yang dikoreksi. Dengan mengklik bersama pada kesalahan yang tersisa, tampak
kesalahan pertama yang dihasilkan semua pesan.
Reassembling Untuk mengetahui apakah semua kesalahan telah diperbaiki, klik dua kali pada kesalahan
(untuk mengaktifkan jendela Editor) atau klik di dalam jendela Editor sebelum merakit
lagi. Jika semua telah dilakukan dengan benar, jendela pesan akan menandai sukses.
Assembler Assembler bekerja pada file yang mengandung mnemonik instruksi, label dan
source arahan. Mnemonik instruksi dan arahan sering mengambil operan.
Baris kode harus dibatasi 120 karakter. Setiap baris input dapat didahului dengan label,
yang berupa string alfanumerik diakhiri dengan titik dua. Label digunakan sebagai target
untuk instruksi melompat dan percabangan dan sebagai nama variabel dalam memori
program dan RAM.
Line input dapat mengambil salah satu dari empat bentuk berikut:
1. [label:] direktif [operan] [Komentar]
2. [label:] instruksi [operan] [Komentar]
3. Komentar
4. baris kosong.
Komentar memiliki format berikut:
; [Text].
Item yang ditempatkan dalam tanda kurung adalah opsional. Teks antara komentar-
pembatas (;) dan akhir baris (EOL) diabaikan oleh Assembler.
Contoh
label: .EQU var1 = 100 ; Set var1 to 100 (Directive)
.EQU var1 = 100 ; Set var1 to 200
test: rjmp test ; Infinite loop (instruction)
; Pure comment line
; Another comment line
Instruksimne Assembler menerima instruksi mnemonic dari seperangkat instruksi. Ringkasan
monics set instruksi mnemonik dan parameter, deskripsi secara rinci terdapat pada
AVR Data Book.
Assembler Assembler mendukung sejumlah arahan. Arahan tidak diterjemahkan
directives langsung ke opcodes. Sebaliknya, digunakan untuk mengatur lokasi program di
memori, mendefinisikan macro, inisialisasi memori dan sebagainya.
Ekspresi Ekspresi dapat terdiri dari operan, operator dan fungsi. Semua ekspresi internal 32 bit.
1. Operands
Berikut bentuk-bentuk operand yang biasa digunakan.
 User menetapkan label yang diberi angka lokasi counter yang akan dimunculkan.
 User menetapkan variabel dengan SET direktif.
 User menetapkan konstanta dengan EQU direktif.
 Konstanta integer, konstanta dapat diberikan dalam beberapa bentuk meliputi
o Desimal (default) 10, 255
o Hexadesimal (dua notasi) 0x0a, $0a, 0xff, $ff.
o Biner: 0b00001010, 0b11111111.
2. Fungsi
Fungsi didefinisikan berikut ini.
LOW (expression) ekspresi mengembalikan bit rendah
HIGH (expression) ekspresi mengembalikan bit ke dua.
BYTE2 (expression) sama fungsinya seperti HIGH.
LWRD (expression) ekspresi mengembalikan bit 0-15
HWRD (expression) ekspresi mengembalikan bit 16-31

18
PAGE (expression) ekspresi mengembalikan bit 16-21.
3. Operator
Assembler mendukung sejumlah operator. Semakin didahulukan
semakin tinggi prioritas. Ekspresi dapat dalam tanda kurung,
dan ekspresi selalu dievaluasi sebelum dikombinasikan dengan apapun di luar
kurung.

Selengkapnya dapat diunduh pada http://www.atmel.com/Images/doc1022.pdf

Contoh
Program Assembler untuk menghidupkan LED dengan ketentuan menggunakan 8 bit
pada port a,b dan c.
Permasalahan
1. Hidupkan LED dari D7-D0
2. Hidupkan LED dari tengah ke kiri dan ke kanan 2-2 bit
3. Hidupkan LED 5 dan 8.

Penyelesaian
Konsep kita harus mempunyai simulasi LED contoh seperti dibawah ini.
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
128 64 32 16 8 4 2 1
D7 D6 D5 D4 D3 D2 D1 D0
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 =255
D7 D6 D5 D4 D3 D2 D1 D0
128 + 64 32 + 16 8 + 4 2 + 1
D7 D6 D5 D4 D3 D2 D1 D0
128+64+2+1= 195
32+16+8+4 = 60
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
128 64 32 16 8 4 2 1
D7 D6 D5 D4 D3 D2 D1 D0
128 + 16 =144
Contoh Program :
Mulai
mov al,80h
mov dx,cw

19
out dx,al

Putar
mov al,255
mov dx,port a
out dx,al
call delay

mov al,255
mov dx, port b
out dx,al
call delay

mov al,255
mov dx,port c
out dx,al
call delay

mov al,195
mov dx,port a
out dx,al
call delay

mov al,195
mov dx,port b
out dx,al
call delay

mov al,195
mov dx,port c
out dx,al

20
call delay

mov al,60
mov dx,port a
out dx,al
call delay

mov al,60
mov dx,port b
out dx,al
call delay

mov al,60
mov dx,port c
out dx,al
call delay

mov al,144
mov dx,port a
out dx,al
call delay

mov al,144
mov dx,port b
out dx,al
call delay

mov al,144
mov dx,port c
out dx,al

21
call delay

jmp putar

Jadi LED akan hidup dari kiri ke kanan ( D7-D0 ) kemudian hidupkan LED dari kiri ke
kanan dengan 2bit-2bit dilanjutkan lagi menghidupkan LED pada LED5 dan LED8

22

Anda mungkin juga menyukai