BERBAGILAH DALAM HAL KEBAIKAN TERMASUK ILMU WALAU CUMA SETITIK....

6/04/2010

Micro Prossesor

1.1 Sejarah Mikroprosesor dan Komputer
1.1.1 Komputer Generasi Pertama

Halo pembaca yang budiman, bersyukurlah saat ini Anda diberi kesempatan untuk dapat membaca buku saya, karena pada Bab 1 ini akan saya paparkan betapa pentingnya teknologi mikrokontroler pada berbagai aspek kehidupan. Meskipun perkembangan mikrokontroler didahului dengan munculnya mikroprosesor yang berdampak pada pesatnya pengembangan teknologi komputer, mikrokontroler sangat dibutuhkan untuk menjadi pengontrol utama sistem elektronika digital berukuran kecil dan menengah. Dengan memahami berbagai kelebihan dan penerapan mikrokontroler, maka sesungguhnya banyak hal berguna yang dapat kita lakukan untuk bangsa kita.
Jauh sebelum ditemukannya transistor pada tahun 1947, sebenarnya komputer berukuran besar sudah digunakan untuk melakukan komputasi data. Bahasa pemrograman juga sudah ada pada sekitar tahun 1945 yang bernama Plankalkul yang dibuat oleh ilmuwan Jerman bernama Konrad Zuse ( baca : Tsoo zuh), namun belum sempat diterapkan karena kondisi pada saat itu sedang perang.
Gambar dibawah ini merupakan foto dari Departemen Amerika yang menggunakan komputer digital pertama bernama ENIAC (Electronic Numerical Integrator and Computer). Digunakan untuk menghitung jarak tembakan pada perang dunia ke 2. Komputer tersebut menggunakan tabung vakum 19.000 buah setara dengan kecepatan kalkulator standar kita.



Dengan ditemukannya transistor maka ukuran komputer yang berukuran 1 ruangan besar dapat diperkecil. Ukuran komputer menjadi sangat kecil dikarenakan penggunakan teknologi nano yang mampu menghasilkan chip yang terdiri dari ribuan bahkan jutaan transistor.


KOSONG..............................................

Gambar 1.2 transistor generasi pertama


Gambar diatas menampilkan hasil penelitian John Barden dan Walter Brattain di labolatorium Bell yang sedang melakukan penelitian crystal surfaces. Penelitian pada tahun 1947 menghasilkan kemajuan dengan menggantikan material yang lebih baik, dihasilkan transistor yang berfungsi sebagai penguat arus atau saklar elektronik. Transistor inilah yang menjadi cikal bakal dihasilkannya chip yang yang mampu membuat komputer kita menjadi seukuran jam tangan.

1.1.2 Prosesor
Pada sebuah komputer, terdapat mikroprosesor yang digunakan untuk memproses data. Mikroprosesor ialah suatu chip yang berfungsi sebagai pemroses data dari input yang diterima pada suatu system digital. Mikroprosesor paling mudah ditemukan pada Komputer (Central Processing Unit). Mikroprosesor yang umum pada komputer biasanya bermerek INTEL, AMD, atau CYRIX. Saat ini kecepatan prosesor INTEL Pentium 4 sudah sampai 3 GHz. Semakin tinggi frekwensi prosesor dan lebar data (saat ini mencapai 64 Bit) maka semakin cepat pemrosesan yang dilakukan prosesor.
Mikroprosesor merupakan bagian yang sangat penting di dalam pengembangan ilmu pengetahuan dan teknologi. Pada tahun 1971, Intel memperkenalkan mikroprosesor pertama di dunia dengan seri 4004, yang digunakan untuk kalkulator. 4004 hanya mempunyai 2300 transistor dan merupakan chip 4 bit. Berselang 1 tahun kemudian, muncul mikroprosesor 8008, yang merupakan mikroprosesor 8 bit pertama dengan 3300 transistor. 2 tahun kemudian (tahun 1974) Intel memperkenalkan mikroprosesor general purpose, 8080 dengan 6000 transistor yang digunakan sebagai mikroprosesor untuk komputer di rumah-rumah.


1.1.3 Processor 8086
Pada tahun 1978, Intel memperkenalkan mikroprosesor 16 bit bernama 8086, yang mana merupakan pengembangan dari mikroprosesor sebelumnya yaitu 8080/8085.
8086 ialah mikroprosesor dengan lebar bus data sebesar 16 bit secara internal dan eksternal. Maksudnya ialah seluruh register lebarnya 16 bit dan ada bus data selebar 16 bit untuk mentransfer data ke dalam dan keluar CPU. Karena masih ada perangkat keras yang hanya berukuran 8 bit serta harga PCB dengan lebar 16 bit data yang sangat mahal, mikroprosesor ini mengalami masalah dengan lebar datanya. Oleh karena itu Intel meluncurkan mikroprosesor 8088 yang mampu menangani data 16 bit juga 8 bit data. Oleh karena itu pada tahun 1981 Intel mengubah komputer IBM menggunakan mikroprosesor 8088 yang ternyata sangat sukses di pasaran karena kompatibilitasnya.



1.2 Peranan Mikrokontroler pada Teknologi Elektronika

