Senin, 13 Juli 2009

REKAYASA PERANGKAT LUNAK

REKAYASA PERANGKAT LUNAK
(SOFTWARE ENGINEERING)

I.PENDAHULUAN
Rekayasa perangkat lunak telah berkembang sejak pertama kali ddiciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat luank dan kualitas aplikasi yang dapat digunakan oleh pemakai.

I.1 Sejarah Software Engineering
Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.
Pada tahun 1960-an hingga 1980-an, banyak masalah yang ditemukan para praktisi pengembangan perangkat lunak. Banyak project yang gagal, hingga masa ini disebut sebagai krisis perangkat lunak. Kasus kegagalan pengembangan perangkat lunak terjadi mulai dari project yang melebihi anggaran, hingga kasusu yang mengakibatkan kerusakan fisik dan kematian. Salah satu kasus yang terkenal antara lain meledaknya roket Ariane akibat kegagalan perangkat lunak. Selama bertahun-tahun, para peneliti memfokuskan usahanay untuk menemukan teknik jitu untuk memecahkan masalah krisi perangkat lunak. Berbagai teknik, metode, alat, proses diciptakan dan diklaim sebagai senjata pamungkas untuk memecahkan kasus ini. Mulai dari pemrograman terstruktur, pemrograman berorientasi objek, pernagkat pembantu pengembangan perangkat lunak (CASE tools), berbagai standar, UML hingga metode formal diagung-agungkan sebagai senjaat pamungkas untuk menghasilkan software yang benar, sesuai anggaran dan tepat waktu. Pada tahun 1987, Fred Brooks menulis artikel No Silver Bullet, yang berproposisi bahwa tidak ada satu teknologi atau praktek yang sanggup mencapai 10 kali lipat perbaikan dalam produktivitas pengembanan perngkat lunak dalam tempo 10 tahun.
Sebagian berpendapat, no silver bullet berarti profesi rekayasa perangkat lunak dianggap telah gagal. Namun sebagian yang lain justru beranggapan, hal ini menandakan bahwa bidang profesi rekayasa perangkat lunak telah cukup matang, karena dalam bidang profesi lainnya pun, tidak ada teknik pamungkas yang dapat digunakan dalam berbagai kondisi.

I.2 Pengertian Dasar
Istilah Reakayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software engineering. Istilah Software Engineering mulai dipopulerkan pada tahun 1968 pada software engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer.
Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999).
Pengertian RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Dari pengertian ini jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program komputer. Pernyataan ”semua aspek produksi” pada pengertian di atas, mempunyai arti semnua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL.
II.TUJUAN REKAYASA PERANGKAT LUNAK
Secara umunmm tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Hal ini dapat kita lihat pada Gambar di bawah ini.







Gambar 1. Tujuan RPL

Dari Gambar di atas dapat diartikan bahwa bidang rekayasa akan selalu berusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara leboih khusus kita dapat menyatakan tujuan RPL adalah:
a.memperoleh biaya produksi perangkat lunak yang rendah
b.menghasilkan pereangkat lunak yang kinerjanya tinggi, andal dan tepat waktu
c.menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform
d.menghasilkan perangkat lunak yang biaya perawatannya rendah









III.RUANG LINGKUP
Sesuai dengan definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut:









Gambar 2. Ruang lingkup RPL (Abran et.al., 2004).

software Requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak
software desain mencakup proses penampilan arsitektur, komponen, antar muka, dan karakteristik lain dari perangkat lunak
software construction berhubungan dengan detail pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian dan pencarian kesalahan
software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak
software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan
software configuration management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu
software engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak
software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode RPL
software engineering process berhubungan dengan definisi, implementasi pengukuran, pengelolaan, perubahan dan perbaikan proses RPL
software quality menitik beratkan pada kualitas dan daur hidup perangkat lunak

IV.REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU LAIN
Cakupan ruang lingkup yang cukup luas, membuat RPL sangat terkait dengan disiplin dengan bidang ilmu lain. tidak saja sub bidang dalam disiplin ilmu komputer namun dengan beberapa disiplin ilmu lain diluar ilmu komputer.
Hubungan keterkaitan RPL dengan ilmu lain dapat dilihat pada gambar dibawah ini








Gambar 3. Keterkaitan RPL dengan bidang ilmu lain.

bidang ilmu manajemen meliputi akuntansi, finansial, pemasaran, manajemen operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia, kebijakan, dan strategi bisnis
bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik, analisis numerik, dan matematika diskrit
bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas, manajemen resiko dan keandalan, perbaikan kualitas, dan metode-metode kuantitatif
bidang ilmu ergonomika menyangkut hubungan ( interaksi) antar manusia dengan komponen-komponen lain dalam sistem komputer
bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya-keuntungan, pemodelan, simulasi, proses, dan operasi bisnis

V.PERKEMBANGAN REKAYASA PERANGKAT LUNAK
Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah yang cukup yang panjang. Dari sisi disiplin ilmu, RPL masih reklatif muda dan akan terus berkembang.
Arah perkembangan yang saat ini sedang dikembangkan antara lain meliputi :

Tahun
Kejadian
1940an
Komputer pertama yang membolehkan pengguna menulis kode program langsung
1950an
Generasi awal interpreter dan bahasa macro Generasi pertama compiler
1960an
Generasi kedua compiler Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesanan
Konsep Software Engineering mulai digunakan
1970an
Perangkat pengembang perangkat lunak Perangkat minicomputer komersial
1980an
Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak
1990an
Pemrograman berorientasi obyek (OOP) Agile Process dan Extreme Programming Peningkatan drastis kapasitas memori Peningkatan penggunaan internet
2000an
Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing



VI.METODE REKAYASA PERANGKAT LUNAK
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti terlihat pada Gambar berikut ini.









Gambar 4. System Development Life Cycle (SDLC).

Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang jelas. Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah. Oleh karena itu pemahaman masalah seperti dijelaskan pada Bab 1, merupakan bagian penting dari model pengembangan perangkat lunak.
Tahapan-tahapan pengembangan yang teratur. Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya model-model tersebut mengikuti pola umum analysis – design – coding – testing - maintenance
Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut.
Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak. Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi, peningkatan “image” organisasi dan lain-lain.

