Top Banner
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.
54

Diktat Mikroprosesor

Nov 30, 2015

Download

Documents

jachle's
Welcome message from author
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
Page 1: Diktat Mikroprosesor

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.

Page 2: Diktat Mikroprosesor

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.

Page 3: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

3

Tabel 1.2 Evolusi perkembangan mikroprosesor Intel

Page 4: Diktat Mikroprosesor

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

Page 5: Diktat Mikroprosesor

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

Page 6: Diktat Mikroprosesor

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

Page 7: Diktat Mikroprosesor

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

Page 8: Diktat Mikroprosesor

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)

Page 9: Diktat Mikroprosesor

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.

Page 10: Diktat Mikroprosesor

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

Page 11: Diktat Mikroprosesor

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).

Page 12: Diktat Mikroprosesor

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.

Page 13: Diktat Mikroprosesor

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

Page 14: Diktat Mikroprosesor

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

Page 15: Diktat Mikroprosesor

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.

Page 16: Diktat Mikroprosesor

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

Page 17: Diktat Mikroprosesor

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

Page 18: Diktat Mikroprosesor

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

Page 19: Diktat Mikroprosesor

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

Page 20: Diktat Mikroprosesor

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.

Page 21: Diktat Mikroprosesor

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.

Page 22: Diktat Mikroprosesor

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

Page 23: Diktat Mikroprosesor

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)

Page 24: Diktat Mikroprosesor

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

Page 25: Diktat Mikroprosesor

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).

Page 26: Diktat Mikroprosesor

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

Page 27: Diktat Mikroprosesor

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

Page 28: Diktat Mikroprosesor

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.

Page 29: Diktat Mikroprosesor

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

Page 30: Diktat Mikroprosesor

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

Page 31: Diktat Mikroprosesor

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; }

Page 32: Diktat Mikroprosesor

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:

switch (variabel) { case value1 : statement1; break; case value2 : statement2; break; . . default : statement; /* optional */ break; }

Perintah switch akan memeriksa nilai virabel, jika memenuhi nilai value1 maka

instruksi statement1 akan dilaksanakan. Jika memenuhi nilai value2 maka

instruksi statement2 akan dilaksanakan dan seterusnya. Jika tidak ada yang

memenuhi maka statement default yang akan dilaksanakan.

Statement FOR

Statement FOR digunakan untuk menyatakan perulangan (seperti PASCAL).

Instruksi di dalam statement FOR akan terus dilaksanakan selama syarat

perulangan dipenuhi.

Sintaksnya:

for (ungkapan1; ungkapan2; ungkapan3) { . . }

- Ungkapan1 merupakan statement awal (inisialisasi)

- Ungkapan2 merupakan kondisi/syarat perulangan dilakukan

- Ungkapan3 merupakan statement control untuk perulangan

Page 33: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

33

Statement WHILE

Statement WHILE juga digunakan untuk menyatakan perulangan. Penggunaan-

nya mirip pada PASCAL. Instruksi di dalam loop while akan terus dilakukan

selama syarat kondisi dipenuhi. Sintaksnya:

while (kondisi)

{ .

.

}

Page 34: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

34

BAB VII

PENGENDALIAN LED DAN MOTOR DC

7.1 Register I/O

Setiap port ATMega16 terdiri dari 3 register I/O yaitu DDRx, Portx dan PINx.

DDRx (Data Direction Register)

Register DDRx digunakan untuk memilih arah pin. Jika DDRx = 1 maka

Pxn sebagai pin output Jika DDRx = 0 maka Pxn sebagai input.

Portx (Port Data Register)

Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau

untuk mengaktifkan resistor pullup.

1. Portx berfungsi sebagai output jika DDRx = 1 maka : Portxn = 1 maka pin

Pxn akan berlogika high. Portxn = 0 maka pin Pxn akan berlogika low.

2. Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0 maka :

Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up.

Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.

Tabel 7.1 Konfigurasi Port

DDRxn Portxn I/O Pull up Comment

0 0 Input No Tri state (Hi-Z)

0 1 Input Yes Pull up aktif

1 0 Output No Output Low

1 1 Output No Output High

Catatan :

x menunjukkan nama port (A,B,C,D)

n menunjukkan nomor bit (0,1,2,3,4,5,6,7)

Nilai awal (initial value) seluruh register I/O adalah 00h.

Page 35: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

35

PINx (Port Input Pin Address) Digunakan sebagai register input.

