Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEM MIKROPROSESOR
FAKULTAS TEKNIK
CIMAHI
2008
BAB I
SEJARAH MIKROPROSESSOR
● Teknologi Bipolar
● Magnetic Bubbles
mempunyai karakteristik teknik tertentu. Pada tabel 1-1 diperlihatkan pembagian teknologi
Sedang
CMOS Sedang Sangat Kecil Sedang – Daya Terkecil
Tinggi
CMOS-SOS Sedang – Kecil Tinggi Rendah
Tinggi
TEKNOLOGI BIPOLAR
TTL Sedang – Sedang Sedang – Tinggi
Tinggi Tinggi
ECL Sangat Tinggi Tinggi Sedang Pemakaian
Meningkat
I2L Sedang – Rendah, Dapat Sangat Tinggi Baru, Pemakaian
Teknologi PMOS adalah teknologi yang paling murah dan merupakan teknologi yang
dipergunakan pada mikroprosessor pertama yaitu Intel 4004 pada tahun 1971, namun
demikian banyak hal telah digantikan oleh teknologi NMOS. Pada waktu ini teknologi MOS
kanal N adalah yang paling banyak dipergunakan dalam pembuatan mikroprosessor. Dalam
hal faktor kecepatan operasi dan atau kebutuhan daya memegang peranan penting maka
Mikroprosessor dengan teknologi bipolar jenis ECL atau Schottky mempunyai kecepatan
paling tinggi. Untuk keperluan daya paling rendah dapat kita pilih mikroprosessor dengan
teknologi bipolar jenis I2L dapat bekerja dengan tegangan sumber paling rendah
dibandingkan dengan mikroprosessor jenis yang lain. Mikroprosessor jenis I2L ini dapat
bekerja dengan daya rendah bila kecepatan operasi bukan merupakan faktor menentukan.
saphir (yaitu jenis CMOS – SOS) dapat bekerja dengan kecepatan operasi tinggi dan
keperluan daya rendah, tetapi harnya sangat mahal.
Disamping harga, tiga macam karakteristik teknik yang paling penting adalah Kecepatan
jumlah bit data, menurut struktur atau menurut kemampuan/karakteristik mikroprosessor dan
menurut fungsi dari mikroprosessor itu sendiri. Berdasarkan jumlah bit data (Word Size)
pada waktu ini telah terdapat banyak macam mirkoprosessor, mulai dari mikroprosessor 1
bit, 4bit, 8 bit. 16 bit, 32 bit dan 64 bit. Selain itu mirkoprosessor dapat pula dikelompokan
pada tahun 1971. Mikroprosessor tersebut memperguanakan teknologi PMOS. Selain itu
telah dikembangkan pula beberapa buah mirkoprosessor 4 dengan teknologi yang sama dan
dengan teknologi yang lain. Alasan disebut mikroprosessor 4 bit adalah karena
Mikroprosessor ini diperkenalkan pada tahun 1975. sifat khusus mirkoprosessor ini adalah :
Harga Murah, dengan kepadatan komponen sangat tinggi, daya yang cukup rendah tetapi
dengan kecepatan yang relatif rendah pula. Beberapa contoh diantaranya adalah : Motorola
6800, 6809, Intel 8080, 8085 dan Zilog Z-80 yang semuanya mempergunakan Teknologi
NMOS.
2.3 Prosessor Bipolar Jenis Bit – Slice
Dengan menpergunakan teknologi bipolar *Schottky TTL, ECL atau I2L) prosessor jenis
ini mempunyai kecepatan tinggi meskipun dengan kepadatan yang agak kurang. Dengan
menghubungkan paralel m buah prosessor bit slice dari n bit. Maka dapat diperoleh suatu
mikroprosessor dengan bit data (word length) = m x n bits. Contoh AMD 2903, Motorola
Dengan teknologi CMOS, maka mikroprosessor ini memerlukan daya paling kecil
mikroprosessor CMOS dibandingkan dengan jenis bipolar adalah dalam ini kecepatan. Untuk
mengatasi kekurangan ini telah dikembangkan mikroprosessor jenis CMOS-SOS dan HS-
CMOS yang mempunyai kecepatan kira-kira sama dengan jenis TTL Schottku tetapi dengan
kebutuhan daya jauh lebih rendah. Contoh MC 14500, 1802 dan 8085. MC14500B
merupakan suatu mikroprosessor 1 bit yang dikenal dengan nama Industial Control Unit
(ICU).
Komponen ini merupakan jembatan antara mikroprosessor monolitik dan one – chip
atau Komponen lain, Misalnya MC6802 (Terdiri atas MPU + RAM + Clock) dan Intel 8035.
mirkoprosessor (MPU = Microprocessing Unit), Memori dan unit input output. Dengan
mempergunakan MCU ini, maka jumlah komponen yang diperlukan untuk membuat suatu
mempergunakan teknologi NMOS adalah Motorola 6801 dan 6805, Intel 8041 dan 8049,
sedangkan yang mempergunakan teknologi CMOS yaitu : 87C41 dan 87C48 (Intersil) dan
Motorola 1468056.
2.7 Mikroprosessor 16
Pada mikroprosesor 16 bit, bagian ALU (Arithmetic Logic Unit), register dalam dan
sebagian besar intruksinya dirancang untuk dapat berkeja dengan binary words sebesar 16.
mikroprosessor ini makin populer dan terlihat mulai menggeser mikroprosessor 8 bit dalam
cukup dikenal adalah : 8086, 8088, 80186, 80188, 80286, 80288 (intel), Motorola MC68000,
Zilog Z8000 dan Texas Instruments 9900. Mikroprosessor 8086 mempunyai bus data 16 bit,
sehingga dapat menulis atau membaca data ke/dari memori atau port input/output sebesar
16 bit atau 8 bit setiap saat, mikroprosessor ini mempunyai bus alamat 20 bit, sehingga
Dengan Perkembangan yang pesat dalam teknologi rangkaian terintegrasi jenis VLSI,
maka teknologi mikroprosessor berkembang pula dalam arah jumlah bit data yang makin
meningkat disamping peningkatan dalam segi kemampuan lainya. Pada sekitar tahun
1984/1985 telah diperkenalkan mikroprosessor 32 bit, yang dapar bekerja dengan memori
dalam orde Mega byte. Contohnya NS32032, Motorola 68020, Western Electric WE32000.
Mikroprosessor ini diperkenalkan pada tahun 2002 pertamakali Oleh AMD. Dengan
menggunakan mikroprosessor 64 bit dapat bekerja dengan memori dalam orde giga byte
bahkan sampai tera byte. Mikroprosessor ini dikenal dengan sebutan prosessor64.
Kemampuan mikroprosessor 64 bit dapat mengolah gambar dalam bentuk tiga dimensi.
BAB II
PENGERTIAN UMUM
1. Mikroprosessor
Mikroprosessor adalah Central Processing Unit dari sebuah computer, tanpa memori,
I/O unit, dan peripheral yang dibutuhkan oleh suatu system lengkap. Sebagai contoh
Bila sebuah mikroprosessor dikombinasikan (CPU) dengan memori dan I/O unit dapat
juga dilakukan dalam level chip yang menghasilkan single chip mikrokomputer (SCM)
Unit Pengelola pusat (CPU) terdiri atas dua bagian, yaitu unit pengendali (Control
Unit) serta aritmatika dan logika (ALU). Fungsi utama unit pengendali adalah
tersimpan dalam memori. Unit pengendali mengatur urutan operasi seluruh system.
Unit juga menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk
Unit Pengontrol mengendalikan aliran informasi pada bus data dan bus alamat,
dilanjutkan dengan menafsirkan dan mengatur sinyal yang terdapat pada bus
aritmatika (aljabar) dan secara logika (fungsi OR, NOT, AND, dan XOR).
3. Bus Alamat
ditetapkan terlebih dahulu alamat (address) dari alat tersebut. Hal ini bertujuan untuk
menghindari terjadinya dua lata yang berkerja bersamaan yang mungkin dapat
menyebabkan kesalahan/keruskan.
Alat penyimpan data (memori), baik RAM maupun ROM, juga mempunyai alamat
tersendiri, RAM 8 Kbyte memiliki 8 x 1024 alamat, dimana setiap alamat dapat di isi
data 1byte.
4. Bus Data
CPU mikrokontroller AT89S51 adalah prosesor 8 bit, lebar Bus data AT89S51
adalah 8 bit sehingga memerlukan 8 pin (D0…D7). Akan tetapi, karena jumlah pin
mikrokontroller terbatas, pin data ini tidak dapat dikeluarkan, hanya didalam chip.
Bus data internal terhubung ke alat (dunia luar) melalui port I/O.
Pin untuk bus data dimultipleks dengan alamat A0…A7 pada port 0. karena itu
port 0 seringkali ditulis sebagai AD0…AD7. setiap bit data memiliki bobot masing-
masing, tergantung pada letaknya. Sebagai contoh untuk data 8 bit adalah :
Data D7 D6 D5 D4 D3 D2 D1 D0
Bobot Hexa 80 40 20 10 08 04 02 01
Karena menggunakan bus data yang lebarnya 8 bit, lebar bus data 8 bit juga
digunakan oleh alat-alat lain seperti EPROM, RAM, ADC, PIO dan lain-lain.
5. Bus Kontrol
dengan bus pengendali (bus control). Guna pengendali ini adalah untuk
rangkain luar.
mengendalikan system, diantaranya adalah ALE, PSEN, WR, RD, Interupt dan
(latch 74LS373), penahan pengendali ALE akan dibuat tinggi agar alamat
tersebut ditahan. Setelah itu pin PSEN akan rendah untuk dapat membaca
EPROM, karena alamat (A0…A7) sudah ditahan oleh latch, port 0 sekarang
atau hardisk.
utama, dan memori massal, register internal adalah memori di dalam ALU. Waktu
akses register sangat cepat umumnya kurang dari 100ns. Memori utama adalah
Waktu akses lebih lambat dibandingkan register internal, yaitu antara 200 sampai
7. RAM
RAM (Random Acces Memory) adalah memori yang dapat dibaca atau ditulis.
Data dalam RAM akan terhapus (bersifat Volatile) bila catu daya dimatikan. Oleh
tidak tersimpan dalam RAM. RAM hanya digunakan untuk menyimpan data
sementara, yaitu data yang tidak begitu vital bila hilang akibat aliran daya
terputus.
Ada dua teknologi yang dipakai untuk membuat RAM, yaitu RAM static dan RAM
dinamik. Dalam RAM static, satu bit infromasi disimpan dalam sebuah flip-flop.
RAM static tidak memerlukan penyegar dan penangannanya tidak terlalu rumit. Isi
dari RAM tetap tersimpan selama daya diberikan. Dua contoh RAM static adalah
RAM dinamik menyimpan bit informasi sebagai muatan. Sel memori elemeter
dinamik adalah sel-sel memori lebih kecil sehingga memerlukan tempat yang
lebih sempit, sehingga RAM dinamik menjadi lebih kecil dibandingkan dengan
RAM static. Contoh RAM dinamik adalah 4116 yang berkapasitas 16384 x 1 bit.
Proses penyegaran untuk kapasitor ini dilakukan setiap 1 atau 2 mili detik.
8. ROM
ROM (Read Only Memory) merupakan memori yang hanya dapat dibaca. Data
dalam ROM tidak akan terhapus meskipun catu daya diputuskan (bersifat
program.
Ada beberapa tipe ROM, diantaranya adalah ROM, PROM, EPROM, dan
EEPROM, ROM adalah memori yang sudah deprogram oleh pabrik, PROM
(Programable Read Only Memori) dapat diprogram oleh pemakai, tetapi hanya
sekali program saja atau yang disebut OTP (One Time Programmable),
Only Memory), yaitu PROM yang dapat diprogram ulang. Isi EPROM dihapus
dengan menggunakan sinar Ultra Violer. Isi EPROM setelah dihapus akan
yang dapat diprogram ulang. Isi program dihapus menggunakan suatu tegangan
listrik.
9. Input/Output
Untuk melakukan hubungan dengan peranti diluar sistem, dibutuhkan alat I/O
(input/output). Sesuai dengan namanya, alat I/O dapat menerima data dari
mikroprosessor/mikrokontroller.
Ada dua macam perantara I/O yang dipakai, yaitu peranti untuk hubungan serial
(UART) dan piranti untuk hubungan parallel (PIO). Pada mikrokontroller MCS`51
PIO (Paralel Input Output) merupakan perantara untuk hubungan data dalam
format parallel. PIO adalah alat yang dapat deprogram dan menyediakan
Sistem bilangan desimal atau denary, yaitu sistem bilangan dengan basis 10, yang
mempunyai 10 buah simbol yaitu 0,1,2,...,9. tetapi sistem ini tidak selalu merupakan pilihan
terbaik untuk setiap aplikasi. Sistem biner yang lebih sederhana pilihan lebih cocok
digunakan pada elektronika digital. Sistem biner merupakan sistem bilangan berbasis 2 dan
hanya mempunyai dua simbol yaitu 1 dan 0. sistem lain yang sering digunakan adalah
sistem bilangan dengan basis 8 atau oktal dan sistem bilangan dengan basis 16 atau
heksadesimal.
Dalam sistem denary, yang lebih dikenal dengan sistem bilangan desimal, nilai yang
terdapat pada kolom ketiga pada tabel dibawah yaitu A disebut satuan, kolom kedua yaitu B
disebut puluhan, C disebut ratusan dan seterusnya. Kolom A,B,C menunjukkan kenaikan
pada eksponen dengan basis 10 yaitu 100 = 1, 101 = 10, 102 = 100.
C B A
102 101 100
Ratusan Puluhan Satuan
Setiap kolom pada sistem bilangan biner, yaitu sistem bilangan dengan basis 2,
Biner
Desimal C B A
(4) (2) (1)
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
a. Konversi Desimal ke biner
Konversi bilangan desimal ke biner dapat dilakukan dengan kombinasi intuis dan
metode coba-coba (trial and error). Bilangan desimal yang diketahui dipisah-pisahkan
kedalam sejumlah bilangan pangkat dengan basis 2.
15 0 0 1 1 1 1 001111
22 0 1 0 1 1 0 010110
45 1 0 1 1 0 1 101101
52 1 1 0 1 0 0 110100
Sebagai Contoh 2210 nilainya lebih kecil dari 25(=32), maka bit 0 akan ditempatkan
pada kolom tersebut. Tetapi 22 lebih besar dari 24 (=16), sehingga bit 1 ditempatkan pada
kolom tersebut. Sisanya adalah 22 – 16 = 6 yang lebih besar dari 2 2 (= 4) sehingga bit 1
ditempatkan pada kolom tersebut, sehingga sisanya 6 – 4 = 2 sisa ini akan menghasilkan bit
1 yang harus dipasang pada kolom 21 (= 2) dan bit 0 ditempatkan pada kolom 20 (= 1)
sehingga bilangan 2210 = 0101102.
Cara lain adalah dengan pembagian. Bilangan desimal yang akan diubah secara
26/2 = 13 sisa 0
13/2 = 6 sisa 1
6/2 = 3 sisa 0
3/2 = 1 sisa 1
11102 = 1 x 23 + 1 x 22 + 1 x 21 + 0 x 2 1
= 8 + 4 + 2 + 0 = 1410
2. BILANGAN OKTAL
Bilangan oktal adalah sistem bilangan yang berbasis 8 dan mempunyai delapan
simbol bilangan yang berbeda yaitu 0, 1, 2, ..., 7. kolom oktal pada suatu bilangan
menunjukkan eksponen dengan basis 8 yaitu :
727/8 = 90 sisa 7
90/8 = 11 sisa 2
11/8 = 1 sisa 3
Untuk konversi bilangan oktal ke biner dapat dilakukan dengan cara memisahkan
setiap digit bilangan oktal dan setiap digit bilangan oktal dapat disajikan dengan 3 digit
bilangan biner.
Tabel 3.5 Tabel Bilangan Oktal ke Biner
Oktal Biner
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
38 = 0112, MSB
58 = 1012
28 = 0102
78 = 1112, LSB
Sehingga bilangan oktal 3527 sama dengan bilangan biner 011 101 010 111.
112 = 38 MSB
1102 = 68
0112 = 38
Jadi bilangan biner 11110011001 apabila diubah menjadi bilangan oktal akan diperoleh
36318.
3. BILANGAN HEKSADESIMAL
Bilangan heksadesimal, sering disingkat dengan hex adalah bilangan dengan basis
16 dan mempunyai 16 simbol yang berbeda
Heksadesimal Desimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
Bilangan yang lebih besar dari 1510 memerlukan lebih dari satu digit hex. Kolom
heksadesimal menunjukkan eksponen dengan basis 16, yaitu 160 = 1, 161 = 16, 162 = 256
dan seterusnya. Sebagai contoh 152B16 = ..........10
= 1 x 4096 + 5 x 256 + 2 x 16 + 11 x 1
= 4096 + 1280 + 32 + 11
= 541910
dilakukan dengan cara membagi bilangan desimal tersebut dengan 16. sebagai contoh untuk
mengubah bilangan 340910 menjadi bilangan heksadesimal, dilakukan dengan langkah-
Setiap digit pada bilangan heksadesimal dapat disajikan dengan empat buah bit
seperti terlihat pada tabel dibawah ini
Heksadesimal Biner
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
untuk mengubah bilangan heksadesimal menjadi bilangan biner, setiap digit dari bilangan
heksadesimal diubah secara terpisah ke dalam empat bit bilangan biner. Sebagai contoh
2A5C16 dapat diubah ke bilangan biner sebagai berikut :
A16 = 1010
516 = 0101
C16 = 1100, LSB
sehingga bilangan heksadesimal 2A5C akan diubah menjadi bilangan biner 0010 1010 0101
1100.
Sebaliknya bilangan biner dapat diubah menjadi bilangan heksadesimal dengan cara
mengelompokkan setiap empat digit dari bilangan biner tersebut dimulai dari digit paling
kanan. Sebagai contoh 01001111010111002 dapat dikelompokan menjadi 0100 1111 0101
1110 sehingga
11112 = F16
01012 = 516
4. GERBANG LOGIKA
Gerbang Logika adalah piranti yang mempunyai dua kondisi yaitu kondisi dengan
tegangan 0 volt menyatakan logika 0 (low) dan kondisi dengan tegangan 5 volt menyatakan
logika 1 (High). Gerbang logika dapat mempunyai beberapa masukan yang masing-masing
mempunyai salah satu dari dua kondisi logika yaitu 0 atau 1. gerbang logika dapat
digunakan untuk melakukan fungsi-fungsi khusus, misalnya AND, OR, NAND, NOR, NOT
dan EXOR
a. Gerbang NOT
Gerbang NOT merupakan gerbang satu masukan dan satu keluaran yang berfungsi
sebagai pembalik (inverting). Jika masukannya High maka keluarannya Low dan sebaliknya.
A A
A A
0 1
1 0
b. Gerbang AND
A
A.B
B
A B A.B
0 0 0
1 0 0
0 1 0
1 1 1
c. Gerbang OR
Gerbang OR akan memberikan keluaran 1 jika salah satu dari masukkanya pada
kondisi 1. jika di inginkan keluaran bernilai 0 maka semua masukan harus dalam kondisi 0.
A
A+B
B
A B A+B
0 0 0
1 0 1
0 1 1
0 0 1
d. Gerbang NAND
Gerbang NAND akan mempunyai keluaran 0 jika semua masukan pada logika 1.
sebaliknya jika ada sebuah logika 0 pada sembarang masukan gerbang NAND, maka
keluarannya akan bernilai 1.
A
A*B
B
A B A∗B
0 0 1
0 1 1
1 0 1
1 1 0
e. Gerbang NOR
Gerbang NOR akan memberikan keluaran 0 jika salah satu dari masukkannya pada
kondisi 1. Jika diinginkan keluaran bernilai 1, maka semua masukkan harus dalam kondisi 0.
A
A+B
B
A B AB
0 0 1
1 0 0
0 1 0
1 1 1
f. Gerbang XOR
A
A + B
B
Gambar 3.4 Gerbang Logika XOR
A B AB
0 0 0
1 0 1
0 1 1
1 1 0
BAB IV
MIKROKONTROLLER
● AVR (ATMega8535)
● AT89C205, AT89C4051
● AT89S51, AT89S52
● 8051, 8052
1. Arsitektur dan Peripheral Mikrokontroller
● 4Kbyte Flash Memory (ISP) In-System Programmable 1000 kali ditulis dan dihapus
● 32 Jalur I/O
● 6 sumber Interupt
● Watchdog Timer
● 2 Data Pointer
b Arsitektur AT89C51
• Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
• Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
• Lima buah Jalur interupsi (2 buah interupsi eksternal dan 3 buah internal)
• Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
● 12Kbyte Flash Memory (ISP) In-System Programmable 1000 kali di tulis dan di hapus
● 32 Jalur I/O
● 9 sumber Interupt
● Watchdog Timer
● 2 Data Pointer
● Memiliki Direct, Indirect Relative pengalamatan Mode untuk data dan intruksi
ARSITEKTUR AT89S51
MCS-51 pertama kali dikembangkan oleh intel Corporation pada tahun 70-an
sehingga dapat dibilang usia MCS-51 sudah lebih dari 30 tahun. MCS-51 salah satu keluarga
mikrokontroler yang sampai sekarang masih banyak dikembangkan oleh berbagai produsen
semacam Atmel Corp, Philips Semiconductors, Cygnal Integrated Product Inc, dan Winbond
Electronics Corp. berbagai kemapuan yang dimiliki MCS-51 Masih terus di tingkatkan. Pada
awalnya MCS-51 dibuat dalam dua bersi NMOS dan CMOS. Namun akhirnya hanya versi
CMOS yang tersedia dipasaran saat ini.
Keluraga MCS-51 telah berkembang pesat dan memiliki berbagai macam varian.
Perbedaan antar varian keluarga MCS-51 dapat dikelompokan dalam 8 bagian yaitu :
1. Tegangan Kerja
Tegangan kerja AT89LV55 buatan Atmel mampu beroperasi dengan tegangan kerja 2,7 –
6 Volt. Seri P89LPC9xx buatan Philips memiliki tegangan kerja 2,4 – 3,6 Volt.
Internal program memory yang dimiliki AT89C51 sebesar 4KB sedangkan internal data
memory yang dimilikinya sebesar 256 byte. Tipe C8051F12X buatan Cygnal memiliki
internal program memory 128 KB sedangkan internal data memory yang dimilikinya
sebesar 8448 byte. Tidak hanya kapasitas memori, tipe memory yang digunakan pun
bervariasi yaitu :
OTP (One Time Programmable) atau Mask ROM (Read Only Memory)
Cara penulisan internal program memory pun bervariasi antara lain : In Circuit
Programming (ICP), In Application Programming (IAP), In System Programming (ISP)
dan Parallel Programming (PP).
3. Kecepatan
Dalam hal kecepatan ada dua satuan yang digunakan. Beberapa produsen menggunakan
satuan MHz (MegaHertz), sedangkan yang lain menggunakan satuan MIPS (Million
Instructions Per Second). AT83C5111 memiliki frekuensi maksimum 66 MHz sedangkan
C8051F120 buatan Cygnal mampu memproses 100 MIPS. Clock rate umunya bernilai 12,
yang berarti internal clock beroperasi 1/12 dari frekuensi sumber clock atau 1 cycle
membutuhkan 12 pulsa clock. IC buatan Cygnal memiliki clock rate 1 diman 1 cycle
membutuhkan 1 pulsa clock.
4. Timer/Counter
Timer/Counter yang dimiliki varian MCS-51 dapat berjumlah hingga 5 buah, contohnya
P89LPC932 buatan Philips. Beberapa varian bahkan memiliki fasilitas Pulse Width
Mudulation (PWM), Programmable Counter Array (PCA) dan WatchDog Timer.
5. Interrupt
Tipe P89LPC932 buatan Philips memiliki interrupt source : External interrupt 0 dan 1
timer 0 dan 1, serial port Tx, serial port Rx, combined serial port Rx/Tx, brownout detect,
watchdog/Real-Timer clock, keyboard, comparator 1 dan 2, SPI (Serial Pheriperal
Interface), CCU (Capture Compare Unit), dan data EEPROM write completion. Tipe
tersebut memiliki interrupt level/p[riority hingga 4 tingkat.
6. Serial Interface
Serial interface yang banyak didukung MCS-51 adalah Universal Asynchronous Receiver
Transmitter (UART). Namun varian yang lebih baru juga memiliki interface I2C (Inter
Integrated Circuit) atau Two Wire Interface, SPI, CAN (Control Area Network) bahkan
USB (Universal Serial Bus).
7. I/O
Jumlah pin yang berfungsi sebagai digital input/output pada IC buatan Cygnal dapat
berjumlah mulai 8, 16, 32 dan 64 pin.
8. Special Function
Selain berbeda kapasistas memori, kecepatan, jumlah timer, interface dan jalur
input/output, varian MCS-51 juga memiliki kemampuan yang spesifik. Beberapa
kemampuan yang terdapat pada varian MCS-51 antara lain :
• Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
• Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
• Enam buah Jalur interupsi (3 buah interupsi eksternal dan 3 buah internal)
• Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
• ISP Programming
• Memiliki 2 DPTR
• WatchDog Timer
a. Pin 1 sampai 8 (port 1) merupakan prot paralel 8 bit dua arah (input-output) yang
digunakan sebagai keperluan general purpose. P1.5, P1.6 dan P1.7 selain digunakan
sebagai I/O. Juga digunakan sebagai masukkan untuk pengisian program ke dalam IC
AT89S51.
b. Pin 9 (Reset) adalah intrupsi reset (aktif high) perpindahan kondisi rendah ke tinggi akan
d. Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang merupakan input
f. Pin 21 sampai 28 (port 2) adalah port paralel 8 bit dua arah (input-output). Port 2 ini
g. Pin 29 adalah pin PSEN (Program Strobe Enable) merupakan jalur control untuk
mengakses external program memory. PSEN akan bernilai low pada saat pembacaan
program dari external memory. PSEN akan bernilai high pada saat pembacaan program
h. Pin 30 adalah pin ALE (Address Latch Enable) berfungsi sebagai demultiplexer pada saat
i. Pin 31 EA merupakan pin yang berfungsi sebagai input control. Jika EA bernilai low
(dihubungkan ke ground), maka program hanya akan dijalankan dari external program
memory. Jika EA bernilai high (dihubungkan ke + 5 V), maka program akan dijalankan
j. Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan
untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data
3. Organisasi Memori
(address space) untuk program dan data. Pemisahan memori program dan memori data
membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data
Ø Memori Program
Memori program hanya dapat dibaca tidak bisa ditulisi (karena disimpan dalam Flash
Memori) berfungsi untuk menyimpan kode program user yang akan dijalankan. Memori
program dapat ditingkatkan sebesar 64 Kbyte dengan menambahkan memori eksternal. Sinyal
yang membolehkan pembacaan dari memori program eksternal adalah dari PSEN. Selain
berisi instruksi user juga memiliki beberapa alamat khusus yang ditujukan untuk reset address
(alamat yang dituju pada saat pertama kali mikrokontroler berkerja) dan interrupt vector
0000H Reset
60 Kbyte External
Program Memory 64 Kbyte External
Program Memory
4 Kbyte Internal
Program Memory
Memori Data
Memori data internal dipetakan seperti pada gambar dibawah ruangan memorinya
dibagi dua bagian yaitu RAM 128 Byte serta SFR (Special Fungsi Register). Yang meliputi :
Register Banks, Bit-addressable, Scratch Pad Area dan SFR (Special Function Register).
FFH
Special Function Registers
80H
7FH Scratch Pad Area
30H
2FH Bit-addressabel
20H
1FH Register Banks
00H
FFH
F8H
F0H Bit-addressable B
E0H Bit-addressable ACC
D0H Bit-addressable PSW
B8H Bit-addressable IP
B0H Bit-addressable P3
A8H Bit-addressable IE
86H Bit-addressable WDTRST
A2H Bit-addressable AUXR1
A0H Bit-addressable P2
90H Bit-addressable P1
8EH Bit-addressable AUXR
8DH Non Bit-addressable TH1
8CH Non Bit-addressable TH0
8BH Non Bit-addressable TL1
8AH Non Bit-addressable TL0
89H Non Bit-addressable TMOD
88H Bit-addressable TCON
87H Non Bit-addressable PCON
85H Non Bit-addressable DP1H
84H Non Bit-addressable DP1L
83H Non Bit-addressable DP0H
82H Non Bit-addressable DP0L
81H Non Bit-addressable SP
80H Bit-addressable P0
X TAL1
12 M h z
X TAL2
C 2 33p F
program, kita dapat menghentikan pelaksanaan program tersebut secara sementara dengan
meminta interrupt. Apabila mendapat permintaan interrupt, program counter (PC) akan diisi
alamat vector interrupt, setelah interrupt selesai dilaksanakan maka CPU kembali ke program
utama yang ditingalkan.
a. Interrupt yang tak dapat dihalangi oleh perangkat lunak (non maskable interrupt),
misalnya reset
interrupt jenis ini adalah INT0, INT1, Timer/Counter 1 serta interrupt serial.
Intruksi RETI harus digunakan untuk kembali dari layanan rutin interrupt. Intruksi ini
dipakai agar saluran interrupt kembali dapat dipakai. Alamat layanan rutin interrupt dari
timer dan satu interrupt port serial. Interrupt eksternal INT 0, INT 1 dan Reset masing-masing
Interupt Enable
Sumber Interupt dapat diaktifkan dan dimatikan secara individual atau dengan
mengatur satu bit di SFR yang bernama IE (Interupt Enable). Bit-bit IE didefinisikan
sebagai berikut :
Jika akan mengaktifkan interrupt 0 (INT0), nilai yang harus diberikan ke IE adalah 81H (yaitu
memberikan logika 1 ke EA dan EX0).
Prioritas Interupt
Setiap Sumber interrupt dapat interrupt secara individual menjadi satu atau dua tingkat
prioritas dengan mengatur bit SFR yang bernama IP, Interupt dengan prioritas rendah dapat
diinterupt oleh interrupt yang memiliki prioritas lebih tinggi, tetapi tidak bisa di interrupt oleh
interrupt dengan prioritas lebih rendah. Interrupt prioritas tertinggi tidak dapat diinterupt oleh
sumber interrupt lain.
Bila permintaan interrupt dengan tingkat prioritas berbeda diterima pada saat yang
sama, interrupt dengan prioritas lebih tinggi yang dilayani. Sedangkan bila prioritasnya sama,
maka akan dilakukan poling untuk menentukan mana yang dilayani. Bit-bit pada IP adalah
sebagai berikut :
Register R0 dan R1 dapat digunakan untuk pengalamatan tak langsung pada RAM internal.
Sisa register lainya tidak dapat digunakan untuk pengalamatan tak langsung.
CY (Carry Flag)
Carry Flag bernilai ‘1’ jika sebuah penjumlah menghasilkan nilai lebih dari 255
(FFH) dan Carry Flag juga akan menghasilkan nilai ‘1’ jika operasi aritmatika
pengurangan menghasilkan nilai kurang dari ‘0’
AC (Auxiliary Carry)
Auxiliary Carry Flag bernilai ‘1’ jika penjumlahan Binary Coded Decimal (BCD)
menghasilkan nilai lebih dari 9
F0
Flag 0 merupakan general purpose flag yang dapat digunakan oleh user
OV (Overflow Flag)
Overflow flag bernilai ‘1’ jika ada penambahan atau pengurangan signed number yang
menghasilkan nilai lebih dari +127 atau kurang dari -128. Jika proses penambahan
atau pengurangan tidak menggunakan signed number maka perubhana OV dapat
diabaikan
P (Parity Flag)
Parity Flag digunakan untuk mengetahui jumlah ganjil bit yang bernilai ‘1’ pada
accumulator. Jika pada accumulator jumlah bit yang bernilai ‘1’ sama dengan ganjil
maka Parity Flag akan bernilai ‘1’, sedangkan jika jumlah bit yang nilai ‘1’ sama
dengan genap maka Parity Flag akan bernilai ‘0’
5.7 Accumulator
Register Accumulator (ACC) sebuah register yang digunakan untuk general purpose
atau juga digunakan untuk dalam proses pertambahan, perkalian dan pembagian. ACC
akan menyimpan hasil perkalian 8 bit terbawah dan hasil pertambahan dan pembagian.
5.8 Stack Pointer (SP)
Stack Pointer (SP) merupakan register 8 bit yang berisi lokasi dimana data alamat
stack teratas disimpan. Intruksi PUSH, LCALL, proses interrupt dan sejenisnya akan
menambah nilai pada SP. Sedangkan instruksi POP, RET, RETI adan sejnisnya akan
mengurangi nilai pada SP.
5.9 Data Pointer (DPTR)
Data Pointer (DPTR) merupakan register 16 bit yang terdiri dari 8 bit data pointer
High (DPH) dan 8 bit data pointer low (DPL). DPTR umumnya digunakan untuk
mengakses alamat pada memori eksternal.
BAB 6
SET INTRUKSI DAN PEMOGRAMAN ASSEMBLY MSC51
Pada mode ini operand ditentukan dari sebuah alamat 8 bit. Hanya berlaku untuk
Mode ini menggunakan Register tertentu berisi Data yang menunjukan Alamat. Bisa
berlaku untuk internal dan external RAM. Register untuk menunjukkan alamat
tersebut adalah R0 atau R1, maupun Stack Pointer untuk operasi 8 bit. Untuk
Contoh: MOV A,@R0 (isi accumulator dengan alamat yang ditunjukkan oleh isi R0)
Pengalamatan Register
Pengalamatan mode ini lebih effisien dan mengeleminasi satu byte alamat
Immediate Constant
Pengalamatan bit adalah penunjukan alamat lokasi bit baik dalam RAM internal (byte
32 sampai 47) atau bit perangkat keras. Untuk melakukan pengalamatan bit digunakan
symbol titik (.), misalnya FLAGS.3, 40.5, 21H.1 dan ACC.7. Tabel dibawah
3 Perangkat Intruksi
Mikrokontroller AT89C51 memiliki 256 perangkat intruksi. Seluruh intruksi dapat
dikelompokan dalam 4 bagian yang meliputi intruksi 1 byte sampai 4 byte. Apabila frekuensi
clock mikrokontroller yang digunakan adalah 12 Mhz, kecepatan pelaksanaan intruksi akan
bervarias dari 1 hingga mikrodetik. Perangkat intruksi mikrokontroller AT89C51 dapat dibagi
menjadi lima kelompok sebagai berikut :
Intruksi Transfer data
Intruksi ini memindahkan data antara register-register, memori-memori, register-
memori, antar muka register dan antar muka memori.
Tabel 6.2 Intruksi Transfer Data
Instruksi Aritmatika
Intruksi ini melaksanakan operasi aritmatika yang meluputi penjumlahan,
pengurangan, penambahan satu (inkremen), pengurangan satu (dekremen), perkalian dan
pembagian.
Tabel 6.3 Intruksi Aritmatika
Instruksi Percabangan
Instruksi ini mengubah urutan normal pelaksanaan suatu program. Dengan instruksi
ini program yang sedang dilaksanakan akan mencabang ke suatu alamat tertentu. Intruksi
percabangan dibedakan atas 2 yaitu : percabangan bersyarat dan percabangan tanpa syarat.
Tabel 6.5 Intruksi Percabangan
● Intruksi-intruksi mesin
● Pengarah-pengarah assembler
● Kontrol-kontrol assembler
● Komentar-komentar
mode-mode assembler dan aliran assembly langsung (misalnya $TITLE). Komentar perlu
Baris-baris program yang mengandung instruksi mesin atau pengarah assembler harus
mengikuti aturan program assembler ASM51. masing-masing baris atas beberapa field yang
ORG
0100H ; AWAL PROGRAM YANG AKAN DIJALANKAN
START :
ISI PROGRAM ASSEMBLER
.
.
.
END
Catatan :
Setiap pembuatan program tidak boleh di mulai dari alamat 0000H. jika pembuatan
program di mulai dari alamat 0000H maka program dipastikan tidak akan berjalan sebab
0000 di isi oleh intrupt reset. Sebaiknya pembuatan program di mulai dari alamat memori