VII.TAHAPAN REKAYASA PERANGKAT LUNAK
Meskipun dalam pendekatan berbeda-beda, namun model-model pendekatan memiliki kesamaan, yaitu menggunaka pola tahapan analysis – design – coding(construction) – testing – maintenance.

1.Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih tujuan mereka.
Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat lunak. Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya hasil analisis. Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu pemodelan proses bisnis.

2.Model proses adalah model yang memfokuskan pada seluruh proses di dalam sistem yang mentransformasikan data menjadi informasi (Harris, 2003). Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses. Biasanya model ini digambarkan dalam bentuk Diagram Arus Data (Data Flow Diagram / DFD). DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk mentransformasi data menjadi informasi.

3.Disain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis computer (Whitten et al, 2004).
Disain perangkat lunak sering juga disebut sebagai physical design. Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak (Whitten et al, 2004).
Output utama dari tahapan disain perangkat lunak adalah spesifikasi disain. Spesifikasi ini meliputi spesifikasi disain umum yang akan disampaikan kepada stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap implementasi. Spesifikasi disain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun. Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini. Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya.
Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface yang mencakup desain input, output form dan report, desain hardware, software dan jaringan. Desain proses merupakan kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis.

4.Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke dalam kode-kode program komputer.

5.Pengujian sistem melibatkan semua kelompok pengguna yang telah direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan bisa menerima perangkat lunak tersebut berdasarkan kriteria-kriteria yang telah ditetapkan.

6.Perawatan dan Konfigurasi. Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka tahapan baru menjadi muncul yaitu perawatan perangkat lunak. Ada beberapa tipe perawatan yang biasa dikenal dalam dunia perangkat lunak seperti terlihat pada diagram di Gambar di bawah ini :









Gambar 5. Tipe-tipe perawatan.

Tipe perawatan corrective dilakukan jika terjadi kesalahan atau biasa dikenal sebagai bugs. Perawatan bisa dilakukan dengan memperbaiki kode program, menambah bagian yang dirasa perlu atau malah menghilangkan bagian-bagian tertentu.
Tipe perawatan routine biasa juga disebut preventive maintenance dilakukan secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada kesalahan.
Tipe perawatan sistem upgrade dilakukan jika ada perubahan dari komponen-komponen yang terlibat dalam perangkat lunak tersebut. Sebagai contoh perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan perangkat lunak harus diupgrade.

Sabtu, 11 Juli 2009

ARSITEKTUR AT89C51

ARSITEKTUR AT89C51

Mikrokontroller AT89C51 termasuk dalam keluarga MCS-51TM dari intel. Sebuah mikrokontroller tidak dapat bekerja bila tidak diberi program kepadanya. Program tersebut memberitahu mikrokontroller apa yang harus dilakukan. Salah satu keunggulan dari AT89C51 adalah dapat diisi ulang dengan program lain sebanyak 1000 kali pengisian. Intruksi-intruksi perangkat lunak berbeda untu masing-masing jenis mikrokontroller. Intruksi-intruksi hanya dapat dipahami oleh jenis mikrokontroller yang bersangkutan. Intruksi-intruksi tersebut dikenal sebagai bahasa pemograman system mikrokontroller.
Sebuah mikrokontroller tidak dapat memahimi intruksi-intruk yang berlaku pada mirkrokontroller lain. Sebagai contoh, mikrokontroller buatan intel dengan mikrokontroller buatan Motorola memiliki perangkat intruksi yang berbeda.

 Karakteristik mikrokontroller AT89C51
Mikrokontroller AT89C51 memiliki beberapa fasilitas sebagai berikut :
• Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
• Osilator Internal dan rangkain timer
• Flash memori 4 Kbyte
• RAM internal 128 byte
• Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
• Enam buah Jalur interupsi (3 buah interupsi eksternal dan 3 buah internal)
• Sebuah Port serial dengan control serial full duplex UART
• Kemampuan melaksanakan operasi perkalian, pembagian, penjumlahan dan operasi Boolean (bit)
• Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
• ISP Programming
• Memiliki 2 DPTR
• WatchDog Timer

 Diskripsi Kaki (Pin) AT89S51
Susunan pin-pin mikrokontroler AT89S51 diperlihatkanan pada gambar dibawah ini. Penjelasan dari masing-masing pin adalah sebagai berikut :













Gambar 1 Konfigurasi Pin Mikrokontroller AT89S51

a. pin 1 sampai 8 (port 1) merupakan prot paralel 8 bit dua arah (input-output) yang digunakan sebagai keperluan general purpose. P1.5, P1.6 dan P1.7 selain digunakan sebagai I/O. pin juga digunakan sebagai masukkan untuk pengisian program ke dalam IC AT89S51.
b. Pin 9 (Reset) adalah intrupsi reset (aktif high) perpindahan kondisi rendah ke tinggi akan mereset AT89C51. Pin ini dihubungkan dengan rangkaian power on reset

c. Pin 10 sampai 17 (port 3) adalah port paralel 8 bit dua arah (input-output) yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data), RXD (Receiver Data), INT0 (Interupt 0), INT1 (Interupt 1), T0 (timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serbaguna
d. Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang merupakan input clock bagi rangkaian osilator internal
e. Pin 20 (ground) dihubungkan ke Vss atau Ground
f. Pin 21 sampai 28 (port 2) adalah port paralel 8 bit dua arah (input-output). Port 2 ini mengirim byte alamat bila dilakukan pengaksesan memori ekternal
g. Pin 29 adalah pin PSEN (Program Strobe Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk ke dalam bus selamat proses pemberian/pengambilan intruksi
h. Pin 30 adalah pin output ALE (Address Latch Enable) yang digunakan untuk menambah alamat memori eksternal selama pelaksanaan intruksi
i. Pin 31 EA bila pin ini diberi logika tinggi, mikrokontroler akan melaksanakan intruksi dari ROM ketika isi program counter kurang dari 4096, bila diberi logika rendah maka mikrokontroler akan melaksanakan seluruh intruksi dari memori program luar
j. Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data
k. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt)

Gambar 2 Blok Diagram AT89C51
 Organisasi Memori
Semua mikrokontroler dalam keluarga MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register).
 Memori Program