7.2 Program Pengendalian LED dalam Bahasa C

Pengendalian LED dengan AVR pada prinsipnya adalah memberikan

keluaran melalui pin output AVR. Pengendalian LED dapat dilakukan dengan

menggunakan port yang dimiliki oleh AVR yaitu PORTA, PORTB, PORTC dan

PORTD. Hal ini bisa dilakukan dengan menggunakan intruksi berikut:

PORTX=nilai_word;

digunakan untuk mengendalikan 8 buah LED sekaligus dengan cara

memberikan nilai sebesar 8 bit (type data word) ke PORTX (port yang terhubung

dengan LED)

Atau

PORTX.n=nilai_bit

digunakan untuk mengendalikan 1 buah LED sekaligus dengan cara

memberikan nilai sebesar 1 bit ke PORTX.n (pin yang terhubung dengan LED)

Contoh:

Hubungakan 8 buah LED ke PORTA seperti pada rangkaian dan buatlah program

berikut.

Page 36: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

36

void main(void)

{

DDRA=0xFF;

PORTD=0xFF; while (1)

{

// Place your code here PORTA=0x0F; memberikan nilai 00001111 ke port A

delay_ms(100);

PORTA=0xf0; memberikan nilai 11110000 ke port A delay_ms(100);

};

}

Page 37: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

37

Page 38: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

38

Page 39: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

39

BAB VIII

LCD (LIQUID CRYSTAL DISPLAY)

8.1 Prinsip Kerja LCD

M1632 adalah merupakan modul LCD dengan tampilan 16 x 2 baris

dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan mikrokontroler

yang didisain khusus untuk mengendalikan LCD. Mikrokontroler HD44780

buatan Hitachi yang berfungsi sebagai pengendali LCD ini mempunyai CGROM

(Character Generator Read Only Memory), CGRAM (Character Generator

Random Access Memory) danDDRAM (Display Data Random Access Memory).

LCD ini memiliki 16 kaki yaitu:

Tabel 8.1 Pin Out LCD M1632

No Nama Pin Deskripsi

__________________________________________________________________

1 GND 0V

2 VCC +5V

3 VEE Tegangan Kontras LCD

4 RS Register Select, 0 = Register Perintah, 1 = Register Data

5 R/W 1 = Read, 0 = Write

6 E Enable LCD, logika 1 setiap pengiriman/pembacaan data

7 D0 Data Bus 0

8 D1 Data Bus 1

9 D2 Data Bus 2

10 D3 Data Bus 3

11 D4 Data Bus 4

12 D5 Data Bus 5

13 D6 Data Bus 6

14 D7 Data Bus 7

15 Anoda Tegangan positif backlight

16 Katoda Tegangan negatif backlight

DDRAM

DDRAM adalah merupakan memori tempat karakter yang ditampilkan berada.

Contoh, untuk karakter „A‟ atau 41H yang ditulis pada alamat 00, maka karakter

Page 40: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

40

tersebut akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila

karakter tersebut ditulis di alamat 40, maka karakter tersebut akan tampil pada

baris kedua kolom pertama dari LCD.

Gambar 8.1 DDRAM M1632

CGRAM

CGRAM adalah merupakan memori untuk menggambarkan pola sebuah

karakter di mana bentuk dari karakter dapat diubah-ubah sesuai keinginan.

Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola

karakter akan hilang.

CGROM

CGROM adalah merupakan memori untuk menggambarkan pola sebuah

karakter di mana pola tersebut sudah ditentukan secara permanen dari HD44780

sehingga pengguna tidak dapat mengubah lagi. Namun karena ROM bersifat

permanen, maka pola karakter tersebut tidak akan hilang walaupun power supply

tidak aktif. Pada Tabel 8.2, tampak terlihat pola-pola karakter yang tersimpan

dalam lokasi-lokasi tertentu dalam CGROM. Pada saat HD44780 akan

menampilkan data 41H yang tersimpan pada DDRAM, maka

Page 41: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

41

HD44780 akan mengambil data di alamat 41H (0100 0001) yang ada pada

CGROM yaitu pola karakter A.

Tabel 8.2 Hubungan antara CGROM dan DDRAM

Register

HD44780, mempunyai dua buah Register yang aksesnya diatur dengan

menggunakan kaki RS. Pada saat RS berlogika 0, maka register yang diakses

Page 42: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

42

adalah Register Perintah dan pada saat RS berlogika 1, maka register yang diakses

adalah Register Data

