YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
  • PENGENALAN DASAR MIKROKONTROLER MCS-51 AT89S51/52

    DI SUSUN OLEH: RENI NURAENI,ST M.Pd

    Prepared by Reni N @2012 PPPPTK-BMTI 1

  • KEGIATAN BELAJAR 1

    MIKROKONTROLLER AT89S51/52 Mikrokontroller 8-bit dengan 4 K Byte, ISP ( In System Programming )

    A. PENDAHULUAN

    Mikrokontroler saat ini tidak asing lagi dalam dunia elektronika, hampir

    semua peralatan elektronik dewasa ini menggunakan perangkat ini,

    mikrokontroler merupakan pengendali utama dalam peralatan elektronik

    saat ini, maka mikrokontroler merupakan suatu hal yang penting untuk

    dipelajari bagi mereka yang berkecimpung dalam dunia elektronika.

    Mikrokontroler yang dibahas disini adalah mikrokontroler buatan ATMEL

    yang mudah ditemui di pasaran di Indonesia, yaitu dari keluarga MCS-51.

    AT89S51 dan AT89S52 mempunyai kemampuan serial downloading atau

    lebih dikenal dengan istilah In System Programming (ISP) sehingga

    mikrokontroler langsung dapat diprogram pada rangkaiannya tanpa harus

    mencabut IC untuk diprogram, Programmer ISP dapat dibuat

    menggunakan beberapa resistor via paralel port komputer sehingga bagi

    mereka yang belum memiliki programmer dapat tetap bereskperimen

    menggunakan mikrokontroler ini dengan biaya yang relatif murah.

    FITUR: 1. Kompatibel dengan produk MCS-51 2. 4K byte In System Programmable Flash Memory 3. Range catu daya 4,0V s/d 5,0V 4. Operasi statis: 0 Hz s/d 33 MHz 5. Tiga Tingkat Program memory lock 6. 128 x 8-bit RAM internal 7. 32 Programmable Jalur I/O 8. Dua 16-bit Timer/ Counter 9. Enam Sumber Interupsi 10. Full Duplex Serial Channel 11. Low Power Idle dan Mode Power Down 12. Watch Dog Timer 13. Dua Data Pointer 14. Power Off Flag

    Prepared by Reni N @2012 PPPPTK-BMTI 1

  • 15. Fast Programming Time 16. Flexyble ISP programming

    Pada gambar 1 ditunjukkan bentuk fisik dan konfigurasi pin dari sebuah mikrokontroler seri AT89Sxx.

    Gambar 1. 1 Bentuk fisik AT89Sxx (PDIP) dan konfigurasi Pin

    DISKRIPSI

    AT89S51 mempunyai konsumsi daya rendah, mikrokontroller 8-bit CMOS

    dengan 4K byte memori Flash ISP (In System Programmable/ dapat

    diprogram didalam sistem). Divais ini dibuat dengan teknologi memori

    non-volatile dengan kerapatan tinggi dan kompatibel dengan standar

    industri 8051 dari INTEL, set instruksi dan pin keluaran. Flash yang

    berada di dalam chip memungkinkan memori program untuk diprogram

    ulang pada saat chip di dalam sistem atau dengan menggunakan

    Programmer memori non-volatile konvensional. Dengan

    mengkombinasikan CPU 8-bit yang serbaguna dengan flash ISP pada

    chip, ATMEL 89S51 merupakan mikrokontroler yang luar biasa yang

    Prepared by Reni N @2012 PPPPTK-BMTI 2

  • memberikan fleksibilitas yang tinggi dan penggunaan biaya yang efektif

    untuk beberapa aplikasi kontrol.

    AT89S51 memberikan fitur-fitur standar sebagai berikut: 4K byte Flash,

    128 byte RAM, 32 jalur I/O, Watchdog Timer, dua data pointer, dua buah

    16-bit timer/ counter, lima vektor interupsi dua level, sebuah port serial full

    dupleks, oscillator internal, dan rangkaian clock. Selain itu AT89S51

    didisain dengan logika statis untuk operasi dengan frekuensi sampai 0 Hz

    dan didukung dengan mode penghematan daya. Pada mode idle akan

    menghentikan CPU sementara RAM, timer/ counter, serial port dan sistem

    interupsi tetap berfungsi. Mode Power Down akan tetap menyimpan isi

    dari RAM tetapi akan membekukan oscillator, menggagalkan semua

    fungsi chip sampai interupsi eksternal atau reset hardware dibangkitkan.

    DISKRIPSI PIN

    VCC Tegangan Supply

    GND Ground

    Port0 Port 0, merupakan port I/O 8-bit open drain dua arah. Sebagai sebuah

    port, setiap pin dapat mengendalikan 8 input TTL. Ketika logika 1

    dituliskan ke port 0, maka port dapat digunakan sebagai input dengan high

    impedansi. Port 0 dapat juga dikonfigurasikan untuk multipleksing dengan

    address/ data bus selama mengakses memori program atau data

    eksternal. Pada mode ini P0 harus mempunyai pull-up.

    Port1 Port 1 merupakan port I/0 8-bit dua arah dengan internal pull up. Buffer

    output port 1 dapat mengendalikan empat TTL input. Ketika logika 1

    dituliskan ke port 1, maka port ini akan mendapatkan internal pull up dan

    dapat digunakan sebagai input.

    Port 1 juga menerima alamat byte rendah selama pemrograman dan

    verifikasi Flash.

    Prepared by Reni N @2012 PPPPTK-BMTI 3

  • Port Pin Fungsi Alternatif

    P1.5 MOSI (digunakan untuk In System Programming) P1.6 MISO (digunakan untuk In System Programming) P1.7 SCK (digunakan untuk In System Programming)

    Port2 Port 2 merupakan port I/O 8-bit dua arah dengan internal pull- up. Buffer

    output port 2 dapat mengendalikan empat TTL input. Ketika logika 1

    dituliskan ke port 2, maka port ini akan mendapatkan internal pull up dan

    dapat digunakan sebagai input.

    Port3 Port 3 merupakan port I/O 8-bit dua arah dengan internal pull up. Buffer

    output port 3 dapat mengendalikan empat TTL input. Ketika logika 1

    dituliskan ke port 3, maka port ini akan mendapatkan internal pull up dan

    dapat digunakan sebagai input. Port 3 juga melayani berbagai macam fitur

    khusus, sebagaimana yang ditunjukkan pada tabel berikut:

    Port Pin Fungsi Alternatif P3.0 RXD ( port serial input ) P3.1 TXD ( port serial output ) P3.2 INT0 ( interupsi eksternal 0 ) P3.3 INT1 ( interupsi eksternal 1 ) P3.4 T0 ( input eksternal timer 0 ) P3.5 T1 ( input eksternal timer 1 ) P3.6 WR ( write strobe memori data eksternal) P3.7 WR ( read strobe memori program eksternal)

    RST Input Reset. Logika high 1 pada pin ini untuk dua siklus mesin

    sementara oscillator bekerja maka akan me-reset devais.

    ALE/PROG Address Latch Enable ( ALE ) merupakan suatu pulsa output untuk

    Prepared by Reni N @2012 PPPPTK-BMTI 4

  • mengunci byte low dari alamat selama mengakses memori eksternal. Pin

    ini juga merupakan input pulsa pemrograman selama pemrograman flash

    (paralel). Pada operasi normal, ALE mengeluarkan suatu laju konstan 1/6

    dari frekuensi osiilator dan dapat digunakan untuk pewaktu eksternal.

    PSEN Program Store Enable merupakan strobe read untuk memori program eksternal.

    EA/ VPP

    External Access Enable. EA harus di hubungkan ke GND untuk enable

    devais, untuk mengakses memori program eksternal mulai alamat 0000H

    s/d FFFFH. EA harus dihubungkan ke VCC untuk akses memori program

    internal. Pin ini juga menerima tegangan pemrogramman ( VPP) selama

    pemrograman Flash.

    XTAL1 Input untuk penguat oscilator inverting dan input untuk rangkaian internal clock

    XTAL2 Output dari penguat oscilator inverting.

    1.1. Organisasi Memori

    Semua divais 8051 mempunyai ruang alamat yang terpisah untuk memori

    program dan memori data, seperti yang ditunjukkan pada gambar 1.1. dan

    gambar 1.2. Pemisahan secara logika dari memori program dan data

    mengijinkan memori data untuk diakses dengan pengalamatan 8-bit, yang

    dengan cepat dapat disimpan dan dimanipulasi dengan CPU 8-bit. Selain

    itu, pengalamatan memori data 16-bit dapat juga dibangkitkan melalui

    register DPTR. Memori program ( ROM, EPROM dan FLASH ) hanya

    dapat dibaca, tidak ditulis. Memori program dapat dilakukan ekspansi

    hingga mencapai 64 K.Byte. Pada 89S51, 4K.Byte memori program

    terdapat di dalam chip. Untuk membaca memori program eksternal

    mikrokontroler mengirim sinyal PSEN ( Program Store Enable )

    Prepared by Reni N @2012 PPPPTK-BMTI 5

  • Gambar 1.2. Diagram blok mikrokontroler 89S51

    Memori data ( RAM ) menempati ruang alamat yang terpisah dari memori

    program. Pada keluarga 8051, 128 byte terendah dari memori data,

    berada di dalam chip. RAM eksternal (maksimal 64 K. Byte). Dalam

    pengaksesan RAM eksternal, mikrokontroler mingirimkan sinyal RD ( baca

    ) dan WR ( tulis ).

    Gambar 1.3. Arsitektur Memori Mikrokontroller 8051

    Prepared by Reni N @2012 PPPPTK-BMTI 6

  • 1.1.1.Program Memory

    Gambar 1.2. menunjukkan suatu peta bagian bawah dari memori program.

    Setelah reset CPU mulai melakukan eksekusi dari lokasi 0000H.

    Sebagaimana yang ditunjukkan pada gambar 1.3, setiap interupsi

    ditempatkan pada suatu lokasi tertentu pada memori program. Interupsi

    menyebabkan CPU untuk melompat ke lokasi dimana harus dilakukan

    suatu layanan tertentu. Interupsi Eksternal 0, sebagi contoh, menempatai

    lokasi 0003H. Jika Interupsi Eksternal 0 akan digunakan, maka layanan

    rutin harus dimulai pada lokasi 0003H. Jika interupsi ini tidak digunakan,

    lokasi layanan ini dapat digunakan untuk berbagai keperluan sebagai

    Memori Program.

    Gambar 1.4. Peta Interupsi mikrokontroller 8051

    1.1.2 Memory Data

    Pada gambar 1.2. menunjukkan ruang memori data internal dan eksternal

    pada keluarga 8051. CPU membangkitkan sinyal RD dan WR yang

    diperlukan selama akses RAM eksternal. Memori data internal terpetakan

    seperti pada gambar 1.2. Ruang memori dibagi menjadi tiga blok, yang

    diacukan sebagai 128 byte lower, 128 byte upper dan ruang SFR. Alamat

    memori data internal selalu mempunyai lebar data satu byte.

    Pengalamatan langsung di atas 7Fh akan mengakses satu alamat

    memori, dan pengalamatan tak langsung di atas 7Fh akan mengakses

    satu alamat yang berbeda. Demikian pada gambar 1.4 menunjukkan 128

    byte bagian atas dan ruang SFR menempati blok alamat yang sama, yaitu

    80h sampai dengan FFh, yang sebenarnya mereka terpisah secara fisik.

    Prepared by Reni N @2012 PPPPTK-BMTI 7

  • 128 byte RAM bagian bawah dikelompokkan lagi menjadi beberapa blok,

    seperti yang ditunjukkan pada gambar 1.5. 32 byte RAM paling bawah,

    dikelompokkan menjadi 4 bank yang masing-masing terdiri dari 8 register.

    Instruksi program untuk memanggil register-register ini dinamai sebagai

    R0 sampai dengan R7. Dua bit pada Program Status Word (PSW) dapat

    memilih register bank mana yang akan digunakan. Penggunaan register

    R0 sampai dengan R7 ini akan membuat pemrograman lebih efisien dan

    singkat, bila dibandingkan pengalamatan secara langsung.

    Gambar 1.5. Memori data internal

    Gambar 1.6. RAM internal 128 byte paling bawah

    Prepared by Reni N @2012 PPPPTK-BMTI 8

  • Ports 0, 1, 2 dan 3

    P0, P1, P2 dan P3 adalah SFR yang ditempati oleh Port 0, 1, 2 dan 3.

    Menulis suatu logika 1 terhadap sebuah bit dari sebuah port SFR ( P0, P1,

    P2 atau P3) menyebabkan pin output port yang bersesuaian akan berada

    dalam kondisi logika high 1. Demikian sebaliknya.

    Buffer Data Serial

    Buffer serial sesungguhnya merupakan dua buah register yang terpisah,

    buffer pemancar dan buffer penerima. Ketika data diisikan ke SBUF, maka

    akan menuju ke buffer pemancar dan ditahan untuk proses transmisi.

    Ketika data diambil dari SBUF, maka akan berasal dari buffer penerima.

    Register Timer

    Pasangan register ( TH0, TL0) dan (TH1, TL1) adalah register pencacah

    16-bit untuk Timer/ Counter 0 dan 1.

    Register Control Registers IP, IE, TMOD, TCON, SCON, dan PCON terdiri dari bit control

    dan status.

    Program Status Word

    PSW atau Program Status Word berisi bit-bit status yang berkaitan dengan kondisi atau keadaan CPU mikrokontroler pada saat tersebut.

    PSW berada dalam lokasi ruang SFR ( perhatikan pada gambar 1.7,

    dengan lokasi alamat D0h ). Pada PSW ini kita dapat memantau beberapa

    status yang meliputi: carry bit, auxiliary carry ( untuk operasi BCD ), dua bit pemilih bank register, flag overflow, sebuah bit paritas dan dua flag status yang bisa didefinisikan sendiri. Bit carry dapat juga anda gunakan

    pada keperluan operasi aritmatika, juga bisa digunakan sebagai universal

    akumulator untuk beberapa operasi Boolean.

    Prepared by Reni N @2012 PPPPTK-BMTI 9

  • Table 1.1 Program Status Word

    MSB LSB

    CY AC F0 RS1 RS0 OV - P

    BIT

    SYMBOL

    FUNCTION

    PSW.7 CY Carry flag.

    PSW.6 AC Auxilliary Carry flag. (For BCD operations.)

    PSW.5 F0 Flag 0. (Available to the user for general

    purposes.)

    PSW.4 RS1

    Register bank select control bit 1.

    Set/cleared by software to determine working

    register bank. (See Note.)

    PSW.3 RS0

    Register bank select control bit 0.

    Set/cleared by software todetermine working

    register bank. (See Note.)

    PSW.2 OV Overflow flag.

    PSW.1 - User-definable flag.

    PSW.0 P

    Parity flag.

    Set/cleared by hardware each instruction cycle to

    indicate an odd/even number of one bits in the

    Accumulator, i.e., even parity.

    Bit RS0 dan RS1 dapat digunakan untuk memilih satu dari empat bank

    register sebagaimana ditunjukkan pada tabel 1.2. Bit paritas dapat

    digunakan untuk mengetahui jumlah logika '1' pada akumulator: P=1 bila

    pada akumulator mempunyai logika '1' yang jumlahnya ganjil, dan P=0 jika

    akumulator mempunyai logika '1' yang jumlahnya genap. Dua bit yang lain

    PSW1 dan PSW5 dapat digunakan untuk berbagai macam tujuan.

    Prepared by Reni N @2012 PPPPTK-BMTI 10

  • Tabel 1. 2. Alamat Bank

    RS1 RS0 Bank Address RAM

    0 0 0 00 h - 07 h

    0 1 1 08 h - 0F h

    1 0 2 10 h - 17 h

    1 1 3 18 h - 1F h

    Semua data pada lokasi RAM 128 byte paling bawah dapat diakses baik

    dengan menggunakan pengalamatan langsung maupun tak langsung. 128

    byte paling atas hanya dapat diakses dengan cara tak langsung, gambar

    1.7.

    Gambar 1.7. RAM internal 128 byte paling atas

    1.2. Special Function Register Sebuah peta memori yang disebut sebagai ruang Special Function

    Register ( SFR ) ditunjukkan pada gambar berikut. Perhatikan bahwa

    tidak semua alamat-alamat tersebut ditempati, dan alamat-alamat yang

    tak ditempati tidak diperkenankan untuk diakses. Akses baca untuk alamat

    ini akan menghasilkan data random, dan akses tulis akan menghasilkan

    efek yang tak jelas.

    Prepared by Reni N @2012 PPPPTK-BMTI 11

  • Accumulator ACC adalah register akumulator. Mnemonik untuk instruksi spesifik

    akumulator ini secara sederhana dapat disingkat sebagai A.

    Register B Register B digunakan pada saat opersi perkalian dan pembagian. Selain

    untuk keperluan tersebut di atas, register ini dapat digunakan sebagai

    register bebas.

    Program Status Word

    Register PSW terdiri dari informasi status dari program yang secara detail

    ditunjukkan pada Tabel 1.2.1.

    Stack Pointer

    Register Pointer Stack mempunyai lebar data 8-bit. Register ini akan

    bertambah sebelum data disimpan selama eksekusi push dan call.

    Sementara stack dapat berada disembarang tempat RAM. Stack Pointer

    diawali di alamat 07h setelah reset. Hal ini menyebabkan stack untuk

    memulai pada lokasi 08h.

    Data Pointer

    Data Pointer (DPTR) terdiri dari byte atas (DPH) dan byte bawah (DPL).

    Fungsi ini ditujukan untuk menyimpan data 16-bit. Dapat dimanipulasi

    sebagai register 16-bit atau dua 8-bit register yang berdiri sendiri.

    Prepared by Reni N @2012 PPPPTK-BMTI 12

  • Gambar 1.8. Peta SFR

    1.3 Sistem Minimum

    sistem minimum dari mikrokontroller dapat dilihat pada gambar 4.1

    bagian sistem ini terdiri dari sebuah mikrokontroller AT89S51/52 ,

    osilator, rangkaian reset yang hanya terdiri dari resistor ,capasitor dan

    power supply.

    Gambar 1.8. Sistem Minimum

    Prepared by Reni N @2012 PPPPTK-BMTI 13

  • KEGIATAN BELAJAR 2

    SET INSTRUKSI MIKROKONTROLER ATMEL 89S51

    Mikrokontroller tidak bisa bekerja tanpa perangkat lunak dan perangkat

    lunak inilah yang menentukan bagaimana sistem kerja pengendalian yang

    akan dilakukan oleh mikrokontroller. Program ditulis dalam bahasa

    assembly .

    Mnemonics

    Mnemonics adalah kata singkat dari instruksi. Sebagai contoh

    mnemonics dari beberapa instruksi sebagai berikut :

    Tabel 6. Mnemonics mikrokontroler

    Instruksi mnemonics

    Move Mov

    Add Add

    Increment Inc

    Decrement Dec

    Add carry Addc

    Mnemonics dalam mikrokontroller dikelompokkan berdasarkan

    fungsinya menjadi 5 kelompok yaitu Arithmetic, Logic, Data moves, Call

    and jumps, Boolean.

    Alih Data (Moving Data)

    Data dialihkan di copy dari sumber data Source ke tujuan Destinasi

    Destinasi disebut lebih awal kemudian baru Source MOVE Destinasi, Source

    Prepared by Reni N @2012 PPPPTK-BMTI 14

  • PUSH Source atau POP Destinasi

    XCH Destinasi, Source

    Cara Pengalamatan alih data disebut dengan Addressing Modes Immediate addressing mode

    Register addressing mode

    Direct addressing mode

    Indirect Addressing mode

    Op code Perinatah MOVE mencakup memori : Internal RAM

    Internal SFR

    External RAM

    Internal dan eksternal ROM

    Tipe atau jenis Op code yang digunakan untuk alih data : MOV

    MOVX

    MOVC

    PUSH dan POP

    XCH

    1.Mnemonics kelompok Arithmetic

    Fungsi dari mnemonics kelompok ini adalah untuk memberikan

    instruksi aritmatika seperti penjumlahan, pengurangan, perkalian dsb.

    Daftar mnemonics kelompok ini beserta cara penulisan dan artinya

    secara lengkap sebagai berikut :

    Tabel 7. Mnemonics aritmatik

    Mnemonics Deskripsi

    ADD A,Rr A+Rr A

    ADD A,add A+(add) A

    ADD A,@Rp A+(Rp) A

    Prepared by Reni N @2012 PPPPTK-BMTI 15

  • ADD A,#n A+n A

    ADDC A,Rr A+Rr+C A

    ADDC A,add A+(add)+C A

    ADDC A,@Rp A+(Rp)+C A

    ADDC A,#n A+n+C A

    DEC A A-1 A

    DEC Rr Rr-1 Rr

    DEC add (add) 1 (Add)

    DEC @Rp (Rp)-1 (Rp)

    DIV AB A/B AB

    INC A A +1 A

    INC Rr Rr + 1 Rr

    INC add (add) + 1 (Add)

    INC @Rp (Rp) + 1 (Rp)

    MUL AB AxB AB

    SUBB A, Rr A Rr - C A

    SUBB A, add A - (add) - C A

    SUBB A, @Rp A - (Rp) - C A

    SUBB A, #n A n C A

    2. Mnemonics kelompok Logic Fungsi dari mnemonics kelompok ini adalah untuk memberikan instruksi

    logika seperti And, Or dsb. Daftar mnemonics kelompok ini beserta cara

    penulisan dan artinya secara lengkap sebagai berikut :

    Prepared by Reni N @2012 PPPPTK-BMTI 16

  • Tabel 8. Mnemonics logic

    Mnemonics Deskripsi

    ANL A, Rr A And Rr A

    ANL A, add A And (add) A

    ANL A, @Rp A And (Rp) A

    ANL A, #n A And n A

    ANL Add, A (Add) And A (Add)

    ANL add, #n (add) And n (Add)

    ORL A, Rr A Or Rr A

    ORL A, add A Or (add) A

    ORL A, @Rp A Or (Rp) A

    ORL A, #n A Or n A

    ORL Add, A (Add) Or A (Add)

    ORL add, #n (add) Or n (Add)

    XRL A, Rr A XOR Rr A

    XRL A, add A XOR (add) A

    XRL A, @Rp A XOR (Rp) A

    XRL A, #n A XOR n A

    XRL Add, A (Add) XOR A (Add)

    XRL add, #n (add) XOR n (Add)

    CLR A 00 A

    CPL A A A

    NOP PC + 1 PC

    Prepared by Reni N @2012 PPPPTK-BMTI 17

  • RL A A0 A7 A6 .. A1 A0

    RLC A C A7 A6 .. A0 C

    RR A A0 A7 A6 .. A1 A0

    RRC A C A7 A6 .. A0 C

    3. Mnemonics kelompok Data Moves Fungsi dari mnemonics kelompok ini adalah untuk memberikan instruksi

    cara pemindahan data. Daftar mnemonics kelompok ini beserta cara

    penulisan dan artinya secara lengkap sebagai berikut :

    Tabel 9. Mnemonics alih data

    Mnemonics Deskripsi

    MOV A, Rr Rr A

    MOV A, add (add) A

    MOV A, @Rp (Rp) A

    MOV A, #n n A

    MOV Rr, A A Rr

    MOV Rr, Add (Add) Rr

    MOV Rr, #n n Rr

    MOV Add, A (Add) A

    MOV Add, Rr Rp (Add)

    MOV Add1, Add2 (Add2) (Add1)

    MOV Add, @Rp (Rp) (Add)

    MOV Add, #n (Rp) (Add)

    MOV @Rp, A A (Rp)

    Prepared by Reni N @2012 PPPPTK-BMTI 18

  • MOV @Rp, Add (Add) (Rp)

    MOV @Rp, #n n (Rp)

    POP Add (sp) (Add)

    PUSH Add (Add) (sp)

    XCH A,Rr A Rr

    XCH A,Add A (Add)

    XCH A,@Rp A (Rp)

    4. Mnemonics kelompok Calls and Jumps Fungsi dari mnemonics kelompok ini adalah untuk memberikan instruksi

    cara pemanggilan subroutins dan lompat ke suatu label. Subroutin adalah

    bagian kecil dari program yang mempunyai fungsi khusus. Daftar

    mnemonics kelompok ini beserta cara penulisan dan artinya secara

    lengkap sebagai berikut :

    Tabel 10. Mnemonics calls dan jumps

    Mnemonics Deskripsi

    ACALL, sadd PC + 2 (SP); sadd PC

    CJNE A,add,radd [A(Add)]; PC + 3 + radd PC

    CJNE A, #n, radd [An]; PC + 3 + radd PC

    CJNE Rr, add, radd [Rr(Add)]; PC + 3 + radd PC

    CJNE @Rp, #n, radd [(Rp)n]; PC + 3 + radd PC

    DJNZ Rr, radd [Rr-100]; PC + 2 + radd PC

    DJNZ add, radd [(add) - 100]; PC + 3 + radd PC

    LCALL ladd PC +3 (SP); ladd PC

    Prepared by Reni N @2012 PPPPTK-BMTI 19

  • Prepared by Reni N @2012 PPPPTK-BMTI 20

    AJMP sadd sadd PC

    LJMP ladd ladd PC

    SJMP radd radd PC

    JMP @A + DPTR DPTR + A PC

    JC radd [C=1]; PC + 2 + radd PC

    JNC radd [C=0]; PC + 2 + radd PC

    JB b, radd [b=1]; PC + 3 + radd PC

    JNB b, radd [b=0]; PC + 3 + radd PC

    JZ radd [A=00]; PC + 2 = radd PC

    JNZ radd [A>00]; PC + 2 = radd PC

    Cara Pembuatan Program

    Tahap-tahap pembuatan program adalah sebagai berikut :

    - mengetik program dengan program editor apa saja misalnya

    SK, edit DOS dll. Program yang diketik disimpan dalam file

    berekstensi .ASM,dengan menggunakan software M-IDE for

    MCS-51.

    - mengkompilasi program yang berfungsinya untuk mengecek

    terhadap kesalahan penulisan instruksi. Jika sudah tidak

    kesalahan penulisan program maka kompilas menghasilkan file

    berekstensi *.PRN dan *.LSTserta *.OBJ.Perangkat lunak yang

    dipakai adalah cross assembler.

    - mengubah file Object(*.OBJ) menjadi file Hexa (*.Hex) dan

    mengubah file Hexa menjadi file biner (*.bin).

    - memasukkan program yang sudah berupa file biner ke dalam

    memori program sistem minimum, dan hasil program sudah

    bisa didapatkan.

  • KEGIATAN 3 PERCOBAAN 1

    MENGHUBUNGKAN PORT PARALLEL DENGAN DISPLAY LED

    TUJUAN 1. Peserta diklat memahami rangkaian mikrokontroller untuk menghidupkan dan mematikan LED 2. Peserta diklat dapat memahami program assembly untuk menghidupkan dan mematikan LED 3 Peserta diklat memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RR dan RL. 4. Peserta diklat memahami pembuatan instruksi waktu tunda. PENDAHULUAN LED (Light Emitting Diode ) adalah dioda yang dapat memancarkan sinar jika diberikan tegangan maju, LED ini banyak digunakan sebagai indicator/status /kondisi logika.Untuk menghubungkan LED dengan port pararlel pada mikrokontroler adalah sangat mudah. LED dapat dihubungkan langsung dengan port atau melalui resistor.

    AT89S51/52

    Gambar 1.1 Rangkaian Display LED

    Perhatikan pada gambar 1.1 tersebut. Delapan buah LED terhubung ke port 1, yang difungsikan sebagai output. Pada konfigurasi tersebut LED akan nyala bila diberi logika LOW 0 melalui port 0, dan LED akan padam bila diberi logika HIGH 1 melalui port 1.

    Prepared by Reni N @2012 PPPPTK-BMTI 21

  • Percobaan 1.1. Instruksi MOV LANGKAH KERJA Pada percobaan 1.1 ini LED akan dihidupkan atau dimatikan dengan mengirimkan data tertentu pada port 1. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper pada Unit LED Board, untuk mengaktifkan 8 buah LED 2. Hidupkan board MCS51 3. Hubungkan Jumper pada ISP unit MCS-51 Board dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini Org 0h Start: MOV P1,#11100B ; ISI P1 DENGAN 11100 SJMP start ; lompat ke start End 6. Simpanlah program yang anda ketik dan beri nama : latled1.asm 7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 8. Lakukan pemrograman mikrokontroller dengan menggunakan Program Progisp 168 Software ( Lihat cara mendownload program) Latihan 1.2 (Led bergantian/waktu tunda) Untuk melakukan percobaan ini lakukan beberapa langkah 1 sampai 8 seperti latihan 1.2

    Contoh program yang menghasilkan penyalaan LED 1 s/d 4 bergantian dengan penyalaan LED 5 s/d 8 secara terus menerus adalah sebagai berikut:

    ORG 00h Mulai: Mov P1, #11110000B ; LED 1 s/d 4 menyala Acall tunda ; memanggil sub routine tunda Mov P1, #00001111B ; LED 5 s/d 8 menyala Acall tunda

    Sjmp mulai ; lompat ke label mulai Tunda: Mov R0,#0FFh ; isi register R0 dengan FFh Tunda1: Mov R1, #0FFh ; isi register R1 dengan FFh Tunda2: Djnz R1, tunda2 ; kurangi R1 dengan 1dan

    Prepared by Reni N @2012 PPPPTK-BMTI 22

  • ;lompat ke tunda2 jika belum 0 Djnz R0,tunda1 ; kurangi R0 dengan 1 dan

    ;lompat ke tunda2 jika belum 0 Ret ; kembali ke program utama End

    Latihan 1.3 (Led bergeser dengan adanya delay/waktu tunda) Untuk melakukan percobaan ini lakukan beberapa langkah 1 sampai 8 seperti latihan 1.3 org 000h main: mov p1,#11111110b ; port 1.0 sebagai output dan diisi 0 lcall delay500ms mov p1,#11111101b ; port 1.1 sebagai output dan diisi 0 lcall delay500ms mov p1,#11111011b ; port 1.2 sebagai output dan diisi 0 lcall delay500ms mov p1,#11110111b ; port 1.3 sebagai output dan diisi 0 lcall delay500ms mov p1,#11101111b ; port 1.4 sebagai output dan diisi 0 lcall delay500ms sjmp main ; kembali ke main ;--------------- ; delay 500 ms ;--------------- delay500ms: push acc push 00h mov a,#032h ; 500 milli second x10ms: call delay10ms djnz acc,x10ms pop 00h pop acc ret ;------------- ; delay 10 ms ;------------- delay10ms: push acc push 00h

    Prepared by Reni N @2012 PPPPTK-BMTI 23

  • mov 00h,#050h d10ms1: mov a,#0c8h djnz acc,$ djnz r0,d10ms1 pop 00h pop acc ret END EVALUASI: 1.Buatlah program dengan kondisi Output LED berada pada kondisi:

    2. Buatlah program dengan kondisi Output LED berada pada kondisi:

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Padam Padam Padam Padam Nyala Nyala Nyala Nyala 3.Buatlah program dengan kondisi Output LED berada pada kondisi: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Padam Nyala Padam Padam Padam Nyala Nyala 4. Buatlah program led yang dapat bergeser ke kanan atau ke kiri 5. Buatlah program running led

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Nyala Nyala Nyala Padam Nyala Padam Nyala

    Prepared by Reni N @2012 PPPPTK-BMTI 24

  • PERCOBAAN 2

    MENGHUBUNGKAN PORT PARALLEL DENGAN SAKLAR PUSH BUTTON

    TUJUAN: 1 Peserta diklat memahami rangkaian mikrokontroller dengan interface ke saklar 2.Peserta diklat dapat memahami program assembly untuk mengambil data saklar Dan mengeluarkan data LED 3. Peserta diklat memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RR dan RL. PENDAHULUAN: Menghubungkan port parallel dengan switch (saklar) Karena port parallel dapat bersifat bi-directional, karena itu dapat digunakan sebagai port masukan atau sebagai port keluaran. Secara Hardware menghubungkan port parallel masukan dengan port parallel keluaran adalah sama, yang membedakannya pada program (software).

    Gambar 2. Rangkaian Interface Push Button

    Pada gambar 2. tersebut tampak rangkaian push button, bila saklar ditekan maka port sesuai dengan bit tersebut akan mendapat logika low

    1 P2.0

    2 P2.1

    3 P2.2

    4 P2.3

    5 P2.4

    1K

    PB1

    PB2

    PB3

    PB4

    GND

    6 P2.5

    7 P2.6

    8 P2.7

    Prepared by Reni N @2012 PPPPTK-BMTI 25

  • 0 dan sebaliknya bila saklar tidak ditekan maka port tersebut akan mendapat logika high 1. Percobaan 2.1. Ambil Data Saklar LANGKAH KERJA: Pada percobaan ini, LED akan nyala bila saklar ditekan sesuai dengan bit tersebut. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hidupkan board MCS51 2. Hubungkan Jumper P2 dengan Switch 3. Hubungkan Jumper pada ISP unit MCS-51 Board dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini Org 0h Start: Mov A, P2 ;Ambil data dari P2 dan Simpan ke A Mov P1, A ;Kirim data A ke P1 sjmp start end 6. Simpanlah program yang anda ketik dan beri nama : latswitch1.asm 7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (Lihat cara mendownload program) 9. Lakukan pengamatan pada LED.

    Saklar Kondisi LED yang Nyala (D1-D2-D3-D4-D5-D6-D7-D8) PB1 PB2 PB3 PB4

    Latihan 2.2 Untuk melakukan percobaan ini lakukan beberapa langkah 1 sampai 9 seperti latihan 2.1

    Prepared by Reni N @2012 PPPPTK-BMTI 26

  • Contoh program untuk mengetahui posisi saklar secara terus menerus dan keadaan saklar ditandai dengan led yang menyala di mulai PB1 samapai dengan PB4. ORG 00h Mulai: Mov A, P2 ; baca P2 dan masukkan

    ; isinya ke register A cjne A, #01, terus1 ; bandingkan A dengan 01 mov P1, #01h ; menyalakan led 1

    terus1: cjneA,#02,terus2 ; bandingkan A dengan 02 mov P2, #02h ; menyalakan led2 terus2: . ; bandingkan A dengan 04 dst

    sjmp mulai End

    EVALUASI: 1. Buatlah program untuk menampilkan LED di Port 1 dengan PB

    diPort 2 dengan syarat: - Jika PB Bit 0 berlogika 0, semua LED padam - Jika PB Bit 1 berlogika 1, semua LED menyala

    2. Buat program kombinasi penggunaan port input dan output dengan

    deskripsi sbb: terdapat dua buah saklar S1 dan S2 yang masing-masing dipasang

    pada P3.0 dan P3.1

    - terdapat satu buah mesin disimulasikan dengan led yang terpasang pada P1.0

    - jika S1 ditekan (ON) maka mesin hidup, sedangkan jika S2 ditekan (ON) mesin mati

    Prepared by Reni N @2012 PPPPTK-BMTI 27

  • PERCOBAAN 3

    MENGHUBUNGKAN PORT PARALLEL DENGAN DISPLAY 7 SEGMEN

    TUJUAN: 1. Peserta diklat memahami rangkaian interface mikrokontroller dengan 7 segmen 2. Peserta diklat dapat memahami program assembly untuk menampilkan data ke 7 segment 3. Peserta diklat memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan waktu tunda. PENDAHULUAN: Rangkaian Seven Segment adalah rangkaian yang menampilkan tampilan numeric ataupun alphabet.LED berfungsi mengubah arus listrik menjadi cahaya, sehingga untuk menyinari ssalah satu segmen dari tampilan, arus harus diarahkan ke diode dari segment yang dimaksud. Untuk aplikasi seven segment ini digunakan konfigurasi seven segment Common Anode. Setiap tampilan Seven Segment membentuk satu digit dari tampilan banyak dogit yang lengkap. Dengan demikian, setiap digit mempunyai delapan terminal, satu untuk setiap segmen dan satu untuk sambungan bersama. Dalam beberapa aplikasi, sering ditambahkan titik desimal, sehingga terdapat sembilan terminal.

    Tabel 4.1. Data Display 7 Segmen P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 Display

    g f e d c b a 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 2 0 1 1 0 0 0 0 3 : : : : : : : : 0 0 0 1 0 0 0 A 0 0 0 0 0 1 1 b

    Pada tabel tersebut tampak bahwa untuk menghidupkan sebuah segmen, harus dikirimkan data logika low 0 dan sebaliknya untuk mematikan segmen, harus dikirimkan data logika high 1.

    Prepared by Reni N @2012 PPPPTK-BMTI 28

  • Gambar 3.1 Tampilan Seven Segmen

    Pada trainer mikrokontroler MCS 51 ini,seven segmen dudah dihubungkan dengan IC decoder CD 4511,sehingga inputan ke seven segmen hanya 4 bit,yaitu A,B, C dan D. Untuk lebih jelas dapat dilihat pada gambar di bawah ini:

    Gambar 3.2 Skematik Decoder CD4511 dengan Seven Segmen

    Dari gambar diatas SW0,SW1,SW2 dan SW3 adalah output dari Decoder yang diberi inisialisai A,B,C dan D yang dihubungkan dengan port mikrokontroler.

    a

    b

    Prepared by Reni N @2012 PPPPTK-BMTI 29

  • Percobaan 3.1. Menampilkan angka pada 7 Segmen LANGKAH KERJA: Pada percobaan ini, akan menampilkan angka dari mulai angka 0 sampai dengan 9 pada Seven Segmen Display Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan Unit MCS-51 Board dengan power supply 2. Hubungkan Unit Seven segment Board dengan MCS 51 di Port 0 3. Hubungkan Jumper pada ISP unit MCS-51 Board dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini: ;------------------------------------------ ; Program 7 Segmen menggunakan IC BCD 4511 ;------------------------------------------ Org 000h Main:

    MOV P0,#00000000B ; Port 0 sebagai Output yang dipakai

    Untuk koneksi A,B,C dan D LCALL DELAY500MS MOV P0,#00000001B LCALL DELAY500MS MOV P0,#00000010B LCALL DELAY500MS MOV P0,#00000011B LCALL DELAY500MS MOV P0,#00000100B LCALL DELAY500MS MOV P0,#00000101B LCALL DELAY500MS MOV P0,#00000110B LCALL DELAY500MS MOV P0,#00000111B LCALL DELAY500MS MOV P0,#00001000B LCALL DELAY500MS MOV P0,#00001001B LCALL DELAY500MS SJMP Main ; Kembali ke Main ;--------------- ; delay 500 ms

    Prepared by Reni N @2012 PPPPTK-BMTI 30

  • Prepared by Reni N @2012 PPPPTK-BMTI 31

    ;--------------- DELAY500MS: PUSH ACC PUSH 00H MOV A,#010H ; 500 milli second X10MS: CALL DELAY10MS DJNZ ACC,X10MS POP 00H POP ACC RET ;------------- ; DELAY 10 ms ;------------- DELAY10MS: PUSH ACC PUSH 00H MOV 00H,#050H D10MS1: MOV A,#0C8H DJNZ ACC,$ DJNZ R0,D10MS1 POP 00H POP ACC RET END EVALUASI:

    1. Buatlah program dengan menggunakan Switch di port0 dan seven segment di port 2 - Pada saat pertama kali program dijalankan, maka seven segment

    akan manampilkan angka 0.

    - Jika switch pertama ditekan, maka seven segment akan menampilkan angka 1

    - Jika switch kedua ditekan, maka seven segment akan menampilkan angka 2

    - Jika switch ketiga ditekan, maka seven segment akan menampilkan angka 3

    - Jika switch keempat ditekan, maka seven segment akan menampilkan angka 4.

  • DAFTAR PUSTAKA Ayala, KJ, The 8051 Microcontroller Architectur, Programming, and

    Aplications, WPC, --- David Lalond, The 8080, 8085, and Z80 Hardware, Software

    Programming, Interfacing, and Troubleshooting, PHI, 1988 Douglas VH., Microprocessor and Interfacing Programming and Hardware,

    MCGraw-Hill, 1992 Putra Eko Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan

    Aplikasi,Gava Media,2004 Modul pembelajaran SMK Kendali Berbasis Mikroprosesor, Direktorat

    Pendidikan Menengah Kejuruan Direktorat Jenderal Pendidikan Dasar Dan Menengah Departemen Pendidikan Nasional,EDISI 2001

    Prepared by Reni N @2012 PPPPTK-BMTI 32

    KEGIATAN BELAJAR 1SET INSTRUKSI MIKROKONTROLERATMEL 89S51Mnemonics

    Tabel 6. Mnemonics mikrokontroler

    DAFTAR PUSTAKA


Related Documents