1.2.1 Munculnya MikrokontrolerDengan berkembangnya teknologi mikroprosesor 8 bit dan 16 bit, seiring dengan itu muncul pula kebutuhan agar perangkat elektronika dapat dikemas sekecil mungkin. Seperti Atari, Nintendo, Sega, dan peralatan hiburan serta peralatan rumah tangga seperti AC dan Audio/Video.

Untuk mendukung hal tersebut, tidak dapat dilakukan oleh mikroprosesor standar. Hal ini dikarenakan mikroprosesor membutuhkan komponen eksternal tambahan seperti Memori, pengolah analog ke digital dan perangkat komunikasi serial misalnya. Oleh karena itu dikembangkanlah chip yang di dalam kemasan tersebut sudah terdapat mikroprosesor, I/O Pendukung, Memori, bahkan ADC yang dikenal dengan istilah mikrokontroler.
Mikrokontroler dapat disebut sebagai “one chip solution” karena terdiri dari :


CPU (central processing unit) CPU ialah bagian yang paling penting dari suatu mikroprosesor, ia melakukan pemrosesan data.

RAM (Random Access Memory)RAM digunakan Untuk menimpan data sementara

EPROM/PROM/ROM (Erasable Programmable Read Only Memory)ROM digunakan untuk menyimpan program yang bersifat permanent

I/O (input/output) - serial and parallelUnit ini berfungsi agar mikrokontroler dapat berkomunikasi dalam format serial atau paralel, sehingga dapat berkomunikasi dengan mudah dengan PC dan devais standar digital lainnya.

TimersTimer berguna untuk mengatur pwaktuan pada system berbasis mikrokontroler, misal untuk delay atau pencacah.

interrupt controller
Berfungsi menangani suatu request pada saat mikrokontroler sedang running.


Memang benar, bahwa mikrokontroler digunakan untuk orientasi pengontrolan, seperti pengontrol temperature, penampil display LCD, pemroses sinyal digital, pemroses dan pengontrol mesin-mesin industri dan sebagainya. Dengan mikrokontroler, anda dapat membuat robot hanya sebesar genggaman tangan anak / adik kita

1.2.2 Peranan Mikrokontroler saat ini
Mikrokontroler saat ini sudah dikenal dan digunakan secara luas pada dunia industri. Banyak sekali penelitian atau tugas akhir mahasiswa atau peneliti menggunakan berbagai versi mikrokontroler yang dapat dibeli dengan murah dari harga 15.000 – 350.000. Hal ini dikarenakan produksi massal yang dilakukan oleh para produsen chip seperti Atmel, Maxim dan Microchip. Mikrokontroler saat ini merupakan chip utama pada hampir setiap peralatan elektronika canggih. Robot-robot canggih bun bergantung pada kemampuan mikrokontroler dan ketekunan pembuat program mikrokntroler tersebut, hal ini karena menentukan kecepatan eksekusi program pada mikrokontroler dan kecerdasan pada mikrokontroler tersebut.
Mikrokontroler umumny bekerja pada frekwensi sekitar 12 MHz hingga 40 MHz. Untuk meningkatkan kecerdasan pada mikrokontroler tersebut, berbagai penelitian berbasis kecerdasan buatan telah dilakukan. Salah satunya ialah penggunaan algoritma genetik untuk mencari jalur terpendek pada gerakan robot pencari sumber api. Jika anda tertarik pada aplikasi mikrokontroler pada robot, sudah selayaknya Anda memperdalam bidang ini, karena tiap tahun kita mengadakan Kontes Robot Cerdas Indonesia yang melibatkan berbagai universitas dan perusahaan di bidang elektronika.
Penyebaran ilmu pengetahuan mikrokontroler di Indonesia sangat tidak merata. Berdasarkan pemantauan penulis, banyak sekali para ahli mikrokontroler terpusat di Jawa timur, Jawa Barat dan Jakarta. Penulis sangat berharap, hadirnya buku ini yang merupakan buku mikrokontroler terlengkap yang pernah ada dapat memperkecil kesenjangan hal tersebut. Mungkin anda akan bertanya, apa perbedaan prosesor embedded (prosesor yang dipasang pada system untuk tujuan tertentu)dengan mikrokontroler ? Saat ini mungkin sedikit sekali perbedaannya. Sebagai contoh saat ini arsitektur standar proseror berubah menjadi seperti mikrokontroler. Misalnya Motorola 68EC300, Intel 386 EX, and the IBM PowerPC 403GB. Chip-chip tersebut disebut sebagai super-microcontrollers.

1.3 berbagai Tipe Mikrokontroler

1.3.1 Mikrokontroler ATMEL
Mikrokontroler keluaran ATMEL dapat dikatakan sebagai mikrokontroler terlaris dan termurah saat ini. Chip mikrokontroler ini dapat diprogram menggunakan port paralel atau serial. Selain itu, dapat beroperasi hanya dengan 1 chip dan beberapa komponen dasar seprti kristal, resitor dan kapasitor

1.3.2 MikrokontrolerPIC