Register Perintah

Register ini adalah register di mana perintah-perintah dari mikrokontroler ke

HD44780 pada saat proses penulisan data atau tempat status dari HD44780 dapat

dibaca pada saat pembacaan data.

Penulisan Data ke Register Perintah

Penulisan data ke Register Perintah dilakukan dengan tujuan mengatur tampilan

LCD, inisialisasi dan mengatur Address Counter maupun Address Data. Gambar

8.2 menunjukkan proses penulisan data ke register perintah dengan menggunakan

mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke Register

Perintah. RW berlogika 0 yang menunjukkan proses penulisan data akan

dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu dikirimkan dengan

diawali pulsa logika 1 pada E Clock. Kemudian Nibble rendah (bit 3 sampai bit 0)

dikirimkan dengan diawali pulsa logika 1 pada E Clock lagi.

Untuk mode 8 bit interface, proses penulisan dapat langsung dilakukan secara 8

bit (bit 7 … bit 0) dan diawali sebuah pulsa logika 1 pada E Clock.

Gambar 8.2 Timing diagram Penulisan Data ke Register Perintah Mode 4 bit

Interface

Page 43: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

43

Tabel 8.3 Perintah-perintah M1632

Page 44: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

44

Pembacaan Data dari Register Perintah

Proses pembacaan data pada register perintah biasa digunakan untuk melihat

status busy dari LCD atau membaca Address Counter. RS diatur pada logika 0

untuk akses ke Register Perintah, R/W diatur pada logika 1 yang menunjukkan

proses pembacaan data. 4 bit nibble tinggi dibaca dengan diawali pulsa logika 1

pada E Clock dan kemudian 4 bit nibble rendah dibaca dengan diawali pulsa

logika 1 pada E Clock.

Untuk Mode 8 bit interface, pembacaan 8 bit (nibble tinggi dan rendah) dilakukan

sekaligus dengan diawali sebuah pulsa logika 1 pada E Clock.

Register Data

Register ini adalah register di mana mikrokontroler dapat menuliskan atau

membaca data ke atau dari DDRAM. Penulisan data pada register ini akan

menempatkan data tersebut ke DDRAM sesuai dengan alamat yang telah diatur

sebelumnya

Penulisan Data ke Register Data

Penulisan data pada Register Data dilakukan untuk mengirimkan data yang akan

ditampilkan pada LCD. Proses diawali dengan adanya logika 1 pada RS yang

menunjukkan akses ke Register Data, kondisi R/W diatur pada logika 0 yang

menunjukkan proses penulisan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4)

dikirim dengan diawali pulsa logika 1 pada sinyal E Clock dan kemudian diikuti 4

bit nibble rendah (bit 3 hingga bit 0) yang juga diawali pulsa logika 1 pada sinyal

E Clock.

Page 45: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

45

Gambar 8.3 Timing Diagram Penulisan Data ke Register Data Mode 4 bit Interface

Pembacaan Data dari Register Data

Pembacaan data dari Register Data dilakukan untuk membaca kembali data yang

tampil pada LCD. Proses dilakukan dengan mengatur RS pada logika 1 yang

menunjukkan adanya akses ke Register Data. Kondisi R/W diatur pada logika

tinggi yang menunjukkan adanya proses pembacaan data. Data 4 bit nibble tinggi

(bit 7 hingga bit 4) dibaca dengan diawali adanya pulsa logika 1 pada E Clock dan

dilanjutkan dengan data 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali

dengan pulsa logika 1 pada E Clock.

8.2 Program Pengendalian LCD dalam Bahasa C

Di dalam pemrograman AVR dengan bahasa C terdapat beberapa fungsi khusus

untuk menangani LCD, yaitu:

• lcd_init(n) inisialisasi LCD dengan jumlah kolom sebanyak n buah

• lcd_gotoxy(x,y) ==> pindah kursor LCD ke kolom x baris y

• lcd_putsf("karakter") ==> cetak tulisan "karakter" ke LCD

• lcd_puts(char) ==> cetak isi dari variabel char ke LCD

• itoa(Z,Cetak) ==> mengubah bil integer Z ke ascinya dan disimpan di

variabel cetak

Page 46: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

46

Contoh:

Hubungakan kaki LCD dengan pin AVR dengan ketentuan berikut:

void main(void)

