mikrokontroler mcs

Upload: roni-nepology

Post on 11-Jul-2015

594 views

Category:

Documents


11 download

TRANSCRIPT

KATA PENGANTAR

Kompetensi Keahlian Teknik Elektronika Industri adalah kompetensi keahlian yang menetapkan pemrograman mikrokontroler sebagai standar kompetensi dan kompetensi dasar. Pemrograman dan mikrokontroler merupakan kompetensi pokok yang harus dimiliki oleh seorang teknisi elektronika. Standar kompetensi menerapkan sistem mikrokontroler merupakan standar kompetensi pokok bidang elektronika Industri. Penguasaan standar kompetensi ini sangat penting bagi teknisi elektronika industri. Teknisi elektronika di abad 21 sangat tidak memadai jika tidak mengenal pemrograman mikrokontroler. Sistem elektronika saat ini cendrung bekerja dengan program dalam sebuah mikrokontroler. Mikrokontroler adalah sistem dimana CPU, serta I/0 unit, dan memori unit bekerja secara sinkron. Kompetensi pemrograman mikrokontroler menjadi sangat penting untuk dikuasai dengan baik oleh seorang teknisi elektronika. Memprogram mikrokontroler memerlukan penguasaan arsitektur hardware dan software. Penguasaan arsitektur hardware dan software sangat membantu kelancaran pengembangan program. Dengan memahami masalah pemrograman, algoritma pemecahan masalah program, flowchart, pemilihan instruksi dan benar dan tepat seseorang dapat menulis program mikroprosesor dan mikrokontroler dengan baik. Membuat program dengan coba-coba atau trial error sudah saatnya ditinggalkan dan harus menggunakan cara-cara baru yang sistematis.

Wonosari, Juli 2011

Roni Setiawan

DAFTAR ISI

Halaman HALAMAN DEPAN KATA PENGANTAR DAFTAR ISI ii iii iv vi DAFTAR TABEL...... BAB I PENJELASAN SISTEM MIKROKONTROLER A. Pengenalan Mikrokontroler 1. Pengertian Mikrokontroler. 2. B. Mikroprosesor dan Mikrokontroler 1. 2. 3. Mikrokontrole C. Konsep Mikrokontroler 1. 2. 3. 4. 5. Input/Output Mikrokontroler 6. D. Mikrokontroler AT89C51 1. 2. 3. 4. Organisasi BAB II PEMROGRAMAN MIKROKONTROLER A. 30 16 18 21 23 10 11 12 12 14 15 6 6 9 1 2 vii

