NIM : 1908521035
1
Gambar 2.1 Diagram pin mikrokontroler AT89S52
Fungsi Pin-Pin pada mikrokontroler AT89S52 yaitu:
1. Pin 1 sampai pin 8
Pin 1 – 8 adalah port 1 yang merupakan saluran atau bus I/O 8 bit dua arah
dengan internal pull-up yang dapat digunakan untuk berbagai keperluan seperti
mengendalikan empat input TTL. Port ini juga digunakan sebagai saluran alamat
saat pemrograman dan verifikasi.
2. Pin 9
Merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan
me- reset mikrokontroler ini.
3. Pin 10 sampai pin 17
Pin 10 – pin 17 merupakan saluran atau bus I/O 8 bit dua arah dengan internal
pull- ups yang memiliki fungsi pengganti. Bila fungsi pengganti tidak dipakai
maka dapat digunakan sebagai port paralel 8 bit serbaguna. Selain itu, sebagian
port 3 dapat berfungsi sebagai sinyal kontrol saat proses pemrograman dan
verifikasi.
4. Pin 18 dan pin 19
Pin-pin ini merupakan jalur masukan ke penguat osilator berpenguat tinggi.
Mikrokontroler ini memiliki seluruh rangkaian osilator yang diperlukan pada
chip, kecuali rangkaian kristal yang mengendalikan frekuensi osilator. Oleh
karena itu, pin 18 dan 19 ini sangat diperlukan untuk dihubungkan dengan
kristal. Selain itu XTAL 1 juga dapat digunakan sebagai input untuk inverting
2
osilator amplifier dan input rangkaian internal clock, sedangkan XTAL 2
merupakan output dari inverting oscillator amplifier.
5. Pin 20
Pin 20 merupakan ground sumber tegangan dan diberi simbol “gnd”.
6. Pin 21 sampai pin 28
Pin-pin ini adalah port 2 yang merupakan saluran atau bus I/O 8 bit dua arah
dengan internal pull-ups. Saat pengambilan data dari program memori eksternal
atau selama pengaksesan data memori eksternal yang menggunakan alamat 16 bit
(MOVX@DPTR), port 2 berfungsi sebagai saluran /bus alamat tinggi (A8-A15).
Akan tetapi, saat mengakses data memori eksternal yang menggunakan alamat 8
bit (MOVX@DPTR), port 2 mengeluarkan isi P2 pada special function register.
7. Pin 29
Pin 29 merupakan program Store Enable (PSEN) merupakan sinyal pengontrol
untuk mengakses program memori eksternal agar masuk ke dalam bus selama
proses pemberian/pengambilan instruksi (fetching).
8. Pin 30
Pin 30 sebagai Adress Lacth Enable (ALE)/PROG merupakan penahan alamat
memori eksternal (pada port 1) selama mengakses ke memori. Pin ini juga
berfungsi sebagai pulsa/sinyal input pemograman (PROG) selama proses
pemograman.
9. Pin 31
Pin 31 adalah External Access Enable (EA) merupakan sinyal kontrol untuk
pembacaan memori program. Apabila diset rendah (L) maka mikrokontroler
akan melaksanakan seluruh instruksi dari memori program eksternal, sedangkan
jika diset tinggi (H) maka mikrokontroler akan melaksanakan seluruh instruksi
dari memori program internal ketika isi program counter kurang dari 4096. Port
ini juga berfungsi sebagai tegangan pemograman (Vpp=+12V) selama proses
pemograman.
10. Pin 32 sampai pin 39
Pin 32-pin 39 adalah port 0 yang merupakan saluran bus I/O 8 bit open
collector, dapat juga digunakan sebagai multipleks bus alamat rendah dan bus
data selama adanya akses ke memori program eksternal. Saat proses
3
pemograman dan verifikasi, port 0 digunakan sebagai saluran/bus data. Pull-up
eksternal diperlukan selama proses verifikasi.
11. Pin 40
Pin 40 merupakan sumber tegangan positif yang diberi simbol Vcc.
2.2 Bahasa Assembly Read51
Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah
bahasa assembly (dalam hal ini Read51). Angka 51 merupakan jumlah instruksi pada
bahasa ini hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya
10 instruksi. Instruksi –instruksi tersebut antara lain:
1. Instruksi MOV
Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register
tertentu. Pengisian nilai dapat secara langsung atau tidak langsung.
Contoh pengisian nilai secara langsung:
MOV R0,#20h
Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda
# sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai.
Contoh pengisian nilai secara tidak langsung:
MOV 20h,#80h
...........
............
MOV R0,20h
Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal
ke register 0 (R0).
Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah
alamat.
2. Instruksi DJNZ
Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk
mengurangi nilai register tertentu dengan 1 dan lompat jika hasil
pengurangannya belum nol. Contoh:
MOV R0,#80h
Loop:
...........
4
............
DJNZ R0,Loop
............
R0 -1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan
ke perintah pada baris berikutnya.
3. Instruksi ACALL
Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh :
.............
ACALL DELAY
.............
DELAY:
................
4. Instruksi RET
Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin
pemanggil setelah instruksi ACALL dilaksanakan. Contoh,
ACALL DELAY
.............
DELAY:
................. RET
5. Instruksi JMP (Jump)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh,
Loop:
.................
..............
JMP Loop
6. Instruksi JB (Jump if bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang
dimaksud berlogika high (1). Contoh,
Loop:
JB P1.0,Loop
.................
5
7. Instruksi JNB (Jump if Not bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang
dimaksud berlogika Low (0). Contoh,
Loop:
JNB P1.0,Loop
.................
8. Instruksi CJNZ (Compare Jump If Not Equal)
Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan
suatu nilai tertentu. Contoh,
Loop:
................
CJNE R0,#20h,Loop
................
Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop.
Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi
selanjutnya.
9. Instruksi DEC (Decreament)
Instruksi ini merupakan perintah untuk mengurangi nilai register yang
dimaksud dengan 1. Contoh,
MOV R0,#20h ;R0 = 20h
................
DEC R0 ;R0 = R0 – 1
.............
10. Instruksi INC (Increament)
Instruksi ini merupakan perintah untuk menambahkan nilai register yang
dimaksud dengan 1. Contoh,
MOV R0,#20h ;R0 = 20h
................
INC R0 ;R0 = R0 + 1
.............
6
III. LIST APLIKASI DAN KOMPONEN
3.1 Aplikasi
1. Proteus Pro 8
2. Read51
3.2 Komponen
1. Mikrokontroller AT89S52
2. Resistor 360 ohm 8 buah
3. Resistor 10 Kohm 1 buah
4. LED 8 buah
5. Push button
6. Catu daya 5 volt
7. Kristal 11.592 MHz 1 buah
8. Kapasitor 33 pF 2 buah
9. Kapasitor 10 uF 1 buah
7
Gambar 4.1 Rangkaian Percobaan Masukan/Keluaran Penggerak LED
4. Setelah rangkaian selesai, masukan program ke AT89S52 dengan cara klik
kanan > Edit Properties > masukan file program yang telah dibuat.
5. Run simulasi yang dibuat.
V. GAMBAR RANGKAIAN
Adapun rangkaian yang telah dibuat pada percobaan praktikum ini adalah seperti
pada Gambar 5.1
8
VI. PROGRAM
Adapun program yang telah dibuat pada percobaan ini sebagai berikut:
Hasil dari percobaan yang telah dilakukan dapat dilihat pada video di link berikut:
https://youtu.be/7sEoV7L0cE4
VIII. Kesimpulan
Adapun kesimpulan yang dapat diambil berdasarkan praktikum yang telah
dilakukan adalah:
1. Penggerak pada mikrokontoler menggunakan bahasa pemograman assembly
dengan berpatokan pada kaidah digital dasar sehingga pengoperasian sistem
menjadi sangat mudah dikerjakan sesuai dengan logika sistem. Bahasa assembly
ini tidak menggunakan begitu banyak syarat penulisan bahasa pemrograman,
seperti huruf besar dan huruf kecil untuk bahasa assembly tetap diwajarkan.
2. Mikrokontroler tersusun dalam satu chip dimana prosesor, memori, dan I/O
terintegrasi menjadi satu kesatuan kontrol sistem sehingga mikrokontroler dapat
9
dikatakan sebagai komputer mini yang dapat bekerja secara inovatif sesuai dengan
kebutuhan sistem.
3. Simulasi rangkaian dengan proteus pada praktikum ini akan sangat membantu
dalam perancangan alat nyatanya..
10
Daftar Pustaka
11