Modul Mikrokontroler At89s51

  • Upload
    sutikno

  • View
    98

  • Download
    6

Embed Size (px)

Citation preview

MODUL MIKROKONTROLER AT89S51

SMK GONDANG WONOPRINGGOMODUL MIKROKONTROLER AT89S51MODUL AND JOB SHEET

Arranged by : Haris Afiatno, ST1/1/2011

BERISI TENTANG JOB SHEET DAN MODUL MIKROKONTROLER

F / 76 / K3TOE / 128 JUNI 2010 VALIDASI MODUL / JOBSHEETSMK GONDANGWONOPRINGGO PEKALONGAN

Jenis Modul/Jobsheet: Produktif Teknik Otomotif ElektronikKompetensi: Membuat Sistem Kontrol Aplikatif dengan Pemrograman berbasis mikroprosesor atau microcontroler.Kelas: X (SEPULUH) Semester : 2 (DUA)Nama Penyusun : Haris Afiatno, ST

NoUnsur Yang DiverifikasiHasil Verifikasi

SesuaiTidak

1Penulisan sesuai dengan sistematika modul/jobsheet

2Kesesuaian antara materi dan pokok bahasan

3Uraian materi jelas, urut, dan terinci sesuai pokok bahasan.

4Kesesuaian antara jobsheet/modul dengan media pembelajaran yang tersedia

5Terdapat gambar/grafik/ilustrasi/diagram yang membantu pemahaman siswa

6Modul disertai pedoman penggunaan modul

7Terdapat soal latihan bagi siswa untuk melatih ketrampilan

8Tingkat kesulitan soal latihan : 25 % Mudah ; 50 % Sedang ; 25 % Sukar

Catatan .................................................................................................................................Wonopringgo, 1 januari 2011Mengetahui, VerifikatorK3TOEGuru Sejenis / Serumpun

SLAMET KUSPRIYONO, S.TWISNU WARDHANA, S.TDaftar isi PendahuluanArsitektur MCS-51Operasi Timer/CounterOperasi Pemindahan DataOperasi LogikaOperasi AritmatikaOperasi PercabanganAplikasi Seven SegmenAplikasi Motor StepperKomunikasi Data SerialOperasi Interupsi

PendahuluanKemajuan Teknologi di bidang elektronik begitu pesat sejak ditemukannya transistor dengan cepat perangkat semi konduktor menggantikan posisi tabung hampa karena ukurannya yang lebih kesil,tegangan kerjanya yang lebih rendah,konsumsi daya nya yang lebih kecil dan tentu saja harganya yang jauh lebih murah.Transistor kemudian membawa kepada penemuan intergrated circuit (IC), sebuah perangakat semi konduktor yang berisi dari beberapa buah transistor sampai jutaan transistor yang membentuk suatu rangkaian dengan fungsi tertentu, dari penguat operasional ( Op Amp) sampai pengelola sinyal digital ( digital signal prosesor). Dari transistor inilah lahir mikrokontroler. Sebuah komputer mikro memiliki tiga komponen utama: unit pengolahan pusat (CPU= central processing Unit) memori dengan sistem input / output (I/O) untuk dihubungkan dengan perangkat luar. CPU, yang mengatur sistem kerja komputer mikro, dibangun oleh sebuah mikroprosesor. Memori terdiri atas EEPROM untuk menyimpan program dan RAM Untuk menyimpan data. Sistem I/O bisa dihubungkan dengan perangkat luar misalnya keyboard dan sebuah monitor, bergantung pada aplikasinya. Apabila CPU, memori dan sistem I/O dibuat dalam sebuah Chip semikonduktor, maka inilah yang dinamakan mikrokontroler. Fungsi mikrokontroler adalah pengendali suatu rangkaian elektronik yang dapat diprogam dan bekerja sesuai dengan aplikasi tertentu, sebagai contoh sebuah tapemobi dengan peraga LCD pastilah ada mikrokontroler didalamnya. Digunakan juga untuk mengendalikan pemutaran kaset, mengendalikan tuner FM, memberikan Informasi ke pemakai melalui LCD, mengatur Volume suara ke spiker dan mengendalikan Equalizer digital.

