Depok Instruments

We Present Technologies As Arts

5. 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.

5.1 Program Membuat LED Aktif Berkelap-kelip

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

Program 4

org 0000h

Main:

mov p0, #0ffh

acall Delay

mov p0, #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.

5.2 Program Membuat LED Bergeser Ke Kiri dan Ke Kanan

Program ini akan membuat LED yang terhubung pada P0 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 p0, 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.

5.3.1 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 p0, #0ffh

acall Delay1Sec

mov p0, #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.

Maret 6, 2008 - Ditulis oleh depokinstruments | 3. Mikrokontroler II | | No Comments Yet

Belum ada komentar.

Tinggalkan komentar