Kamis, 21 Oktober 2010

Buat program kombinasi 2 Input push button untuk mengontrol arah RUNNING LED (kanan/kiri) via MCS-51

Program yang satu ini merupakan pengembangan program saya sebelumnya tentang program Running Led dengan register. Perbedaannya adalah terletak pada adanya masukan input yang akan mengontrol mikrokontroler untuk menghidupkan running led ke arah kiri atau kanan.
Berikut akan saya tampilkan rangkaiannya.
















Berikut adalah listing programnya menggunakan bahsa assembler dengan PORT1 Mikrokontroler sebagai input push button dan PORT2 sebagai output LED.

;=======================================================================
;PROGRAM KONTROL GERAK ARAH LED (KANAN-KIRI) DENGAN PUSH BUTTON
;Oleh : TRIHADI KURNIAWAN
;MIDBA 080012
;=======================================================================
org 0h
;=======================================================================
;         PROGRAM INPUT AWAL
;=======================================================================
cekatas:    JNB P1.2,belokkiri    ;cek tombol atas ditekan ato ga, kalo YA -> langsung loncat ke belokkiri
        call cekbawah        ;kalo tidak coba cekbawah
        sjmp cekatas        ;kembali cekatas lagi
cekbawah:     JNB P1.3,belokkanan    ;cek tombol bawah ditekan ato ga, kalo YA -> langsung loncat ke belokkanan
        call cekatas        ;kalo tidak coba cekatas
        sjmp cekbawah        ;kembali cekbawah lagi
;=======================================================================
;          PROGRAM JALAN LED PAKE 2 INPUT
;=======================================================================
belokkiri:    mov A,#00000001b    ;set susunan nyala led awal kalo mau belokkiri disimpan dalam Akumulator
         mov R0,#8                    ;perulangan sebanyak 8 langkah disimpan di R0
;
kiri:
        JNB P1.3,belokkanan    ;cek apakah selagi led belokkiri ada tombol atas yang ditekan ga,
                                              ;kalo YA -> langsung lompat belokkanan
        mov P2,A                      ;Pindahkan data pada Akumulator ke PORT 2->output
         call delay                       ;tunda dulu sebelum di rotasi
         RL A                            ;rotate left data pada Akumulator
         DEC R0                       ;decrement/pengurangan terus dari data R0=8 sampe 0 jadi ngitung mundur doi
         CJNE R0,#0,kiri           ;bandingkan jika R0 udah 0 yaudah selese dia ngitungnya cape,hehe
                                              ;kalo R0 belum 0 ya ngulang lagi dari belokkiri
         sjmp belokkiri
ret                    ;berhenti
;  
belokkanan:    mov A,#10000000b    ;set susunan nyala led awal kalo mau belokkanan disimpan dalam Akumulator
         mov R0,#8               ;simpan sebanyak 8 langkah di R0
kanan:  
        JNB P1.2,belokkiri    ;cek apakah selagi led belokkanan ada tombol bawah yang ditekan ga,
                                         ;kalo YA -> langsung lompat belokkiri
        mov P2,A                  ;Pindahkan data pada Akumulator ke PORT 2->output
        call delay                   ;tunda dulu sebelum di rotasi
        RR A                        ;rotate right data pada Akumulator
        DEC R0                   ;decrement/pengurangan terus dari data R0=8 sampe 0 jadi ngitung mundur doi
        CJNE R0,#0,kanan   ;bandingkan jika R0 udah 0 yaudah selese dia ngitungnya cape,hehe,
                                         ;kalo R0 belum 0 ya ngulang lagi dari belokkanan
        sjmp belokkanan
ret                                     ;berhenti
;  
delay:    mov R1,#255
del1:    mov R2,#255
del2:    djnz R2,del2
    djnz R1,del1
    ret
    end
     

Buat running LED mikrokontroler MCS-51 dengan bantuan Register

Apabila Anda memperhatikan tulisan running led saya sebelumnya, maka sekarang saya akan memberikan program yang sedikit berbeda. Program kali ini akan memanfaatkan register R0-R7 yang ada di mikrokontroler MCS-51.
Untuk gambar rangkaian saya coba pilih rangkaian led Active High sebagai komparasi saja.















Berikut listing programnya dalam bahasa assembler

org 0h
;=======================================================================
;          PROGRAM LED BERJALAN KE KIRI DAN KANAN DENGAN REGISTER
;            oleh TRIHADI KURNIAWAN
;=======================================================================
start:    mov A,#00000001b
     mov R0,#7
;
kiri:    mov P2,A
     call delay
     RL A
     DEC R0
     CJNE R0,#0,kiri
;   
     mov R0,#7
kanan:    mov P2,A
    call delay
    RR A
    DEC R0
    CJNE R0,#0,kanan
    sjmp start
;
delay:    mov R1,#255
del1:    mov R2,#255
del2:    djnz R2,del2
    djnz R1,del1
    ret
    end

Buat running LED mikrokontroler MCS-51 dengan bahasa C

Apabila kita baru belajar mikrokontroler, maka tahapan pertama yang perlu kita kuasai adalah bagaimana cara mengontrol led. Terlihat sederhana memang, tetapi basic pemrograman mikrokontroler selanjutnya dapat berawal dari sini.
Berikut adalah contoh rangkaian led dengan konfigurasi Active Low menggunakan mikrokontroler ATMEL keluarga MCS-51 dan dikontrol pada PORT 2.


















 Berikut adalah listing programnya menggunakan bahasa C dengan bantuan compiler MIDE-51.

/*program running led berulang*/
/*trihadi kurniawan*/
/*mekatronika*/
#include<8051.h>
/*-------------*/
/*program tunda*/
/*-------------*/
void tunda(int n)
{
int i;
for (i=0;i
{
}
}
/*-------------*/
/*program utama*/
/*-------------*/
void main()
{   
     while(1)
     {
         //aktif low
     P2 = 0x7F;//01111111
     tunda(10000);
     P2 = 0xBF;//10111111
     tunda(10000);
     P2 = 0xDF;//11011111
     tunda(10000);
     P2 = 0xEF;//11101111
     tunda(10000);
     P2 = 0xF7;//11110111
     tunda(10000);
     P2 = 0xFB;//11111011
     tunda(10000);
     P2 = 0xFD;//11111101
     tunda(10000);
     P2 = 0xFE;//11111110
     tunda(10000);
     }
}
Berikut juga akan saya tampilan listing programnya dalam bahasa assembler sebagai perbandingan.

org 0h
;
;===============================================
;    PROGRAM RUNNING LED MCS 51 DENGAN PORT 2
;        oleh TRIHADI KURNIAWAN
;===============================================
hidup:  mov P2,#01111111b
     call delay
     mov P2,#10111111b
     call delay
     mov P2,#11011111b
     call delay
     mov P2,#11101111b
     call delay
     mov P2,#11110111b
     call delay
     mov P2,#11111011b
     call delay
     mov P2,#11111101b
     call delay
     mov P2,#11111110b
     call delay
     sjmp hidup

;
delay:    mov R1,#255
del1:    mov R2,#255
del2:    djnz R2,del2
    djnz R1,del1
    ret
    end




Rezeki Tambahan

"Rezeki tambahan" Namanya juga pedagang, mendapati pembeli yang menjual kembali barang yang sudah dibeli rasanya biasa. Dan saya ...