11.11.2376
TI 11 B
Mikrokontroler AT89S51/52
Mikrokontroler adalah suatu semikonduktor yang mengandung banyak transistor
dalam ruang yang kecil. Mikrokontroler merupakan komponen yang dapat menyimpan
program kontrol yang digunakan untuk mengendalikan berbagai komponen sesuai dengan
tujuan pembuatannya.
Mikrokontroler AT89S51 buatan ATMEL yang merupakan pengembangan
mikrokontroler standard MCS-51 memiliki fitur:
PEROM (Programmable Erasable Read Only Memory) 4 kbyte untuk program
RAM internal 128 byte
In-System Programming
4 buah port I/O masing-masing 8 bit (P0 – P3)
2 buah Timer/counter 16 bit
5 buah sumber interupsi
Sebuah port serial full duplex
Tiga level penguncian program (menghindari pembajakan program)
Memiliki mode operasi daya rendah
Gambar 1.1. Pin Mikrokontroler AT89S51
Berikut adalah
penjelasan mengenai fungsi dari tiap-tiap pin (kaki) yang ada pada
mikrokontroller AT89S52.
a. Port 0
Merupakan dual-purpose port
(port yang memiliki dua kegunaan). Pada disain yang minimum (sederhana), port 0
digunakan sebagai port Input/Output (I/O).. Port 0 terdapat
pada pin 32-39.
b. Port 1
Merupakan port yang
hanya berfungsi sebagai port I/O (Input/Output). Port 1 terdapat pada
pin 1-8.
c. Port 2
Merupakan dual-purpose port.
Pada desain minimum digunakan sebagai port I/O (Input/Output). Sedangkan
pada desain lebih lanjut digunakan sebagai high byte dari address (alamat).
Port 2 terdapat pada pin 21-28.
d. Port 3
Merupakan dual-purpose
port. Selain sebagai port I/O (Input/Output), port 3 juga mempunyai
fungsi khusus. Fungsi khusus tersebut diperlihatkanPERCOBAAN
DISPLAY LED
TUJUAN:
1. Peserta memahami rangkaian mikrokontroller untuk menghidupkan dan mematikan LED.
2. Peserta dapat memahami program assembly untuk menghidupkan dan mematikan LED.
3. Peserta memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL. RR, RLC dan
RRC
4. Peserta memahami pembuatan instruksi waktu tunda
Percobaan 1.1. Instruksi RL/ RR ( Rotate Left dan Right )
Pada percobaan ini, sebuah LED akan berjalan dari kiri ke kanan dan sebaliknya, program
ini memanfaatkan instruksi RL dan RR.
Ketik program berikut ini:
ORG 0H
MAIN : MOV A,#11111110B
MOV R5,#7H
CF: MOV P1,A
CALL DELAY
RL A
DJNZ R5,CF
MOV A,#01111111B
MOV R5,#7H
CF2 : MOV P1,A
CALL DELAY
RR A
DJNZ R5,CF2
SJMP MAIN
DELAY : MOV R2,#0H
DELAY1 : MOV R3,#90H
DELAY2 : MOV R4,#1
DJNZ R4,$
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
END
Modul Mikrokontroler AT89S51/52
12
1. Simpanlah program yang anda ketik dan beri nama : Led01.H51
Pada Command Prompt lakukan kompilasi program dari *.H51 ke *.hex.
2. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (
Lihat Petunjuk Penggunaan)
3. Lakukan pengamatan pada LED
4. Lakukan perubahan pada program tersebut untuk menjalankan dua buah LED kekiri dan
kekanan, tiga buah LED kekiri dan kekanan , dan seterusnya.
Percobaan 1.2. Instruksi RLC/ RRC ( Rotate Left dan Right )
Pada percobaan ini, sebuah LED akan berjalan dari kiri ke kanan dan sebaliknya dengan
bentuk Bar, program ini memanfaatkan instruksi RLC dan RRC.
Ketik program berikut ini:
ORG 0H
MAIN : MOV A,#11111111B
MOV R5,#8H
CF : CLR C
RLC A
MOV P1,A
CALL DELAY
DJNZ R5,CF
MOV R5,#8H
CF2 : SETB C
RRC A
MOV P1,A
CALL DELAY
DJNZ R5,CF2
SJMP MAIN
DELAY : MOV R2,#0H
DELAY1 : MOV R3,#0H
DELAY2 : DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
END
1. Simpanlah program yang anda ketik dan beri nama : Led02.H51
Pada Command Prompt lakukan kompilasi program dari *.H51 ke *.hex.
2. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software (
Lihat Petunjuk Penggunaan)
3. Lakukan pengamatan pada LED
4. Lakukan perubahan pada program tersebut untuk menjalankan dua buah LED kekiri dan
kekanan, tiga buah LED kekiri dan kekanan , dan seterusnya.
Implementasi Program LED
Pada percobaan ini, Untuk menghubungkan pin CONTROL dari
DT51 ke pin CONTROL Trainer board kabel 1 dan 2 harus dibalik, hal
ini dikarenakan posisi VCC dan GND pada DT-51 terbalik, kabel ini disebut
sebagai kabel X.
Port 1 sebagai input
Langkah-langkahnya:
- Hubungkan Port 1 DT-51 dengan “PORT INPUT” Dt-51 trainer Board
- Hubungkan Port A DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
- Hubungkan “CONTROL” DT-51 dengan “CONTROL” DT-51 Trainer Board menggunakan kabel tipe X
- Buat program berikut:
$mod51
CSEG
ORG 4000H
LJMP START
ORG 4100H
START:
MOV SP, 30H
INIT: MOV DPTR,
#2003H
MOV A,#80H
MOVX @DPTR,
A
LABEL1: JB P1.4,
DISPLAY
DISPLAY2: MOV DPTR,#2000H
MOV A,
#00H
MOV @DPTR,
A
SJMP LABEL1
DISPLAY: MOV
DPTR, #2000H
MOV
A, #10H
MOVX
@DPTR, A
SJMP
LABEL1
END
Jika program dijalankan, jika toggle switch Bit 4
berlogika 0 maka semua LED akan padam (masuk ke label DISPLAY2), jika toggle
switch Bit 4 berlogika 1 maka hanya LED Bit 4 yang menyala(masuk ke label
DISPLAY). Sebagai catatan, penggunaan P1.4 tidak mutlak, nilai 00H dan 10H
dapat diganti dengan nilai lain untuk output ke LED.
Penggunaan Interupsi
Langkah-langkah :
·
Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
·
Hubungkan “CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
·
Hubungkan “IS1” dengan “INT0” pada DT-51 Trainer Board, karena kita ingin
menggunakan interrupt eksternal (pin INT0 dan INT1)
·
Buat program berikut :
$mod51
CSEG
ORG 4000H
LJMP START
ORG 4003H
RL
A
MOV P1,
A
MOV R7,
#04H
LOOPA: MOV R6,#0FFH
LOOPB: MOV R5,
#0FFH
DJNZ R5,
$
DJNZ R6,
LOOPB
DJNZ R7,
LOOPA
RETI
ORG
4200H
;inisialisasi
START: MOV
SP, #30H
MOV
TCON, #01H
MOV
A, #01H
MOV
P1, #01H
MOV
IE, #81H
SJMP
$
END
Program diatas akan menampilkan nyala LED dari Bit 0 dan bergeser ke kiri
setiap ada penekanan keypad “IS1”. Untuk mengunakan INT0 dengan falling
edge trigger maka INT0 (TCON.0) berlogika 1, sehingga TCON bernilai
00000001b(01H). Untuk mengaktifkan interrupt, maka EX0 (IE.0) dan EA(IE.7)
berlogika 1 sehingga IE bernilai 10000001b (81H), terlihat juga bahwa pada saat
interupsi program melompat ke alamat vector 0003H yang oleh DT-51 langsung
dipindah ke alamat 4003H. Fungsi DJNZ digunakan untuk mengurangi satu dan
lompat jika hasilnya bukan nol