Memori program hanya dapat dibaca tidak bisa ditulisi (karena disimpan dalam Flash Memori). Memori program dapat ditingkatkan sebesar 64 Kbyte dengan menambahkan memori eksternal. Sinyal yang membolehkan pembacaan dari memori program eksternal adalah dari PSEN. Memori data terletak pada ruang alamat terpisah dari memori program. RAM eksternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write selama menghubungkan memori data eksternal.


Gambar 3 Memori Program
 Memori Data
Memori data internal dipetakan seperti pada gambar dibawah ruangan memorinya dibagi dua bagian yaitu RAM 128 Byte serta SFR (Special Fungsi Register). Tiga puluh dua byte RAM paling bawah dikelompokan dalam 4 bank (8 register), yiatu R0 sampai R7. Ruang pengalamatan bit dan stratch pad area. Ruang SFR berisi penahan port, pewaktu (timer), pengontrol peripheral dan lain-lain. Register ini hanya dapat diakses oleh pengalamatan langsung.

Gambar 4 Memori Data

Gambar dibawah menunjukan ruang SFR (Special Function Register) menepati ruang alamat RAM Internal 80H sampai 7FH. SFR berisi penahan port (port latch), pewaktu (timer), control peripheral dan lain-lain. Register-register ini hanya bisa diakses dengan pengalamatan langsung.

Gambar 4 Special Fungsi Register







Tabel Special Fungsi Register

Gambar 5 Special Function Register
 Osilator
Mikrokontroller AT89S51 memiliki osilator internal yang dapat diguakan sebagai sumber clock bagai CPU. Untuk menggunakan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan XTAL2 dan sebuah kapasitor ke ground. Untuk kristalnya dapat digunakan frekuensi dari 6 sampai 24 Mhz. sedangkan untuk kapasitor dapat bernilai antara 27 pF sampai 33pF.

Gambar 6 Konfigurasi Pemberian Clock


 Interupt
Apabila CPU pada mikrokontroler AT89S51 sedang melaksanakan tugas suatu program, kita dapat menghentikan pelaksanaan program tersebut secara sementara dengan meminta interupt. Apabila mendapat permintaan interupt, program counter (PC) akan diisi alamat vector interupt, setelah interupt selesai dilaksanakan maka CPU kembali ke program utama yang ditingalkan.
Pada mikrokontroler AT89S51 terdapat beberapa saluran interrupt. Interrupt pada AT89S51 dibedakan dalam dua jenis :
a. Interrupt yang tak dapat dihalangi oleh perangkat lunak (non maskable interrupt), misalnya reset
b. Interrupt yang dapat dihalangi perangkat lunak (maskable interrupt). Contoh interrupt jenis ini adalah INT0, INT1, Timer/Counter 1 serta interrupt serial.
Intruksi RETI harus digunakan untuk kembali dari layanan rutin interrupt. Intruksi ini dipakai agar saluran interrupt kembali dapat dipakai. Alamat layanan rutin interrupt dari setiap sumber diperlihatkan pada table 1
Tabel 1 Alamat Layanan Rutin Interrupt
Nama Lokasi Alat Interupt
Reset 00H Power on Reset
INT 0 03H INT 0
Timer 0 0BH Timer 0
INT 1 13H INT 1
Timer 1 1BH Timer 1
Serial 23H Port I/O serial
Mikorokontroler AT89S51 menyediakan 6 sumber interrupt, 2 interrupt eksternal, 2 interrupt timer dan satu interrupt port serial. Interrupt eksternal INT 0 dan INT 1 masing-masing dapat diaktifkan berdasarkan level atau transisi.
 Interupt Enable
Sumber Interupt dapat diaktifkan dan dimatikan secara individual atau dengan mengatur satu bit di SFR yang bernama IE (Interupt Enable). Bit-bit IE didefinisikan sebagai berikut :


Jika akan mengaktifkan interrupt 0 (INT0), nilai yang harus diberikan ke IE adalah 81H (yaitu memberikan logika 1 ke EA dan EX0).
 Prioritas Interupt
Setiap Sumber interrupt dapat deprogram secara individual menjadi satu atau dua tingkat prioritas dengan mengatur bit SFR yang bernama IP, Interupt dengan prioritas rendah dapat diinterupt oleh interrupt yang memiliki prioritas lebih tinggi, tetapi tidak bisa diinterupt oleh interrupt dengan prioritas lebih rendah. Interrupt prioritas tertinggi tidak dapat diinterupt oleh sumber interrupt lain.
Bila permintaan interrupt dengan tingkat prioritas berbeda diterima pada saat yang sama, interrupt dengan prioritas lebih tinggi yang dilayani. Sedangkan bila prioritasnya sama, maka akan dilakukan poling untuk menentukan mana yang dilayani. Bit-bit pada IP adalah sebagai berikut :


 Timer/Counter
Mikrokontroller AT89C51 mempunyai dua buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Bila timer/counter diaktifkan pada frekuensi kerja mikrokontroller 12 Mhz, timer/counter diaktifkan pada perhitungan waku 1 mikro detik secara bebas, tidak tergantung pada pelaksanaan suatu intruksi, satu sklus pencacahan waktu berpadanan dengan satu siklus pelaksanaan intruksi dan satu siklus diselenggarakan waktu 1 mikro detik. Apabila perioda tertentu telah dilampaui, timer/counter akan meng-interupt mikrokontroller untuk memberitahukan bahwa perhitungan perioda waktu telah selesai. Perioda waktu timer/counter secara umum ditentukan oleh persamaan sebagai berikut :
a) sebagai timer/counter 8 bit
T = (255 – Tlx) x 1uS
Dimana Tlx adalah isi register TL0 atau TL1.
b) Sebagai timer/counter 16 bit
T = (65535 – THx TLx) x 1uS
Dimana :
THx = isi register TH0 atau TH1
TLx = isi register TL0 atau TL1
Pengontrol kerja timer/counter adalah register timer/counter (TCON). Definisi bit-bit timer/counter adalah sebagai berikut :

Pengontrolan pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang definisi bit-bitnya adalah sebagai berikut :


Table 2 Mode Timer/Counter
M1 M0 Mode Operation
0 0 0 Timer 13 bit
0 1 1 Timer/counter 16 bit
1 0 2 Timer auto reload 8 bit (Pengisian otomatis)
1 1 3 TL0 adalah timer/counter 8 bit yang dikontrol oleh control bit standart timer 0
TH0 adalah timer 8 bit dan dikontrol oleh control bit timer 1

a. Mode 0
Pada mode ini register timer disusun sebagai register 13 bit,. Setelah semua perhitungan selesai, mikrokontroller akan menset timer interrupt Flag (TF1) dengan membuat GATE = 1, timer dapat dikontrol oleh masukan luar INT1 untuk fasilitas pengukuran lebar pulsa
b. Mode 1
Mode ini sama dengan mode 0, tetapi register timer berkerja pada 16 bit.
c. Mode 2
Register timer tersusun sebagai 8 bit counter. Limpahan (overflow) dari TL1 menset TF1 dan mengisi TL1 dengan isi TH1 yang diatur secara software. Pengisian ini tidak mengubah TH1.
d. Mode 3
Dalam mode 3. timer 1 semata-mata memegang hitungan yang efeknya sama seperti menset TR1 = 0.sedangkan timer 0 digunakan untuk menetapkan TL0 dan TH0 sebagai data dua counter terpisah, TL0 menggunakan control bit timer 0 yaitu C/T, GATE, TR0 INT0 dan TF0. TH0 ditetapkan sebagai fungsi timer.
Mode 3 diperlukan untuk aplikasi yang memerlukan timer/counter ekstra 8 bit,. Dengan timer 0 pada mode 3 mikrokontroller AT89C51 seperti memiliki 3 timer/counter saat timer 0 pada mode 3, timer 1 dapat dihidupkan atau dimatikan , atau dapat digunakan oleh port serial sebagai pembangkit baud rate. Untuk menjalankan timer 0 dan timer 1 secara bersamaan, dalam beberapa mode nilai TMOD harus di-OR-kan dengan nilai seperti terlihat untuk timer 1, pada control internal, timer dihidup – matikan dengan menset bit TR0 (control software). Pada control eksternal, timer dihidupkan/matikan dengan memberikan logika pada pin INT0.
Beberapa nilai TMOD yang dapat digunakan dalam penyetelan timer pada mode yang berbeda diperlihatkan pada tabel dibawah :
Tabel 3 Timer/Counter 0 sebagai Timer


Tabel 4 Timer/Counter 0 sebagai Counter





Tabel 5 Timer/Counter 1 sebagai timer

Tabel 6 Timer/Counter 1 sebagai Counter


 Program Status Word
Program status word berisi beberapa bit status yang mencerminkan keadaan mikrokontroller. Definisi daribit-bit dalam PSW dijelaskan dibawah ini

RS0 dan RS1 digunakan untuk memilih bank register. Delapan buah register ini merupakan register serbaguna. Lokasinya pada awal 32 byte RAM internal yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui symbol assembler (R0, R1, R2, R3, R4, R5, R6, R7). Pemilihan bank register diperlihatkan pada tabel dibawah ini :




Tabel 7 Pemilihan Bank Register

Register R0 dan R1 dapat digunakan untuk pengalamatan tak langsung pada RAM internal. Sisa register lainya tidak dapat digunakan untuk pengalamatan tak langsung.

















SET INTRUKSI DAN PEMOGRAMAN ASSEMBLY MSC51

 Operand an Set Intruksi MCS51
Operan dalam pemrograman mikrokontroller adalah data yang tersimpan dalam memori, register dan input/output (I/O). intruksi yang dikenal secara umum dikelompokan menjadi beberapa kelompok yaitu intruksi untuk pemindahan data, aritmetika, operasi logika, pengaturan aliran program dan beberapa hal khusus, kombinasi dari instruksi dan operan itulah yang membentuk intruksi pengaturan kerja mikrokontroller.
 Mode Pengalamatan dalam MCS51
Data ataupun operan bisa berada ditempat yang berbeda sehingga dikenal beberapa cara untuk mengakses data operan tersebut yang dinamakan sebagai mode pengalamatan (Addressing Mode) antara lain yaitu :
a. Pengalamatan Langsung (Direct Addressing)
Pada mode ini operand ditentukan dari sebuah alamat 8 bit. Hanya berlaku untuk RAM internal dan SFR.
Contoh: MOV A,7FH (isi accumulator dengan isi alamat 7Fh)
b. Pengalamatan Tidak Langsung (Indirect Addressing)
Mode ini menggunakan Register tertentu berisi Data yang menunjukan Alamat. Bisa berlaku untuk internal dan external RAM. Register untuk menunjukkan alamat tersebut adalah R0 atau R1, maupun Stack Pointer untuk operasi 8 bit. Untuk mengakses 16 bit alamat digunakan data pointer DPTR.
Contoh: MOV A,@R0 (isi accumulator dengan alamat yang ditunjukkan oleh isi R0)
c. Pengalamatan Register
Pengalamatan mode ini lebih effisien dan mengeleminasi satu byte alamat
Contoh: MOV A,R7
d. Immediate Constant
Sebuah nilai konstanta dapat mengikuti opcode dalam Program memori
Contoh: MOV A,#20h (Mengisi accumulator dengan data 20h)
e. Pengalamatan Bit
Pengalamatan bit adalah penunjukan alamat lokasi bit baik dalam RAM internal (byte 32 sampai 47) atau bit perangkat keras. Untuk melakukan pengalamatan bit digunakan symbol titik (.), misalnya FLAGS.3, 40.5, 21H.1 dan ACC.7. Tabel dibawah menunjukan pengalamatan bit pada mikrokontroller AT89C51
Tabel 8 Spesial function register (SFR)
Simbol Posisi Bit Alamat Bit Nama
CY PSW.7 D7H Carry Flag
AC PSW.6 D6H Auxilliary carry falg
F0 PSW.5 D5H Flag 0
RS1 PSW.4 D4H Reg. Bank Select Bit 1
RS0 PSW.3 D3H Reg Bank Select Bit 0
OV PSW.2 D2H Overflow Flag
P PSW0 D0H Parity Flag
TF1 TCON.7 8Fh Timer 1 overflow flag
TR1 TCON.6 8EH Timer run control bit
TF0 TCON.5 8DH Timer 0 overflow flag
TR0 TCON.4 8CH Timer 0 run control bit
IE1 TCON.3 8BH Interupt 1 edge flag
IT1 TCON.2 8AH Interupt 1 type control
IE0 TCON.1 89H Interupt 0 edge flag
IT0 TCON.0 88H Interupt 0 type control
SM0 SCON.7 9FH Serial Mode control bit 0
SM1 SCON.6 9EH Serial mode control bit 1
SM2 SCON.5 9DH Serial mode control bit 2
REN SCON.4 9CH Reciever enable
TB8 SCON.3 9BH Transmit bit 8
RB8 SCON.2 9AH Receiver bit 8
TI SCON.1 99H Transmit interrupt flag
RI SCON.0 98H Receive Interupt flag
EA IE.7 AFH Enable all interupr
ES IE.4 ACH Enable serial port interrupt
ET1 IE.3 ABH Enable Timer 1 Interupt
EX1 IE.2 AAH Enable external Interupt 1
ET0 IE.1 A9H Enable Timer 0 interupt
EX0 IE.0 A8H Enable external interrupt 0
PS IP.4 BCH Serial port interrupt priority
PT1 IP.3 BBH Timer 1 interupt priority
PX1 IP.2 BAH External interrupt priority
PT0 IP.1 B9H Timer 0 interupt priority
PX0 IP.0 B8H External interrupt 0 priority

 Perangkat Intruksi
Mikrokontroller AT89C51 memiliki 256 perangkat intruksi. Seluruh intruksi dapat dikelompokan dalam 4 bagian yang meliputi intruksi 1 byte sampai 4 byte. Apabila frekuensi clock mikrokontroller yang digunakan adalah 12 Mhz, kecepatan pelaksanaan intruksi akan bervarias dari 1 hingga mikrodetik. Perangkat intruksi mikrokontroller AT89C51 dapat dibagi menjadi lima kelompok sebagai berikut :
 Intruksi Transfer data
Intruksi ini memindahkan data antara register-register, memori-memori, register-memori, antar muka register dan antar muka memori.
Tabel 9 Intruksi Transfer Data


 Instruksi Aritmatika
Intruksi ini melaksanakan operasi aritmatika yang meluputi penjumlahan, pengurangan, penambahan satu (inkremen), pengurangan satu (dekremen), perkalian dan pembagian.

Tabel 10 Intruksi Aritmatika


 Instruksi Logika dan Manupulasi Bit
Instruksi ini melaksanakan operasi Boolean (AND, OR, XOR), perbandingan, pergeseran dan komplemen data.
Tabel 11 Intruksi Logika dan manupulasi Bit




 Instruksi Percabangan
Instruksi ini mengubah urutan normal pelaksanaan suatu program. Dengan instruksi ini program yang sedang dilaksanakan akan mencabang ke suatu alamat tertentu. Intruksi percabangan dibedakan atas 2 yaitu : percabangan bersyarat dan percabangan tanpa syarat.
Tabel 12 Intruksi Percabangan



 Aturan Pembuatan Program Assebler AT89C51
Program bahasa assembly berisikan :
 Intruksi-intruksi mesin
 Pengarah-pengarah assembler
 Kontrol-kontrol assembler
 Komentar-komentar
Intruksi-intruksi mesin merupakan mnemonic yang menyatakan suatu instruksi yang bisa dijalankan (misalnya MOV). Pengarah assembler (assembler directive) merupakan intruksi ke program assembler yang mendefinisikan struktur program, symbol-simbol, data, konstanta dan lain-lain (misalnya ORG). Kontrol-kontrol assembler mengatur (menentukan) mode-mode assembler dan aliran assembly langsung (misalnya $TITLE). Komentar perlu ditulis agar program mudah dibaca.
Baris-baris program yang mengandung instruksi mesin atau pengarah assembler harus mengikuti aturan program assembler ASM51. masing-masing baris atas beberapa field yang dipisahkan dengan spasi atau tabulasi. Format umumnya :
[label :] mnemonic [operand] [,operand] [……] [; komentar]
contoh pembuatan program assembler
ORG ; INISIALISASI ALAMAT AWAL
0000H
LJMP START ; LOMPAT KE LABEL START

ORG
0100H ; AWAL PROGRAM YANG AKAN DIJALANKAN
START :
ISI PROGRAM ASSEMBLER
.
.
.
END
Catatan :
Setiap pembuatan program tidak boleh di mulai dari alamat 0000H. jika pembuatan program di mulai dari alamat 0000H maka program dipastikan tidak akan berjalan sebab 0000 di isi oleh intrupt reset. Sebaiknya pembuatan program di mulai dari alamat memori 0100h agar tidak terjadi cras dengan interrupt yang lain.







 Software Pendukung
Ada dua software untuk mempelajari mikrokontroller AT89C51 yaitu AVSIM51 dan TS Control berserta Linkernya. Program yang pertama digunakan untuk menghasilkan file-file berekstensi *.HEX, *.BIN, *.OBJ, *.LST adalah menggunakan Linkker, yaitu yang disebut dengan proses kompile.
Untuk mendapatankan file-file seperti diatas, pertama tuliskan program dengan menggunakan teks editor baik berupa teks editor NOTEPAD atau teks editor Q-EDIT, atau yang lainnya. Simpan program yang anda buat dan berilah ekstensi .ASM, setelah itu lakukan proses kompile.
 Simulasi Software AVSIM51
Untuk membuat program assemble pertama, buka teks editor yang anda miliki yaitu dengan cara sebagai barikut :
1. Click Start  Program MsDos
2. Pada Promt C:\ > ketik cd ASM51
3. Pada Promt C:\ASM51> ketik Edit kemudian tekan enter sehinga tampil seperti pada gambar dibawah ini:

Gambar 7 Tampalan Teks Editor Q-BASIC
4. Tekan enter dua kali
5. Ketik Listting Program dibawah ini
Latihan 1
ORG 0000H
AJMP MULAI


ORG 0100H
MULAI :
MOV A,#0F3H
MOV R0,#17H
MOV B,@R0
SWAP A
MOV P1,A
MOV R1,#12H
MOV @R1,A
MOV P0,A
END

Simpan dengan file assembler yang baru anda buat dengan ekstensi file .ASM lakukan proses kompile dengan cara mengetikan perintah pada M nama_file pada C promt
C:\ASM51>m latihan1  enter

