Blogger Widgets

Penerangan Terprogram

Sistem Penerangan Terprogram berfungsi sebagai pengatur saklar untuk menghidupkan dan mematikan lampu yang dapat diprogram keaktifanya sesuai dengan variabel setting nilai masukan waktu yang dikehendaki oleh pengguna.
Sistem Penerangan Terprogram bekerja sesuai dengan pengaturan waktu (jam) yang diinginkan. Pengaturan waktu (jam) untuk satu titik beban lampu diprogram secara bervariasi ( nilai variabel jam = 24 dan untuk nilai variabel Menit =59 ), sehingga pengguna dapat mengatur waktu-waktu (variabel nilai waktu) tertentu kapan lampu akan hidup dan kapan lampu akan mati kembali.
Sistem Pewaktu
Sistem pewaktu dalam hal ini adalah perintah-perintah dan perhitungan waktu (timer) yang telah terintegrasi didalam mikrokontroler dengan pemicu detak (osilator) menggunakan kristal 12 MHz untuk membentuk perhitungan Detik, Menit dan Jam.

Model perhitungan nilai waktu dalam system penerangan terprogram ini adalah menggunakan variable nilai dengan format sebagai berikut:
Jam = 00 sampai dengan 23
Menit = 00 sampai dengan 59
Detik = 00 sampai dengan 59
Agar Timer bisa berjalan sesuai yang diinginkan, perhitungan waktu yang paling utama adalah timer dapat menghitung selama 1 detik. Karena timer mempunyai empat macam mode kerja, maka tundaan maksimal yang bisa dilakukan oleh timer ditunjukkan pada tabel berikut:
Tabel Tundaan Maksimum Tiap Mode Kerja Timer

Karena 1 detik = 1.000 milidetik = 1.000.000 mikrodetik, maka dari Tabel 4.1 tidak ada satupun yang memenuhi untuk dapat digunakan sebagai timer waktu selama 1 detik, sehingga yang dilakukan pertama kali adalah pengaturan timer agar bisa mendapatkan tundaan sebesar 1 detik, setelah 1 detik tercapai dan untuk mendapatkan tundaan yang lebih besar lagi adalah dengan cara pengulangan berkali-kali (60 kali) sampai hasil total yang di inginkan (1 menit). Untuk mendapatkan pengulangan kerja timer agar mendapatkan total 1 detik atau 1.000.000 mikrodetik, maka mencoba untuk melakukan perhitungan untuk mode 0, 1 dan 2 :
· Mode 0 : 5.000 mikrodetik x 200 pengulangan = 1 x 106 mikrodetik
· Mode 1 : 50.000 mikrodetik x 20 pengulangan = 1 x 106 mikrodetik
· Mode 2 : 250 mikrodetik x 4000 pengulangan = 1 x 106 mikrodetik
Dalam hal ini, dipilih Mode 1 dengan pertimbangan pengulangan lebih sedikit, yang perlu diperhatikan adalah pengulangan kerja tidak sekedar menghidupkan dan mematikan flag limpahan (over flow flag) Timer yang bersangkutan. Limpahan terjadi saat transisi dari FFFFh ke 0000h (untuk mode 16-bit), dengan demikian agar limpahan terjadi setiap 50.000 mikrodetik (= 50.000 siklus) maka timer (dalam hal ini digunakan Timer 0) diisi dengan konstanta – 50.000, sehingga diawal program dilakukan inisialisasi label ‘milidetik’ ( Mov Milidetik,#20 ) diisi dengan konstanta 20 yang kemudian diisikan ke dalam RAM yaitu untuk menyimpan jumlah pengulangan.
Inisialisasi_Jam:
Mov Tmod,#01h
Mov Milidetik,#20
Perhitungan_Jam:
Mov TH0,#High (-50000)
Mov TL0,#Low (-50000)
Djnz Milidetik, Perhitungan_Jam
Call Tambah_Jam
Keluar_Jam:
Reti
Dari potongan program diatas, maka dapat diperoleh perhitungan waktu selama 1 detik seperti pada perhitungan sebagai berikut
50000 x 20 = 1000000 microdetik
= 1000 milidetik
= 1 detik
Setelah mendapatkan perhitungan selama 1 detik, maka langkah selanjutnya adalah melakukan penambahan variable nilai perhitungan menit dan jam seperti yang digambarkan pada flowchart berikut:

Selama perhitungan timer 1 detik, program tidak melakukan perintah-perintah di luar pembentukan timer ini, hal ini untuk menjaga keakurasian pewaktu yang dihasilkan lebih akurat, mengingat setiap satu perintah program dalam siklus mesin mikrokontroler memerlukan waktu berkisar antara 1 sampai 2 mikrodetik.
Nilai detik tersimpan di label ‘Detik’ dengan alamat memori 40h, Menit dialamat 43h dan jam dialamat 46h. program selalu melakukan perhitungan waktu mulai dari 0 mikrodetik sampai 1000000 mikrodetik, setelah mencapai nilai 1000000, maka program akan menghitung mulai dari 0 mikrodetik kembali dengan menambahkan konstanta nilai yang tersimpan dimemori dengan label ‘detik’ ditambahkan dengan nilai 1. kemudian program akan menghitung kembali sampai nilai pada label ‘detik’ mencapai 59, apabila 59 tercapai maka detik akan dinolkan kembali dan menambahkan nilai menit dengan 1, hal ini akan berulang terus menerus sampai nilai menit mencapai 59 dan kemudian nilai jam akan bertambah 1 dan penambahan nilai pada jam sampai pada nilai 23. setelah nilai –nilai yang tersimpan pada detik = 59, Menit = 59 dan jam = 23. maka nilai pada Detik, menit dan jam masing-masing akan bernilai nol.
Untuk lebih jelasnya terlihat pada potongan sub program seperti dibawah ini:
Tambah_Jam:
mov A,Detik
Inc A
cjne A,#60,Update_Detik
Call Hapus_Detik
Satumenit:
mov A,Menit
Inc A
Cjne A,#60,Update_Menit
Call Hapus_Menit
Satujam:
mov A,Jam
Inc A
Cjne A,#24,Update_jam
Call Hapus_Jam
Ret
Update_Detik:
mov Detik,A
mov B,#10
div AB
mov Detikpuluhan,A
mov Detiksatuan,B
Ret
Update_Menit:
mov menit,A
mov B,#10
div AB
mov menitpuluhan,A
mov menitsatuan,B
Ret
Update_jam:
Mov jam,A
mov B,#10
div AB
mov jampuluhan,A
mov jamsatuan,B
ret
Hapus_Jam:
Mov jam,#0
mov jampuluhan,#0
mov jamsatuan,#0
Ret
Hapus_Menit:
mov menit,#0
mov menitpuluhan,#0
mov menitsatuan,#0
Ret
Hapus_Detik:
mov Detik,#0
mov Detikpuluhan,#0
mov Detiksatuan,#0
Ret

http://catur86.wordpress.com/teknologi/penerangan-terprogram-v-1/
Posted on 02.02 by yenirockerz and filed under | 0 Comments »

0 komentar:

Posting Komentar