Pengaktifan Variasi LED dengan Mikrocontroller AT89S51
9/15/2015
PENGAKTIFAN LED DENGAN BERBAGAI VARIASI
Perhatikan gambar 1 diatas, delapan buah LED sebagai
keluaran terhubung ke port 2. LED
akan menyala jika pada port keluaran diberi logika HIGH ‘1’ dan padam jika diberi
logika LOW ‘0’. Untuk mengaktifkan
konfigurasi seperti gambar 1.1, pin LED pada
posisi 0.
1. Percobaan 1 Untuk Variasi Tampilan Led Kanan ke Kiri
Tabel Data Percobaan :
L7
|
L6
|
L5
|
L4
|
L3
|
L2
|
L1
|
L0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Programnya :
ORG 0H
JMP START
START:
MOV A,#1
MOV R0,#8
KANAN:
MOV P2,A
ACALL
DELAY
RR A
DEC R0
CJNE R0,#0,KANAN
SJMP
START
DELAY:
MOV
R7,#00H
ULANG2: MOV R6,#00H
ULANG1: MOV R5,#00H
ULANG : INC R5
CJNE R5,#50H, ULANG
INC R6
CJNE R6,#50H, ULANG1
INC R7
CJNE R7,#50H, ULANG2
RET
2. Percobaan II untuk Variasi tampilan LED Kiri ke Kanan
Tabel Data Percobaan :
L7
|
L6
|
L5
|
L4
|
L3
|
L2
|
L1
|
L0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Programnya :
ORG 0H
JMP START
START :
MOV A,#1
MOV R0,#8
KIRI:
MOV P2,A
ACALL
DELAY
RL A
DEC R0
CJNE R0,#0,KIRI
SJMP
START
DELAY :
MOV
R7,#00H
ULANG2 : MOV R6,#00H
ULANG1 : MOV R5,#00H
ULANG : INC R5
CJNE R5,#50H, ULANG
INC R6
CJNE R6,#50H, ULANG1
INC R7
CJNE R7,#50H, ULANG2
RET
3. Percobaan
III Variasi tampilan LED dengan Tampilan Data dibawah
Tabel Data Percobaan :
L7
|
L6
|
L5
|
L4
|
L3
|
L2
|
L1
|
L0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
Programnya :
ORG 0H
JMP START
START :
MOV A,#1
MOV R0,#8
KANAN :
MOV P2,A
ACALL
DELAY
RR A
ORL
A,#80H
DEC R0
CJNE R0,#0,KANAN
DELAY:
MOV
R7,#00H
ULANG2 : MOV R6,#00H
ULANG1 : MOV R5,#00H
ULANG : INC R5
CJNE R5,#50H, ULANG
INC R6
CJNE R6,#50H, ULANG1
INC R7
CJNE R7,#50H, ULANG2
RET
4. Percobaan IV Variasi Tampilan LED Seperti Tabel Dibawah
Tabel data Percobaan :
L7
|
L6
|
L5
|
L4
|
L3
|
L2
|
L1
|
L0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
Programnya :
ORG 0H
JMP START
START:
MOV A,#F
MOV R0,#8
KANAN:
MOV P2,A
ACALL
DELAY
RR A
DEC R0
CJNE R0,#0,KANAN
DELAY:
MOV
R7,#00H
ULANG2: MOV R6,#00H
ULANG1: MOV R5,#00H
ULANG: INC R5
CJNE R5,#50H, ULANG
INC R6
CJNE R6,#50H, ULANG1
INC R7
CJNE R7,#50H, ULANG2
RET
Berdasarkan
percobaan yang telah dilakukan dapat dianalisa bahwa :
a.
Percobaan
I
Pada
percobaan I ini LED ditampilkan running dari kiri ke kanan. Pada program dapat dilihat bahwa
LED diaktifkan dengan data awal disimpan di akumulator (A). Sedangkan jumlah LED yang akan ditampilkan disimpan
pada register R0. Untuk menampilkan LED dari kiri-kanan
digunakan instruksi RL. RL (
rotate accumulator left), dimana setiap bit dalam akumulator akan diputar satu
posisi ke kiri, dimulai dari bit paling kecil/LSB bergerak kearah bit paling
besar/MSB. Register R0 dikurangi dengan 1 lalu disimpan di register R0 ,
apabila R0=0 maka instruksi akan di-loop ke program awal sehingga pada tampilan
LED akan berotasi sesuai dengan instruksi dari arah MSB to LSB atau sebaliknya.
b.
Percobaan
2
Pada percobaan 2 ini prinsipnya hampir sama dengan
Percobaan 1 hasil dari program LED ditampilkan running dari kanan kekiri. Pada program dapat dilihat
bahwa LED diaktifkan dengan data awal disimpan di akumulator (A). Sedangkan jumlah LED yang akan ditampilkan disimpan
pada register R0. Untuk menampilkan LED dari kanan - kiri digunakan instruksi
RL. RL( rotate accumulator left), dimana setiap bit dalam akumulator akan
diputar satu posisi ke kiri, dimulai dari bit paling besar/MSB bergerak kearah bit
paling kecil/LSB. Register R0 dikurangi dengan 1 lalu disimpan di register R0 ,
apabila R0=0 maka instruksi akan di-loop ke program awal sehingga pada tampilan
LED akan berotasi sesuai dengan instruksi dari arah LSB ke MSB atau sebaliknya.
c. Percobaan 3
Pada percobaan 3 untuk mendapatkan hasil sesuai dengan tabel ,
harus meng-OR-kan setiap bilangan biner. Sehingga untuk hasil nilai selanjutnya
didapatkan nilai biner yang bertambah setiap pergeseran bit-nya. Dapat dilihat
pada program , nilai bilangan biner yang dikonversikan pada bilangan decimal
yaitu 80H merupakan biner dari 10000000, ini merupakan data awal yang disimpan
pada register R1. Isi dalam register R1 akan disimpan pada akumulator A. dengan
instruksi ORL dimana isi register R1 akan di-OR-kan dengan data akumulator.
Agar setiap nilai biner bertambah setiap pergeseran bit-nya , maka setiap data
terdahulu yang telah ditampilkan pada LED akan di-OR-kan dengan bit sebelumnya
yang disimpan pada akumulator. Register R0 dikurangi dengan 1 lalu disimpan di
register R0 , apabila R0=0 maka instruksi akan di-loop ke program awal sehingga
pada tampilan LED akan berotasi sesuai dengan instruksi dari arah LSB to MSB .
d.
Program
4
Pada
percobaan 4
dapat dilihat pada table percobaan, adalah menggeser 4 bit data ke kiri. Pada
percobaan ini , data awal yang diberikan adalah bilangan decimal F0 yang telah
dikonversikan dari bilangan biner 11110000 yang merupakan data awal dari
percobaan ini (dapat dilihat pada table). Dan jumlah dari bit data yang akan
digeser disimpan pada register R0.
Sama
dengan percobaan tampilan 1 digunakan instruksi RL dimana setiap bit dalam
akumulator akan diputar satu posisi ke kiri, dimulai dari bit paling besar/MSB
bergerak kearah bit paling kecil/LSB. Register R0 dikurangi dengan 1 lalu
disimpan di register R0 , apabila R0=0 maka instruksi akan di-loop ke program
awal sehingga pada tampilan LED akan berotasi sesuai dengan instruksi dari arah
LSB to MSB atau sebaliknya.
Demikianlah sedikit tentang pemograman AT89S51 dengan vriasi LED, semoga bermnfaat. Silahkan komentar jika ada keluhan yang ingin disampaikan. Terimakasih.