{

lcd_init(16); //inisialisasi LCD 16 kolom

lcd_gotoxy(0,0); //pindah kursor ke baris 0 kolom 0

lcd_putsf("== WELCOME =="); //buat tulisan == WELCOME ==

delay_ms(1000);

}

Page 47: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

47

BAB IX

PEMBACAAN PUSH BUTTON DAN KEYPAD

9.1 Pembacaan Push Button

Pembacaan push button yang terhubung ke AVR pada prinsipnya adalah

membaca kondisi logika pada masing-masing pin masukan dari AVR. Data dari

push button dapat dibaca tombol demi tombol (1 tombol terbaca sebagai 1 bit

data) atau dapat dibaca sebagai 8 tombol sekaligus (8 tombol terbaca sebagai 1

byte data). Sintaks yang dapat digunakan untuk membaca push button adalah:

Data=PORTA ==> membaca data PORTA disimpan ke variabel Data

sebagai 1 byte (Sintaks ini biasanya digunakan untuk membaca 8 tombol

sekaligus).

bData=PINA.0 ==> membaca data pin A.0 disimpan ke variabel bData

sebagai 1 bit (Sintaks ini biasanya digunakan untuk membaca 1 tombol

saja).

Untuk dapat memfungsikan pin AVR sebagai input, maka nilai bit dari register

DDR harus dibuat nol. Misal PORTD akan digunakan sebagai masukan

semuanya, maka DDRD harus bernilai 00h.

Contoh:

Berikut ini adalah contoh rangkaian dan program untuk membaca data dari

keypad dan menampilkannya ke LED.

Page 48: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

48

void main(void)

{

Int Data;

DDRA=0xFF; DDRD=0x00;

while (1)

{ // Place your code here

Data=PORTD; membaca nilai port D dan disimpan di variable data

delay_ms(100); PORTA=Data; mengeluarkan nilai Data ke port A

delay_ms(100);

};

}

9.2 Pembacaan Keypad

Keypad merupakan suatu papan yang tersusun dari beberapa tombol dan

dihubungkan dalam susunan kolom dan baris. Terdapat bermacam-macam keypad

antara lain keypad 3 x 4, 4 x 4 dan 4 x 5. Keypad 4 x 4 tersusun dari 16 tombol

yang terbagi dalam 4 kolom dan 4 baris. Tiap-tiap tombol yang ada di dalam

keypad menghubungkan 1 buah kolom dengan 1 buah baris.

Page 49: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

49

Gambar 9.1 Gambar keypad 4 x 4

Contoh: tombol 6 menghubungkan kolom 3 dengan baris 2

tombol 8 menghubungkan kolom 2 dengan baris 3

tombol * menghubungkan kolom 1 dengan baris 4

Keypad sering digunakan sebagi suatu input pada beberapa peralatan yang

berbasis mikroprosessor atau mikrokontroller. Keypad sesungguhnya terdiri dari

sejumlah saklar, yang terhubung sebagai baris dan kolom dengan susuan seperti

yang ditunjukkan pada gambar 9.2. Pembacaan keypad menggunakan AVR dapat

dilakukan dengan 2 cara yaitu:

Menghubungkan keypad ke AVR melalui IC encoder keypad (missal IC

74LS922). Pada metode ini, semua pin keypad dihubungkan ke IC

encoder. Encoder akan membaca hasil penekanan keypad mengeluarkan

data ke AVR yang nilainya sebanding dengan keypad yang ditekan.

Gambar 9.2 Rangkaian keypad dan encoder keypad

Page 50: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

50

Menghubungkan keypad langsung ke AVR kemudian dibaca dengan

metode scanning. Agar mikrokontroller dapat melakukan scan keypad,

maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada

kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris

untuk menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai

konsekuensi, selama tidak ada tombol yang ditekan, maka mikrokontroller

akan melihat sebagai logika high “1” pada setiap pin yang terhubung ke

baris.

Gambar 9.3 Gambar susunan baris dan kolom pada keypad

Contoh:

Berikut ini adalah contoh rangkaian dan program untuk membaca keypad dan

mengeluarkan nilai hasil pembacaan-nya ke LED.

Page 51: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

51

unsigned int keypad( )