PIC ialah keluarga mikrokontroler tipe RISC buatan Microchip Technology. Bersumber dari PIC1650 yang dibuat oleh Divisi Mikroelektronika General Instruments. Teknologi Microchip tidak menggukana PIC sebagai akronim,melaikan nama brandnya ialah PICmicro. Hal ini karena PIC singkatan dari Peripheral Interface Controller, tetapi General Instruments mempunyai akronim PIC1650 sebagai Programmabel Intelligent Computer.
PIC pada awalnya dibuat menggunakan teknologi General Instruments 16 bit CPU yaitu CP1600. * bit PIC dibuat pertama kali 1975 untuk meningkatkan performa sistem peningkatan pada I/). Saat ini PIC telah dilengkapi dengan EPROM dan komunikasi serial, UAT, kernel kontrol motor dll serta memori program dari 512 word hingga 32 word. 1 Word disini sama dengan 1 instruki bahasa assembly yang bervariasi dari 12 hingga 16 bit, tergantung dari tipe PICmicro tersebut
1.3.3 Maxim
Maxim merupakan salah satu produsen chip yang fokus pada komponen digital dan kompunikasi seperti mikrocontroler, akuisisi data dan komponen RF (Radio Frekwensi). Maxim cukup inovatif dengan meluncurkan mikrokontroler yang mendukung jaringan komputer antara lain 80C400 dengan kecepatan tinggi. untuk melihat berbagai produk dan mendownload datasheet, atau contoh aplikasi. Beberapa chip mikrokontroler juga mendukung penggunakan compiler berbasis bahsaa C antara lai softwaqre Keil yang berfungsi sebagai compiler C , macro assemblers, real-time kernels, debuggers, simulator pada lingkungan IDE (Interface Design Environment) yang bagus.

1.4 Mikrokontroler Generasi terbaru
1.4.1 Mikrokontroler AT89S52


Mikrokontroler 89S52 merupakan versi terbaru dibandingkan mikrokontroler AT89C51 yang telah banyak digunakan saat ini. AT89S52 mmpunyai kelebihan yaitu mempunyai flash memori sebesar 8K bytei, RAM 256 byte serta 2 buah data pointer 16 bit. Spesifikasinya :
Kompatibel dengan keluarga mikrokontroler MCS51 sebelumnya
8 K Bytes In system Programmable (ISP) flash memori dengan kemampuan 1000 kali baca/tulis
tegangan kerja 4-5.0V
Bekerja dengan rentang 0 – 33MHz
256x8 bit RAM internal
32 jarul I/) dapat deprogram
3 buah 16 bit Timer/Counter
8 sumber interrupt
saluran full dupleks serial UART
watchdog timer
dual data pointer
Mode pemrograman ISP yang fleksibel (Byte dan Page Mode)




1.4.2 Spesial Function Register
Mikrokontroler mempunyai sebuah peta memori yang disebut sebagai Special Functin Register (SFR) seperti gambar dibawah ini.



1.4.3 Data Memori
AT89S52 menggunakan 256 bytes RAM dimaan 128 bytes bagian atas menempati alamat parallel ke special function register (SFR). Artinya 128 bagian atas mempunyai alamat yang sama dengan SFR namun secara fisik terpisah dari SFR. Ketika instruksi mengakses lokasi internal diatas 7FH, mode alama tyang digunakan pada instruksi menentukan apakah CPU mengakses 128 btyes atas atau SFR. Instruksi yang menggunakan pengalamatan langsung akan mengakses ruang SFR.




1.5 Aplikasi Pengkonversi Analog/Digital
1.5.1 ADC Max158 , 8 channel 8 bit adc


1.5.2 DS1722 digital temperature (Harga IC 75.000)








Mikrokontroler AT89S51/52



2.1 Mikrokontroler AT89S51/52

2.1.1 Pendahuluan
Mikrokontroler 89S51/52 merupakan versi terbaru dibandingkan mikrokontroler AT89C51 yang telah banyak digunakan saat ini. Mikrokontroler AT89S52 ialah mikrokomputer CMOS 8 bit dengan 8KB Flash Programmable dan Erasable Read Only Memory (PEROM). Mikrokontroler berteknologi memori non volatile kerapatan tingi dari Atmel ini kompatibel dengan mikrokontroler standar industri MCS-51 baik pin kaki IC maupun set instruksinya serta harganya yang cukup murah. Oleh karena itu, sangatlah tepat jika kita mempelajari mikrokontroler jenis ini. Anda juga diharapkan mempelajari versi lainnya yang berdasarkan pengalaman penulis lebih cepat di dalam pengisian program yaitu AT89S8252.

Pada buku ini saya fokuskan pada AT89S52 karena lebih powerfull meskipun sedikit lebih mahal dibandingkan 89S51. Spesifikasi penting AT89S52 :
Kompatibel dengan keluarga mikrokontroler MCS51 sebelumnya
8 K Bytes In system Programmable (ISP) flash memori dengan kemampuan 1000 kali baca/tulis
tegangan kerja 4-5.0V
Bekerja dengan rentang 0 – 33MHz
256x8 bit RAM internal
32 jalur I/0 dapat diprogram
3 buah 16 bit Timer/Counter
8 sumber interrupt
saluran full dupleks serial UART
watchdog timer
dual data pointer
Mode pemrograman ISP yang fleksibel (Byte dan Page Mode)



2.1.2 Spesial Function Register
Mikrokontroler mempunyai sebuah peta memori yang disebut sebagai Special Function Register (SFR) . Port 0 berada di alamat 80h, port 1 90h, port 2 A0h dan P3 di alamat B0h. Sedangkan SBUF untuk komunikasi serial berada pada alamat 99h.

