PENGENALAN DASAR MIKROKONTROLER MCS-51 AT89S51/52
DI SUSUN OLEH: RENI NURAENI,ST M.Pd
Prepared by Reni N @2012
1
PPPPTK-BMTI
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
1
PPPPTK-BMTI
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
2
PPPPTK-BMTI
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
3
PPPPTK-BMTI
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
4
PPPPTK-BMTI
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
5
PPPPTK-BMTI
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
6
PPPPTK-BMTI
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
7
PPPPTK-BMTI
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
8
PPPPTK-BMTI
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
9
PPPPTK-BMTI
Table 1.1 Program Status Word MSB CY
LSB AC
F0
RS1
RS0
OV
-
BIT
SYMBOL
PSW.7
CY
Carry flag.
PSW.6
AC
Auxilliary Carry flag. (For BCD operations.)
PSW.5
F0
P
FUNCTION
Flag 0. (Available to the user for general purposes.) Register bank select control bit 1.
PSW.4
RS1
Set/cleared by software to determine working register bank. (See Note.) Register bank select control bit 0.
PSW.3
RS0
Set/cleared by software todetermine working register bank. (See Note.)
PSW.2
OV
PSW.1
-
Overflow flag. User-definable flag. Parity flag.
PSW.0
P
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
10
PPPPTK-BMTI
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
11
PPPPTK-BMTI
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
12
PPPPTK-BMTI
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
13
PPPPTK-BMTI
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
14
PPPPTK-BMTI
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
15
PPPPTK-BMTI
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
16
PPPPTK-BMTI
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
17
PPPPTK-BMTI
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
18
PPPPTK-BMTI
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
Prepared by Reni N @2012
19
PPPPTK-BMTI
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.
Prepared by Reni N @2012
20
PPPPTK-BMTI
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
21
PPPPTK-BMTI
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
Start:
Org 0h MOV P1,#11100B SJMP start End
; ISI P1 DENGAN 11100 ; lompat ke start
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:
Mulai:
Tunda: Tunda1: Tunda2:
ORG 00h Mov P1, #11110000B Acall tunda Mov P1, #00001111B Acall tunda Sjmp mulai Mov R0,#0FFh Mov R1, #0FFh Djnz R1, tunda2
Prepared by Reni N @2012
; LED 1 s/d 4 menyala ; memanggil sub routine tunda ; LED 5 s/d 8 menyala ; lompat ke label mulai ; isi register R0 dengan FFh ; isi register R1 dengan FFh ; kurangi R1 dengan 1dan
22
PPPPTK-BMTI
;lompat ke tunda2 jika belum 0 Djnz R0,tunda1
; kurangi R0 dengan 1 dan ;lompat ke tunda2 jika belum 0 ; kembali ke program utama
Ret 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 lcall mov lcall mov lcall mov lcall mov lcall
p1,#11111110b delay500ms p1,#11111101b delay500ms p1,#11111011b delay500ms p1,#11110111b delay500ms p1,#11101111b delay500ms
sjmp main
; port 1.0 sebagai output dan diisi 0 ; port 1.1 sebagai output dan diisi 0 ; port 1.2 sebagai output dan diisi 0 ; port 1.3 sebagai output dan diisi 0 ; port 1.4 sebagai output dan diisi 0
; 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
23
PPPPTK-BMTI
mov 00h,#050h d10ms1: mov a,#0c8h djnz acc,$ djnz r0,d10ms1 pop pop ret
00h acc
END EVALUASI: 1.Buatlah program dengan kondisi Output LED berada pada kondisi: Bit 7 Nyala
Bit 6 Nyala
Bit 5 Nyala
Bit 4 Nyala
Bit 3 Padam
Bit 2 Nyala
Bit 1 Padam
Bit 0 Nyala
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
Prepared by Reni N @2012
24
PPPPTK-BMTI
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). 1K PB1
1 P2.0
PB2
2 P2.1
PB3
3 P2.2
PB4
4 P2.3 GND
5 P2.4 6 P2.5 7 P2.6 8 P2.7
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
Prepared by Reni N @2012
25
PPPPTK-BMTI
‘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
26
PPPPTK-BMTI
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 Mov A, P2
Mulai:
; baca P2 dan masukkan ; isinya ke register A ; bandingkan A dengan 01 ; menyalakan led 1 ; bandingkan A dengan 02 ; menyalakan led2 ; bandingkan A dengan 04
cjne A, #01, terus1 mov P1, #01h cjneA,#02,terus2 mov P2, #02h ……………. dst sjmp mulai End
terus1: terus2:
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
27
PPPPTK-BMTI
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.4 P0.3 P0.2 P0.1 P0.0
P0.6
P0.5
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
28
PPPPTK-BMTI
a b
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.
Prepared by Reni N @2012
29
PPPPTK-BMTI
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
30
PPPPTK-BMTI
;--------------DELAY500MS: PUSH ACC PUSH 00H MOV A,#010H
; 500 milli second
X10MS: CALL DELAY10MS DJNZ ACC,X10MS POP POP RET
00H ACC
;------------; DELAY 10 ms ;------------DELAY10MS: PUSH ACC PUSH 00H MOV 00H,#050H D10MS1: MOV A,#0C8H DJNZ ACC,$ DJNZ R0,D10MS1 POP POP RET
00H ACC
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.
Prepared by Reni N @2012
31
PPPPTK-BMTI
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
32
PPPPTK-BMTI