Arsitektur Mikrokontroler AT89S51Mikrokontroler 8051 standart adalah mikrokontroler 8 bit dengan fasilitas sebagai berikut : 1. Memiliki 4 x 8 bit port I/O.2. RAM internal 128 bytes.3. Memiliki 2 buah timer. 4. Sebuah port serial.5. Kendali interupsi dengan 5 buah sumber interupsi. 6. Bisa mengalamati memori program sampai 64 Kbyte (Kb)dan memori data sampai 64 Kb Secara terpisah. 7. Register- register fungsi khusus ( SFR = spesial function Register), seperti akumulator, register B, stack Pointer (SP), Data Pointer (DPTR), P0, P1, P2, dan P3 untuk mengakses Port I/O, buffer data serial, register timer dan register kendali (untuk port serial, timer dan interupsi).

Penjelasan fungsi kaki-kaki (4x8 port I/O)

RAM INTERNAL 128 BYTESCatatan :Gambar diatas adalah peta memori internal 89S51 yang terdiri dari RAM, SFR dan ROM. Tampak bahwa ada kesamaan address antara RAM, SFR dan ROM yaitu pada address 00 s/d FF. Atas pertimbangan inilah maka biasanya source code ditulis setelah address 00FF yaitu 0100 pada ROM, Hal ini dimaksudkan agar data RAM dan SFR tidak terisi oleh byte source code.

Memori internal 89S51Terdiri dari 3 bagian yaitu ROM, RAM dan SFR. ROM / Read Only Memory adalah memori tempat menyimpan program / source code. Sifat ROM adalah non-volatile, data / program tidak akan hilang walaupun tegangan supply tidak ada. Kapasitas ROM tergantung dari tipe mikrokontroler. Untuk AT89S51 kapasitas ROM adalah 4 KByte. ROM pada AT89S51 menempati address 0000 s/d 0FFF. RAM / Random Access Memory adalah memori tempat menyimpan data sementara. Sifat RAM adalah volatile, data akan hilang jika tegangan supply tidak ada. Kapasitas RAM tergantung pada tipe mikrokontroler. Pada AT89S51 RAM dibagi menjadi 2 yaitu :A. LOWER 128 byte yang menempati address 00 s/d 7F. RAM ini dapat diakses dengan pengalamatan langsung (direct) maupun tak langsung (indirect)Contoh :Direct -> mov 30h,#120 ; Pindahkan data 120 ke RAM pada address 30h Indirect -> mov R0,#30h ; Isi Register 0 dengan 30hmov @R0,#120 ; Pindahkan data 120 ke RAM pada address sesuai isi R0B. UPPER 128 byte yang menempati address 80 s/d FF. Address ini sama dengan address SFR meski secara fisik benar-benar berbeda. RAM ini hanya dapat diakses dengan pengalamatan tak langsung saja. SFR / Special Function Register adalah register dengan fungsi tertentu. Misalnya, register TMOD dan TCON adalah timer control register yang berfungsi mengatur fasilitas timer mikrokontroler. SFR pada AT89S51 menempati address 80 s/d FF.

ORGANISASI RAM INTERNAL

RAM (Random Access Memory) internal AT89S51 berfungsi untuk menyimpan data sementara. Data akan tetap disimpan selama ada supply tegangan ke mikrokontroler. Pada AT89S51, RAM dibagi menjadi 3 bagian yaitu : Register serba gunaTerdiri dari Bank 0, Bank 1, Bank 2, Bank 3. Tiap bank register terdiri dari 8 register 8 bit yaitu: R0, R1,.. ,R7 Pemilihan bank register ditentukan pada register PSW Rentang address : 00 s/d 1F Bit addressable RAMAdalah RAM yang dapat diakses per bit. Ini diperlukan pada saat kita ingin menyimpan data yang panjangnya hanya 1 bit. Setiap bit pada lokasi RAM ini memiliki address sendiri-sendiri seperti terlihat pada gambar.Rentang address : 20 s/d 2F General purpose RAMAdalah RAM yang dapat diakses per byte.Ini diperlukan pada saat kita ingin menyimpan data yang panjangnya 8 bit. Rentang address : 30 s/d 7F

Special Fungsi Register (FSR )

Operasi TimerTimer sangat diperlukan untuk membuat delay/tundaan waktu. AT89S51 menyediakan fasilitas timer 16 bit. sebanyak 2 buah yaitu Timer 0 dan Timer 2. Timer ini juga bisa di fungsikan sebagai counter/pencacah. Timer bekerja dengan cara menghitung pulsa clock internal mikrokontroler yang dihasilkan dari rangkaian osilator. Jumlah pulsa clock akan dibandingkan dengan sebuah nilai yang terdapat dalam register timer (TH dan TL). Jika jumlah pulsa clock sama dengan nilai timer, maka sebuah interrupt akan terjadi (ditandai oleh flag TF). Interrupt ini dapat dipantau oleh program sebagai tanda bahwa timer telah overflow. Counter bekerja dengan cara menghitung pulsa eksternal pada P3.4 (T0) dan P3.5 (T1). Jumlah pulsa ini akan disimpan dalam register timer (TH dan TL).

Timer akan menghitung pulsa clock dari osilator yang sebelumnya telah dibagi 12. Agar berfungsi sebagai timer maka :1. Bit C/T dalam TMOD harus 0 (timer operation)2. Bit TRx dalam TCON harus 1 (timer run)3. Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.4. Counter menghitung pulsa dari pin input T0 dan T1.Agar berfungsi sebagai counter maka : 1. Bit C/T dalam TMOD harus 1 (counter operation). 2. Bit TRx dalam TCON harus 1 (timer run)3. Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.Register TCON

TCON / Timer Control Special Function Register Bit Symbol Fuction 7 TF1 Timer 1 overflow flag. Set saat timer berubah dari satu ke nol. Clear saat prosesor mengeksekusi interrupt service routine pada address 001Bh. 6 TR1 Timer 1 run control bit. Set 1 oleh program agar timer mulai menghitung. Clear oleh program untuk menghentikan timer, bukan me-reset timer. 5 TF0 Timer 0 overflow flag. Set saat timer berubah dari satu ke nol. Clear saat prosesor mengeksekusi interrupt service routine pada address 000Bh. 4 TR0 Timer 0 run control bit. Set 1 oleh program agar timer mulai menghitung. Clear oleh program untuk menghentikan timer, bukan me-reset timer. 3 IE1 External interrupt 1 edge flag. Set 1 pada saat transisi sinyal high ke low diterima oleh port3 pin 3.3 (INT1). Clear saat prosesor mengeksekusi interrupt service routine pada ddress 0013h.Tidak terkait dengan operasi timer.2 IT1 External interrupt 1 signal type control bit. Set 1 oleh program untuk mengaktifkan external interrupt 1 yang dipicu oleh sisi turun sinyal (falling edge/ transisi high ke low). Clear oleh program untuk mengaktifkan sinyal low pada external interrupt 1 untuk menghasilkan sebuah interrupt.1 IE0 External interrupt 0 edge flag. Set 1 pada saat transisi sinyal high ke low diterima oleh port3 pin 3.2 (INT0). Clear saat prosesor mengeksekusi interrupt service routine pada ddress 0003h.Tidak terkait dengan operasi timer.0 IT0 External interrupt 0 signal type control bit. Set 1 oleh program untuk mengaktifkan external interrupt 0 yang dipicu oleh sisi turun sinyal (falling edge/ transisi high ke low). Clear oleh program untuk mengaktifkan sinyal low pada external interrupt 0 untuk menghasilkan sebuah interrupt.

Register TMOD

Timer/Counter InterruptTimer/Counter pada AT89S51 adalah sebuah Up Counter, nilai counternya akan naik (increment) dari nilai awalnya sampai nilai maksimumnya dan kembali ke nilai nol. Saat bergulir menjadi nol (overflow), maka sebuah timer flag akan bernilai 1. Flag ini dapat diuji oleh program untuk menandakan bahwa counter telah selesai menghitung, atau flag tersebut bisa digunakan untuk meng-interrupt program. Nilai awal timer/counter harus dimasukkan dulu ke dalam timer register Timer High (TH) dan Timer Low (TL) sebelum timer/counter dijalankan.

MODE OPERASI TIMER

Pemilihan mode operasi timer ditentukan pada bit M1 dan M0 dalam register TMOD. Ada 4 mode operasi yaitu : Mode 0 : 13-bit Timer/Counter Mode 1 : 16-bit Timer/Counter Mode 2 : 8-bit Autoreload Timer/Counter Mode 3 : Two 8 bit Timer/Counter

