Sistem Mikroprosessor I Ilham Ari Elbaith Zaeni, S.T. 1 BAB I MIKROPROSESOR DAN PERKEMBANGANNYA 1.1 Pengenalan Dasar Mikroprosesor Mikroprosesor berasal dari kata microproccessor yang berarti peralatan pengolah atau pemroses data yang berukuran relatif kecil. Data diolah dan diproses dalam bentuk digital dan dikeluarkan dalam besaran – besaran digital. Di sini informasi digital yang kita masukkan melalui saluran masukan akan diolah sesuai dengan program yang yang telah kita berikan. Program yang diberikan pada mikroprosesor merupakan kumpulan kode operasi (Operation Code-OPCODE) dalam bentuk sandi heksadesimal yang disusun sedemikian rupa dengan urutan – urutan pola logika yang benar sehingga membentuk sebuah program yang sesuai dengan keperluan yang pada akhirnya nanti akan dikeluarkan pada saluran keluaran dalam bentuk informasi digital. Informasi digital tersebut harus berupa informasi dua level tegangan yang telah ditetapkan yaitu logika 1 (High Level Voltage) berupa tegangan kira – kira antara 3,5 – 5 volt atau logika 0 (Low level Voltage) berupa tegangan antara 0 – 0,8 volt. 1.2 Sejarah Perkembangan Mikroprosesor Mikroprosesor pertama adalah Intel 4004, merupakan mikroprosesor 4 bit (nibble). Pada tahun 1971, Intel mengeluarkan mikroprosesor versi terbaru Intel 8008, yang merupakan perluasan Intel 4004. Mikroprosesir 8008 mampu mengalamati memori 16KByte.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
1
BAB I
MIKROPROSESOR DAN PERKEMBANGANNYA
1.1 Pengenalan Dasar Mikroprosesor
Mikroprosesor berasal dari kata microproccessor yang berarti peralatan
pengolah atau pemroses data yang berukuran relatif kecil. Data diolah dan
diproses dalam bentuk digital dan dikeluarkan dalam besaran – besaran
digital. Di sini informasi digital yang kita masukkan melalui saluran masukan
akan diolah sesuai dengan program yang yang telah kita berikan. Program
yang diberikan pada mikroprosesor merupakan kumpulan kode operasi
(Operation Code-OPCODE) dalam bentuk sandi heksadesimal yang disusun
sedemikian rupa dengan urutan – urutan pola logika yang benar sehingga
membentuk sebuah program yang sesuai dengan keperluan yang pada
akhirnya nanti akan dikeluarkan pada saluran keluaran dalam bentuk
informasi digital. Informasi digital tersebut harus berupa informasi dua level
tegangan yang telah ditetapkan yaitu logika 1 (High Level Voltage) berupa
tegangan kira – kira antara 3,5 – 5 volt atau logika 0 (Low level Voltage)
berupa tegangan antara 0 – 0,8 volt.
1.2 Sejarah Perkembangan Mikroprosesor
Mikroprosesor pertama adalah Intel 4004, merupakan
mikroprosesor 4 bit (nibble). Pada tahun 1971, Intel mengeluarkan
mikroprosesor versi terbaru Intel 8008, yang merupakan perluasan Intel
4004. Mikroprosesir 8008 mampu mengalamati memori 16KByte.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
2
Mikroprosesor 8008 mempunyai kelemahan ukuran memori yang kecil,
kecepatan rendah, dan set instruksi terbatas, maka pada tahun 1973,
Intel mengeluarkan mikroprosesor 8080, sebagai mikroprosesor-8 bit
pertama. Perkembangan ini memicu beberapa perusahaan lain berlomba
memunculkan mikroprosesor 8 bit dengan versinya masing-masing,
sebagaimana diperlihatkan dalam Tabel 1.1.
Tabel 1.1 Mikroprosesor 8-bit awal
Pabrik Nomor seri
Fairchild F-8
Intel 8080
MOS Technology 6502
Motorola MC6800
National Semiconductor IMP-8
Rockwell International PPS-8
Zilog Z-8
Pada tahun 1975, Intel mengenalkan versi baru 8080, yaitu 8085,
yang merupakan mikroprosesor 8-bit terakhir. Kemajuan besar pada 8085
adalah internal clock generator, sistem control internal, dan frekuensi clock
yang lebih tinggi. Intel mengeluarkan mikroprosesor modern pada tahun
1978, yaitu mikroprosesor keluarga 80X86. Mikroprosesor ini mempunyai
lebar data 16 bit dan merupakan perkembangan mikroprosesor 8085, yang
mempunyai lebar data 8 bit. Mikroprosesor 8086 merupakan awal
perkembangan sistem komputer berikutnya. Evolusi perkembangan
mikroprosesor Intel ditunjukkan dalam Tabel 1.2.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
3
Tabel 1.2 Evolusi perkembangan mikroprosesor Intel
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
4
BAB II
ARSITEKTUR MIKROPROSESOR
2.1 Sistem Mikroprosesor
Agar mikroprosesor dapat berhubungan dan mengatur dengan mudah unit
– unit yang berada di luar mikroprosesor maka diperlukan suatu konsep bus
mikroprosesor yang terdiri dari bus data (data bus), bus alamat (address
bus) dan bus kontrol (control bus) seperti yang ditunjukkan dalam Gambar
1.1.
Gambar 2.1. Struktur Bus Mikroprosesor
Di samping ketiga sistem bus tersebut maka mikroprosesor juga
membutuhkan pewaktu maupun catu daya. Bus – bus tersebut akan digunakan
untuk berkomunikasi dengan peralatan di luar mikroprosesor baik dengan
memori unit maupun I/O (Input/Output) unit. Mikroprosesor Unit (MPU)
atau yang sering disebut dengan CPU (Central Processing Unit) bertugas
sebagai pengendali utama dalam sistem tersebut sekaligus sebagai unit
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
5
pengolah utama yang berarti segala sesuatu yang ada hubungannya dengan
pengendalian sistem secara keseluruhan dan pemrosesan data seluruhnya
ditangani oleh CPU. Pada CPU tersebut dilengkapi dengan bagian yang
paling penting yaitu control unit (unit pengontrol) dan Arithmetic Logic Unit
(disingkat ALU yaitu unit aritmatika dan logika).
Unit penyimpan (memory unit) digunakan sebagai catatan maupun sebagai
bahan bacaan atau referensi dari mikroprosesor, dimana dalam hal ini dibagi
menjadi dua yaitu RAM (Random Access Memory) yaitu pengingat yang
dapat diakses secara acak baik RAM dinamik maupun RAM statik dan ROM
(Read Only Memory) yaitu pengingat yang hanya dapat dibaca saja. Secara
keseluruhan suatu mikroprosesor harus terdiri dari CPU (mikroprosesor), unit
memori dan unit I/O, seperti yang ditunjukkan dalam Gambar 2.2.
Gambar 2.2. Blok Diagram Unit Mikroprosesor
2.2 Memori
Memori digunakan untuk menyimpan baik program yang dijalankan oleh
mikroprosesor maupun data yang diolah oleh mirkoprosesor.
2.3 Sistem I/O
Ruang I/O (input/output) dalam sistem komputer terentang dari port 0000H-
FFFFH. Pengalamatan port I/O mirip dengan alamat memori, yaitu hanya
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
6
mengalamati piranti I/O. Piranti I/O memungkinkan mikroprosesor untuk
berkomunikasi antarbagian di dalamnya atau dengan dengan dunia luar. Ruang
I/O membantu komputer untuk mengakses hingga 64K byte piranti I/O yang
berbeda.
2.4 Mikroprosesor
Mikroprosesor mengontrol memori dan I/O melalui sejumlah jalur
koneksi yang disebut bus. Bus memilih piranti I/O atau memori, mentransfer
data antara piranti I/O dan memori dengan mikroprosesor, dan mengontrol
sistem I/O dan memori. Memori dan I/O dikontrol melalui instruksi yang
disimpan dalam memori dan dijalankan oleh mikroprosesor.
Mikroprosesor menjalankan tiga pekerjaan utama: (1) melakukan transfer
data antara mikroprosesor sendiri dengan sistem memori atau I/O, (2) operasi
aritmatika dan logika sederhana, dan (3) mengatur aliran program melalui
pengambilan keputusan sederhana.
Kekuatan mikroprosesor terletak pada kemampuan untuk
mengeksekusi ratusan juta instruksi per detik dari program atau perangkat
lunak (kelompok instruksi) yang disimpan dalam sistem memori. Mikroprosesor
awal (8086-80286) hanya mampu memanipulasi data 8bit dan 16bit, sedangkan
mikroprosesor 80386-Pentium II mampu memanipulasi 8bit, 16bit, dan 32bit.
2.5 Bus
Bus merupakan sekumpulan kabel sejenis yang mengkoneksikan komponen
dalam sistem komputer. Bus yang mengkoneksikan bagian-bagian sistem
komputer melakukan transfer alamat, data, dan informasi kontrol antara
mikroprosesor dengan memori dan sistem I/O nya. Pada sistem komputer
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
7
berbasis mikroprosesor, terdapat tiga bus untuk mentransfer informasi: alamat,
data, dan kontrol. Gambar 1.4 memperlihatkan bagaimana bus
mengkoneksikan berbgai macam komponen sistem seperti sistem
mikroprosesor, memori read/write (RAM), read only memory (ROM), dan
beberapa piranti I/O.
Bus alamat. Bus alamat meminta lokasi memori dari memori atau lokasi I/O
dari piranti I/O. Bus ini disebut juga sebagai bus unidirectional (satu arah). Jika
suatu memori dialamati, makabus alamat berisi alamat memori yang lebarnya
bervariasi pada berbagai versi mikroprosesor, sebagai contoh:
- 8086/8088 mampu mengalamati 1M byte menggunakan alamat 20bit yang
memilih lokasi 00000H-FFFFFH
- 80286 mampu menagalamati 16Mbyte menggunakan alamat 24bit yang
memilih lokasi 000000H-FFFFFFH.
Bus data. Bus data mentransfer informasi antara mikroprosesor dengan
memori dan I/O nya. Ukuran transfer data bervariasi dari 8bit samapai 64bit
pada berbagai jenis mikroprosesor keluarga Intel, sebagai contoh:
- 8088 mempunyai bus data 8bit yang mentransfer data 8bit pada satu
waktu.
- 8086, 80286 mentransfer data 16 bit pada bus datanya.
- 80386DX, 80486SX, 80486DX mentransfer data 32bit.
- Pentium-Pentium IV mentranfer 64 bit
Bus kontrol. Bus kontrol berfungsi untuk mengirimkan sinyal yang digunakan
untuk menyinkronkan operasi masing-masing elemen komputer. Bus kontrol
berisi jalur yang memilih memori atau I/O dan menyebabkan memori atau I/O
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
8
tersebut melakukan operasi baca (read) atau tulis (write). Pada kebanyakan
sistem komputer terdapat 4 koneksi bus kontrol:
- MEMR (memory read control)
- MEMW(memory write control)
- IOR (I/O read control)
- IOW (I/O write control)
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
9
BAB III
MEMORI
3.1 Prinsip Konstruksi Memori
Gambar 3.1 menunjukkan prinsip bagaimana konstruksi memori dibangun. Setiap
kombinasi logika pada jalur alamat A0 – A15 sesuai dengan satu lokasi. Masing-
masing lokasi memori berisi 8 bit, ini sesuai dengan lebar bus data.
Gambar 3.1 Konstruksi Memori
MEMR dan MEMW
Setelah meletakkan sebuah alamat pada bus alamat, mikroprosesor akan membaca
isi dari lokasi memori, atau menulis data ke dalam memori. Untuk menulis lokasi
memori, mikroprosesor mengirim sinyal kontrol MEMORY READ ( MEMR).
Untuk menyimpan byte data pada lokasi memori, mikroprosesor mengirim sinyal
kontrol MEMORY WRITE ( MEMW ). Tanda garis pada MEMR dan MEMW
menandakan bahwa sinyal kontrol aktif low.
Tabel 3.1 menunjukkan bagian dari alamat memori yang mungkin.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
10
Tabel 3.1. Lokasi alamat dari 16 jalur alamat
Logic combination on the address line Hex
address
Memory
location 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
L L L L L L L L L L L L L L L L 0000 0
L L L L L L L L L L L L L L L H 0001 1
L L L L L L L L L L L L L L H L 0002 2
L L L L L L L L L L L L L L H H 0003 3
L L L L L L L L L L L L L H L L 0004 4
L H L H H H L L H H H H L H H H 5CF7 23799
H H H H H H H H H H H H H H H L FFFE 65534
H H H H H H H H H H H H H H H H FFFF 65535
3.2 Address Decoding
Dengan 16 jalur alamat, mikroprosesor dapat mengalamati 65536 (216
) lokasi
memori. Untuk itu, anda memerlukan address decoder. Saat alamat berada pada
jalur alamat, address decoder memilih lokasi memori yang sesuai. Sebagai contoh,
jika alamat 0000H terdapat pada bus alamat, address decoder akan memilih lokasi
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
11
0, dengan alamat 0001H maka akan memilih lokasi 1. Proses akan berjalan terus
hingga decoder memilih lokasi 65535 (lokasi memori) dengan alamat FFFFH.
Pada Gambar 2.2 dapat dilihat bagaimana lokasi ditulis (di sini lokasinya 0002H).
Saat signal kontrol MEMR dikirim, isi memori diletakkan pada bus data, yang
mana data selanjutnya dibaca oleh mikroprosesor.
Gambar 3.2 Penulisan Lokasi Memori
Address decoding 8K RAM/EPROM
Sistem memori sebuah komputer dibangun dari beberapa bagian memori dan
setiap bagian memori dibangun dari beberapa chip memori yang kapasitasnya
kecil. Lihat pada 8K RAM/EPROM. Anda akan melihat bahwa bagian memori
8K dibangun dari 4 buah chip memori 2K.
Teknik untuk membangun bagian seperti ini anda harus melakukan :
Untuk chip memori 2K, anda memerlukan 11 jalur alamat, supaya dapat
mengalamati alamat sebanyak 2048 lokasi memori (211
= 2048).
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
12
Untuk unit memori 8K anda memerlukan 13 jalur alamat. Sebelas jalur alamat A0
– A10 , akan diperlukan untuk setiap chip memori 2K, dan selebihnya digunakan
untuk memilih satu dari keempat chip memori yang ada.
Dari keempat kombinasi sinyal yang mungkin pada 2 jalur alamat yaitu A11 dan
A12 , anda dapat memperoleh 4 sinyal enable untuk 4 chip memori 2K. Untuk ini
anda memerlukan address decoder. Gambar 2.3 menunjukkan contoh address
decoder.
Gambar 3.3 Address Decoder Memori 2KB
Sesuai kombinasi signal pada input A dan B, salah satu dari outputnya akan selalu
berubah ke L (aktif low). Jenis decoder ini disebut decoder 1 dari 4 sebab 1 dari 4
signal yang mungkin akan nampak pada output.
Dalam Gambar 2.4 terlihat bahwa jalur alamat A0 – A10 dihubungkan ke
seluruh chip memori. Dengan kombinasi signal pada jalur alamat, anda dapat
memilih suatu lokasi memori di dalam chip. Chip dapat menerima atau mengirim
data jika kombinasi signal pada jalur alamat A11 dan A12 sesuai dengan alamat
yang ditetapkan pada chip tersebut. Signal enable yang dibangkitkan oleh address
decoder dihubungkan ke latch select chip pada chip memori.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
13
Gambar 3.4 Pemanfaatan Address Decoder pada Memori 4 Keping 2K RAM
3.3 Ukuran Memori
Kapasitas memori dinyatakan dalam kilobyte atau K. Waktu akses suatu komputer
adalah waktu yang diperlukan oleh memori untuk meletakkan byte data dari bus
data ke memori. Lamanya waktu sekitar beberapa ratus nanosecond.
Dalam teknologi komputer 1K adalah 1024 byte. Dalam teknik 1K adalah 1000,
tetapi di sini kita menggunakan 1024. Dengan 10 jalur alamat, anda dapat
mengalamati 1kilo atau 1024 (210
) lokasi memori. Sebuah mikrokomputer dengan
16 jalur alamat dapat mengalamati 64K lokasi memori.
64K memori pada komputer dapat dibagi dalam 8 blok memori. Jalur alamat yang
dibutuhkan untuk sebuah blok 8K memori adalah 13 jalur (A0-A12), sesuai
perhitungan :
1K = 1084 = 210
( 10 jalur alamat )
8 = 23 ( 3 jalur alamat )
Tiga jalur alamat (A13, A14, A15) digunakan untuk mengalamati 8 blok lokasi
memori yang berbeda. Pada sistem MFA setting blok alamat pada board memori
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
14
dapat dilakukan secara manual yaitu dengan mengubah-ubah kombinasi switch.
Setiap board mempunyai rangkaian komparator yang berfungsi untuk
membandingkan alamat yang berada pada jalur A13, A14, A15 dengan alamat yang
telah ditetapkan pada setiap board memori. Dalam Gambar 2.5 dapat dilihat blok
memori 8K yang dihubungkan dengan bus alamat.
Gambar 3.5 Blok Memori 8K Dihubungkan dengan Bus Alamat
Konstruksi 8K RAM secara detail dapat dilihat dalam Gambar 3.6
Gambar 3.6 Konstruksi 8K RAM secara detail
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
15
3.4 Proses Baca pada Memori
Adapun proses baca adalah sebagai berikut :
1. Mikroprosesor mengirimkan alamat memori ke jalur A0 – A15.
2. Mikroprosesor mengirimkan sinyal kontrol MEMR yang menugaskan unit
memori untuk memindahkan isi dari memori yang dialamati ke bus data.
3. Isi dari memori yang dialamati diletakkan pada bus data.
4. Pada perubahan L-H pada jalur kontrol MEMR, mikroprosesor membaca
data dari bus data ke dalam register internal.
5. Pada saat proses pembacaan sudah lengkap, memori menghentikan
pemindahan data pada bus data.
Gambar 3.7 Timing diagram proses baca pada memori
3.5 Proses Tulis pada Memori
Adapun proses tulis pada memori adalah sebagai berikut:
1. Mikroprosesor mengirimkan alamat memori ke jalur A0 – A15.
2. Meletakkan data baru untuk memori ke bus data.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
16
3. Sinyal kontrol MEMW diaktifkan untuk menulis data pada alamat
memori yang telah ditentukan
4. Proses penulisan berakhir dengan tingginya (H) sinyal kontrol MEMW .
5. Mikroprosesor menghentikan data pada bus data pada waktu yang sama.
Gambar 3.8 Timing diagram proses tulis pada memori
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
17
BAB IV
INPUT DAN OUTPUT
4.1 Rangkaian Port Output
Di dalam port output (Gambar 1.3), hanya terdapat beberapa bagian
komponen saja, yaitu pembanding alamat dan penahan data. Penahan data
dibangun dari 8 buah D flip-flop, yang dapat anda temukan dalam bentuk satu
buah IC. Seluruh input clock dan input reset pada 8 buah D flip-flop
dihubungkan menjadi satu. Flip-flop bekerja saat ada perubahan signal dari
low ke high (rising edge) pada keadaan ini flip-flop mengambil signal pada
input D dan menahannya pada output Q.
Gambar 4.1. Rangkaian Port Output
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
18
Pembanding alamat menggunakan rangkaian pembanding (comparator) yang
dibangun dari gerbang Exclusive Nor (XNOR). Gerbang XNOR akan
memberikan logika tinggi pada output, hanya jika signal di kedua input
sama.
Keluaran dari 8 buah komparator dihubungkan ke input 2 gerbang AND. Ini
didesain untuk memberikan output logika tinggi hanya jika seluruh input
adalah tinggi. Setiap signal alamat akan dibandingkan dengan alamat port
yang telah ditetapkan. Signal output tinggi pada TP2 (comparator output)
akan dihasilkan jika kondisinya sebagai berikut :
4 switch input S1 – S8 sama dengan signal alamat pada jalur alamat A0 – A7
5 signal control IOW aktif (keadaan logika rendah)
Karena D flip-flop dikontrol oleh rising edge, maka signal output harus
diinverter sebelum dihubungkan ke input clock flip-flop. Gambar 1.4
menunjukkan timing diagram transmisi data dari mikroprosesor ke port
output.
Gambar 4.2. Timing Diagram Proses Tulis dari Mikroprosesor ke Unit Output
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
19
Proses Tulis dari Mikroprosesor ke Unit Output:
Pada time 1, mikroprosesor meletakkan alamat port pada jalur alamat A0 – A7.
Pada time 2, data output diletakkan pada bus data.
Pada time 3, mengaktifkan signal control IOW.
Pada time 4, signal control IOW (aktif rendah ) kembali ke tinggi.
Pada time 5, data ditahan pada port output.
4.2 Rangkaian Port Input
Dari Gambar 1.5 dapat diketahui perbedaan antara unit input dan unit output
yang pada prinsipnya adalah arah dari jalannya data. Delapan buah flip-flop
yang dipakai adalah tristate gate. Setelah mikroprosesor memberikan signal
control IOR, tristate gate meletakkan data pada bus data.
Gambar 4.3 Rangkaian Port Input
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
20
Jika signal alamat A0 – A7 sama dengan posisi switch pada port input S1 – S8,
dan jika signal control IOR aktif maka akan terdapat signal enable pada
tristate gate. Pada Gambar 4.4 dapat dilihat timing diagram proses baca
mikroprosesor – port input.
Gambar 4.4 Timing Diagram Proses Baca Mikroprosesor dari Port Input
Proses Baca Mikroprosesor dari Port Input:
Pada time 1, mikroprosesor meletakkan alamat port pada bus alamat A0 – A7.
Pada time 2, mikroprosesor menghasilkan signal L (logika rendah) pada IOR
yang menyebabkan port input memasukkan signal input ke bus data. Ini
terjadi setelah penundaan sebentar pada time 3.
Dengan perpindahan signal Low ke High pada control IOR, mikroprosesor
membaca data dari bus data (time 4).
Proses baca diakhiri saat IOR pindah ke logika tinggi, dan tristate gate
memutus jalur port input dengan bus data.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
21
BAB V
ARSITEKTUR MIKROKONTROLER
5.1 Arsitektur Mikrokontroler
Arsitektur mikrokontroler jenis AVR pertamakali dikembangkan
pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of
Technology yaitu Alf-Egil Bogen dan Vegard Wollan. Mikrokontroler AVR
kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang
dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin
yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang
termultipleksi.
Mikrokontroler AVR menggunakan teknologi RISC dimana set
instruksinya dikurangi dari segi ukurannya dan kompleksitas mode
pengalamatannya. Pada awal era industri komputer, bahasa pemrograman masih
menggunakan kode mesin dan bahasa assembly. Untuk mempermudah dalam
pemrograman para desainer komputer kemudian mengembangkan bahasa
pemrograman tingkat tinggi yang mudah dipahami manusia. Namun
akibatnya, instruksi yang ada menjadi semakin komplek dan membutuhkan
lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya menjadi
semakin lama. Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi
berukuran 16 bit dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda
dengan mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit
sampai 32 bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus
mesin membutuhkan 12 periode clock.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
22
AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis
arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi
dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose,
timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal,
serial UART, programmable Watchdog Timer, dan mode power saving, ADC
dan PWM internal.
AVR juga mempunyai In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang dalam sistem menggunakan
hubungan serial SPI. ATMega16. ATMega16 mempunyai throughput mendekati
1 MIPS per MHz membuat disainer sistem untuk mengoptimasi konsumsi daya
versus kecepatan proses.
Beberapa keistimewaan dari AVR ATMega16 antara lain:
1. Advanced RISC Architecture
130 Powerful Instructions – Most Single Clock Cycle Execution
32 x 8 General Purpose Fully Static Operation
Up to 16 MIPS Throughput at 16 MHz
On-chip 2-cycle Multiplier
2. Nonvolatile Program and Data Memories
8K Bytes of In-System Self-Programmable Flash
Optional Boot Code Section with Independent Lock Bits
512 Bytes EEPROM
512 Bytes Internal SRAM
Programming Lock for Software Security
3. Peripheral Features
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
23
Two 8-bit Timer/Counters with Separate Prescalers and Compare
Mode
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode,
and Capture Mode
Real Time Counter with Separate Oscillator
Four PWM Channels
8-channel, 10-bit ADC
Byte-oriented Two-wire Serial Interface
Programmable Serial USART
4. Special Microcontroller Features
Power-on Reset and Programmable Brown-out Detection
Internal Calibrated RC Oscillator
External and Internal Interrupt Sources
Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-
down, Standby and Extended Standby
Gambar 5.1 Konfigurasi pin ATMega16 (Andrianto, 2008: 1)
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
24
Pin-pin pada ATMega16 dengan kemasan 40-pin DIP (dual in-line package)
ditunjukkan oleh gambar 1. Guna memaksimalkan performa, AVR
menggunakan arsitektur Harvard (dengan memori dan bus terpisah untuk
program dan data).
5.2 Port sebagai input/output digital
ATMega16 mempunyai empat buah port yang bernama PortA, PortB,
PortC, dan PortD. Keempat port tersebut merupakan jalur bi-directional
dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit,
yaitu DDxn, PORTxn, dan PINxn. Huruf „x‟mewakili nama huruf dari port
sedangkan huruf „n‟ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn
terdapat pada I/O address PINx.
Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah
pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn
diset 0 maka Px berfungsi sebagai pin input.Bila PORTxn diset 1 pada saat
pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan.
Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin
dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi
reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin
terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat
mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke
kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
25
apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1) atau kondisi
output low (DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama
lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah
strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah,
maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua
pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke
kondisi output low juga menimbulkan masalah yang sama. Kita harus
menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output
high (DDxn=1, PORTxn=0) sebagai kondisi transisi.
Tabel 5.2 Konfigurasi pin port
DDxn PORTxn PUD
(In SFIOR) I/O Pull-Up Comment
0 0 X Input Tidak Tri State (Hi-Z)
0 1 0 Input Ya
Pxn akan
mengalirkan arus jika
di pull-down
0 1 1 Input Tidak Tri State (Hi-Z)
1 0 X Output Tidak Keluaran Rendah
1 1 X Output Tidak Keluaran Tinggi
Bit 2 – PUD : Pull-up Disable
Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun
register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0,
PORTxn=1).
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
26
5.3 Timer
Timer/counter adalah fasilitas dari ATMega16 yang digunakan untuk
perhitungan pewaktuan. Beberapa fasilitas chanel dari timer counter antara lain:
counter channel tunggal, pengosongan data timer sesuai dengan data pembanding,
bebas -glitch, tahap yang tepat Pulse Width Modulation (PWM), pembangkit
frekuensi, event counter external..
Gambar diagram block timer/counter 8 bit ditunjukan pada gambar 2.
Untuk penempatan pin I/O telah di jelaskan pada bagian I/O di atas. CPU dapat
diakses register I/O, termasuk dalam pin-pin I/O dan bit I/O. Device khusus
register I/O dan lokasi bit terdaftar pada deskripsi timer/counter 8 bit.
Gambar 5.2 Blok diagram timer/counter
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
27
Timing Diagram Timer/Counter
Timer/counter didesain sinkron clock timer (clkT0) oleh karena itu ditunjukkan
sebagai sinyal enable clock pada gambar 3. Gambar ini termasuk informasi ketika
flag interrupt dalam kondisi set. Data timing digunakan sebagai dasar dari operasi
timer/counter.
Gambar 5.3 Timing diagram timer/counter, tanpa prescaling
Sesuai dengan Gambar 8.3 timing diagram timer/counter dengan
prescaling maksudnya adalah counter akan menambahkan data counter
(TCNTn) ketika terjadi pulsa clock telah mencapai 8 kali pulsa dan sinyal clock
pembagi aktif clock dan ketika telah mencapai nilai maksimal maka nilai TCNTn
akan kembali ke nol. Dan kondisi flag timer akan aktif ketika TCNTn maksimal.
5.4 Serial pada ATMega16
Universal synchronous dan asynchronous pemancar dan penerima
serial adalah suatu alat komunikasi serial sangat fleksibel. Jenis yang utama
adalah :
a) Operasi full duplex (register penerima dan pengirim serial dapat berdiri
sendiri)
b) Operasi Asychronous atau synchronous
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
28
c) Master atau slave mendapat clock dengan operasi synchronous
d) Pembangkit baud rate dengan resolusi tinggi
e) Dukung frames serial dengan 5, 6, 7, 8 atau 9 Data bit dan 1 atau 2 Stop bit
f) Tahap odd atau even parity dan parity check didukung oleh hardware
g) Pendeteksian data overrun
h) Pendeteksi framing error
i) Pemfilteran gangguan (noise) meliputi pendeteksian bit false start dan
pendeteksian low pass filter digital
j) Tiga interrupt terdiri dari TX complete, TX data register empty dan RX
complete.
k) Mode komunikasi multi-processor
l) Mode komunikasi double speed asynchronous
Generator Clock
Logic generator clock menghasilkan dasar clock untuk pengirim dan
penerima. USART mendukung empat mode operasi clock: Normal Asynchronous,
Double Speed Asynchronous mode Master Synchronous dan Slave Synchronous.
Bit UMSEL pada USART control dan status register C (UCSRC) memilih
antara operasi Asychronous dan Synchronous. Double speed (hanya pada mode
Asynchronou ) dikontrol oleh U2X yang mana terdapat pada register UCSRA.
Ketika mengunakan mode operasi synchronous (UMSEL = 1) dan data
direction register untuk pin XCk (DDR_XCK) mengendalikan apakah sumber
clock tersebut adalah internal (master mode) atau eksternal (slave mode) pin-pin
XCK hanya akan aktif ketika menggunakan mode Synchronous.
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
29
BAB VI
SET INSTRUKSI
6.1 Bahasa Assembly
Bahasa yang dipakai untuk memprogram mikrokontroler AVR adalah bahasa
assembly AVR atau bahasa C. Dalam buku ini semua program ditulis dalam
bahasa assembly AVR. Berikut adalah contoh sebuah program aplikasi untuk
mikrokontroler AVR :
.include “m8535def.inc”
.org 0x0000
rjmp main Inisialisasi program
main: ldi r16,low(RAMEND) out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,0xff
out ddra,r16 Program utama out PortA,r16
cbi PortA,0
cbi PortA,1
stop: rjmp stop
6.2. Bahasa C
Selain menggunakan bahasa assembly, mikrokontroler AVR dapat diprogram
dengan bahasa C. Bahasa C yang digunakan untuk memprogram AVR memiliki
kesamaan sintaks dengan bahasa C++ yang digunakan pada pemrograman
computer. Struktur bahasa C pada AVR adalah:
#include <mega16.h>
#include <delay.h> deklarasi file header
Int I; deklarasi variabel
void main(void)
{ DDRA=0xFF; inisialisasi fungsi register
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
30
PORTD=0xFF;
while (1)
{
PORTA=0x0F; program utama
delay_ms(100);
PORTA=0xf0;
delay_ms(100);
};
}
6.3 Tipe data dalam bahasa C
Tipe data merupakan bagian program yang paling penting karena tipe data
mempengaruhi setiap instruksi yang akan dilaksanakan oleh AVR. Misalnya saja
5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika
5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya
bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang
tepat akan membuat proses operasi data menjadi lebih efisien dan efektif. Ada
berbagai macam tipe data dalam bahasa C
6.4 Operator dalam bahasa C
Ada berbaga jenis operator dalam bahasa C yaitu:
Operator Aritmatika
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
31
Operator Kondisi
Operator Logika
6.5 Instruksi dalam Bahasa C
Statement IF
Seperti halnya Pascal, perintah IF dalam C++ juga digunakan untuk menyatakan
pernyataan kondisional (bersyarat). Sintaks sederhana IF adalah
if (kondisi)
statement;
Statement pada sintaks di atas akan dilakukan jika kondisinya bernilai
TRUE (tidak sama dengan nol). Statement IF juga dapat ditambahkan ELSE
sebagai konsekuensi alternatif jika kondisi tidak dipenuhi (FALSE). Sintaksnya:
if (kondisi)
{
statement1; statement2;
.
.
} else {
statement1;
statement2; }
Sistem Mikroprosessor I
Ilham Ari Elbaith Zaeni, S.T.
32
Statement SWITCH
Statement SWITCH juga berfungsi sama dengan IF. Perintah SWITCH
sama dengan perintah CASE OF dalam PASCAL. Sintaks: