Membuat Penundaan Terhadap Suatu Proses

Proses penundaan sangat berguna untuk aplikasi-aplikasi mikrokontroler, sebagai contoh untuk lama aktivasi nyala lampu dsb. Penundaan (delaying) dapat dilakukan dengan cara menghentikan kerja dari mikrokontroler dalam artian memaksa mikrokontroler untuk tidak melakukan kerja.

Program Membuat LED Aktif Berkelap-kelip

Program ini akan membuat LED yang terhubung pada P2 akan aktif secara berkelap-kelip dengan penundaan waktu tertentu.

Program 4

org 0000h

Main:

mov p2, #0ffh

acall Delay

mov p2, #0

acall Delay

sjmp Main

Delay:

mov r0, #10

Loop:

djnz r2, Loop

djnz r1, Loop

djnz r0, Loop

ret

Untuk mengatur penundaan dapat dilakukan dengan mengubah nilai variable pada r0 (register 0), semakin besar nilai yang dimasukkan maka interval penundaan akan semakin lama. Dengan nilai variable maksimum yang dapat diinputkan adalah 255.

Program Membuat LED Bergeser Ke Kiri dan Ke Kanan

Program ini akan membuat LED yang terhubung pada P2 akan bergeser ke kiri dan ke kanan dengan penundaan waktu sehingga dapat terlihat pola pergeserannya.

Program 5

org 0000h

Main:

mov a, #11111110b

LoopMain: acall Delay

mov p2, a

rl a

sjmp LoopMain

Delay:

mov r0, #10

Loop:

djnz r2, Loop

djnz r1, Loop

djnz r0, Loop

ret

Program diatas akan membuat tampilan LED bergeser ke kiri secara perbit. Untuk membuat arah pergeseran berubah kearah kanan maka dapat dilakukan dengan cara merubah syntax rl (rotate left) menjadi rr (rotate right).

5.3 Membuat Pewaktuan (Timing) Terhadap Suatu Proses

Mikrokontroler AT89S51 mendukung pewaktuan yang presisi. Pewaktuan tersebut dibangkitkan oleh osilator eksternal yang dapat dikendalikan / diatur dengan mudah yang bernama TIMER. AT89S51 memiliki dua perangkat Timer yaitu Timer-0 dan Timer-1 yang masing-masing dapat bekerja sendiri sesuai mode aktivasi yang dipilih, dimana modenya terdiri dari mode 0, mode 1, dan mode 2.

Program Membuat LED Berkelap-kelip dengan Timer 0 Mode 1

Berikut adalah program untuk LED menyala berkelap-kelip dengan fungsi pewaktuan memanfaatkan Timer 0 mode 1 pada mikrokontroler.

Program 6

org 0000h

cacah equ -50000

Main:

mov tmod, #00000001b

LoopMain: acall Delay1Sec

mov p2, #0ffh

acall Delay1Sec

mov p2, #00h

sjmp LoopMain

Delay1Sec:

mov r0, #20

LoopDelay:

mov th0, #high(cacah)

mov tl0, #low(cacah)

setb tr0

jnb tf0, $

clr tr0

clr tf0

djnz r0, LoopDelay

ret

Dengan mode 1, maka cacahan akan dimasukan masing-masing ke register TH0 dan TL0, nilai variable r0 berfungsi untuk faktor pengali nilai cacahan, semakin besar nilai yang diinputkan (maksimal 255) maka interval penundaan akan semakin lama. Nilai -50000 (maksimal 65536) dipilih karena mode 1 adalah 16 bit ruang timer yang bersifat pencacah biner naik. Subprogram “Delay1Sec” di atas akan memberikan waktu tunda 1 Detik pada Xtal = 12 MHz.

*Modul Depok Instruments yang Memudahkan Pembelajaran:

Iklan

One thought on “Membuat Penundaan Terhadap Suatu Proses

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s