Timer Mode 0. 13-bit Timer/CounterDengan mensetting M1&M0 = 00 dalam TMOD menyebabkan register THx Berfungsi sebagai counter 8 bit dan register TLx berfungsi sebagai counter 5 bit. Ketika verflow, TF1x akan 1. Nilai maksimumnya adalah 8191d atau 1FFFh. Timer Mode 1. 16-bit Timer/CounterRegister THx dan TLx masing-masing berfungsi sebagai counter 8 bit. Ketika overflow, TF1x akan 1 .Nilai maksimumnya adalah 65535d atau FFFFh. Timer Mode 2. 8-bit Autoreload Timer/Counter Register TLx berfungsi sebagai counter 8 bit. Register THx berfungsi mengisi ulang / autoreload register TLx ketika terjadi overflow (TFx=1). Timer Mode 3. Two 8 bit Timer/CounterPada mode 3. Timer berfungsi sebagai counter 8 bit yang benar-benar terpisah satu sama lain. Timer 0 berfungsi sebagai timer sekaligus sebagai counter secara terpisah. TL0 digunakan sebagai counter 8 bit yang menghitung pulsa eksternal, dengan timer flag TF0. TH0 digunakan sebagai timer 8 bit yang menghitung pulsa clock internal, dengan timer flag TF1. Pada mode 3, Timer 1 tidak dapat digunakan sebab timer flag TF1 digunakan sebagai timer flag TH0.Timer/Counter dapat dihidup-matikan secara program dengan mengatur TRx Maupun secara hardware dengan memberikan logika 0 pada pin INTx. Berikut adalah tabel nilai TMOD sesuai dengan mode dan kontrol timer/counter.

Secara umum delay waktu timer (T) dapat dihitung dengan persamaan sebagai berikut :1. Sebagai timer 8 bit.T=(255-TLx)*1uS2. Sebagai timer 13 bit.T=(8191-THxTLx)*1uS3. Sebagai timer 16 bit.T=(65535-THxTLx)*1uS Dengan catatan frekuensi crystal yang digunakan adalah 12 MHz.Contoh :Diinginkan delay waktu 10 mS menggunakan timer 16 bit. Maka nilai THx dan TLx adalah : T=(65535-THxTLx)*1UsTHxTLx=65535-(T/1uS)THxTLx=65535-(10mS/1uS)THxTLx=65535-10000THxTLx=55535d=D8EFhMaka THx=D8h dan TLx=EFh

BAHASA ASSEMBLER 8051

Bahasa asembly adalah bahasa arus bawah karena merupakan bahasa dari mesin, sehingga kita bisa dengan mudah mengakses hardware dengan bahasa ini. Dalam menjalankan ataupun memprogram mikrokontroler diperlukan pengetahuan dasar tentang bahasa asembli yang pada intinya adalah bahasa digital meliputi bilangan biner, heksa, dan okta. Bahasa yang kita gunakan secara umum adalah bilangan desimal yang terdiri dari angka 0-9. Sedangkan mesin hanya mengerti bilangan biner 1 atau 0 saja, sehingga kita harus mempelajari bahasa mesin untuk dapat berkomunikasi membuat aplikasi yang kita inginkan. Sistem angka yang biasa kita kenal adalah system decimal yaitu system bilangan berbasis 10, tetapi system yang dipakai dalam computer adalah biner. Sistem Biner adalah system bilangan yang hanya menggunakan dua symbol (0,1). Bilangan ini biasanya dikatakan mempunyai radiks 2 dan biasa disebut bilangan berbasis 2, setiap biner digit disebut bit. Mengapa menggunakan system Biner ? Penggunaan system angka-biner pada dasarnya disebabkan karena kesederhanaan cara, dimana digit biner 0 dan 1 berhubungan dengan implementasi fisis. Digit biner 0 dan 1 dapat dengan mudah dinyatakan oleh tegangan komponen digital sebagai rendah ( low ) atau tinggi ( high ) System biner hanya dapat mengolah angka biner atau angka terkode biner dari system bilangan lain seperti decimal. Pembatasan semua dari system digital ( biner) ini mengakibatkan bahwa angka-angka yang diberikan dalam bentuk lain harus di konversi kan ke bentuk biner dahulu sebelum diolah oleh suatu system digital pada akhir proses hasilnya ( dalam bentuk biner ) dapat dikonversikan kembali ke bentuk system angka aslinya.