2.1.3 Data Memori
AT89S51/52 mempunyai memori yang disebut sebagai Memori data internal. Memori data internal terdiri dari RAM internal sebesar 128 byte dengan alamat 00H-7FH dapat diakses menggunakan RAM address register. RAM Internal ini terdiri dari Register Banks dengan 8 buah register (R0-R7). Memori lain yaitu 21 buah Special Function Register dimulai dari alamat 80H-FFH. RAM ini beda lokasi dengan Flash PEROM dengan alamat 000H -7FFH. Jika diperlukan, memori data eksternal untuk menyimpan variabel yang ditentukan oleh user dapat ditambah berupa IC RAM atau ROM maksimal sebesar 64KB.


AT89S52 menggunakan 256 bytes RAM dimana 128 bytes bagian atas menempati alamat parallel ke special function register (SFR). Artinya 128 bagian atas mempunyai alamat yang sama dengan SFR namun secara fisik terpisah dari SFR. Ketika instruksi mengakses lokasi internal diatas 7FH, mode alamat yang digunakan pada instruksi menentukan apakah CPU mengakses 128 btyes atas atau SFR. Instruksi yang menggunakan pengalamatan langsung akan mengakses ruang SFR. Sebagai contoh, Port 0 berada diset pada alamat 80H, port 1 90H dan lain lain, informasi ini juga dapat dilihat pada file MOD51 yang harus kita sertakan setiap membuat program assembly dengan sebagian isinya sebagai berikut :



Sebagai perbandingan kapasitas memori, Tabel 2.1 menampilkan kapasitas memori dari mikrokontroler seri AT89X.

Tabel 2.1 Kapasitas Memory Mikrokontroller seri AT89X
Type
RAM
Flash Memory
EEPROM
AT89C51/ AT89S51
8 X 128 byte
4 Kbyte
Tidak
AT89C52/ AT89S52
8 X 256 byte
8 Kbyte
Tidak
AT89C55
8 X 256 byte
20 Kbyte
Tidak
AT89S53
8 X 256 byte
12 Kbyte
Tidak
AT89S8252
8 X 256 byte
8 Kbyte
2 Kbyte



Pemrograman AT89S51/52


3.1 Bahasa Assembly di Mikrokontroler
3.1.1 Mengenal bahasa Assembly

Secara fisik, mikrokontroler bekerja dengan membaca instruksi yang tersimpan di dalam memori. Mikrokontroler menentukan alamat dari memori program yang akan dibaca, dan melakukan proses baca data di memori. Data yang dibaca diinterprestasikan sebagai instruksi. Alamat instruksi disimpan oleh mikrokontroler di register, yang dikenal sebagai program counter. Instruksi ini misalnya program aritmatika yang melibatkan 2 register.
AT89S52 memiliki sekumpulan instruksi yang sangat lengkap. Jika anda telah mempelajari bahasa assembly mikroprosesor keluarga intel (misal 8086), ada sedikit perbedaan dengan bahasa assembly di mikrokontroler. Instruksi MOV untuk byte dan bit dikelompokkan sesuai dengan mode pengalamatan (addressing modes). Mode pengalamatan menjelaskan bagaimana operand dioperasikan. Berikut penjelasan dari berbagai mode pengalamatan. Bentuk program assembly yang umum ialah sebagai berikut :

Label mnemonic operand1 operand2 komentar
(isi memori) (opcode)











4000 7430 MOV A, #35H ;kopi 35H ke akumulator A


Isi memori ialah bilangan heksadesimal yang dikenal oleh mikrokontroler kita, yang merupakan representasi dari bahasa assembly yang telah kita buat. Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1,2 atau lebih operand, kadang juga tidak perlu operand.Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.


CJNE R5,#22H, aksi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RL A ;1 buah operand
NOP ; tidak memerlukan operand

Program yang telah selesai kita buat dapat disimpan dengan ekstension .asm. Lalu kita buat program objek menggunakan program ASM51 yang dapat diperoleh secara gratis di internet. Berikut contoh mengkompile file tesppi.asm yang tersedia di dalam paket DT-51 menggunakan ASM51, yang akan menghasilkan file tesppi.hex dan tesppi.lst. File .hex inilah yang kita masukkan ke Flash PEROM mikrokontroler AT89S52 atau ke eksternal memori seperti AT28C64B menggunakan program downloader.

Gambar 3.2 Tampilan file hasil kompilasi

Sedangkan file tesppi.lst merupakan file listing hasil dari proses assembly dan berisi informasi isi memori dan lain lain.


Gambar 3.3 Isi file tesppi.lst

3.1.2 Mendownload Program ke Mikrokontroler
Jika telah selesai anda dapat mendowload file hex anda ke Minimum System mikrokontroler anda menggunakan file dt51l.exe (berbasiskan DOS) atau dt51lwin.exe (berbasiskan windows ) sebagai berikut :


Gambar 3.4 DT-51 Windows Downloader v1.0


3.2 Mode Pengalamatan

3.2.1 Pengalamatan Langung
Pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara langsung, Untuk melaksanakan hal tesersebut digunakan tanda #. Operand yang digunakan pada pengalamatan langsung /immediate data dapat berupa bilangan bertanda mulai –256 hingga +256.

Contoh :
MOV A,#25H ;Isi akumulator dengan bilangan 25H
MOV DPTR, #20H :isi register DPTR dengan bilangan 20H
MOV R1,10H : ; isi register R1 dengan 10H
MOV A,#-1 ; sama dengan MOV A,#0FFH
; karena 00H –1 menjadi FFH