Gambar 8 Tampilan Proses Kompile

Jika program yang dibuat tidak ada kesalahan maka Proses kompile akan menghasilkan 5 buah file berekstensi .HEX, .OBJ, .MAP, .BIN, dan .LST. kemudian akan tampil informasi ASSEMBLY COMPLETE , NO ERROR FOUND.
5 ekstensi file tersebut digunakan untuk :
1. Ekstensi file .HEX, .OBJ digunakan untuk keperluan simulasi
2. Ekstensi file .BIN, .HEX digunakan untuk perluan download kedalam EPROM AT89C51
3. Ekstensi file .LST digunakan untuk keperluan memeriksa kesalahan program
Setelah melakukan proses kompile kita akan coba untuk mensimulasikan program yang dibuat tadi yaitu dengan cara :
1. Pada Promt C:\asm51> ketikan a  enter sehinga muncul seperti pada gambar dibawah ini :


Gambar 9 Tampilan Pemilihan CPU Mikrokontroller
2. Pilih A dengan cara menekan tombol A pada keyboard sehingga tampil seperti pada gambar di bawah ini

Gambar 10 Tampilan Simulasi AVSIM51
3. Pilih Load dengan menekan tombol L pada keyboard
4. Pilih Avocet dengan menekan tombol A pada keyboard
5. Masukan nama file yang akan disimulasikan, nama file yang disimulasikan berekstensi .obj atau .hex. contoh latihan1.obj  enter
6. Tekan tombol F10 untuk menjalankan simulasi step by step
7. Amatilah hasil Perubahan dan masukan hasilnya kedalam tabel di bawah ini

Step Instruksi A B R0 R1 12H 17H P0 P1 P










Latihan 2
Ketik program dibawah ini, simpan dengan nama file latihan2.asm
ORG 0000H
LJMP MULAI


ORG 0100H
MULAI:
MOV 19H,#80H
MOV A,#0F8H
ADD A,19H
MOV B,A
INC 19H
DEC B
MOV R7,#29H
SUBB A,R7
MOV 20H,A
MOV R1,#20H
MOV A,R7
ADDC A,@R1
MUL AB
MOV B,#05H
DIV AB

Kompile program tersebut dengan cara mengetikkan m nama_file pada C promt (C:\asm51>m latihan2). Jalankan program AVSIM (C:\asm51>a) piliha Load  Avocet  masukan nama_file.obj  enter. Amati setiap perubahan data lalu isikan pada tabel dibawah ini
Step Instruksi A B R1 R7 19H 20H C AC P OV

















Latihan 4
Buat flowchart (algoritma) dan program untuk persamaan Y = ((A + B) * C) - D dengan ketentuan sebagai berikut :
Y adalah register 16 bit yang terdiri dari Y1 dan Y2. Y1, Y2 adalah alamat memori 22H dan 23H
A adalah bilangan 6AH pada alamat memori 10H
B adalah bilangan 14H
C adalah bilangan 08H pada alamat 32H
D = B + 1
Simulasi program tersebut dengan menggunakan AVSIM51
Latihan 5
Implementasikan persamaan logika berikut menjadi sebuah program

Dengan Ketentuan Sebagai berikut :
A adalah data 77H pada alamat memori 20H
B adalah data E1H pada register R2 bank ke 2
Y disimpan di register R1 bank ke 3
Simulasikan program tersebut dengan menggunakan AVSIM51



























LAMPIRAN

INSTRUKTION SET FOR AT89C51