Konversi Desimal ke biner Metode Cibar-Cibur ( The Dibble-Dabble Method )Banyak cara yang digunakan untuk mengkonversikan angka decimal ke angka biner dan angka biner ke angka decimal ekivalennya, akan tetapi yang paling popular adalah metode cibar-cibur ( the dibble-dabble method ). Cara yang dipakai untuk mengkonversi bilangan decimal ke biner dengan pembagian ulang angka decimal oleh 2, menghasilkan deretan dari sisa 0 atau 1. Deretan sisa tersebut bila dibaca dari arah terbalik akan menghasilkan angka biner ekivalen dari angka decimal yang di konversikan

Konversi Biner ke DesimalKonversikan 1101112 = 10

Bilangan HexadesimalBilangan yang mempunyai radiks 16 atau system bilangan berbasis 16, bilangan hexadecimal menggunakan symbol 0-9, A untuk cacahan 10, B untuk cacahan 11,C untuk cacahan 12, D untuk cacahan 13, E untuk cacahan 14 ,dan F untuk cacahan 15. Keuntungan dari system hexadecimal adalah kegunaannya dalam pengubahan secara langsung dari bilangan biner 4-bit. Tiap bilangan biner 4-bit dari 0000 sampai 1111 dapat diwakili oleh suatu digit hexadecimal yang unik.

Operasi pemindah dataMCS-51 memiliki instruksi instruksi pemindah data yang sangat berguna dan bisa digunakan untuk memindahkan data byte atau bit. Sumber atau tujuan bisa berupa data konstanta, reegister fungsi khusus (SFR) atau alamat di memori data atau program ( internal maupun eksternal). Bagian penting dari konsep pemindahan data MCS-51 adalah mode-mode pengalamatan yang dimilikinya. Dan meode pengalamatan merupakan cara bagaimana byte atau bit sumber dan tujuan ditentukan. Sebagai contoh, dalam sebuah operasi pemindahan data, byte data sumber bisa tersimpan dalam sebuah register, RAM internal, memori program atau memori data eksternal. Sementara byte alamat sumber bisa dituliskan langsung sebagai bagian dari instruksi aseembler atau disimpan dalam sebuah register. MCS-51 memiliki 5 buah mode pengalamatan :1. Immediate Addressing Mode2. Register Addressing mode3. Direct Addressing Mode4. Indirect Addressing Mode5. Pengalamatan berindeks (Indexed)

A. Immediate Addressing Mode ( Pengalamatan segera)

B. Register Addressing mode ( Pengalamatan register)

C. Direct addresing mode ( Pengalamatan Langsung)

D. Indirect Addressing Mode ( pengalamatan tak langsung)

E. Pengalamatan berindeks (Indexed) Mode pengalamatan berindeks dipakai untuk membaca byte data konstanta yang tersimpan dalam memori program dan menyimpannya di akumulator. Alamat memori program yang berisi byte data yang akan dibaca disimpan didalam DPTR atau PC. Alamat ini adalah dasar (Base addres) karena alamat yang sesungguhnya didapat dengan menjumlahkan DPTR atau PC dengan isi akumulator ( alamat Offset). Instruksi yang digunakan adalah movc dengan format instruksi :Movc A, @A+DPTR Atau MovcA, @+PC Dalam bahasa assembler terdapat pernyataan untuk mendefinisikan konstanta dalam memori program. Pernyataan itu adalah db (define bytes). Konstanta ini misalnya digunakan untuk menyimpan data yang akan ditampilkan melalui LCD atau menyimpan data untuk mengubah bilangan menjadi data display 7 segmen. Sebagai contoh :DB 0C0HDBOF9HDb0A4HDB0B0HDB099HDB092HDB082HDB0F8HDB080HDB090H

Pendefinisian data diatas adalah pendefinisian data untuk mengubah angka 0 sampai 9 menjadi data display 7 segmen sebelum dikirimkan ke sebuah port dengan Px.0 dihubungkan ke segmen a sampai Px.6 dihibungkan dengan segmen g. Angka 0 yang akan diubah disimpan diregister A. Contoh pemrogramannya