3.2.2 Pengalamatan Tak Langung
Pada pengalamatan ini, operand menunjuk ke sebuah register yang berisi lokasi alamat memori yang akan digunakan dalam operasi. Untuk melaksanakan pengalamatan tak langsung digunakan symbol @. Pengalamatan jenis ini biasa digunakan untuk melakukan penulisan, pemindahan atau pembacaan beberapa data dalam lokasi memori. AT89S51 mempunyai sebuah register 16 bit (DPTR) yang dapat digunakan untuk melakukan pengalamatan tidak langsung.

Contoh :
ADD, A,R1 ;Tambahkan isi RAM yang lokasinya ditunjukkan oleh register R1 ke
; akumulator
DEC @R1 ;Kurangi satu isi RAM yang alamatnya ditunjukkan oleh register R1
MOVX, ADPTR, A :Pindahkan isi dari akumulator ke memori luar yang lokasinya
; ditunjukkan oleh data pointer (DPTR)


Pengalamatan Data
Pengalamatan data terjadi pada sebuah perintah ketika nilai operasi merupakan alamat dari data yang akan diisi atau yang akan dipindahkan.

Contoh :
MOV P1,A ;isi P1 dari Akumulator
MOV A, 00001001b ; isi A dengan data tsb
MOV P2,FFH ;isi P2 dengan nilai FFH


3.2.3 Pengalamatan Kode
Pengalamatan kode terjadi ketika operand merupakan alamat dari instruksi JUMP dan CALL. Berikut contoh ACALL yang memanggil label Tunda, sehingga akan melompat ke lokasi memori bernama Tunda.

Contoh :
ACALL Tunda

TUNDA:
MOV A,#FEH
LOOP:
DJNZ A, LOOP
RET
3.2.4 Pengalamatan Bit
Pengalamatan bit ialah penunjukkan alamat lokasi bit baik dalam RAM internal atau perangkat keras menggunakan symbol titik (.).
Contoh :
SETB p1.7 ;Set bit port 1.7 aktif
SETB TR1 :Set TR1 (Timer 1 aktif)
SETB RXD ; memberikan logika 1 pada kaki RXD yang berada di port 3.0

3.3 Operator
Operator digunakan untuk melakukan aksi aritmatika, logika pergeseran bit dan lain-lainnya pada operand .Beberapa operator yang tersedia diantaranya :

Ø Operator Aritmatika
• * untuk perkalian
• / untuk pembagian
• + untuk penambahan
• - untuk pengurangan

Contoh : MOV A, #25H+3H ; sama dengan MOV A,#28H

Ø Operator Logika
• OR untuk poerasi OR
• AND untuk operasi AND
• XOR untuk operasi XOR
• EXOR untuk operasi EXOR
• NOT untuk operasi invert

Contoh :
MOV A, #20H OR 40H ;sama dengan MOV A,#60H
MOV A,#10H AND 31H ;sama dengan MOV A, 10H

Ø Operasi Khusus
• SHR 16 bit geser ke kanan
• SHL 16 bit geser ke kiri
• HIGH pilih bagian tas bit
• LOW pilih bagian bawah bit
• EQ = sama dengan
• NET <> tidak sama dengan
• Lt < lebih kecil
• LE <= lebih kecil atau sama dengan
• GT > lebih besar
• GE >= lebih besar atau sama dengan

Dimana perlu anda perhatikan prioritas dari operator sebagai berikut :
()
HIGH , LOW
Z*/, MOD, SHL , SHR
+, -
EQ, NE, LT, LE, GT, GE,=,<>,<,<=,>,>=
NOT
AND
OR, XOR

3.4 Pengarah Pilihan Segmen (Segment Selection Directives)
Ada 5 buah pengarah pilihan segmen yaitu CSEG, BSEG , DSEG ISEG dan XSEG yang menunjukkan salah satu dari 5 buah area memori . Penjelasan dari masing-masing segmen sebagai berikut :
Ø CSEG : untuk memilih lokasi memori program
Ø BSEG : untuk meilih lokasi memori yang dapat dialamati secara
pengalamatan bit
Ø DSEG : untuk memilih lokasi memori RAM Internal
Ø ISEG : untuk memilih lokasi memori RAM Internal yang
dialamati secara tak langsung
Ø XSEG : untuk memilih lokasi memori eksternal

Namun perlu diingat, penggunakan CSEG tidak wajib, jika kita memprogram mikrokontroler standar tanpa menuliskan CSEG terlebih dahulu, mikrokontroler masih tetap mau jalan.

3.5 Vektor Interupsi
Vector interrupt ialah nilai yang disimpan ke program counter pada saat terjadi interupsi sehingga program akan menuju ke alamat yang ditunjukkan oleh Program counter. Alamat vector interupsi ialah alamat yang akan dituju oleh MCS-51 jika terjadi interupsi. Interrupct service routine ialah rutin yang akan dijalankan pada saat terjadi interupsi. Jika rutin yang akan dijalankan sangat singkat, rutin tersebut dapat ditempatkan pada alamat yang sama dengan alamat vector interupsi. Namun penempatan Interrupt service routine pada alamat vector interupsi tidak disarankan karena dapat menggangun alamat vector interupsi milik interupsi lain terutama jika rutin yang diproses cukup panjang. Cara terbaik ialah dengan memindah Interrupt service routine pada alamat lain dan memberikan instruksi untuk lompat ke alamat tersebut tepat pada alamat vector interupsi yang bersangkutan. Untuk keluar dari Interrupt service routine dapat dilakukan dengan instruksi RETI (Return from interrupt).