INTRUKSI KETERANGAN TIME
ACALL ALAMATKODE Memanggil program percabangan 2
ADD A,#data Menambahkan data dengan Akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,@Rr Menambahkan data memori yang lokasinya ditunjukan oleh nilai isi register r dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,Rr Menambahkan isi register r dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,Alamatdata Menambahkan isi alamat data dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADDC A,#data Menambahkan isi carry flag dengan akumulator dan menambahkan data, hasilnya disimpan dalam akumulator 1
ADDC A,@Rr Menambahkan isi carry flag dengan akumulator dan menambahkan isi data memori yang lokasinya ditunjukan oleh isi register r, hasilnya disimpan dalam akumulator 1
ADDC A,Alamatdata Menambahkan isi carry flag dengan akumulator dan menambahkan isi data dari alamat data, hasilnya disimpan dalam akumulator 1
AJMP Alamatkode Intruksi ini adalah untuk melompat ke alamatkode yang dituju, dengan jangkauan lompatan 2 Kbyte 2
ANL A,#data Meng-AND-kan data dengan akumulator 2
ANL A,@Rr Meng-AND-kan isi memori yang lokasinya ditunjukan oleh isi register r dengan akumulator 2
ANL A,Rr Meng-AND-kan isi register r dengan akumulator 2
ANL A,Alamatdata Meng-AND-kan isi alamat data tertentu dengan akumulator 2
ANL C,Alamat bit Meng-AND-kan isi alamat bit tertentu dengan isi carry, jika keduany 1 maka hasilnya 1, selain itu hasilnya 0. hasilnya ditempat pada carry 2
ANL Alamatdata,A Meng-AND-kan isi alamat data dengan akumulator, dan hasilnya disimpan dalam alamatdata yang bersangkutan 2
CALL Intruksi ini akan ditranslasikan ke ACALL atau LCALL 2
CJNE @Rr,#data,alamat kode Membandingkan data langsung dengan lokasi memori yang dialamati oleh register r. Apabila tidak sama, eksekusi akan menuju ke alamatkode. Bila sama intruksi selanjutnya yang akan dijalankan 2
CJNE A,#data,Alamatkode Membandingkan data langsung dengan isi akumulator. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CJNE A,Alamatdata,Alamatkode Membandingkan isi alamatdata langsung dengan isi akumulator. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CJNE Rr,#data,alamatkode Membandingkan data langsung dengan isi register r. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CLR A Intruksi ini makan me-reset akumulator menjadi 00H 1
CLR C Instruksi ini akan me-reset carry flag menjadi 0 1
CLR Alamatbit Instruksi ini akan me-reset alamatbit menjadi 0 1
CPL A Instruksi ini akan mengkomplemen isi akumulator 1
CPL C Instruksi ini akan mengkomplemen isi Carry flag 1
CPL Alamatbit Instruksi ini akan mengkomplemen isi suatu alamatbit 1
DEC @Rr Instruksi ini akan mengurangi 1 isi lokasi memori yang alamatnya ditunjukan oleh isi register r 1
DEC A Instruksi ini akan mengurangi 1 isi akumulator 1
DEC Rr Instruksi ini akan menguranig 1 isi register r 1
DEC Alamatdata Instruksi ini akan mengurangi 1 isi alamatdata 1
DIV AB Instruksi ini akan membagi isi akumulator dengan isi register B. akumulator berisi hasil bagi, sedangkan register B berisi sisa pembagian 4
DJNZ Rr,Alamatkode Instruksi ini akan mengurangi 1 isi register r, jika hasilnya sudah 0 maka instruksi selanjutnya yang akan dijalankan. Jika hasilnya belum 0 eksekusi akan menuju ke alamatkode 2
DJNZ Alamatdata,alamatkode Instruksi ini akan mengurangi 1 isi alamatdata, jika hasilnya sudah 0 maka intruksi selanjutnya yang akan dijalankan. Jika hasilnya belum 0 eksekusi akan menuju ke alamatkode 2
INC @Rr Instruksi ini akan menambah 1 isi memori yang lokasinya ditunjukan oleh register r 1
INC A Instruksi ini akan menambahkan 1 isi akumulator 1
INC DPTR Instruksi ini akan menambah 1 isi data pointer 2
INC Rr Instruksi ini akan menambah 1 isi dari register r 1
JB Alamatbit,Alamatkode Instruksi ini akan menguji suatu alamatbit, jika berisi 1 eksekusi akan menuju ke alamatkode. Jika tidak 1 maka intruksi selanjutnya yang akan di eksekusi 2
JBC Alamatbit,Alamatkode Instruksi ini akan menguji suatu alamatbit. Jika berisi 1, bit tersebut akan diubah menjadi 0 dan eksekusi akan menuju ke alamatkode. Jika berisi 0, intruksi selanjutnya yang akan di eksekusi 2
JC Alamatkode Instruksi ini akan menguji carry flag. Jika berisi 1, eksekusi akan menuju ke alamatkode. Jika berisi 0 intruksi selanjutnya yang akan di eksekusi 2
JMP Alamatkode Instruksi ini akan diubah menjadi SJMP, AJMP atau LJMP 2
JNB Alamatbit,Alamatkode Instruksi ini menguji suatu alamat bit, jika isinya 0, eksekusi akan menuju ke alamat kode. Jika isinya 1 intruksi selanjutnya yang akan dieksekusi 2
JNC Alamatkode Instruksi akan menguji isi carry flag. Jika isinya 0 eksekusi akan menuju ke alamatkode. Jika berisi 1 intuksi selanjutnya yang akan dieksekusi 2
JNZ Alamatkode Instruksi ini akan menguji isi akumulator. Jika tidak sama dengan 0 eksekusi akan menuju ke alamatkode. Jika sama dengan 0 intruksi selanjutnya yang akan dieksekusi 2
JZ Alamatkode Instruksi ini akan menguji isi akumulator. Jika nilainya 0 eksekusi akan menuju ke alamatkode. Jika tidak 0 intruksi selanjutnya yang akan dieksekusi 2
LCALL Alamatkode Instruksi ini akan melompat ke alamat yang ditunjukan oleh alamatkode 2
LJMP Alamatkode Instruksi ini akan menuju ke alamatkode 2
MOV @Rr,#data Instruksi ini akan memindahkan data ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV @Rr,A Instuksi ini akan memindahkan isi akumulator ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV @Rr,Alamatdata Instruksi ini akan memindahkan isi suatu alamatdata ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV A,#data Instruksi ini akan memindahkan data ke akumulator 1
MOV A,@Rr Instruksi ini akan memindahkan isi data memori yang lokasinya ditunjukan oleh isi register r ke akumulator 2
MOV A,Rr Instruksi ini akan memindahkan isi data register r ke akumulator 2
MOV A,Alamatdata Instruksi ini akan memindahkan isi lamatdata ke akumulator 1
MOV C,alamatbit Instruksi ini akan memindahkan isi suatu alamatbit ke carry flag 1
MOV DPTR,#data Instruksi ini akan memindahkan data 16 bit ke data pointer 2
MOV Alamat1,Alamat2 Instruksi ini akan memindahkan isi alamat data sumber (alamat2) ke alamatdata tujuan (alamat1) 1
MOV A,@A+DPTR Instruksi ini akan menjumlahkan isi data pointer dengan isi akumulator. Hasil penjumlahan merupakan alamatkode memori dan isinya akan dipindahkan ke akumulator 3
MUL AB Instruksi ini akan mengalikan isi akumulator dengan isi register B. byte bawah hasil perkalian dimasukan ke akumulator dan byte atas dimasukan ke register B 4
NOP Instruksi ini tidak melakukan apa pun selama satu siklus 1
ORL A,#data Instruksi ini meng-OR-kan data dengan isi akumulator 2
ORL A,@Rr Instruksi ini meng-OR-kan isi lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan akumulator 2
ORL A,Rr Instruksi ini meng-OR-kan isi register r dengan akumulator 2
ORL A,Alamatdata Instruksi ini meng-OR-kan isi suatu alamatdata dengan akumulator 1
ORL C,alamatbit Instruksi ini meng-OR-kan isi suatu alamat bit dengan isi carry flag hasilnya disimpan dalam carry flag 1
ORL Alamatdata,#data Instruksi ini meng-OR-kan data dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 1
ORL Alamatdata,A Instruksi ini meng-OR-kan isi akumulator dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 2
POP Alamatdata Instruksi ini menempatkan byte yang ditunjukan oleh stack pinter ke suatu alamatdata. Kemudian mengurangi satu isi stack pointer 2
PUSH Alamatdata Instruksi ini menaikkan stack pointer kemudian menyimpan isinya ke suatu alamatdata pada lokasi yang ditunjukkan oleh stack pointer 2
RET Instruksi dipakai untuk kembali dari suatu subrutin ke alamat terakhir saat subrutin dipanggil 2
RETI Instruksi ini dipakai untuk kembali dari suatu rutin interrupt 2
RL A Instruksi ini memutar setiap bit dalam akumulator satu posisi ke kiri 1
RLC A Instruksi ini akan memutar bit-bit dalam akumulator satu posisi ke kiri. Bit ke 7 bergerak ke dalam carry flag, sedangkan isi carry flag bergerak menuju bit ke 0 dalam akumulator 1
RR A Instruksi ini akan memutar setiap bit dalam akumulator satu posisi ke kanan 1
RRC A Instruksi ini akan memutar setiap bit dalam akumulator satu posisi ke kanan. Bit ke 0 menuju ke carry flag, sementara isi carry flag masuk ke bit 7 akumulator 1
SETB C Instruksi ini mengset nilai carry flag menjadi 1 1
SETB Alamatbit Instruksi ini akan mengset isi suatu alamatbit menjadi 1 1
SUBB A,@Rr Instruksi ini akan mengurangi isi akumulator dengan carry flag dan isi lokasi memori yang ditunjukan oleh isi register r. hasilnya disimpan dalam akumulator 1
SUBB A,#data Instruksi ini akan mengurangkan isi carry flag dan data dari isi akumulator. Hasilnya disimpan dalam akumulator 1
SUBB A,Rr Instruksi ini akan mengurangi isi akumulator dengan isi carry flag dan isi register r. hasilnya disimpan dalam akumulator 1
SUBB A,Alamatdata Instruksi ini akan mengurangkan isi akumulator dengan isi carry flag dan isi suatu alamatdata 1
SJMP Alamatkode Instruksi ini akan melompat ke alamatkode 2
SWAP A Instruksi ini akan menukar byte bawah (0-3) dengan bit atas (4-7) 1
XCH A,@Rr Instruksi ini akan menukar isi lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan isi akumulator 1
XCH A,Alamatdata Instruksi ini akan menukar isi suatu alamatdata dengan isi akumulator 1
XCHD A,@Rr Instruksi ini akan menukar isi bagian bawah nibble (bit 0-3) dari lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan isi nibble bawah (bit 0-3) akumulator 1
XRL A,#data Instruksi ini akan meng-XOR-kan data dengan isi akumulator 1
XRL A,@Rr Instruksi ini akan meng-XOR-kan isi memori yang lokasinya ditunjukan oleh isi register r dengan isi akumulator 1
XRL A,Rr Instruksi ini akan meng-XOR-kan isi register r dengan isi akumulator 1
XRL Alamatdata,#data Instruksi ini akan meng-XOR-kan data dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 2
XRL A,Alamatdata Instruksi ini akan meng-XOR-kan isi suatu alamatdata dengan isi akumulator 1
XRL Alamatdata,A Instruksi ini akan meng-XOR-kan isi akmulator dengan isi suatu alamatdata dan hasilnya disimpan pada alamatdata tersebut 1