{

delay_ms(500);

int key=13; while (key==13){

PORTA = 0b11111110;

delay_ms(5); if(PINA.4==0) return (1);

if(PINA.5==0) return (2);

if(PINA.6==0) return (3); //========================

PORTA = 0b11111101;

delay_ms(5);

if(PINA.4==0) return (4); if(PINA.5==0) return (5);

if(PINA.6==0) return (6);

//======================== PORTA = 0b11111011;

delay_ms(5);

if(PINA.4==0) return (7);

if(PINA.5==0) return (8); if(PINA.6==0) return (9);

//========================

PORTA = 0b11110111; delay_ms(5);

if(PINA.4==0) return (10);

if(PINA.5==0) return (0); if(PINA.6==0) return (11);

//========================

}

}

void main(void)

{ Int Data;

DDRA=0xFF;

DDRD=0x0F;

while (1) {

Data=keypad();

PORTA=Data; };

}

Page 52: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

52

BAB X

PEMBACAAN ADC

Sebuah ADC, atau Analog ke Digital Converter, memungkinkan seseorang untuk

mengkonversi tegangan analog ke nilai digital yang dapat digunakan oleh

mikrokontroler. Ada banyak sumber sinyal analog yang satu mungkin ingin untuk

mengukur. Ada sensor analog tersedia yang mengukur suhu, intensitas cahaya,

jarak, posisi, dan kekuatan, hanya untuk beberapa nama.

Pendahuluan ADC AVR

ADC AVR memungkinkan mikrokontroler AVR untuk mengkonversi tegangan

analog ke nilai digital tanpa menggunakan rangkaian eksternal. ADC yang

dimiliki ATMega16 ini mampu memiliki resolusi 10 bit. Mikrokontroler

ATMega16 memiliki 8 saluran ADC, sehingga mampu menangani sampai

dengan 8 sumber analog yang terpasang ke mikrokontroler. ADC 8 saluran

tersambung ke DAC internal melalui perangkat yang disebut multiplekser.

Multiplekser ini menghubungkan 8 saluran ADC (8 pin dari PortA pada

ATMega16) ke sebuah ADC internal. Satu saluran pada satu waktu dilewatk ke

multiplexer untuk ADC. ADC memiliki pasokan catu daya sendiri, berlabel

AVCC, pada ATMega16 tersebut. Pin ini harus dihubungkan ke sumber listrik 5

volt dalam penyediaan VCC chip itu. Dengan DAC 10 bit, ini memungkinkan

pengukuran tegangan 0-5 volt dengan resolusi 5 / 1024 volt, atau 4,88 mV.

Saluran ADC di ATMega16 dapat dikonfigurasi dalam beberapa cara berbeda.

Dalam buku ini, saluran yang digunakan dalam modus single-ended. Dalam mode

ini, tegangan analog disajikan di saluran ADC dibandingkan ke tanah. Ada

Page 53: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

53

beberapa tegangan referensi dapat dipilih, yang menentukan rentang konversi

ADC. Dalam tutorial ini, AVCC digunakan sebagai referensi tegangan. ADC juga

dapat diatur untuk menjalankan terus (modus bebas berjalan) atau hanya

melakukan satu konversi.

Untuk dapat membaca ADC dari AVR menggunakan pemrograman bahasa C,

maka kita bisa membuat program pembacaan ADC secara otomatis menggunakan

software CodevisionAVR. Software ini secara langsung akan menghasilkan

subrutin pembaca ADC sebagai berikut:

#define ADC_VREF_TYPE 0x00

unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

ADCSRA|=0x40;

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCW;

}

Adapun untuk membaca nilai dari ADC maka kita bisa menggunakan sintaks

berikut ini:

nilai = read_adc(0); ==> memasukkan hasil pembacaan ADC channel 0 ke

variable nilai

Contoh ADC mode Free-Running ADC

Contoh pertama dalam tutorial ini menggunakan modus free-running untuk terus

memperbarui pembacaaan ADC.Contoh ini menggunakan sumber tegangan

variabel yang paling sederhana, misalkan sebuah potensiometer. Kita bias

menghubungkan sebuah potensiometer 10k pada papan PCB seperti pada contoh

di bawah ini.

Page 54: Diktat Mikroprosesor

Sistem Mikroprosessor I

Ilham Ari Elbaith Zaeni, S.T.

54

void main(void)

{ lcd_init(16);

while (1)

{ // Place your code here

temp=read_adc(0);

vin=((float)temp*0.00488); //vin=(float(temp)*(5volt/1024)) lcd_gotoxy(0,0);

lcd_putsf("== Voltmeter == ");

lcd_gotoxy(2,1);

sprintf(lcd_buffer,"volt: %0.3f V ",vin); lcd_puts(lcd_buffer);

delay_ms(1000);

}; }}