Tabel 3.3 Alamat Vector interupsi
Interupsi
Flag
Alamat vektor
System reset
Rst
0000h
Interupsi eksternal 0
Ie0
0003h
Interupsi timer 0
Tf0
000bh
Interupsi eksternal 1
Ie1
0013h
Interupsi timer 1
Tf1
001bh
Interupsi serial
R1 atau ti
0023h

Masing –masing alamat vector mempunyai jarak yang berdekatan sehingga akan timbul masalah jika diperlukan sebuah rutin layanan interupsi yang cukup panjang., misal penggunakan interupsi eksternal 0 pada 0003h dan interupsi timer 0 pada 000bh, solusinya dapat dilakukan dengan kerangka sebagai berikut :

Org 4000h
Ljmp start
Org 4003h
Ljmp int0
Org 400bh
Ljmp timer0
….
Start: ….;main program

Int0; …. ;int0
Reti

Timer0; …..
Reti

3.6 Mencoba Membuat Program
3.6.1 Persiapan Alat

Agar proses belajar Anda berjalan sempurna, idealnya modul yang dibutuhkan :
DT-51 Versi 3.0
Trainer Board
I2C ADDA
LCD 2x16 atau LCD 2x20
de-Kits LCD Grafik
Software Hyper terminal di windows
ASM51 dan DT51 loader (DT51l.exe)
Sensor Suhu LM 35
Catu daya 5 V dan 12 , min 3 A.
Multitester analog/digital
Card PPI 8255 ISA atau PCI (lebih mahal)
ADC dan DAC
Osiloskop Standar (opsional)



Modul –modul utama tersebut diatas dapat anda pesan langsung ke penulis di situs www.toko-elektronika.com, sehingga anda tidak mengalami masalah pada saat percobaan. Selain itu anda harus membuat beberapa kabel diantaranya yang dibutuhkan ialah :

4 set ampenol 8x2
4 set ampenol 5x2
Kabel pita selebar 16 jalur
4 set female pcb pin
Kabel tunggal

Untuk menghubungkan pin CONTROL dari DT51 ke pin CONTROL Trainer board kabel 1 dan 2 harus dibalik, hal ini dikarenakan posisi VCC dan GND pada DT-51 terbalik, kabel ini disebut sebagai kabel X.

Praktikum II : Port 1 sebagai input

Langkah-langkahnya:
Hubungkan Port 1 DT-51 dengan “PORT INPUT” Dt-51 trainer Board
Hubungkan Port A DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
Hubungkan “CONTROL” DT-51 dengan “CONTROL” DT-51 Trainer Board menggunakan kabel tipe X
Buat program berikut:

$mod51
CSEG
ORG 4000H
LJMP START
ORG 4100H
START:
MOV SP, 30H
INIT: MOV DPTR, #2003H
MOV A,#80H
MOVX @DPTR, A

LABEL1: JB P1.4, DISPLAY

DISPLAY2: MOV DPTR,#2000H
MOV A, #00H
MOV @DPTR, A
SJMP LABEL1

DISPLAY: MOV DPTR, #2000H
MOV A, #10H
MOVX @DPTR, A
SJMP LABEL1
END

Jika program dijalankan, jika toggle switch Bit 4 berlogika 0 maka semua LED akan padam (masuk ke label DISPLAY2), jika toggle switch Bit 4 berlogika 1 maka hanya LED Bit 4 yang menyala(masuk ke label DISPLAY). Sebagai catatan, penggunaan P1.4 tidak mutlak, nilai 00H dan 10H dapat diganti dengan nilai lain untuk output ke LED.

Praktikum III : Penggunaan Interupsi

Langkah-langkah :
• Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
• Hubungkan “CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
• Hubungkan “IS1” dengan “INT0” pada DT-51 Trainer Board, karena kita ingin menggunakan interrupt eksternal (pin INT0 dan INT1)
• Buat program berikut :

$mod51
CSEG
ORG 4000H
LJMP START
ORG 4003H
RL A
MOV P1, A
MOV R7, #04H
LOOPA: MOV R6,#0FFH
LOOPB: MOV R5, #0FFH
DJNZ R5, $
DJNZ R6, LOOPB
DJNZ R7, LOOPA
RETI

ORG 4200H
;inisialisasi
START: MOV SP, #30H
MOV TCON, #01H
MOV A, #01H
MOV P1, #01H
MOV IE, #81H
SJMP $
END

Program diatas akan menampilkan nyala LED dari Bit 0 dan bergeser ke kiri setiap ada penekanan keypad “IS1”. Untuk mengunakan INT0 dengan falling edge trigger maka INT0 (TCON.0) berlogika 1, sehingga TCON bernilai 00000001b(01H). Untuk mengaktifkan interrupt, maka EX0 (IE.0) dan EA(IE.7) berlogika 1 sehingga IE bernilai 10000001b (81H), terlihat juga bahwa pada saat interupsi program melompat ke alamat vector 0003H yang oleh DT-51 langsung dipindah ke alamat 4003H. Fungsi DJNZ digunakan untuk mengurangi satu dan lompat jika hasilnya bukan nol.