visual basic

Microsoft Visual Basic


(sering disingkat sebagai Visual Basic atau VB saja) merupakan sebuah bahasa pemrograman yang bersifat event driven dan menawarkan Integrated Development Environment (IDE) visual untuk membuat program aplikasi berbasis sistem operasi Microsoft Windows dengan menggunakan model pemrograman Common Object Model (COM). Visual Basic merupakan turunan bahasa BASIC dan menawarkan pengembangan aplikasi komputer berbasis grafik dengan cepat, akses ke basis data menggunakan Data Access Objects (DAO), Remote Data Objects (RDO), atau ActiveX Data Object (ADO), serta menawarkan pembuatan kontrol ActiveX dan objek ActiveX. Beberapa bahasa skrip seperti Visual Basic for Applications (VBA) dan Visual Basic Scripting Edition (VBScript), mirip seperti halnya Visual Basic, tetapi cara kerjanya yang berbeda.


Para programmer dapat membangun aplikasi dengan menggunakan komponen-komponen yang disediakan oleh Microsoft Visual Basic Program-program yang ditulis dengan Visual Basic juga dapat menggunakan Windows API, tapi membutuhkan deklarasi fungsi eksternal tambahan.


Dalam pemrograman untuk bisnis, Visual Basic memiliki pangsa pasar yang sangat luas. Dalam sebuah survey yang dilakukan pada tahun 2005, 62% pengembang perangkat lunak dilaporkan menggunakan berbagai bentuk Visual Basic, yang diikuti oleh C++, JavaScript, C#, dan Java.



Area Kerja atau IDE (Integrated Development Environment) Visual Basic


1. Main Windows(Jendela Utama) terdiri dari :

· Baris judul, berisi nama proyek, mode operasi VB sekarang&form yang akt

· Menu bar,merupakan menu drop down dimana kita dapat mengontrol operasi dari lingkungan VB.

· Toolbar berisi kumpulan gambar yang mewakili perintah yang ada di menu.

2. Form Windows (Jendela Form) adalah pusat dari pengembangan aplikasi VB

3.Project Windows (Jendela Proyek), menampilkan daftar form dan modul dari proyek.

· Proyek adalah kumpulan dari modul form, modul calss, modul standar&file sumber yang membentuk suatu aplikasi.

4. Toolbox merupakan kumpulan dari objek yang digunakan untuk membuat user interface serta control dari program aplikasi.

5. Properties Windows (Jendela Properties) berisi daftar struktur setting properties yang digunakan pada sebuah objek terpilih. Kotak drop down pada bagian atas jendela berisi daftar semua objek pada form yg aktif.

Ada 2 tab tampilan:Alphabetic (urut abjad) dan Categorized (urut berdasar kelompok). Dibagian bawah kotak terdapat property dari objek terpilih.

6. Form Layout Windows (Jendela Layout Form) menampilkan posisi form relative terhadap layer monitor.


Apilkasi Proyek terdiri dari :

1. Form, window atau jendela tempat membuat user interface

2. Object/Kontrol, komponen yang terdapat dalam suatu program

3. Property/Properties, nilai/karakteristik yang dimiliki oleh objek VB

Contoh objek Label propertiesnya=Name, Caption dll.

4.Methods/Metode, serangkaian perintah yang sudah tersedia pada suatu objek yang dapat diminta untuk mengerjakan tugas tertentu.

5. Event/Kejadian, kejadian yang dapat dialami oleh objek

6.Module/Modul, kumpulan dari prosedur umum, deklarasi variable&definisi konstanta yang digunakan oleh aplikasi.