Segment_converter:Mov dptr, #0100hMovcA,@A+dptrRet

Org 0100hDB 0C0HDBOF9HDb0A4HDB0B0HDB099HDB092HDB082HDB0F8HDB080HDB090H

Program diatas adalah sebuah subrutin yang akan mengkonversi angka desimal menjadi data display 7 segmen ( dengan nama subrutin segment_converter). Misalnya jika register menympan angka 3, DPTR akan diisi oleh alamat awal pendefinisian data. Ketika perintah movc dieksekusi. DPTR akan menyimpan 0103H ( 0100+0003H) sehingga data yang terbaca adalah 0B0H. Jika PC yang digunakan program di atas akan menjadi Segment_converter:Inc AMovcA,@A+PCRet

Org 0100hDB 0C0HDBOF9HDb0A4HDB0B0HDB099HDB092HDB082HDB0F8HDB080HDB090H

Perbedaan yang terlihat adalah, PC tidak diisi dengan alamat awal pendefinisian data tetapi dengan mengambil nilai PC yang sekarang. Perintah movc dikodekan 1 byte dalam bahasa mesin (baik menggunakan DPTR atau PC). Perintah inc A diperlukan untuk menaikan isi register A ini karena ada instruksi ret sebelum pendifinisian data. Jika register A menyimpan angka 3 maka setelah dinaikan menjadi 4 oleh perintah inc. Perintah movc akan membaca data di alamat perintah movc ditambah 4 (dalam hal ini 0B0H). Pendefinisian data atau disebut tabel data dengan menggunakan PC harus tepat setelah instruksi ret, sedangkan jika menggunakan DPTR, tabel data bisa diletakkan dimana saja dalam area program memori.

Pengolahan data

Mikrokontroler 8051 memiliki sebuah unit aritmatika dan logika (ALU) yang berfungsi untuk melakukan pengolahan data ( data prosecing) melalui operasi operasi aritmatika dan logika. Oleh karena itu, 8051 dilengkapi dengan instruksi instruksi untuk melakukan pengolahan data yang dibagi menjadi 2 yaitu instruksi instruksi aritmatika dan intstruksi logika. Instruksi aritmatika digunakan untuk melakukan operasi operasi aritmatika seperti , penjumlahan, pengurangan, perkalian, dan pembagian, sedangkan instruksi instruksi logika digunakan untuk melakukan operasi operasi logika seperti perkalian digital (instruksi AND) atau penjumlahan digital ( OR). A. Operasi Logika Instruksi logika adalah instruksi yang akan melakukan operasi operasi logika seperti , logika AND, OR, ekslusif OR (XOR). Operasi komplemen akumulator, memutar bit akumulator, dan operasi swap juga termasuk kedalam operasi logika ini. Operasi logika bisa digunakan untuk data berbentuk byte atau bit.

a) Logika BOOLEAN

b) Operasi Rotate & SwapRL Rotate Left : Geser isi register ke kiri satu bit.RRRotate Right : Geser isi register ke kanan satu bit.RLC Rotate Left and Carry : Geser isi register dan carry flag ke kiri satu bit.RRC Rotate Right and Carry : Geser isi register dan carry flag ke kanan satu bit.SWAP Swap : Saling tukarkan nibble register, low nibble menjadi high nibble, dan sebaliknya.

B. Operasi aritmatika

C. Operasi pengaturan alur program Dalam sebuah aplikasi, mikrokntroler mungkin tidak akan mengerjakan perintah secara berurutan, tatapi akan berpindah dari subrutin yang satu ke subrutin yang lain nya tergantung pada data yang terbaca. Misalnya mikrokontroler yang dipakai sebagi pengendali pemanas ruangan akan mengerjakan hal yang berbeda, menghidupkan pemanas atau mematikan nya tergantung pada pengaturan suhunya. Mikrokontroler akan mnghidupkan pemanas jika suhu ruangan terukur kurang dari suhu yang diinginkan dan akan mematikan pemanas jika suhu telah sesuai dengan yang diinginkan. Hal ini mengharuskan mikrokontroler untuk mengambil keputusan untuk kemudian mengerjakan subrutin yang sesuai.

MODUL MIKROKONTROLER SMK GONDANGPage 20