Praktikum IV : Penggunaan Timer/Counter

Untuk menggunakan Timer/Counter 0 sebagai timer mode 1, maka GATE,C/T dan M1 untuk Timer 0 pada TMOD berlogika 0 dan M0 berlogika 1 sehingga TMOD bernilai 01H. Sedangkan untuk menjalankan Timer 0, maka TR0 (TCON.4) berlogika 1 sehingga TCON bernilai 10H. Pada contoh dibawah ini Timer 0 diberi nilai awal 2CH untuk TH0 dan 00H untuk TLO sehingga Timer 0 akan selalu dimulai dari nilai 2C00H. Karena frekwensi timer tinggi, maka digunakan faktor pengali 10H yang berada pada R0.

Langkah-langkah :
• Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
• Hubungkan “CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
• Buat program berikut :

$mod51
CSEG
ORG 4000H
LJMP START
ORG 400BH
COUNT: INC R0
CJNE R0,#10H,OUT1
SETB P1.5
LOOP: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,LOOP
CLR P1.5
MOV R0,#00H
OUT1: MOV TH0,#2CH
MOV TL0,#00H
RET1
;inisialisasi
ORG 4200H
START: MOV SP,#30H
MOV R0,#00H
MOV TMOD,#01H
MOV TH0,#2CH
MOV TL0,#00H
MOV TCON,#10H
MOV P1,#00H
MOV IE,#82H
SJMP $
END

Jika program dijalankan, akan menampilkan nyala LED Bit 5 berkedip dimana baru akan dinyalakan atau dipadamkan setelah interupsi oleh Timer 0 sebanyak 16 x. Perhatikan pada saat interupsi, program akan melompat ke alamat vector 000BH tetapi oleh DT51 akan langsung dipindah ke alamat 400BH.


3.6.1 Menulis program
Anda dapat menulis program di mana saja seperti notepad, wordpad dan ALDS. ALDS ialah software yang dapat kita gunakan membuat program dan melacak kesalahan.

3.6.2 Port sebagai I/0

Program pertama kita ialah Program yang menerima input dari Akumulator lalu menampilkan outputnya berlogika 1 atau 0 di port 1. Karena DT-51 menggunakan memori eksternal, maka dimulai dari alamat 4000H. Jika anda menggunakan kit buatan sendiri atau sistem minimum SMART52 produksi e-Technology, maka biasanya original dimulai dari 00H karena program disimpan di chip mikrokontroler tersebut.
Kode selanjutnya ialah membuat sebuah label dengan nama MULAI, isi dari label tersebut ialah menset data 0FH lalu dikirim ke akumulator A menggunakan perintah MOV. Lalu data di Akumulator di pindahkan ke P1 menggunakan fungsi MOV juga. Untuk terjadi perulangan terus menerus, kita menggunakan fungsi JMP untuk loncat ke label MULAI. Program diakhiri menggunakan fungsi END.

Program menerima data 0FH dari Akumulator lalu dikirim ke port 1 (p1.asm)
$mod51
ORG 4000H ; menggunakan alamat awal EEPROM DT51
MULAI: ; Label MULAI
MOV A,#0FH ; Kirim Data 0FH Ke Accumulator
MOV P1,A ; Kirim Data pada Accumulator ke Port 1
JMP MULAI ; Loncat Ke Label MULAI
END

Hubungkan keluaran p1 ke port input trainer board. Kompilasi program ini menjadi file p1.hex lalu masukkan ke kit DT-51 menggunakan dt51lwin.exe. Maka akan tampil data 4 led yang hidup di port input trainer board. Jika anda menggunakan system minimum 89S51 standar, dapat anda modifikasi dimana akumulator A bersumber dari port2 misalnya sebagai berikut:

MOV A, P2 ; terima data dari port 2
MOV P1, A ; tampilkan ke port 1



Port 1 DT-51 umumnya digunakan sebagai port input/output menggunakan perintah SETB untuk memberikan nilai 1 pada Bit, sedangkan perintah CLR akan mengkosongkan bit menjadi 0. Kita menggunakan fungsi SJMP untuk lompat secara Relative Addressing.

Langkah –langkah :
Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
Hubungkan “CONTROL” DT-51 dengan “CONTROL” DT-51
Hubungkan kabel port serial DT-51 dengan PC untuk menulis dan mengisi program.
Buat program sebagai berikut :

Program Mengeset P1(p1setb.asm)
$mod51
CSEG
ORG 4000H
LJMP START
ORG 4100H
START:
MOV SP, #30H
SETB P1.0
CLR P1.1
SETB P1.2
CLR P1.3
SETB P1.4
CLR P1.5
CLR P1.6
CLR P1.7
SJMP $
END

Jika program dijalankan maka akan menyebabkan output LED Trainer Board Bit ke 0, 2 dan ke 4 menyala dan lainnya padam. SP dipindah ke alamat 30H karena alamat-alamat sebelumnya umumnya masih dipakai, sedangkan SJMP $ pada program akan menyebabkan program berputar / looping pada alamat dimana perintah SJMP $ berada.

