Pengaktifan Variasi LED dengan Mikrocontroller AT89S51

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.

Berikut Contoh programnya :

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.




Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel