modul mikrokontroler
DESCRIPTION
Materi PerkuliahanTRANSCRIPT
-
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