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.
0 komentar:
Posting Komentar