B. Pemrograman Mikrokontroler 1. 2. C. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Increament dan 12. Operasi Jump dan BAB III MEMBUAT PROGRAM MIKROKONTROLER A. Langkah-Langkah Pengembangan Program 1. Pendefinis 2. Alg 3. Flo 4. 73 73 76 80 Alih Data Addre Pengalamatan Eksternal MOVC (Code Memory Re PUSH Data Exchanges Opera Operasi Ro Operasi A . B 33 41 45 42 54 57 58 58 59 60 63 64 65 65 69

DAFTAR GAMBAR

Halaman Gambar 1.1 : Elemen Sebuah Sistem Kendali Gambar 1.2 : Blok Diagram Mikroprosesor ..... Gambar 1.3 : Diaagram Blok Sistim Mikroprosesor... Gambar 1.4 : Diagram Mikrokontroler ................. Gambar 1.5 : Gambaran Bagian Mikrokontroler.. Gambar 1.6 : Gambar 1.7 : Blok Diagram AT89C51.............................................................. Gambar 1.8 : Susunan Pin Mikrokontroler AT89C51. Gambar 1.9 : Diagram Blok Inti Mikrokontroler AT89C51 Gambar 1.10 : Organisasi Memory AT89C51....... Gambar 1.11 : Peta Alamat Interupsi AT89C51.... Gambar 1.12 : Memory Data Internal................................................................ Gambar 1.13 : RAM Internal 128 byte Paling Baawah .................................... Gambar 1.14 : Proses Pembentukan Stack ............... 2 6 7 9 10 11 17 18 24 24 25 26 27 28 37 54 55 56 63 77 78 79 80

Gambar 2.1 : Model Editor Program assembly ................................................ Gambar 2.2 : Pola Immadiate Addressing Mode................ Gambar 2.3 : Pola Register Addressing Mode.... Gambar 2.4 : Pola Direct Addressing Mode ........ Gambar 2.5 : Pola Operasi Rotate dan Swap ................ Gambar 3.1 : Simbol Flow Direction............................. Gambar 3.2 : Simbol Processing ....................................................................... Gambar 3.3 : Input/Output Symbol .................................................................. Gambar 3.4 : Conceptual Flowchart .................................................................

Gambar 3.5 : Detail Flowchart .......................................................................... 80 Gambar 3.6 : Flowchart Menyebrang Jalan ...................................................... 81

DAFTAR TABEL

Halaman Tabel 1.1 : Jenis Transduser Pada Input................ Tabel 1.2 : Bus Sistem Mikroprosesor................................. Tabel 1.3 : Fungsi Khusus Port 3 AT89C51.. Tabel 1.4 : Nama dan Alamat SFR............. Tabel 2.1 : Contoh Mikrokontroler 4 bit ........................................................... Tabel 2.2 : Contoh Mikrokontroler 8 bit ........................................................... Tabel 2.3 : Contoh Mikrokontroler 16 bit ......................................................... Tabel 2.4 : Perintah Mnemonik......................... Tabel 2.5 : Contoh Program Assembly....................... Tabel 2.6 : Tipe Data Dalam Bahasa C................ Tabel 2.7 : Operator Dalam Bahasa C............................................................... Tabel 2.8 : Instruksi Mnemonik................................... Tabel 3.1 : Algoritma Menyebrang Jalan............. 3 8 19 29 31 32 33 31 36 43 44 46 75

BAB I PENJELASAN SISTEM MIKROKONTROLER

A. Pengenalan Mikrokontroler 1. Pengertian Mikrokontroler Suatu kontroler digunakan untuk mengontrol suatu proses atau aspek-aspek dari lingkungan. Satu contoh aplikasi dari mikrokontroler adalah untuk memonitor rumah kita. Ketika suhu naik kontroler membuka jendela dan sebaliknya. Pada masanya, kontroler dibangun dari komponen-komponen logika secara keseluruhan, sehingga menjadikannya besar dan berat. Setelah itu barulah dipergunakan mikrokprosesor sehingga keseluruhan kontroler masuk kedalam PCB yang cukup kecil. Hingga saat ini masih sering kita lihat kontroler yang dikendalikan oleh mikroprosesor biasa (Zilog Z80, Intel 8088, Motorola 6809, dsb). Proses pengecilan komponen terus berlangsung, semua komponen yang diperlukan guna membangun suatu kontroler dapat dikemas dalam satu keping. Maka lahirlah computer keeping tunggal (one chip

microcomputer) atau disebut juga mikrokontroler. Mikrokontrolere adalah suatu IC dengan kepadatan yang sangat tinggi, dimana semua bagian yang diperlukan untuk suatu kontroler sudah dikemas dalam satu keping, biasanya terdiri dari: CPU (Central Processing Unit) RAM (Random Access Memory) EEPROM/EPROM/PROM/ROM I/O, Serial & Parallel Timer Interupt Controller Rata-rata mikrokontroler memiliki instruksi manipulasi bit, akses ke I/O secara langsung dan mudah, dan proses interrupt yang cepat dan efisien. Dengan kata lain mikrokontroler adalah "Solusi satu Chip" yang

secara drastis mengurangi jumlah komponen dan biaya disain (harga relatif rendah).

2. Aplikasi Mikrokontroler Dengan semakin berkembangnya kehidupan manusia, teknologi akan selalu berkembang mengikuti perkembangan manusia. Salah satu contohnya adalah perkembangan sistim otomasi di pabrik/ industry. Kendali otomatis memegang peranan penting pada setiap proses dalam pabrik dan insustri. Tujuan penerapan kendali otomatis pada proses permesinan di industry adalah: Peningkatan produksivitas (kualitas & kuantitas) Peningkatan ketelitian Kemudahan pengoperasian Pengurangan keterlibatan tenaga kerja Keamanan pekerja Dengan kendali otomatis kualitas sebuah produk atau proses menjadi lebih baik, jumlah atau kuantitas produk menjadi lebih banyak dan lebih teliti, serta tenaga kerja lebih mudah bekerja dan lebih aman dari factor bahaya resiko kerja. Sebuah system kendali dapat dibagi kedalam 4 bagian yakni: Input Kontroler / pengendali Processing Output

Gambar 1.1: Element sebuah system kendali

a. Input Sinyal input biasanya dibangkitkan menggunakan sensor atau transduser. Sensor adalah sebuah piranti elektronik yang peka terhadap cahaya, suhu, frekuensi, impedansi listrik atau tingkat radiasi dan menghasilkan sinyal untuk keperluan pengukuran atau perawatan kendali. Sensor bekerja mengkonversi besaran fisik menjadi sinyal listrik. Transduser didefiniskan sebagai piranti yang bekerja menerima suatu bentuk energy dari suatu system dan memancarkan kembali ke bentuk yang berbeda pada system lain. Data yang diperoleh dari input merupakan data hasil pengukuran. Data tersebut digunakan sebagai data masukan pada kontroler dalam melakukan proses pengendalian. Bagian input dari suatu system kendali berfungsi menyalurkan informasi besaran yang diukur kebagian control. Bergantung jenis transduser atau sensor, informasi yang didapatkan dalam bentuk discontinuous on/off (binary) atau continous (analog), seperti pada table 1 berikut: Tabel 1.1: Jenis transduser pada input. Tranduser Switch Limit Switch Thermostat Thermocouple Thermistor Strain Gage Photocell Proximity Cell Mikropon b. Controller Bagian ini merupakan bagian pokok pengolah sinyal masukan dari bagian input, dan kemudian membangkitkan resultant aksi pada Besaran Terukur Gerakan/posisi Gerakan/posisi Suhu Suhu Suhu Tekanan/gerakan Cahaya Presence of objects Tekanan suara Besaran Output Tegangan biner (on/off) Tegangan biner (on/off) Tegangan Biner Perubahan Tegangan Perubahan Tegangan Perubahan resistansi Perubahan tegangan Perubahan resistasi Perubahan tegangan

plant. Berdasarkan informasi dan input, system kendali automatic mambangkitkan sinyal tanggapan untuk control plant (peralatan yang dikontrol). Ada dua cara yang dapat digunkan untuk mengendalikan peralatan yaitu: Hard-Wired Control Sistem Kendali Hard-Wired bekerja atas dasar fungsi yang tetap system ini dikenal juga dengan system diskrit. Fungsi system ini tetap dan jika diinginkan adanya perubahan fungsi harus melakukan perencanaan dan perubahan hardware (merubah rangkaian). System hard-wired kurang fleksibel karena harus selalu merubah rangkaian jika dikehendaki adanya perubahan fungsi. System semacam ini cenderung berfungsi khusus sehingga sulit diproduksi secara massal. Akibatnya harga penjualan fungsi semacam ini menjadi mahal. Programmable Control Sedangkan kendali programmable bekerja atas dasar program yang disimpan pada unit memori. Kendali programmable menggunakan mikroprosesor/mikrokontroler sebagai komponen utama pengolah sinyal dan pengambil keputusan. System kendali yang menggunakan system mikroprosesor sebagai komponen utama pengolah sinyal disebut system kendali berbasis

Mikroprosesor. Sedangkan system kendali yang menggunakan system mikrokontroler sebagai komponen utama pengolah sinyal disebut system kendali berbasis Mikrokontroler Pemanfaatan mikrokontroler saat ini sangat populer di bidang kendali dan instrumentasi elektronik. Hal ini terjadi karena mikrokontroler memiliki keunggulan-keunggulan dibandingkan

komponen atau IC lainnya. Keunggulan mikrokontroler terletak pada ukurannya yang kecil, fungsinya dapat diubah-ubah dengan merubah program, mudah diinterfacekan dengan komponen lain, dan

harganya sangat murah dibandingkan system lainnya, serta mudah didapatkan dipasar. Penggunaan mikrokontroler dalam system elektronik saat ini sudah luas dan banyak sekali. Mesin-mesin kendali atau unit-unit kendali telah mengimplementasikan mikrokontroler. Lampu pengatur lalu lintas, pengatur mesin pompa bensin, lampu hias, running teks, kendali mesin-mesin fotocopy, otomatisasi lapangan parkir, robot cerdas, kendali suhu mesin penetas telur, pengaman ruang komputer, pencatat curah hujan, modul pembelajaran, pengatur suhu pencelupan batik adalah sederetan contoh sistem mikrokontroler. c. Processing atau Plant System kandali harus dapat menjalankan proses yang diatur. Plant adalah seperangkat peralatan yang digunakan untuk yang menggunakan

melaksanakan suatu opersi tertentu. Obyek fisik dikendalikan mengunkan piranti seperti pompa, motor, relay, pistons, solenoid, Heater, Loud Speaker, Lampu Display dan sebagainya kedalam sebuah system disebut plant. Sebagai salah satu contoh yakni motor yang dapat bekerja mengkonversi sinyal listrik menjadi gerakan atau putaran. Secara umum converter listrik menjadi fisik disebut actuator. d. Output Bagian output dari suatu system kendali adalah hasil dari suatu system pengendalian berdasarkan nilai acuan atau referensi yang ditetapkan. Dalam system kendali berbasis mikroprosesor/

mikrokontroler keluaran hasil pengendalian dapat diukur melalui sensor atau transduser output hasil pengukuran dapat dibandingka dengan nilai setting yang ditetapkan. Dalam system pendingin misalnya, suhu 18 C merupakan setting output yang harus dicapai oleh system kendali. Setelah melalui proses pengendalian hasil pada output diukur apakah sudah sama dengan nilai 18 C atau belum,

selanjutnya bagian control melakukan langkah pengaturan sesuai dengan kebutuhannya.

B. Mikroprosesor dan Mikrokontroler 1. Mikroprosesor Mikroprosesor dalam perkembangan computer digital disebut sebagai Central Procesing Unit (CPU) yang bekerja sebagai pusat pengolah dan pengendalian pada system computer mikro.

Gambar 1.2: Blok diagram Mikroprosesor

Untuk membangun fungsi computer sebagai computer mikro, sebuah mikroprosesor harus dilengkapi dengan memori, biasanya memori program yang hanya bias dibaca (Read Only Memory = ROM) dan memori yang bisa dibaca dan ditulisi (Read Write Memory = RWM), decoder memori, osilator, dan sejumlah peralatan input output seperti port data seri dan parallel. Pokok dari pengunaan mikroprosesor adalah untuk mengambil data, membentuk kalkulasi perhitungan atau menipulasi data dan menyimpan hasil pada peralatan penyimpan atau menampilkan hasilnya pada sebuah monitor atau cetak kertas.

2. Sistim Mikroprosesor Sistem mikroprosesor berbeda dengan mikroprosesor. Sebuah mikroprosesor memerlukan komponen lain dalam sebuah sistem mikroprosesor. Untuk menjalankan atau mengeksekusi program

mikroprosesor memerlukan komponen lain seperti memori sebagai tempat

penyimpan instruksi atau program dan data. Sistem Mikroprosesor dapat dipahami dari dua kata pembangunnya yaitu : Sistem adalah gabungan dari beberapa elemen atau komponen yang membangun suatu fungsi tertentu. Gabungan dari beberapa elemen dapat disebut sebagai sistem jika memiliki fungsi atau berfungsi. Jika tidak memiliki fungsi atau sekedar tergabungnya beberapa komponen tentu tidak dapat disebut sebagai sistem. Contoh sistem adalah Radio, Televisi, Sistem Komunikasi, Laptop, HP, kendaraan roda empat, sistem jaringan syaraf, sistem tubuh dan sebagainya. Jadi yang penting dalam sebuah sistem adalah adanya komponen pembentuk sistem dan berfungsinya dari sistem itu sendiri. Mikroprosesor, sebagaimana dibahas diatas secara fisik adalah sebuah chip rangkaian terintegrasi (IC) mikro-elektronika dalam paduan skala yang sangat besar (VLSI=verry large scale integration). Secara fungsi Mikroprosesor didisain bekerja sebagai pelaksana instruksi atau program, pengendali sistem serta sebagai pusat pengolah data digital yang lebih dikenal dengan sebutan Central Processing Unit (CPU). Berdasarkan dua pengertian kata diatas yaitu system dan

mikroprosesor dapat dijabarkan bahwa sistem mikroprosesor adalah sebuah sistem yang dibangun dari komponen utama yaitu mikroprosesor atau CPU, dan komponen tambahan yaitu Memory Unit, Input Output Unit (I/O), yang berfungsi sebagai pengolah data elektronik digital.

berikut adalah diagram blok dari sebuah sistim mikroprosesor.

Gambar 1.3: Diagram blok sistim mikroprosesor

Mikroprosesor berkomunikasi dengan unit memori, unit I/O menggunakan saluran yang disebut dengan BUS. Setiap mikroprosesor dilengkapi dengan tiga bus yang dapat dilihat pada table 2 sebagai berikut: Tabel 1.2 : Bus system mikroprosesorNama Bus Sifat Arah data dari CPU Jumlah Saluran

Bus data Bus alamat Bus kendali

Dua arah

Masuk dan keluar

8 bit 16 bit 10-12 bit

Satu arah Keluar Satu arah Masuk atau keluar

Bus data adalah sejumlah saluran tempat dimana data ditransfer. Transfer data dapat terjadi diantara CPU dengan unit memori atau unit I/O. Dari gambar 1.3 dan tabel 2 terlihat jelas bus data bersifat dua arah yaitu bisa masuk ke dalam CPU atau bisa keluar dari CPU. Bus data digambarkan dengan tanda panah dua arah yang bermakna bahwa saluran tersebut adalah bidirectional atau dua arah. Ini artinya bahwa CPU dapat membaca data melalui saluran bus data dari lokasi memori atau port I/O maupun menulis data menggunakan bus data ke lokasi memori dan juga ke unit I/O. Untuk menetapkan kemana data itu dikirim atau dari mana data itu diambil digunakan bus alamat (Address Bus) (lihat gambar 1.3). Bus alamat bertugas menetapkan atau memilih salah satu lokasi memori atau salah satu lokasi port I/O yang hendak diakses. Bus Kendali (Contol bus) terdiri dari 4 sampai dengan 10 saluran. CPU mengirim keluar atau menerima sinyal kendali melalui saluran bus kendali (lihat gambar 1.3). Bentuk-bentuk sinyal kendali yang

dibangkitkan melalui bus kendali antara lain untuk pembacaan memori, penulisan ke memori, pembacaan Port I/O, penulisan Port I/O, reset, Interupsi, Memory Request, I/O Request, dan sebagainya tergantung jenis CPU-nya. Bus kendali adalah seperangkat bit pengendali yang berfungsi untuk mengatur: penyerempakan memori, penyerempakan I/O,

penjadualan CPU, Interupsi, pembentuk clock, dan reset.

kendali direct memory access (DMA),

3. Mikrokontroler Mikrokontroler sebagai terobosan teknologi mikroprosesor dan mikrokomputer, hadir memenuhi kebutuhan pasar dan teknologi baru baik didunia industri atau aplikasi sistem kendali lainnya. Mikrokontroler merupakan sebuah pengembangan teknologi mikroprosesor dengan Input/Output dan memori dalam sebuah chip yang dijadikan sebagai teknologi mikrokomputer. Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis data. Rata-rata didalam sebuah mikrokontroler terdapat bagian : CPU (Central Processing Unit) RAM (Random Access Memory) EEPROM/EPROM/PROM/ROM I/O, Serial & Parallel Timer Interupt Controller

Gambar 1.4: Diagram Mikrokontroler Sama halnya dengan mikroprosesor, mikrokontroler adalah piranti yang dirancang untuk kebutuhan umum. Penggunaan pokok dari sebuah mikrokontroler adalah sebagai pengandali (control) sebuah kerja mesin atau system, namun secara umum fungsional mikroprosesor lebih banyak

digunakan untuk tujuan umum karena dapat menangani program seperti pengolah kata, pengolah angka, multimedia sedangkan mikrokontroler lebih banyak digunakan untuk tujuan khusus (special Purpose) yakni digunakan untuk suatu aplikasi tertentu saja (hanya satu program saja yang bisa disimpan), misalnya kontroler motor, kontroler suhu, robot, dll.

C. Konsep Mikrokontroler 1. Pendahuluan Mikrokontroler adalah salah satu dari bagian dasar dari suatu sistem komputer. Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu computer pribadi, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan output spesifik berdasarkan inputan yang diterima dan program yang dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang

mengerjakan instruksi-instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama dari suatu system terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program ini menginstruksikan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer.

Gambar 1.5 : Gambaran bagian mikrokontroler

2. Arsitektur Mikrokontroler Arsitektur adalah rancangan hardware internal yang berkaitan dengan: tipe, jumlah dan ukuran register serta rangkaian lainnya. Arsitektur pada sebuah mikrokontroler sangat mempengaruhi kinerja pada saat melakukan proses pengendalian (control). Semua jenis mikrokontroler didasarkan pada arsitektur Von-Neuman atau arsitektur Harvard. a. Arsitektur Von-Neuman Mikrokontroler yang di disain berdasarkan arsitektur ini memilik sebuah data bus 8-bit yang dipergunakan untuk "fetch" instruksi dan data. Program (instruksi) dan data disimpan pada memori utama secara bersama-sama. Ketika kontroler mengalamati suatu alamat di memori utama, hal pertama yang dilakukan dalah mengambil instruksi untuk dilaksanakan dan kemudian mengambil data

pendukung dari instruksi tsb. Cara ini memperlambat operasi. b. Arsitektur Harvard Arsitektur ini memilik bus data dan instruksi yang terpisah, sehingga memungkinkan eksekusi dilakukan secara bersamaan. Secara teoritis hal ini memungkinkan eksekusi yang lebih cepat tetapi dilain pihak memerlukan disain yang lebih kompleks.

Gambar 1.6: Arsitektur Mikrokontroler

Didalam mempelajari mikrokontroler, kita dituntut untuk dapat menguasai dua hal yang sangat pokok, berdasarkan arsitektur

mikrokontroler tersebut kedua hal tersebut adalah hardware dan software dari mikrokontroler. Hardware akan sangat kita perlukan ketika kita akan

manggunakan

mikrokontroler

untuk

berhubungan

dengan

device

(perangkat) yang sifatnya berada diluar mikrokontroler, software (instruksi) dalam hal ini juga tidak kalah penting karena didalam mengendalikan suatu system kita juga harus memahami instruksi dari mikrokontroler yang digunakan.

3. Instruksi Mikrokontroler Instruksi pada mikrokontroler dikenal ada 2 yaitu: CISC Saat ini hampir semua mikrokontroler adalah mikrokontroler CISC (Complete Instruction Set Computer). Biasanya memiliki lebih dari 80 instruksi. Keunggulan dari CISC ini adalah adanya instruksi yang bekerja seperti sebuah makro, sehingga memungkinkan programmer untuk menggunakan sebuah instruksi menggantikan beberapa

instruksi sedarhana lainnya. RISC Saat ini kecenderungan industri untuk menggunakan disain

mikroprosesor RISC (Reduced Instruction Set Computer). Dengan menggunakan jumlah instruksi yang lebih sedikit, memungkinkan lahan pada chip (silicon real-estate) digunakan untuk meningkatkan kemampuan chip. Keuntungan dari RISC adalah kesederhanaan disain, chip yang lebih kecil, jumlah pin sedikit dan sangat sedikit mengkonsumsi daya.

4. Macam Memory pada Mikrokontroler EEPROM (Electrically Erasable Programmable Read Only Memory) Beberapa mikrokontroler memiliki EEPROM yang terintegrasi pada chipnya.EEPROM ini dugunakan untuk menyimpan sejumlah kecil parameter yang dapat berubah dari waktu ke waktu. Jenis memori ini bekerja relatif pelan, dan kemampuan untuk dihapus/tulis nya juga terbatas.

FLASH (EPROM) FLASH meberikan pemecahan yang lebih baik dari EEPROM ketika dibutuhkan sejumlah besar memori non-volatile untuk program. FLASH ini bekerja lebih cepat dan dapat dihapus/tulis lebih sering dibanding EEPROM. Battery backed-up static RAM Memori ini sangat berguna ketika dibutuhkan memori yang besar untuk menyimpan data dan program. Keunggulan utama dari RAM statis adalah sangat cepat dibanding memori non-volatile, dan juga tidak terdapat keterbatasan kemampuan hapus/tulis sehingga sangat cocok untuk aplikasi untuk menyimpan dan manipulasi data secara lokal. Field programming/reprogramming Dengan menggunakan memori non-volatile untuk menyimpan program akan memungkinkan mikrokontroler tersebut untuk

diprogram ditempat, tanpa melepaskan dari sistem yang dikontrolnya. Dengan kata lain mikrokontroler tersebut dapat diprogram setelah dirakit diPCBnya. OTP - One Time Programmable Mikrokontroler OTP adalah mikrokontroler yang hanya dapat satu kali saja dan tidak dapat dihapus atau dimodifikasi. Biasanya digunakan untuk produksi dengan jumlah terbatas.OTP menggunakan EPROM tandard tetapi tidak memiliki jendela untuk menghapus programnya. Software protection Dengan "encryption" atau proteksi fuse, software yang telah diprogramkan akan terlindungi dari pembajakan, modifikasi atau rekayasa ulang. Kemampuan ini hanya dipunyai oleh komponen OTP atau komponen yang dapat diprogram ulang. Pada komponen jenis Mask ROM tidak diperlukan proteksi, hal ini dikarenakan untuk

membajak isi programnya seseorang harus membacanya (visual) dari chip nya dengan menggunakan mikroskop elektron. Walaupun demikian pabrik mikrokontroler masih dapat membaca isi program guna memastikan bahwa mikrokontroler diprogram dengan tepat, atau biasa disebut "test mode". Test mode memungkinkan kita membaca keseluruhan isi ROM, tetapi hal ini tidak perlu dibesarbesarkan karena test mode ini bersifat sangat dirahasiakan dan

hanya diketahui oleh pabrikan yang memproduksi mikrokontroler tersebut. Test mode hanya dapat dilakukan pada komponen Mask ROM. 5. Input/Output Mikrokontroler UART (Universal Asynchronous Receiver Transmitter) adalah adapter serial port adapter untuk komunikasi serial asinkron. USART (Universal Synchronous/Asynchronous Receiver

Transmitter) adalah merupakan adapter serial port untuk komunikasi serial sinkron dan asinkron. Komunikasi serial sinkron tidak memerlukan start/stop bit dan dapat beroperasi pada click yang lebih tinggi dibanding asinkron. SPI (serial peripheral interface) merupakan port komunikasi serial sinkron. SCI (serial communications interface) merupakan enhanced UART (asynchronous serial port) I2C bus (Inter-Integrated Circuit bus) merupakan antarmuka serial 2 kawat yang dikembangkan oleh Philips. Dikembangkan untuk aplikasi 8 bit dan banyak digunakan pada consumer electronics, automotive dan indistri. I2C bus ini berfungsi sebagai antarmuka jaringan multi-master, multi-slave dengan deteksi tabrakan data. Analog to Digital Conversion (A/D). Fungsi ADC adalah merubah besaran analog (biasanya tegangan) ke bilangan digital.

Mikrokontroler dengan fasilitas ini dapat digunakan untuk aplikasi-

aplikasi yang memerlukan informasi analog (misalnya: voltmeter, pengukur suhu dll). Terdapat beberapa tipe dari ADC sbb: Succesive Approximation A/D converters. Single Slope A/D converters Delta-Sigma A/D converters. Flash A/D. D/A (Digital to Analog) Converters. Kebalikan dar ADC seperti diatas. Comparator. Mikrokontroler tertentu memiliki sebuah atau lebih komparator. Komparator ini bekerja seperti IC komparator biasa tetapi sinyal input/outputnya terpasang pada bus mikrokontroler. 6. Interupsi Interupt merupakan metode yang efisien bagi mikrokontroler untuk memproses periperalnya, mikrokontroler hanya bekerja memproses periperal tsb hanya pada saat terdapat data diperiperal tsb. Pada saat terjadi interupt, mikrokontroler menunda operasi yang sedang dilakukan kemudian mengidentifikasi interupsi yang datang dan menjalankan rutin pelayanan interupsi. Rata-rata mikrokontroler memiliki setidak-tidaknya sebuah interupsi eksternal, interupsi yang dimiliki bisa dipicu oleh "edge" atau "level". Edge triggered interupt bekerja tidak tergantung pada pada waktu terjadinya interupsi, tetapi interupsi bisa terjadi karena glitch. Sedangkan Level triggered interupt harus tetap pada logika high atau low sepanjang waktu tertentu agar dapat terjadi interupsi, interupsi ini tahan terhadap glitch. Interupt ada 2 yaitu : Maskable Interrupts Dengan maskable interupt kita dapat bebas memilih untuk menggunakan satu atau lebih interupsi. Keuntungan maskable interupt ini adalah kita dapat mematikan interupsi pada saat mikrokontroler sedang melakukan proses yang kritis sehingga interupsi yang datang akan diabaikan. Vectored Interrupts

Pada saat terjadi interupsi, interupt handler secara otomatis akan memindahkan program pada alamat tertentu yang telah ditentukan sesuai dengan jenis interupsi yang terjadi.

D. Mikrokontroler AT89C51 1. Arsitektur Mikrokontroler AT89C51 Arsitektur AT89C51 dapat dilihat pada gmbar dibawah. Pada gambar tersebut, terlihat bahwa: CPU 8 bit dengan register A (akumulator) dengan register B. 16 bit program counter (PC) dan data Pointer (DPTR) 8 bit program status word (PSW) 8 bit stack pointer Internal 4 K flash emory dan 4 k EEPROM Internal RAM dengan 128 bytes: 4 register bank masing-masing 8 register 6 byte alamat untuk pengalamatan level bit 8 byte memory data untuk keperluan umum. 32 pin I/O masing-masing disusun dalam 8 bit per port p0-p3 Full duplex serial data receiver/transmitter : SUBF 2 eksternal dan 3 internal sumber interupsi Rangkaian oscillator dan clock

Gambar 1.7: Blok Diagram AT89C51

AT89C51 merupakan produk ATMEL yang memiliki fitur: Kompatibel dengan produk MCS-51 4K byte In System Programmable Flash Memory 4 kbyte EPROM (Erasable Programable Read Only Memory) dari jenis flash yang dapat di program ulang hingga 1000 read/write. Range catu daya 4,0V s/d 5,0V Operasi statis: 0 Hz s/d 33 MHz Tiga Tingkat Program memory lock 128 x 8-bit RAM internal 32 Programmable Jalur I/O

2 buah Timer/ Counter 16-bit Enam Sumber Interupsi Full Duplex Serial Channel Low Power Idle dan Mode Power Down Watch Dog Timer Dua Data Pointer Power Off Flag Low power idle and power down modes

2. Fungsi kaki Pin Mikrokontroler AT89C51 IC AT89C51 mempunyai 40 kaki, dengan 32 kaki dipakai sebagai port-port multiguna, kaki sebagai sumber tegangan, kristal, dan kaki-kaki untuk kendali (pembacaan memori). Gambar berikut memperlihatkan diagram pin mikrokontroler AT89C51. Berikut adalah fungsi-fungsi kaki mikrokontroler AT89C51 standar.

Gambar1.8: Susunan PIN Mikrokontroler AT89C51

P1.0 - P1.7 (port 1) Port 1 merupakan port 8 bit dua arah (input/output). Port satu bisa diakses per-bit. Port 3 merupakan port 8 bit dua arah (input/output). Selain berfungsi sebagai port I/O, P3 juga mempunyai fungsi khusus seperti pada tabel berikut ini: Tabel 1.3: Fungsi khusus port 3 AT89C51 Port P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 Fungsi Khusus RXD (merupakan masukan untuk port serial) TXD (merupakan output dari port serial) INT0 merupakan masukan untuk interupsi eksternal 0 INT1, merupakan masukan untuk pulsa external 1 T0 merupakan masukan untuk pulsa external timer 0 T1 merupakan masukan untuk pulsa eksternal timer 1 WR merupakan sinyal tulis (write strobe) untuk menulis data eksternal. Aktif rendah P3.7 RD merupakan sinyal baca (Read strobe) untuk membaca data dari memori Eksternal. Aktif rendah. Port2.0-Port2.7 Port 2 mempunyai lebar 8 bit dua arah atau input/output. Selain sebagai input dan output Port 2 memiliki fungsi khusus yaitu pada saat menjalankan program dari memori program eksternal atau pada saat mengakses memori data eksternal yang menggunakan perintah 16 bit. Atau alamat orde tinggi A8-A15. Pin 32 sampai 39 (Port 0) Port 0 merupakan Port keluaran/masukan (I/0). Sebagai Port keluaran. Port 0 dapat digunakan sebagai masukan-masukan berimpedansi tinggi. Selain sebagai input output P0 memiliki fungsi khusus yaitu sebagai bus data (DO-D7) dan bus alamat orde rendah (A0-A7) yaitu pada saat pemakaian memori exsternal.

RST berfungsi sebagai mengembalikan kerja mikro ke awal program yang berada di ROM. XTAL 1 dan XTAL 2 XTAL 1 merupakan keluaran dari rangkaian penguat osilator internal, sedangkan XTAL 2 merupakan masukan kepenguat osilator internal, sebuah kristal dan dua buah kapasitor yang dihubungkan ke pin ini sudah cukup untuk menyediakan sinyal detak (clock) untuk mikrokontroler. VCC dan GND VCC dan GND merupakan pin untuk tegangan DC. Mikrokontroler AT89C51 standar membutuhkan tegangan DC sebesar 5 Volt agar bisa bekerja dengan baik. Pin 29 (PSEN) PSEN (Program Store Enable) adalah pulsa pengaktif untuk membaca memori luar. ALE/PROG Berfungsi untuk demultiplexer pada saat Port 0 bekerja sebagai data bus (pengaksesan memori eksternal). Pada paruh pertama memory cycle, Pin ALE mengeluarkan sinyal latch yang menahan alamat ke eksternal register. Pada paruh kedua memory cycle, Port 0 digunakan sebagai data bus. Jadi fungsi utama dari ALE adalah untuk memberikan signal ke IC latch (bisa 74CT573) agar menahan/ menyimpan address dari port 0 yang akan menuju memori eksternal, dan selanjutnya port 0 akan mengeluarkan data melalui port 0 juga. EA /VPP EA (Eksternal Access) digunakan untuk memilih penggunaan memori. Jika EA high maka yang dipilih adalah memori internal, jika EA low atau dihubung ke GND maka yang dipilih atau memori yang dipakai adalah memori luar.

3. Register-register AT89C51 Akumulator ACC digunakan sebagai register utama dalam proses aritmatik dan penyimpanan data sementara. Dalam penulisan instruksi ACC ditulis A. ACC menempati alamat E0h. Register ini bisa diakses per byte maupun per bit. Register B Register B menempati alamat F0h. Register ini dipakai bersama-sama dengan Register A pada proses aritmatik (perkalian dan pembagian). Register B juga bisa diakses Per byte dan per bit. FLAG dan Program Status Word (PSW) Flag disebut juga sebagai bit status pencatat dan penyimpan status keadaan sebagai akibat dari sebuah proses instruksi pada program. Status ini sangat penting untuk mengetahui keadaan dari suatu proses instruksi sehingga dapat dipakai sebagai dasar pengambilan keputusan. Sebagai suatu contoh, misalnya untuk mengetahui isi suatu register apakah nilainya lebih besar dari suatu

arry = 1 maka nilai register tersebut lebih kecil dan sebaliknya nilai register tersebut sama atau

AT89C51 memiliki empat flag matematik yang tercatat status akibat dari operasi matematik yaitu Carry (C), Auxiliary Carry (AC), Overflow (OV), dan parity (P), register PSW susunannya adalah sebagai berikut : Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CY Bit 7 AC F0 RS1 Fungsi Flag Carry; digunakan untuk aritmatika JuMP, ROTATE, Boolean RS0 OV P

Simbol CY

6

AC

Flag Auxiliary Carry : digunakan untuk aritmatika BCD

5 4 3

F0 RS1 RS0

Flag 0 Pemilih bank bit 1 Pemilih bank bit 0 0 0 1 1 0 1 0 1 : bank 0 : bank 1 : bank 2 : bank 3

2 1 0

OV P

Flag Overflow : untuk instruksi matematik Tidak digunkan Flag paritas; 1= paritas ganjil

P0 - P3 (Register Port) Register port merupakan SFR yang mengatur kerja port-port 8051(P0-P3). Register ini merupakan alamat Latch dari masingmasing port. Menulis atau membaca latch ini sama dengan menulis atau membaca latch yang bersangkutan sehingga data data bisa

ditulis ke dan dibaca dari masing-masing port. Data Pointer (DPTR) dan Stack Pointer (SP) Data pointer (DPTR) adalah register 16 bit yang biasa dipakai untuk pengalamatan data 16 bit. Misalnya pada saat membaca atau menulis RAM eksternal (dengan perintah MOVX). DPTR menempati dua alamat dalam memori SFR 82h dan 83h. DPTR bisa diakses sebagai register 8 bit dengan nama DPL (DPTR bit 0 bit 7) dan DPH bit. Stack pointer merupakan register 8 bit, dipakai untuk menyimpan data sementara pada saat perintah push, pop dan call, ret. Misalnya suatu rutin yang memakai register A akan memanggil (call) subrutin yang juga memakai register A, maka agar data register A pada rutin pertama tidak dimodifikasi oleh subrutin (DPTR bit 8-bit 15). DPTR tidak bisa diakses per

yang dipanggil, data register A harus disimpan dulu di SP (dengan perintah push). Setelah subrutin selesai dikerjakan, data register A yang tersimpan di SP di baca kembali (melalui perintah pop) dan disimpan di register A. Perintah call akan menyimpan isi PC (program counter) ke dalam SP dan mengambilnya kembali setelah instruksi ret. Pada saat reset SP memiliki alamat 07h, namun karena SP akan ditambahkan satu sebelum data disimpan melalui perintah push, tumpukan data yang disimpan akan dimulai pada alamat 08h. Alamat ini menempati memori internal AT89C51 SP tidak bisa dialamati per bit.

4. Organisasi Memory AT89C51 Semua piranti mempunyai ruang alamat yang terpisah untuk memori program dan memori data, seperti yang ditunjukkan pada gambar 1.9 dan gambar 1.10 Pemisahan secara logika dari memori program dan data mengijinkan memori data untuk diakses dengan pengalamatan 8-bit, yang dengan cepat dapat disimpan dan dimanipulasi dengan CPU 8-bit. Selain itu, pengalamatan memori data 16-bit dapat juga dibangkitkan melalui register DPTR. Memori program ( ROM, EPROM dan FLASH ) hanya dapat dibaca, tidak ditulis. Memori program dapat dilakukan ekspansi hingga mencapai 64 K.Byte. Pada 89S51, 4K.Byte memori program terdapat di dalam chip. Untuk membaca memori program eksternal mikrokontroler mengirim sinyal PSEN (Program Store Enable) Memori data ( RAM ) menempati ruang alamat yang terpisah dari memori program. Pada keluarga 8051, 128 byte terendah dari memori data, berada di dalam chip. RAM eksternal (maksimal 64 K. Byte). Dalam pengaksesan RAM eksternal, mikrokontroler mingirimkan sinyal RD (baca) dan WR ( tulis ).

Gambar 1.9: Diagram blok inti mikrokontroler AT89S51

Gambar 1.10: Organisasi Memori Mikrokontroller AT89C51

Mikrokontroler AT89C51 mempunyai organisasi memori yang terdiri atas: memori program (CODE) memori data (DATA) memori data Indirect (IDATA) memori data pengalamatan bit (BIT) memori data eksternal (XDATA)

memori data halaman eksternal (PDATA) Special Function Register(SFR)

a.

Program Memory Gambar 1.11 menunjukkan suatu peta bagian bawah dari memori program. Setelah reset CPU mulai melakukan eksekusi dari lokasi 0000H. Sebagaimana yang ditunjukkan pada gambar 1.3, setiap interupsi ditempatkan pada suatu lokasi tertentu pada memori program. Interupsi menyebabkan CPU untuk melompat ke lokasi dimana harus dilakukan suatu layanan tertentu. Interupsi Eksternal 0, sebagi contoh, menempatai lokasi 0003H. Jika Interupsi Eksternal 0 akan digunakan, maka layanan rutin harus dimulai pada lokasi 0003H. Jika interupsi ini tidak digunakan, lokasi layanan ini dapat digunakan untuk berbagai keperluan sebagai Memori Program.

Gambar 1.11. Peta Alamat Interupsi mikrokontroller AT89C51

b.

Memory Data Pada gambar 1.10 menunjukkan ruang memori data internal dan eksternal pada keluarga AT89C51. CPU membangkitkan sinyal RD dan WR yang diperlukan selama akses RAM eksternal. Memori data internal terpetakan seperti pada gambar 1.12. Ruang memori dibagi menjadi tiga blok, yang diacukan sebagai 128 byte lower, 128 byte upper dan ruang SFR. Alamat memori data internal selalu mempunyai lebar data satu byte. Pengalamatan langsung di atas 7Fh akan mengakses satu alamat memori, dan pengalamatan tak langsung di atas

7Fh akan mengakses satu alamat yang berbeda. Demikian pada gambar 1.4 menunjukkan 128 byte bagian atas dan ruang SFR menempati blok alamat yang sama, yaitu 80h sampai dengan FFh, yang sebenarnya mereka terpisah secara fisik. 128 byte RAM bagian bawah dikelompokkan lagi menjadi beberapa blok. 32 byte RAM paling bawah, dikelompokkan menjadi 4 bank yang masing-masing terdiri dari 8 register. Instruksi program untuk memanggil register-register ini dinamai sebagai R0 sampai dengan R7. Dua bit pada Program Status Word (PSW) dapat memilih register bank mana yang akan digunakan. Penggunaan register R0 sampai dengan R7 ini akan membuat pemrograman lebih efisien dan singkat, bila dibandingkan

pengalamatan secara langsung. Bank Address RAM Register 0 1 2 3 00 h - 07 h 08 h - 0F h 10 h - 17 h 18 h - 1F h R0 - R7 R0 R0 R0 R7 R7 R7

Gambar 1.12: Memori data internal

Gambar 1.13: RAM internal 128 byte paling bawah Organisasi RAM Internal menunjukan: 32 byte dari almamat 00h s/d 1Fh digunakan untuk 32 register kerja yang dikelompokan dalam 4 bank dengan 8 register untuk masing-masing bank. Keempat bank register tersebut diberi nomor bank 0 s/d bank 3, dengan masing masing bank berisi 8 register R0 s/d R7. Tiap tiap register dapat dialamati baik menggunkan nama registernya atau alamat registernya.

Penggunaan dan pemilihan bank dapat diaktifkan melalui RS1 dan RS0 pada PSW. Sebanyak 16 byte mulai alamat 20 s/d 2F dapat dialamati sebagai alamat bit sehingga tiap-tiap byte alamat memilii 8 bit alamat. Byte alamat 20h mamiliki alamat bit 00h s/d 07h dan seterusanya untuk alamat byte diatasnya. Ram untuk keperluan umum mulai alamat 30h s/d 7Fh dialamati secara byte. Stack Pointer Stack merupakan bagian dari RAM yang memiliki metode penyimpanan dan pengambilan data secara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan dengan cara acak karena

data yang dituliskan ke dalam stack yang berada pada urutan yang terakhir merupakan data yang pertama kali dibaca kembali. Stack Pointer berisi offset dimana posisi data stack yang terakhir masuk (atau yang pertama kali dapat diambil). Pada saat reset SP diset 07h dan dapat dirubah pada lokasi RAM internal oleh programer. Pada saat operasi push, SP bertambah satu dan diikuti dengan penyimpangan data. Sebaliknya pada operasi POP, Spberkurang satu dan diikuti pengambilan data. Oleh karena register SP adalah register 8 bit maka batas kemampuan stack pada AT89C51 maksimum adalah 128 byte.PUSH SP=0Asimpan data simpan data

POPAmbil data Ambil data

Alamat 0A Alamat 09

SP=0A

SP=09simpan data

SP=09

SP=08

Alamat 08

Ambil data

SP=08

SP=07SP=SP+1 simpan data ke stack

Alamat 07Alamat RAM

SP=07SP= SP +1 Ambil data dari Stack

Gambar 1.14. Proses pembentukan stack Special Function Register (SFR) Disamping RAM internal AT89C51 bekerja menggunakan rgister-register khusus yang disebut SFR yang dapat dialamati seperti halnya alamat RAM internal menggunkan alamat dari 80h s/d FFh. Beberapa SFR juga dapat dialamati secara bit. Tidak semua diantara alamat 80h s/d FFh digunakan untuk alamat SFR. Nama dan alamat SFR adalah sebagai berikut :

Tabel 1.4: Nama dan alamat SFR No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Nama A B DPH DPL IE IP P0 P1 P2 P3 PCON PSW SCON SBUF SP Fungsi Akumulator Aritmatika Pengalamatan Memori Alamat E0 F0 83

Pengalamatn memori eksternal 82 Interrupt Enable Control Interrupt priority Input output port latch port 0 Input output port latch port 1 Input output port latch port 2 Input output port latch port 3 Power control Program status word Serial Port Control Serial Port Data Buffer Stack Pointer A8 B8 80 90 A0 B0 87 D0 98 99 81 89 88 8A 8B 8C 8D

TMOD Timer/counter Mode Control TCON TL0 TH0 TL1 TH1 Timer/counter control Timer 0 low byte Timer 0 high byte Timer 0 low byte Timer 0 high byte

BAB II PEMROGRAMAN MIKROKONTROLER

A. Sejarah Mikrokontroler berbagai fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Hal tersebut terjadi semenjak tahun 1970-an. Motorola mengeluarkan seri mikrokontroler 6800 yang terus dikembangkan hingga sekarang menjadi 68HC05, 68HC08, 68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor Z80-nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan mikrokontrolernya yang populer di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain seperti Phillips, Siemens, Atmel, dan vendor-vendor lain dalam produk mikrokontroler mereka. Selain itu masih ada mikrokontroler populer lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan masih banyak lagi. Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah komponen-komponen konvensional. Dalam perkembangannya mikrokontroler mengalami perubahan dari segi rancagan dan aplikasinya, seperti factor kecepatan pengolah data yang semakin meningkat (cepat) dibanding pendahulunya. Berdasarkan jumlah bitnya mirokontroler dibedakan menjadi: Mikrokontroler 4 bit Mikrokontroler 8 bit Mikrokontroler 16 bit

Mikrokontroler 32 bit Mikrokontroler 4 bit Mikrokontroler 4 bit merupakan Mikrokontroler dengan jumlah bit data terkecil Mikrokontroler jenis ini diproduksi untuk meminimalkan jumlah pin dan ukuran kemasan. Tabel 2.1: Contoh Mikrokontroler 4 bit: Pabrik : model Hitachi : HMCS40 National : COP420 OKI : MSM6411 TI : TMS 1000 Toshiba TLCS47 42:35 2 128 2K 28:23 64 1K Led Display Serial bit I/O 16:11 32 1K 28:23 1 64 1K 28:10 Pin I/O Counter RAM Byte 32 ROM Byte 512 Gambaran Lain 10 bit ROM Serial bit I/O -

Mikrokontroler 8 Bit Mikrokontroler 8 bit merupakan mikrokontroler yang paling banyak digunakan untuk pekerjaa-pekerjaan perhitungan sekala kecil. Dalam komunikasi data, data ASCII serial juga disimpan dalam ukkuran 8 bit. Kebanyakan IC memory dan fungsi logika dibangun menggunkan data 8 bit sehingga interface bus data menjadi sangat mudah dibangun. Penggunaan mikrokontroler 8 bit jauh lebih banyak dibandingkan dengan mikrokontroler 4 bit. Aplikasinya juga sangat variatif mulai dari aplikasi kendali sederhana sampai kendali mesin berkecepatan tinggi.

Tabel 2.2 : Contoh mikrokontroler 8 bit. Pabrik: Model Intel : 8048 Intel: 8051 National: COP820 Motorola: 6805 Motorola: 68HC11 Rockwell: 650071 Signetics: 87C552 TI : TMS7500 Zilog: Z8 40:32 2 128 2K 40:32 1 128 2K 68:48 3 256 8K Serial Dog Memori eksternal 112 K; A/D; Serial WDT Memori Eksternal 124 K; Serial Zilog Z8820 : 44:40 2 272 8K Memori Eksternal 128 K; serial A/D; Watch 40:32 1 64 2K 52:40 2 256 8K Serial Dog A/D; Watch 28:20 1 64 1K 28:24 1 64 1K 40:32 2 128 4K Memori 128K; serial Serial bit I/O Eksternal Pin I/O 40:27 1 Counter RAM Byte 64 ROM Byte 1K Memori External 8K Gambaran Lain

Mikrokontroler 16 Bit Mikrokontroler 16 bit merupakan regenerasi dari mikrokontroler 8 bit dimana keterbasan yang ada pada pada versi pendahulunya seperti kekomplekan pengoah data dan pengendalian serta kecepatan dalam merespon telah di sempurnakan. Yakni dengan menaikan clock dan ukuran data. Mikrokontroler 16 bit digunakan untuk mengontrol lengan robot dan aplikasi Digital Signal Processing (DSP).

Tabel 2.3 : Contoh Mikrokonroler 16 Bit. Pabrik: Model Hitachi : H87532 Pin I/O 84:65 5 Counter RAM Byte 1K ROM Byte 32 K Memori eksternal 1 Gambaran Lain

MB,serial, A/D, Pulse Widh Modulasi

National: HPC16164 Intel: 8096

68:52

4

512

16

Memori Eksternal 64 K, sserial,A/D,WDT,PWM

68:40

2

232

8K

Memori Eksternal 64 K, serial, PWM A/D, WDT,

Mikrokontroler 32 Bit Mikrokontroler 32 Bit ditargetkan untuk operasi robot, instrument cerdas, Avionics, Image Processing, Telekomunikasi, Automobil, dan sebagainya. Program-Program aplikasinya bekerja dengan system Operasi.

B. Pemrograman Mikrokontroler 1. Bahasa Assembly Bahasa Assembly adalah bahasa komputer yang kedudukannya di antara bahasa mesin dan bahasa level tinggi misalnya bahasa C, C++, Pascal, Turbo Basic, Java, dan sebagainya. Bahasa C atau Pascal dikatakan sebagai bahasa level tinggi pernyataan yang karena memakai kata-kata dan

mudah dimengerti manusia, meskipun masih jauh

berbeda dengan bahasa manusia sesungguhnya. Assembler adalah program yang bekerja membantu penulisan instruksi dalam format

bahasa inggris sehingga mudah dibaca dan dipahami. MOV R0, #02h MOV A, #03h ADD A, R0

Perintah baris pertama bekerja menjalankan proses pengisian register R0 dengan data 02h. Perintah baris kedua bekerja menjalankan proses pengisian register A dengan data 03h. Kemudian proses penjumlahan data pada register A dengan data pada register R0

dijalankan menggunakan perintah ADD A,R0 dan menghasilkan data 05h tersimpan di register A. Perintah MOV dan ADD adalah mnemonik atau singkatan dari perintah MOVE dan ADD. dirangkum dalam tabel berikut. Tabel 2.4 : Perintah Mnemonik Mnemonik dari perintah lainnya dapat

Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Di dalam mikrokontroler instruksi disimpan dalam kode heksa desimal sehingga sulit dibaca dan difahami maknanya. Sedangkan bahasa assembly memakai kode mnemonik untuk menggantikan kode biner, agar lebih mudah diingat sehingga lebih memudahkan dalam penulisan program. Contoh model program assembly:

Tabel 2.5 :

Contoh program assembly

Dari table diatas Kode bahasa mesin atau sering disebut dengan operation code dari perintah MOV R0,#02h adalah 78 02. Untuk MOV A,#03h kode operasinya adalah 74 03 dan 28 adalah kode operasi dari perintah ADD A, R0. Kode operasi untuk setiap perintah dapat dibaca pada lembar instruction set. Program yang ditulis dengan bahasa assembly terdiri dari label; kode mnemonik, operand 1, operand 2, keterangan, dan lain sebagainya. Program ini disebut sebagai program sumber (Source Code). Source code belum bisa diterapkan langsung pada prosesor untuk dijalankan sebagai program. Source code harus diterjemahkan dulu menjadi bahasa mesin dalam bentuk kode biner atau operasi. Source code ditulis dengan program editor biasa, misalnya Note Pad pada Windows atau SideKick pada DOS, TV demo, lalu source code diterjemahkan ke bahasa mesin dengan mengunakan program Assembler. Proses menterjemahkan source code menjadi bahasa mesin disebut dengan proses assembled. Hasil kerja program Assembler adalah b Program Objek berisikan kode kode operasi bahasa mesin. Biasanya file program objek menguanakan ekstensi .HEX. Kode-kode operasi bahasa mesin inilah yang dituliskan ke memori-program prosesor. Dalam dunia mikrokontroler biasanya program objek ini diisikan ke UVEPROM atau EEPROM dan khusus untuk mikrokontroler buatan Atmel, program ini diisikan ke dalam Flash EPROM yang ada di dalam chip mikrokontroler AT89S51 atau AT89C2051.

Assembly Listing merupakan naskah yang berasal dari program sumber, dalam naskah tersebut pada bagian sebelah setiap baris dari program sumber diberi tambahan hasil terjemahan program Assembler. Tambahan tersebut berupa nomor memori-program berikut dengan kode yang akan diisikan pada memori-program bersangkutan. Naskah ini sangat berguna untuk dokumentasi dan sarana untuk menelusuri program yang ditulis. Gambar dibawah menunjukkan model editor program assembly dan bagan kerja proses assembly.

Gambar 2.1 : Model editor program assembly

Yang perlu diperhatikan adalah setiap prosesor mempunyai konstruksi yang berlainan, instruksi untuk mengendalikan masing-masing prosesor juga berlainan, dengan demikian bahasa Assembly untuk masing-masing prosesor juga berlainan, yang sama hanyalah pola dasar cara penulisan program assembly saja. a. Konstruksi Program Assembly Source program dalam bahasa assembly menganut prinsip 1 baris untuk 1 perintah tunggal. Setiap baris perintah tersebut bias terdiri dari

beberapa field/bagian, yaitu bagian label, bagian mnemonic, bagian operand yang bisa lebih dari satu dan terakhir adalah bagian komentar. Untuk membedakan masing-masing bagian tersebut, dibutuhkan ketentuan sebagai berikut: Masing-masing bagian dipisahkan dengan spasi atau TAB, khusus untuk operand yang lebih dari satu, masing-masing operand dipisahka dengan koma. Bagian tersebut tidak harus semuanya ada dalam sebuah baris, jika ada bagian yang tidak ada maka spasi atau TAB sebagai pemisah harus tetap ditulis. Bagian Label ditulis mulai huruf pertama dari baris, jika baris bersangkutan tidak mengandung Label maka label tersebut digantikan dengan spasi atau TAB, yakni sebagai tanda pemisah antara bagian Label dan bagian mnemonik.

Label mewakili nomor memori-program dari instruksi pada baris bersangkutan, pada saat menulis instruksi JUMP, Label ini ditulis dalam bagian operand untuk menyatakan nomor memori-program yang

dituju. Dengan demikian Label selalu mewakili nomor memoriprogram dan harus ditulis dibagian awal baris instruksi. Disamping Label dikenal pula Symbol, yakni satu nama untuk mewakili satu nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori-program. Cara penulisan Symbol sama dengan cara penulisan Label, harus dimulai di huruf pertama dari baris instruksi. Mnemonik (artinya sesuatu yang memudahkan diingat)

merupakan singkatan perintah, dikenal dua macam mnemonik, yakni manemonic yang dipakai sebagai instruksi mengendalikan prosesor, misalnya ADD, MOV, DJNZ dan lain sebagainya. Adapula mnemonik yang dipakai untuk mengatur kerja dari program Assembler misalnya ORG, EQU atau DB, mnemonik untuk mengatur kerja dari program Assembler ini dinamakan Operand adalah bagian yang letaknya di belakang bagian mnemonik, merupakan pelangkap bagi mnemonik. Kalau sebuah instruksi di-ibaratkan sebagai kalimat perintah, maka mnemonik merupakan subjek (kata kerja) dan operand merupakan objek (kata benda) dari kalimat perintah tersebut. Tergantung pada jenis instruksinya, operand bisa berupa berbagai macam hal. Pada instruksi JUMP operand berupa Label yang mewakili nomor memori-program yang dituju misalnya LJMP Start, pada instruksi untuk pemindahan/pengolahan data, operand bisa berupa

Symbol yang mewakili data tersebut, misalnya ADD A,#Offset. Banyak instruksi yang operandnya adalah register dari prosesor, misalnya MOV A,R1. Bahkan ada pula instruksi yang tidak

mempunyai operand, misalnya RET. Komentar merupakan bagian yang sekedar sebagai catatan, tidak berpengaruh pada prosesor juga tidak berpengaruh pada kerja program Assembler, tapi bagian ini sangat penting untuk keperluan dokumentasi.

b. Assembler Directive Seperti sudah dibahas di atas, bagian Mnemonik dari sebuah baris perintah bisa merupakan instruksi untuk prosesor, maupun berupa Assembler Directive untuk mengatur kerja dari program Assembler. Mnemonik untuk instruksi prosesor, sangat tergantung pada prosesor yang dipakai, sedangkan mnemonik untuk Assembler Directive tergantung pada program Assembler yang dipakai. Meskipun demikian, terdapat beberapa Assembler Directive yang umum, yang sama untuk banyak macam program Assembler. Assembler Directive yang bersifat umum tersebut, antara lain adala: ORG singkatan dari ORIGIN, untuk menyatakan nomor memori

yang dipakai setelah perintah itu, misalnya ORG 0000h maka memori berikutnya yang dipakai Assembler adalah0000h. ORG berlaku untuk memori program maupun memori-data. Dalam hal penomoran memori, dikenal tanda sebagai awalan untuk

menyatakan nomor memori dari baris bersangkutan. Misalnya :

EQU singkatan dari EQUATE, dipakai untuk menentukan nilai sebuah Symbol. Misalnya Angka88 EQU 88 memberi nilai 88 pada Symbol Angka88, atau CR EQU 0D mempunyai makna kode ASCII dari CR (Caarriage Return) adalah 08. DB - singkatan dari DEFINE BYTE, dipakai untuk memberi nilai tertentu pada memori-program. Nilai tersebut merupakan nilai 1 byte, bisa berupa angka ataupun kode ASCII. DB merupakan Assembler Directive yang dipakai untuk membentuk teks maupun tabel.

DW

singkatan dari DEFINE WORD, dipakai untuk memberi

nilai 2 byte ke memori-program pada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomor memori-program. DS singkatan dari Define Storage, Assembler Directive ini

dipakai untuk membentuk variable. Sebagai variable tentu saja memori yang dipakai adalah memori-data (RAM) bukan memoriprogram (ROM). Hal ini harus benar-benar dibedakan dengan Assembler Directive DB dan DW yang membentuk kode di memori-program. Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan.

2. Bahasa C a. Penulisan Bahasa C Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan ATMEL menggunakan software CodeVision AVR.

CodeVision AVR merupakan software C-cross compiler, program dapat ditulis dalam bahasa C, CodeVisionAVR memiliki IDE (integrated development environment) yang lengkap, sehingga penulisan program, compile, link, pembuatan code mesin (assembler) dan download program ke chip AVR dapat dilakukan pada CodeVision. Berikut ini adalah aturan penulisan program dalam bahasa C menggunakan CodeVision AVRPreprocessor (#): Digunakan untuk memasukan (include) text dari file lain dan mendefinisikan macro /*

Atau jika untuk satu baris saja

Inisialisasi

Program utama Program akan berulang terus karena syarat while (1) akan selalu menghasilkan nilai benar (true)

Penjelasan: Preprocessor (#) : digunakan untuk memasukan (include) text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source code mudah dibaca. #define : digunakan untuk mendefinisikan macro. Contoh : #define #define sensor SUM(a,b) a+b PINA.5

Komentar : penulisan komentar untuk beberapa baris sekaligus

Sedangkan penulisan komentar untuk 1 baris saja Identifer : nama yang diberikan pada variable, fungsi, label atau

case sensitive. Identifer dapat mencapai maksiml 32 karakter.

KonstantaCara menuliskan konstanta adalah:

-

Konstanta integer dan long integer ditulis dalam bentuk desimal (1234), dalam bentuk biner mempunyai awalan 0b (0b01011100), dalam bentuk hexadesimal mempunyai awalan 0x (0x0e) atau dalam oktal mempunyai awalan o (o765).

-

Unsigned integer mempunyai akhiran U (10000U) long integer mempunyai akhiran L (99L) unsigned long integer mempunyai akhiran UL (99UL) floating point mempunyai akhiran F (1.234F) character Tipe data yang ada dalam bahasa C adalah sebagai berikut: Tabel 2.6 : Tipe data dalam bahasa C Tipe Bit Char Unsigned char Signed char Int Short int Unsigned int Signed in Long int Unsigned long int Signed long int Float Double Ukuran (Bit) 1 8 8 8 16 16 16 16 32 32 32 32 32 Range 0, 1 (tipe data bit hanya dapat digunakan untuk variabel global) -128 sampai 127 0 sampai 255 -128 sampai 127 -32768 sampai 32767 -32768 sampai 32767 0 sampai 65535 -32768 sampai 32767 -2147483648 sampai 2147483647 0 sampai 4294967295 -2147483648 sampai 2147483647 + 1.175e-38 sampai + 3.402e38 + 1.175e-38 sampai + 3.402e38

Operator yang dapat digunakan pada bahasa C adalah: Tabel 2.7 : Operator dalam bahasa CJenis operator Operator < >= == != + Operator aritmatika * / % Operator logika ! && || ~ & Operator bitwise | ^ >> = &= ^= \=

Untuk memasukan nilai sisa bagi dari pembagian bilangan semula Untuk memasukan shift left Untuk memasukan shift right Untuk memasukan bitwise and Untk memasukan bitwise exor Untuk memasukan bitwise or

C. Set Instrukis Mikrokontroler MCS 51 Mikrokontroler AT89C51 memiliki sekitar 110 jenis instruksi. Keseluruhan instruksi dapat dikelompokkkan menjadi : Kelompok Instruksi Operasi Aritmetika Kelompok Instruksi Operasi Logika Kelompok Instruksi Transfer Data Kelompok Instruksi Manipulasi Variabel Bolean Kelompok Operasi Branching Kelompok instruksi operasi aritmetika terdiri dari sejumlah instruksi ADD, ADC, SUBB, INC, DEC, MUL, DIV, DAA. Kelompok instruksi aritmetika menyediakan instruksi untuk pengolahan penjumlahan,

pengurangan,

perkalian, pembagian, dan koreksi DAA. Kelompok operasi

logika terdiri dari operasi logika AND, OR, Exclusive-Or, Clear, Complement, Rotate. Sedangkan kelompok operasi transfer data terdiri dari mode register, mode tidak langsung (indirect), mode langsung (direct),

mode immediate, PUSH-POP, dan pertukaran data (exchange). Manipulasi variabel Boolean terdiri dari instruksi clear, set, complement, AND bit carry, OR direct, complement direct, Move direct, Jump. Kelompok program Branching terdiri dari ACALL, LCALL, RET, RETI, AJMP, LJMP, SJMP, JZ, JNZ, CJNE, DJNZ. Set instruksi mikrokontroler AT89C51 selengkapnya dapat dilihat pada tabel dibawah ini. Dalam tabel disajikan mnemonik setiap instruksi diikuti deskripsi dan simbol operasi.

Table 2.8 : Instruksi mnemonik

1. Alih Data (Moving Data) Komputer atau sistim mikroprosesor atau mikrokontroler secara khusus memerlukan proses alih data dari suatu lokasi ke lokasi lainnya. Dalam mikrokontroler ada enam kemungkinan proses alih data yang dapat terjadi yaitu: Alih data dari memori ke memori Alih data dari register ke register Alih data dari memori ke register

Alih data dari register ke memori Alih data immediate ke register Alih data immediate ke memori Dalam proses alih data dari enam kemungkinan yang dapat terjadi, data dicopy ke tujuan dialihkan dalam hal ini secara nyata disebut atau ditulis

lebih awal kemudian baru diikuti oleh Source. Alih data dalam sistim mikrokontroler pada umummnya menggunakan perintah-perintah MOV, LOAD, PUSH, POP, dan EXCHANGE. Pola umum penulisannya adalah : MOVE Destinasi, Source PUSH Source atau POP Destinasi XCH Destinasi, Source Cara khas pengalamatan alih data dalam mikrokontroler disebut dengan Mode Pengalamatan (Addressing Modes). Ada empat jenis mode pengalamatan yaitu: Immediate addressing mode Register addressing mode Direct addressing mode Indirect Addressing mode Dalam mikrokontroler AT89C51 Opcode Perintah mencakup memori : Internal RAM Internal SFR External RAM Internal dan eksternal ROM Tipe atau jenis perintah yang digunakan untuk alih data : MOV MOVX, MOVC PUSH dan POP XCH

2. Adressing Mode a. Immediate Addressing Mode Immediate addressing mode merupakan cara yang paling sederhana untuk membangkitkan data pada destinasi dengan cara membuat data menjadi bagian dari opcode. Sumber data secara langsung dinyatakan sebagai bagian dari perintahnya. Pada saat AT89C51 mengeksekusi perintah ini, program counter secara otomatis naik satu digit untuk mengambil data secara langsung dari memori. Mnemonic untuk data immediate menggunakan tanda pagar Pola immediate addressing

mode dan contoh perintahnya adalah seperti gambar berikut :

Gambar 2.2: Pola immediate addressing mode

Berikut contoh perintah immediate addressing mode. Mnemonic MOV A, #01h MOV R3, #1Ch MOV DPTR,#ABCDh Operasi copy data 01h ke Register A copy data 1Ch ke Register R3 copy data ABCDh ke Register DPTR

Instruksi MOV A, #01h bekerja mengisikan data immediate 01h ke register A atau akumulator. Instruksi ini memberi hasil akumulator berisi data 01h. Instruksi MOV R3, #1Ch memberi hasil register R3 berisi data 1Ch. Kedua instruksi ini termasuk instruksi transfer data immediate 8 bit. Instruksi ke tiga MOV DPTR,#ABCDh termasuk instruksi transfer data immediate 16 bit. Hasilnya register DPTR berisi data ABCDh.

b. Register Addressing Mode Register addressing mode adalah model pengalamatan alih data dimana nama register (A, R0 R7) digunakan sebagai bagian dari

opcode mnemonik baik sebagai source atau sebagai destinasi. Bentuk perintah register addressing mode digambarkan seperti gambar berikut:

Gambar 2.3: Pola register addressing mode

Contoh perintah register addressing mode: Mnemonic MOV A, R0 MOV R5, A MOV R7,A Operasi copy data pada R0 ke register A copy data pada A ke R5 copy data pada A ke R7

Instruksi MOV A,R0 merupakan instruksi transfer data 8 bit dari register ke register. Instruksi ini bekerja meng-copy-kan data register R0 ke akumulator. Dengan instruksi ini akumulator berisi data sama dengan data register R0. Selanjutnya instruksi MOV R5, A bekerja meng-copy-kan data pada akumulator ke register R5. Instruksi MOV R7,A bekerja meng-copy data pada akumulator ke register R7. Dengan demikian isi register R5 sama dengan register R0 dan juga sama dengan isi register R7.

c. Direct Addressing Mode Direct addressing mode menggunakan pengalamatan dengan

penunjukan alamat secara langsung salah satu dari 128 byte alamat RAM internal dan Special Function Register (SFR). Dalam satu waktu hanya satu bank atau 8 register yang dapat aktif dari 4 bank yang ada. Jika AT89C51 dalam keadaan reset bank 0 secara otomatis terpilih. Untuk memilih bank lainnya digunakan seting RS0 dan RS1 pada PSW. Model Direct addressing mode sebagai berikut:

Gambar 2.4: Pola direct addressing mode

Contoh-contoh instruksi dengan direct addressing mode antara lain: Mnemonic MOV A, 80h MOV A, P0 MOV 80h, A MOV P0 , A Operasi copy data dari Port 0 ke register A copy data dari Port 0 ke register A copy data dari register A ke Port 0 copy data dari register A ke Port 0

Instruksi MOVA,80h berbeda dengan instruksi MOV A,#80h. Instruksi MOV A,80h bekerja mengisi akumulator dengan data alamat 80 yaitu Port 0. Perintah ini sama dengan membaca data dari Port 0 dan hasilnya disimpan di register A. Instruksi MOV A, P0 memberi hasil yang sama dengan instruksi MOV A,80h karena alamat Port 0 adalah 80h. Dua instruksi berikutnya MOV 80h,A dan MOV P0,A memberi hasil yang sama yaitu mengeluarkan data register A ke Port 0.

d. Indirect Addressing Mode Indirect addressing mode adalah mode pengalamatan tidak langsung dengan menggunakan register sebagai pencatat atau pemegang alamat aktual yang akan digunakan untuk memindahkan data. Data pada register itu sebagai nilai alamat yang akan diakses. Indirect addressing mode menggunakan R0 dan R1 sebagai Pointer data dan Contoh perintah indirect addressing mode sebagai berikut. Mnemonic MOV A, @R0 Operasi copy isi data dari alamat yang dicatat

oleh R0 ke register A MOV @R1, A copy data yang ada di register A ke alamat yang dicatat oleh R1 MOV @R0,80h copy data dari Port 0 ke alamat yang tercatat oleh R0 Instruksi MOV A,@R0 bekerja mengcopy data dari suatu memori yang alamatnya dicatat oleh R0 ke register A. Jika R0 berisi data 80h maka instruksi MOV A,@R0 akan memberi hasil yang sama MOV A,P0 karena alamat P0 adalah 80h. Instruksi MOV @R1, A bekerja meng-copy data dari akumulator ke memori alamat yang dicatat oleh R1. Jika R1 berisi data 80 maka instruksi ini memberi hasil yang sama dengan instruksi MOV P0,A.

3. Pengalamatan eksternal menggunakan MOVX dan MOVC MOVX (External Data Moves) adalah perintah yang digunakan untuk pengalamatan memori data eksternal. R0, R1 dan DPTR digunakan untuk memegang/hold alamat dari byte data RAM ekternal. R0 dan R1 dibatasi pada eksternal RAM alamat 00h FFh, sedangkan DPTR dapat

mengalamati maksimum space 0000h-FFFFh. Alih data dari memori ekternal harus ke register A. MOVX normalnya digunakan dengan

alamat RAM eksternal atau alamat I/O eksternal. Berikut ini contoh instruksi MOVX. Mnemonic MOVX A, @R1 MOVX A, @R0 MOVX A, @DPTR MOVX @DPTR,A Operasi copy isi dari alamat eksternal R1 ke A copy isi dari alamat eksternal R0 ke A copy isi dari alamat eksternal DPTR ke A copy data dari A ke alamat eksternal DPTR

Instruksi MOVX A,@R1 bekerja mengcopy data dari RAM eksternal ke akumulator. Perintah ini digunakan jika menambahkan RAM eksternal.

4. MOVC (Code Memory Read-Only Data Moves) MOVC adalah instruksi yang digunakan untuk alih data dari alamat sumber di ROM eksternal ke register A. Beberapa contoh perintah MOVC adalah sebagai berikut: Mnemonic MOVC A, @A+DPTR1 Operasi copy byte kode pada ROM dengan alamat yang dibangun dari data A dengan data DPTR ke Register A MOVC A, @A+PC copy byte kode pada ROM dengan alamat yang dibangun dari data A dengan data PC ke Register A MOV DPTR, #1234h MOV A, #56h MOVC A, @A+DPTR MOVC A, @A+PC copy data imediate 1234h ke DPTR copy data immediate 56h ke Reg. A copy data pada alamat 128Ah ke A copy data pada alamat 4056h ke A jika PC = 4000. Instruksi MOVC A, @A+DPTR1 bekerja meng-copy byte data dari ROM eksternal alamat data DPTR ditambah data register A dan hasilnya disimpan di register A.

5. PUSH dan POP Instruksi PUSH dan POP berkaitan dengan kebutuhan pengamanan data kememeori. PUSH dan POP menggunakan register SP (Stack Pointer) sebagai pencatat alamat. Data dialihkan dalam area RAM yang disebut dengan Stack. Register SP berisi alamat Stack. PUSH mengcopy data dari suatu source ke stack. SP ditambah satu sebelum data dicopy ke RAM internal. POP mengcopy data dari stack ke suatu destinasi. SP diset sama dengan 07h pada saat ada Reset sehingga defaultnya perintah PUSH pertama menulis data ke R0 bank 1. Jika a 7Fh.

Mnemonic PUSH add

Operasi SP ditambah satu, copy data dari suatu alamat ke alamat internal RAM yang tercatat dalam SP

POP add

SP dikurangi satu, copy data dari alamat internal RAM yang tercatat dalam SP ke suatu alamat Register

Contoh: MOV 81h,#30h MOV R0,#ACh PUSH 00h PUSH 00h POP 01h copy data immediate 30h ke SP copy data immediate ACh ke Reg R0 SP=31h, alamat 31 berisi data ACh SP=32h, alamat 32h berisi data ACh SP=31, Register R1 sekarang berisi data ACh POP 80h SP=30h, Port 0 berisi daa Ach

Instruksi MOV 81h,#30h bekerja mengisi register SP dengan data 30h. Alamat register SP dalam SFR adalah 81h. Instruksi MOV 81h,#30h sama dengan instruksi MOV SP,#30h. Instruksi kedua MOV R0,#ACh merupakan instruksi transfer data immediate ACh ke R0. PUSH 00h merupakan inti pokok permaslahan stack pointer. Instruksi PUSH 00h bekerja memasukkan (push) data ACh yang ada di R0 (alamat R0 bank 0 adalah 00h). Maka dapat dinyatakan alamat 31h diisi data ACh dari R0. PUSH 00h yang kedua menghasilkan alamat 32h berisi data ACh. Kemudian instruksi POP 01 menyebabkan data pada alamat 32h di-copy ke register R1 karena alamat R1 bank 1 adalah 01.

6. Data Exchanges XCH Mnemonic XCH A,Rr Operasi Pertukarkan data byte diantara register Rr dan A XCH A,add Pertukarkan data byte diantara add dan A

XCH A,@Rp

Pertukarkan data byte diantara A dan data yang ada dimemori yang alamatnya dicatat oleh register Rp

XCHD A,@Rp

Pertukarkan data lower nible A dengan data yang ada dimemori yang alamatnya dicatat oleh Rp

Contoh: XCH A,R7 Pertukarkan data byte diantara register A dan register R7 XCH A,F0h Pertukarkan data byte diantara register A dan register B XCH A,@R1 Pertukarkan data byte diantara register A dan data alamat pada R1 XCHD A,@R1 Pertukarkan data lower nible diantara

register A dan data alamat pada R1

7. Operasi Logika Ada sejumlah operator logika dalam mikrokontroler AT89C51 antara lain: Operator Boolean AND OR XOR NOT RL Mnemonic ANL (AND logical) ORL (OR logical) XRL (Exclusive OR logical) CPL (complement) Rotate byte to Left RLC Rotate byte dan carry-bit to left a. Operasi Logika Level Byte Contoh: Mnemonic MOV A,#FFh MOV R0,#77h Operasi A = FFh R0 = 77h

ANL A,R0 MOV 15h, A CPL A ORL 15h,#88h XRL A, 15h XRL A, R0 ANL A,15h ORL A, R0 CLR A

A = 77h 15h = 77h A = 88h 15h = FFh A = 77h A = 00h A = 00h A = 77h A = 00h

Dua langkah pertama membuat register A=FFh dan R0=77h. Instruksi ANL A, R0 membuat proses operasi data FFh=1111 1111b di AND kan dengan data 77h=01110111b, menghasilkan nilai di A = 77h = 01110111b. Kemudia dengan instruksi MOV 15h, A bekerja mengcopy kan data 77h ke memori alamat 15h. Instruksi CPL A membuat semula A=01110111 di komplemenkan menjadi A=1000 1000b=88h. Instruksi ORL 15h,#88h menghasil proses data 77h=01110111b di OR kan dengan 88h=1000 1000 hasilnya adalah 11111111b=FFh.

b. Operasi Logika Level Bit RAM internal dan SFR dapat dialamati dalam dua mode yaitu mode pengalamatan byte dan mode pengalamatan bit. Mode pengalamatan bit sangat tepat digunakan jika anda hanya membutuhkan pengolahan salah satu bit dari suatu byte sebagai contoh dalam mengontrol register. Pengalamatan bit untuk SFR adalah seperti berikut: SFR A B IE IP P0 P1 Alamat Langsung E0h F0h A8h B8 80h 90h Alamat Bit E0h E7h F0h A8h B8h 80h 90h F7h AFh BFh 87h 97h

P3 PSW

B0h D0h

B0h -- B7h D0h 88h 98h D7h 8Fh 9Fh

TCON 88h TMOD 98h

Dalam operasi Bolean Level Bit Carry Flag (C) pada PSW SFR bekerja sebagai destinasi. Contoh operasi pengalamatan bit. Mnemonik ANL C,b Operasi AND Cdengan bit teralamati; catat hasilnya di C ANL C,/b AND C dengan komplement dari bit yang teralamati; catat hasilnya di C; bit yang teralamati tidak berubah ORL C,b OR C dengan bit teralamati; catat hasilnya di C ORL C,/b OR C dengan komplement dari bit yang teralamati; catat hasilnya di C; bit yang teralamati tidak berubah CPL C CPL b CLR C CLR b MOV C,b MOV b,C SETB C SETB b Contoh : Mnemonik SETB 00h MOV C,00h MOV 7Fh,C ANL C,/00h Operasi Bit 0 dari RAM byte 20h = 1 Carry C = 1 Bit 7 dari RAM alamat byte 2Fh = 1 C = 0; bit 0 dari RAM byte 20h = 1 Komplemen flag Carry Komplemen bit teralamati Clear flag Carry menjadi 0 Clear bit teralamati menjadi 0 Copy data pada bit teralamati ke flag Carry Copy data pada flag Carry ke bit teralamati Set flag Carry menjadi 1 Set bit teralamati menjadi 1

ORL C,00h CPL 7Fh CLR C ORL C,/7Fh

C=1 Bit 7 dari RAM alamat byte 2Fh = 0 C=0 C = 1; bit 7 dari RAM byte 2Fh = 0

Untuk memahami instruksi bit perhatikan kembali organisasi RAM internal. Instruksi SETB 00h menyebabkan bit 0 RAM alamat byte 20h menjadi 1. MOV C,00h bekerja meng-copy data bit 1 di alamat bit 00 ke carry flag. Instruksi MOV 7Fh,C bekerja meng-copy data carry=1 ke memori alamat bit 7Fh yaitu bit7 dari RAM alamat byte 2Fh. Instruksi ANLC,/00h membuat bit carry =0 akibat operasi carry=1 di AND kan dengan komplemen dari 1=0; 1 AND 0 =0.

8. Operasi Rotate dan Swap Rotate data sangat potensial untuk mengolah dan membangkitkan

data beraturan tanpa opcode khusus. Register A dapat digunakan untuk memutar satu posisi bit dengan melibatkan atau tidak melibatkan Carry. Sedangkan Swap bekerja mempertukarkan nible tinggi dengan nible randah pada register A.

Gambar 2.4: Pola operasi rotate dan swap

Contoh : Mnemonik MOV A, #0A5h RR A RR A RR A RR A SWAP A CLR C RRC A RRC A RL A RL A SWAP A Operasi A = 1010 0101 = A5h A = 1101 0010 = D2h A = 0110 1001 = 69h A = 1011 0100 = B4h A = 0101 1010 = 5Ah A = 1010 0101 = A5h C = 0; A = 1010 0101 = A5h C = 1; A = 0101 0010 = 52h C = 0; A = 1010 1001 = A9h A = 0101 0011 = 53h A = 1010 0110 = A6h A = 0110 1010 = 6Ah

9. Operasi Aritmatika Aplikasi mikrokontroler sering membutuhkan perhitungan data matematika. Mikrokontroler dirancang sebagaimana komputer untuk tujuan umum. Pokok dari pengembangan mikrokontroler adalah sebagai piranti kendali peristiwa yang berubah dalam waktu nyata. Kendati demikian opcode untuk operasi matematika yang cukup harus disediakan pada setiap mikrokontroler. Pada AT 89C51 ada 24 opcode aritmetika yang dikelompokkan menjadi: Mnemonik INC destinasi DEC destinasi ADD/ADC dest,source Operasi Increament destination dengan 1 Decreament destination dengan 1 Add source ke destinasi tanpa/ dengan carry SUBB dest, source Subtract dengan carry, source dari destinasi MUL AB Kalikan isi register A dan B

DIV AB

Bagi isi register A dengan isi register B

DA A

Decimal Adjust untuk register A

10. Flag Flag C, AC, dan OV adalah flag aritmetika. Ketiga flag ini set 1 atau 0 secara otomatis, bergantung hasil operasi aritmetika sebelumnya. Mnemonik ADD ADC ANL CJNE CLR C CPL C DA A DIV MOV C, direct MUL ORL C, direct RLC RRC SETB C SUBB Instruksi Flag yang terpengaruh C AC OV C AC OV C,direct C C C=0 C = C* C C = 0 OV C C = 0 OV C C C C=1 C AC OV

11. Increament dan Decreament Mnemonik Instruksi INC A INC Rr INC add Operasi Tambahkan satu nilai isi register A Tambahkan satu nilai isi register Rr Tambahkan satu nilai data pada alamat langsung

INC @Rp

Tambahkan satu nilai data pada alamat yang dicatat oleh register Rp

INC DPTR DEC A DEC Rr DEC add

Tambahkan satu nilai register 16 DPTR Kurangkan satu nilai isi register A Kurangkan satu nilai isi register Rr Kurangkan satu nilai data pada alamat langsung

DEC @Rp

Kurangkan satu nilai data pada alamat yang dicatat oleh register Rp

Contoh : Mnemonik Instruksi Operasi MOV A,#3Ah DEC A MOV R0,#15h MOV 15h,#12h INC @R0 DEC 15h INC R0 MOV 16h, A INC @R0 A = 3Ah A = 39h R0 = 15h RAM internal alamat 15h = 12h RAM internal alamat 15h = 13h RAM internal alamat 15h = 12h R0 = 16h RAM internal alamat 16h = 39h RAM internal alamat 16h = 3Ah

MOV DPTR,#12FFh DPTR = 12FFh INC DPTR DEC 83h DPTR = 1300h DPTR = 1200h

a. Penjumlahan Mnemonik Instruksi ADD A,#n Operasi Jumlahkan A dengan data immediate n dan hasilnya disimpan di A ADD A, Rr Jumlahkan A dengan Reg Rr dan hasilnya disimpan di A

ADD A,add

Jumlahkan A dengan data alamat langsung dan hasilnya disimpan di A

ADD A,@Rp

Jumlahkan A dengan data alamat yang dicatat Rp dan hasilnya disimpan di A

ADC A,#n

Jumlahkan A dengan data immediate n dan carry ; hasilnya disimpan di A

ADC A, Rr

Jumlahkan A dengan Reg Rr dan Carry; hasilnya disimpan di A

ADC A,add

Jumlahkan A dengan data alamat langsung dan Carry; hasilnya disimpan di A

ADC A,@Rp

Jumlahkan A dengan data alamat yang dicatat Rp dan Carry hasilnya disimpan di A

Contoh : Mnemonik ADC A, #1Ch MOV R5,#0A1h ADD A, R5 ADD A, R5 ADC A,#10h ADC A,#10h Instruksi Operasi A = 1Ch R5 = A1h A = BDh; C = 0, OV = 0 A = 5Eh; C = 1, OV = 1 A = 6Fh; C = 0, OV = 0 A = 7Fh; C = 0, OV = 0

b. Pengurangan Mnemonik Instruksi SUBB A,#n Operasi Kurangkan A dengan data immediate n dan carry; hasilnya disimpan di A SUBB A, Rr Kurangkan A dengan Reg Rr dan Carry; hasilnya disimpan di A SUBB A,add Kurangkan A dengan data alamat langsung dan Carry ; hasilnya disimpan di A SUBB A,@Rp Kurangkan A dengan data alamat yang dicatatRp dan Carry; hasilnya disimpan di A

Contoh : Mnemonik Instruksi MOV 0D0h , #00h MOV A,#3Ah MOV 45h,#13h SUBB A,45h SUBB A,45h SUBB A,#80h SUBB A,#22h SUBB A,#0FFh Operasi Carry = 0 A = 3Ah Alamat 45h = 13h A = 27h ; C = 0 , OV = 0 A = 14h ; C = 0 , OV = 0 A = 94h ; C = 1 , OV = 1 A = 71h ; C = 0 , OV = 0 A = 72h ; C = 1 , OV = 0

c. Perkalian Mnemonik Instruksi MOV A , #7Bh MOV 0F0h,#02h MUL AB MOV A, #0FEh MUL AB Operasi A = 7Bh B = 02h A = 00h dan B = F6h ; OV = 0 A = FEh A = 14h dan B = F4h; OV = 1

d. Pembagian Mnemonik Instruksi MOV A , #0FFh MOV 0F0h,#2Ch DIV AB DIV AB Operasi A = FFh (255d) B = 2Ch (44d) A = 05h dan B = 23h ; 255d=(5x44)+35 A = 00h dan B = 00h

e. Aritmetika Desimal Contoh : Mnemonik Instruksi Operasi MOV A, #42h ADD A,#13h A = 42 BCD A = 55h ; C =0

DA A ADD A, #17h DA A ADC A, #34h DA A ADC A,#11h DA A

A = 55h ; C =0 A = 6Ch; C = 0 A = 72 BCD; C = 0 A = A6h; C = 0 A = 06 BCD; C =1 A = 18 BCD; C = 0 A = 18 BCD; C = 0

12. Operasi Jump dan Call Instruksi Jump dan call adalah kode-kode pengambilan keputusan dalam mengatur pencabangan aliran program berdasarkan perubahan isi Program Counter. Jump merubah isi PC secara permanen sedangkan Call merubah isi PC secara temporer. Jenis-jenis Jump dan Call : Jump on bit condition Compare Bytes and Jump if Not equal Decrement Byte and Jump if Not Zero Call a Subroutine Return from a Subroutine Perintah Jump dan call bekerja mengganti isi PC dengan alamat baru sehingga menyebabkan eksekusi program berlangsung pada alamat baru pada PC. a. Jump Bit Bekerja berdasarkan status flag carry pada PSW atau status lokasi bit teralamati. Mnemonik Instruksi JC radd JNC radd JB b, radd JNB b, radd JBC b,radd Operasi Jump relatif jika carry set 1 Jump relatif jika carry reset 0 Jump relatif jika bit teralamati set 1 Jump relatif jika bit teralamati reset 0 Jump relatif jika bit teralamati set1, dan clear bit teralamati menjadi 0

Contoh : Alamat Loop: Mnemonik MOV A, #10h; MOV R0,A; Adda: ADD A,R0; JNC Adda; Komentar A = 10h R0 = 10h A = A + R0 Lompat ke Adda jika carry = 0, terus jika C = 1 MOV A,#10h; Addr: ADD A, R0; JNB 0D7h, Addr; A = 10h A = A + R0 Lompat ke Addr jika bit carry = 0, terus jika C = 1; JBC 0D7h,Loop; Lompat ke Loop jika bit carry = 1, dan C = 0

b. Jump Byte Instruksi yang mengetes byte data Mnemonik Instruksi CJNE A,add, radd Operasi Bandingkan isi register A dengan data suatu alamat langsung; jika tidak sama lompat ke alamat relatif; setcarry 1 jika A kurang dari isi alamat langsung cary 0. CJNE A,#n, radd Bandingkan isi register A dengan data immediate n; jika tidak sama lompat ke alamat relatif; set carry 1 jika A kurang dari lain set cary 0. CJNE Rn,#n, radd Bandingkan isi register Rn dengan data immediate n; jika tidak sama lompat ke alamat relatif; set carry 1 jika Rn kurang dari keadaan lain set caryy 0. lain set

CJNE @Rp,#n, radd

Bandingkan isi/data suatu alamat yang dicatat register Rp dengan data immediate n; jika tidak sama lompat ke alamat relatif; set carry 1 jika data dicatat Rp kurang dari caryy 0 pada alamat yang keadaan lain set

DJNZ Rn,radd

Kurangi satu isi register Rn dan lompat ke alamat relatif jika Rn tidak sama nol; Rn=0 kontinyu/lanjut.

DJNZ add,radd

Kurangi satu isi data alamat lansung add dan lompat ke alamat relatif jika data pada alamat langsung add tidak sama nol; data pada alamat langsung add = 0 kontinyu/ lanjut.

JZ,radd JNZ,radd

Lompat ke alamat relatif jika A=0 Lompat ke alamat relatif jika A tidak = 0

c. Jump Tanpa Kondisi Mnemonik Instruksi JMP@A+DPTR Operasi Lompat ke alamat yang dibangun oleh A+DPTR. AJMP sadd LJMP ladd SJMP radd Contoh : Alamat Mnemonik Instruksi ORG 0100h Mulai: MOV A,#30h; MOV 50h,#00h; Putar: Tengah: CJNE A,50h, DJNZ 50h, A = 30h RAM lokasi 50h = 00h Bawah SJMP Berikut Putar NOP Komentar Lompat ke alamat absolut range pendek Lompat ke alamat absolut range panjang Lompat ke alamat relatif range pendek

Perintah CALL Digunakan untuk memanggil sub routine layanan program Mnemonik Instruksi ACALL, sadd LCALL, ladd Operasi Call sub routine alamat pendek add Call sub routine alamat panjang add

BAB III MEMBUAT PROGRAM MIKROKONTROLER

A. Langkah langkah Pengembangan Program Menurut Douglas ada empat langkah yang harus dilakukan alam mengembangkan program komputer yaitu : 1. Pendefinisian permasalahan. 2. Representasi kerja program. 3. Penemuan instruksi-instruksi yang benar 4. Penulisan program. Jika ingin memiliki kemajuan yang baik dalam membuat program maka ikuti dengan teratur empat langkah ini.

1.

Pendefinisian Masalah Langkah pertama yang harus dilakukan dalam menulis program adalah memikirkan secara cermat permasalahan yang ingin diselesaikan menggunakan program komputer. Dengan kata lain apa yang ingin dikerjakan oleh sebuah program. Jika anda telah melakukan identifikasi permasalahan dan mendefinisikan permasalahan dengan jelas dan benar maka ini merupakan langkah awal yang sangat baik dalam menulis apa yang diinginkan dalam pembuatan program. Mari kita lihat satu contoh permasalahan:

2.

Algoritma Contoh kasus menyeberang jalan sudah pasti contoh kasus yang biasa-biasa saja. Namun pengalaman dalam pelatihan dan pembelajaran ternyata contoh kasus ini tidak bisa diselesaikan dengan benar. Ada sejumlah hambatan antara lain: kebanyakan siswa terjebak dengan berpikir di level tinggi sehingga tidak bisa menurunkan langkah lowlevel. Untuk memecahkan permasalahan bagaimana menyeberang dijalan yang sangat ramai diperlukan langkah-langkah atau sekuen atau formula

kerja. Formula kerja yang digunakan untuk memecahkan masalah pemrograman disebut Algoritma program. Seorang programmer harus menggunakan daftar urutan pekerjaan. Dalam kasus permasalahan menyeberang jalan step perintah-perintah sederhana dapat dinyatakan seperti table 3.1. Setelah anda membaca urutan step-step perintah tersebut, apa komentar anda ? Perintah dalam program mengalir dari step awal (step 1) yaitu start ke step 2, step 3 dan seterusnya sampai dengan terminal stop. Kecuali ada perintah untuk melompat atau memanggil subrutin atau jika ada interupsi program akan mengalir terus kelangkah-langkah berikutnya. Pada step 3, step 4, dan step 5 terjadi proses pendeteksian dan pengambilan keputusan melangkah ke langkah 6 yaitu untuk

memperhatikan apakah ada kendaraan yang lewat dari arah sebelah kiri. Pada step 6, step 7, dan step 8 juga terjadi proses pendeteksian dan pengambilan keputusan apakah melangkah step 9 untuk melihat ke arah kanan atau masih tetap melihat arah kiri pada step 6. Demikian juga pada step 9, step 10, dan step 11 juga terjadi proses pendeteksian dan pengambilan keputusan apakah melangkah step 12 untuk melangkah menyeberang atau masih tetap melihat arah kanan pada step 9. Jika kesebelas langkah ini dilakukan maka anda akan selamat dan sukses menyeberang jalan. Masalahnya maukah anda berpikir dan bertindak secara disiplin seperti algoritma table 3.1. Merubah cara

berpikir dari level tinggi menjadi cara berpikir level rendah seperti bahasa bayi merupakan hambatan besar bagi programmer assembly pemula. Jika bisa merubah pola berfikir dari level tinggi ke level rendah maka niscaya anda akan bisa memprogram mikroprosesor dengan baik. Jika tidak disinilah hambatan saudara belajar memprogram. Cobalah kembali cermati dan baca untuk kedua kali step-step. Karena akan memberi gambaran yang baik mengapa komputer bisa bekerja dengan hasil yang baik. Banyak pemula menjabarkan step demi step langkah

menyeberang jalan yang tidak operasional. Misalnya lihat kiri dan kanan yang tidak bisa dilakukan serentak. Table 3.1: Algoritma menyeberang jalan STEP 1 2 3 4 Start Berjalan ke sudut jalan dan berhenti Lihat dan cermati lampu pengatur lalu lintas Apakah lampu penyebrangan pada arah anda menyala merah? 5 (Untuk keadaan lain teruskan ke Step 6) 6 7 8 9 10 11 12 13 Menyeberanglah dengan hati-hati Stop Lihat ke arah kanan Apakah masih ada kendaraan yang lewat Lihat ke arah kiri Apakah masih ada kendaraan yang lewat PERINTAH

Kesebelas langkah ini adalah bahasa bayi atau bahasa aras rendah atau bahasa level rendah, yang pada kenyataannya dilakukan

langkah-langkah inilah yang dilakukan pada setiap menyeberang jalan dijalan yang sibuk dan ada lampu mengatur lalu lintas. Tidak akan pernah terjadi melihat lampu penyeberangan, melihat arah kiri,dan melihat arah kanan dilakukan secara serentak. Memang nampaknya seakan-akan demikian. Namun sesungguhnya tidaklah pernah demikian karena proses yang terjadi pasti merupakan sekuen langkah demi langkah seperti table 3.1. Kesebelas sekuen step perintah ini disebut juga dengan Algoritma Program.

Semakin detail algoritma suatu program semakin baik karena program menghendaki kesuksesan 100% sesuai kebutuhan tuntutan permasalahan. Bisa saja step 5, step 6 dan step 7 tidak perlu ada manakala jalur lalu lintas hanya satu arah. Sangat berbahaya jika step 2, step 3, dan step 4 diabaikan. Jika ingin menyeberang jalan dan algoritma Tabel 3.1. digunakan dapat dipastikan penyeberang akan sukses dan selamat. Kasus menyeberang di jalan yang sangat ramai dengan 11 step penyelesaian merupakan bentuk bahasa aras rendah. Mikroprosesor di dalam sistem bekerja dengan bahasa aras rendah. Agar anda sukses dan mudah belajar memprogram mikroprosesor maka anda harus memiliki kesiapan merubah kebiasaan berfikir pada aras tinggi kekebiasaan berfikir di aras rendah. Inilah kendala utama dalam belajar memprogram mikroprosesor.

3.

Flowchart Flowchart atau diagram alir digunakan untuk menunjukkan aliran proses sebuah program. Untuk menyajikan jenis operasi sebuah program digunakan bentuk-bentuk grafis standar. Ada dua puluh delapan jenis bentuk grafis yang digunakan untuk menyusun flowchart seperti pada gambar 3.1. Bentuk-bentuk grafis penyusun flowchart dapat dilihat pada AutoShapes Flowchart program Microsoft Word. Pemilihan bentuk-

bentuk grafis flowchart gambar 3.1 tidak boleh sembarangan atau asal pilih apalagi membuat sendiri bentuk-bentuk lain secara bebas. Hal ini tidak dibenarkan karena semua bentuk grafis flowchart telah disepakati dan distandarkan secara internasional sebagai alat komunikasi.

a. Symbol Flowchart Simbol-simbol yang di pakai dalam flowchart dibagi menjadi 3 kelompok : Flow direction symbols

-

Digunakan untuk menghubungkan simbol satu dengan yang lain

-

Disebut juga connecting line

Processing symbols Menunjukan jenis operasi pengolahan dalam suatu prosedur Input / Output symbols Menunjukkan jenis peralatan yang digunakan sebagai media input atau output. proses /

Gambar 3.1 : Simbol flow direction

Gambar 3.2 : Simbol processing

Gambar 3.3 : Simbol input/output

b. Program Flowchart Yaitu: Bagan yang memperlihatkan urutan dan hubungan proses dalam suatu program. Dua jenis metode penggambaran program flowchart : Conceptual flowchart, menggambarkan alur pemecahan masalah secara global Detail flowchart, menggambarkan alur pemecahan masalah secara xrinci

Gambar 3.4 : Conceptual flowchart

Gambar 3.5 : Detail flowchart

4.

Contoh pemrograman flowchart Flowchart menyeberang di jalan ramai pada gambar 3.6 diawali dengan perintah START sebagai tanda mulai. Perintah start sebagai tanda mulai menggunakan bentuk grafis terminal. Selanjutnya diteruskan

Kedua proses tersebut menggunakan bentuk grafis segi empat karena keduanya adalah langkah dalam bentuk proses. Pengambilan keputusan dengan pertanyaan apakah Lampu Penyeberangan Nyala pengambilan keputusan dengan pertanyaan apakah Penyeberangan Nyala lampu pengatur menyala merah berarti menyala hijau mengandung pengertian bisa meneruskan ke step berikutnya yaitu proses melihat arah kiri.

Pertanyaan apakah masih ada kendaraan yang lewat merupakan step pengambilan keputusan. Jika ya harus tetap melihat arah kiri dan jika tidak ada kendaraan yang lewat bisa meneruskan ke step lihat arah kanan. Pertanyaan apakah masih ada kendaraan yang lewat dari arah kanan merupakan step pengambilan keputusan. Sampai pada proses menyeberang jika tidak lagi ada kendaraan yang lewat. Flowchart diakhiri dengan terminal STOP. Step melihat arah kiri dan melihat arah akan dalam kasus ini bisa saja ditukarkan posisinya. Jika masih ragu dengan bentuk grafis terminal lihat kembali bentuk-bentuk grafis flowchart gambar 3.6.

Gambar 3.6 : Flowchart menyebrang jalan

Flowchart sebagai bentuk lain dari algoritma program memberi gambaran yang lebih jelas bisa diamati aliran proses yang terjadi. Flowchart memberikan kemudahan untuk menganalisis proses sehingga sering digunakan untuk menggambarkan aliran suatu proses. Dua langkah selanjutnya dalam proses pembuatan program yaitu penemuan jenis instruksi yang benar dan tepat lalu diikuti dengan penulisan program. Memilih instruksi yang tepat dan benar merupakan kompetensi operasional agar program bisa berjalan dan benar. Memilih instruksi yang benar dan tepat je