PENGENALAN DASAR MIKROKONTROLER
MCS-51 AT89S51/52
DI SUSUN OLEH: RENI NURAENI,ST M.Pd
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
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
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
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.
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 )
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 ).
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.
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
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.
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.
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.
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.
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.
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
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,#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 :
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
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)
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 [A<>n]; 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-1<>00]; PC + 2 + radd Æ PC DJNZ add, radd [(add) - 1<>00]; PC + 3 + radd Æ PC LCALL ladd PC +3 Æ (SP); ladd Æ PC
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.
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
;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
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
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
‘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
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
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”.
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
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 ;---
;--- 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