Program berikut akan mengetes port 1 di DT-51 Minimum System. Output di port 1 akan berlogika 1 dan 0 secara bergantian. Untuk melihat hasil output, kita menggunakan delay agar perubahan logika di port tersebut dapat terlihat.

Program Tes port 1 DT-51(tesport.asm)

$MOD51
$TITLE(TESPORT)
CSEG
ORG 4000H
AJMP START
ORG 4100H

Delay: MOV R2,#0FH
Del1 : MOV R1,#0FFH
DJNZ R1,$
DJNZ R2,Del1
RET
START: MOV SP,#30H
XX: MOV P1,#0FFH ;semua pin di port 1 high
ACALL Delay
MOV P1,#00H ; set low
ACALL Delay
AJMP XX
END Share

Belajar Assembler

ASM 51


ASM51 itu adalah sebuah kompiler untuk bahasa asembly untuk keluarga 8051. jadi asm 51 sebagai compiler.

compiler maksudnya ?
compiler disini berarti bertujuan untuk mengubah bahasa mesin yang ditulis di textpad/notepad/text editor. yang disave dalam betuk namafile.asm di kompile menjadi file bahasa mesin .Hex

.ASM tidak sama dengan .HEX ?
Asembly (asm) tidak sama dengan bahasa mesin (HEX)
sejarahnya dimulai ketika perangkat elektronik atau ic hanya dapat mengetahui nilai 1 dan 0.
1 = keadaan ada listrik
0 = keadaan tidak ada listrik.

untuk memerintah sebuah prosesor / micro controller yang didalamnya terdiri dari rangkaian rangkain elektronik maka hanya tahu kondisi listrik mengalir dan listrik tidak mengalir.

jadi kompiler adalah sebagai jembatan. menghubungkan program kita ke bahasa mesin. karena format bahasa mesin haruslah nilai 1 dan 0.
jadi sebelum belajar asembly coba kenali :

bilangan biner : 0 1
bilangan octal : 0 1 . . . 7
bilangan hexadecimal : 0 1 2 3 4 5 6 7 8 9 A B C D E F


jadi instruksi atau perintah yang kita tulis harus diubah menjadi 1010.atau namanya opcode.(operation code)

setiap instruksi harus punya kode unik jadi tidak tertukar. karena instruksi perintah harus digambarkan dnegan bahasa biner juga.


misalkan
CPL A => 0pcodenya F4
mov P0,A => opcodenya F580
mov P0,#FFh => F580FF


nah yang di download / di burn / di insert ke mcs.
nah sekarang kenapa kita tidak menggunakan perintah F8, F4 E4, dll seperti itu, yah kerana manusia terbatas mengingat sesuatu. kita gunakan saja mnemonic. yang akhirnya menjadi bahasa rakitan. seprti mov, inc, dec, mul, div, cmp, jb,
semuanya lebih mudah diningat. seperti alamat website yang dulunya adalah kode ip yang harus diingat.


ok sekarang dalam asm51 sebuah program compiler berbasiskan dos. jadi dia tidak ada windown atau GUI gitu.

tidak banyak menu. cukup enter lalu masukan nama file.
kemudian dia akan menggenerate dua buah file.

misal
A.asm => A.LST , A.Hex


.lst untuk melihat letak memori dan program
.hex murni bahasa mesinnya.


untuk simulasi kita dapat menggunakan FSIM.
cara menggunakanya adalah dengan mendrag .hex ke program tersebut. tekan kiri dengan muse file drag ke program. otomatis akan muncul layar. disana kita bisa melihat isi memori registe serta PC yang ada di mcs, serta output dari masing masing port


dalam memakai compiler ini kita disertakan include file yaitu

MOD52 untuk keluarga 89X52
MOD51 untuk keluarha 89X51

apa sih tujuan file diatas? tujuanya adalah supaya alamat alamat memori yang digunakan tepat. seperti untuk mengakses port kita perlu mengakses nilai memori

seperti
mov P0,#00h
mov 080H,#00h

alamat P0 = #00h

untuk lebih lengkapn dapat membukan file MOD52 dengan textpad


format program dnegan compiler ini



;=====================================================

$object ; menghasilkan .hex
$mod52 ; keluarga 8952

org 00h
ajmp start


start:

mov P0,#55H ;Port 0 = 0 1 0 1 0 1 0 1
ajmp $

END ;akhir program

;=====================================================

tujuan program diatas hanya membuat port 0 mengeluarkan logic MSB 0101 0101 LSB


akan menghasilkan

FILE LST
;=================================================== PAGE 1

1 $object ; menghasilkan .hex
2 $mod52 ; keluarga 8952
3
0000 4 org 00h
0000 0102 5 ajmp start
6
7
0002 8 start:
9
0002 758055 10 mov P0,#55H ;Port 0 =
0005 0105 11 ajmp $
12
13 END ;akhir program

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
PAGE 2

P0 . . . . . . . . . . . . . D ADDR 0080H PREDEFINED
START. . . . . . . . . . . . C ADDR 0002H
;=======================================================


dan

FILE HEX
;===============================
:0700000001027580550105A6
:00000001FF



file hex itu lah yang akan di burn di microntroler.
kalau mau coba simulasi silahkan masukan ke FSIM. drag file hex ke file fsim. samapai terbuka window baru dan tekan F3 untuk run

 bisa dilihat di kiri bawah P0 bernilai 55 artinya port 0 bernilai 55 Share